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; }