public function initialize(UserDataModel $userDataModel, INameMapper $nameMapper) { $this->userDataModel = $userDataModel; $this->dbType = $userDataModel->getServerConnection()->Connection->Type->Id; $this->nameMapper = $nameMapper; $this->setTables(); $this->setCurrentDatabase($userDataModel->getServerConnection()->getDataBaseName()); }
public function Load($fileName) { $xmlDocument = new DOMDocument(); $xmlDocument->load($fileName); set_time_limit(0); $xpath = new DOMXPath($xmlDocument); // set_time_limit(30); $queryConnection = "/settings/connections/connection"; $entries = $xpath->query($queryConnection); foreach ($entries as $xmlElement) { $databaseConnectionInfo = new DatabaseConnectionInfo(); $connection = $databaseConnectionInfo->Connection; $databaseConnectionInfo->Id = $xmlElement->getAttribute("id"); $connection->HostName = $xmlElement->getAttribute("hostname"); if ($xmlElement->getAttribute("port") != null) { $connection->Port = (int) $xmlElement->getAttribute("port"); } $connection->UserName = $xmlElement->getAttribute("username"); $connection->Password = $xmlElement->getAttribute("password"); $connection->Type = new ServerType((int) $xmlElement->getAttribute("type")); $databaseConnectionInfo->DatabaseName = $xmlElement->getAttribute("database"); $this->DatabaseConnections[] = $databaseConnectionInfo; } $queryDataModel = "/settings/datamodels/datamodel"; $entries = $xpath->query($queryDataModel); foreach ($entries as $xmlElement) { $userDataModel = new UserDataModel(); $userDataModel->Name = $xmlElement->getAttribute("name"); $userDataModel->ServerNamespace = $xmlElement->getAttribute("servernamespace"); $userDataModel->ClientNamespace = $xmlElement->getAttribute("clientnamespace"); $userDataModel->ServerLanguage = $xmlElement->getAttribute("serverlanguage"); try { $userDataModel->IsGenerated = (bool) $xmlElement->getAttribute("generated"); $userDataModel->IsGenerateTestDrive = $xmlElement->getAttribute("generateTestDrive") == "true" ? true : false; $userDataModel->IsGenerateUnitTests = $xmlElement->getAttribute("generateUnitTests") == "true" ? true : false; $userDataModel->LOC = (int) $xmlElement->getAttribute("loc"); $userDataModel->Build = (int) $xmlElement->getAttribute("build"); } catch (Exception $e) { Log::logException(LoggingConstants::EXCEPTION, "unable to load config", $e); } $xmlTables = $xmlElement->getElementsByTagName("tables"); if ($xmlTables->length > 0) { foreach ($xmlTables->item(0)->getElementsByTagName("table") as $xmlElementUserTableInfo) { $tableInfo = new UserTableInfo(); $tableInfo->Name = $xmlElementUserTableInfo->getAttribute("name"); $tableInfo->SchemaName = $xmlElementUserTableInfo->getAttribute("schema"); $tableInfo->DatabaseConnectionInfoId = $xmlElementUserTableInfo->getAttribute("connection"); $userDataModel->Tables[] = $tableInfo; } } $xmlMapping = $xmlElement->getElementsByTagName("mapping"); if ($xmlMapping->length > 0) { foreach ($xmlMapping->item(0)->getElementsByTagName("table") as $xmlElementUserClassInfo) { $userClassInfo = new UserClassInfo(); $userClassInfo->Name = $xmlElementUserClassInfo->getAttribute("alias"); $userClassInfo->TableName = $xmlElementUserClassInfo->getAttribute("name"); $userClassInfo->DatabaseConnectionInfoId = $xmlElementUserClassInfo->getAttribute("connection"); $xmlColumns = $xmlElementUserClassInfo->getElementsByTagName("columns"); foreach ($xmlColumns->item(0)->getElementsByTagName("column") as $xmlNodeColumn) { $fieldInfo = new UserClassFieldInfo(); $fieldInfo->ColumnName = $xmlNodeColumn->getAttribute("name"); $fieldInfo->Name = $xmlNodeColumn->getAttribute("alias"); $userClassInfo->Fields[] = $fieldInfo; } $xmlRelations = $xmlElementUserClassInfo->getElementsByTagName("relations"); foreach ($xmlRelations->item(0)->getElementsByTagName("relation") as $xmlNodeRelation) { $relationInfo = new UserRelationInfo(); $relationInfo->ForeignKey = $xmlNodeRelation->getAttribute("name"); $relationInfo->Alias = $xmlNodeRelation->getAttribute("alias"); $relationInfo->Type = $xmlNodeRelation->getAttribute("type"); $userClassInfo->Relations[] = $relationInfo; } $userDataModel->UserClasses[] = $userClassInfo; } } if (count($userDataModel->Tables) > 0) { $connectionId = $userDataModel->Tables[0]->DatabaseConnectionInfoId; $userDataModel->setServerConnection($this->GetConnection($connectionId)); } $this->DataModels[] = $userDataModel; } }