저자: jason (yangjs17@yeah.net)
상속: extends Model
예제 #1
0
 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());
 }
예제 #2
0
 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;
     }
 }