Ejemplo n.º 1
0
 public static function createArchive($fileSystem, $name = "weborb.codegen.zip", $path = WebOrb, $libPath = "")
 {
     set_time_limit(0);
     $fileList = "";
     if ($path != WebOrb) {
         $weborbInstallDir = substr(WebOrb, 0, strlen(WebOrb) - 7);
         self::createPath($weborbInstallDir, $path);
         self::$path = $weborbInstallDir . $path . DIRECTORY_SEPARATOR;
         if ($libPath != "") {
             $libPath = $weborbInstallDir . $libPath;
         }
     } else {
         self::$path = $path;
     }
     if (file_exists(self::$path . $name)) {
         unlink(self::$path . $name);
     }
     $archive = new PclZip(self::$path . $name);
     self::createFilesAndFolders($fileSystem->Result->Items, $archive, "TempCodegen", $fileList);
     if ($libPath != "") {
         self::addLib($libPath, $archive);
     }
 }
 public function Generate($modelName)
 {
     $userSettings = self::GetSettings();
     $userDataModel = null;
     foreach ($userSettings->DataModels as $item) {
         if ($item->Name == $modelName) {
             $userDataModel = $item;
         }
     }
     if ($userDataModel == null) {
         throw new Exception("Data model with name '" . $modelName . "' not found");
     }
     $tables = array();
     foreach ($userDataModel->Tables as $tableInfo) {
         $tables[$tableInfo->Name] = self::GetTableMeta($tableInfo->DatabaseConnectionInfoId, $tableInfo->SchemaName, $tableInfo->Name);
         $databaseConnectionInfoId = $tableInfo->DatabaseConnectionInfoId;
     }
     $databaseConnectionInfo = $userSettings->GetConnection($databaseConnectionInfoId);
     $meta = WDMMetaInspectorFactory::getInspector($databaseConnectionInfo->Connection->Type);
     $meta->tables = $tables;
     $meta->database = $databaseConnectionInfo;
     $meta->setCurrentDatabase($meta->database->DatabaseName);
     $meta->storedProcedures = $meta->database->Connection->GetInspector()->getStoredProcedures($meta->database->DatabaseName);
     $codegen = new WDMCodegenerator();
     $nameMapper = new NameMapper($userSettings, $userDataModel);
     $meta->initialize($userDataModel, $nameMapper);
     $codegen->setMeta($meta);
     $result = $codegen->Generate();
     CreateArc::createArchive($result, $modelName . ".zip", "weborbassets" . DIRECTORY_SEPARATOR . "wdm" . DIRECTORY_SEPARATOR . "output", "weborbassets" . DIRECTORY_SEPARATOR . "wdm");
     //$result->saveToDirecorty("".WebOrb."weborbassets".DIRECTORY_SEPARATOR."wdm".DIRECTORY_SEPARATOR."output".DIRECTORY_SEPARATOR."".$userDataModel->Name."".DIRECTORY_SEPARATOR."");
     return $result->LineCount;
 }