metadata = $metadata; $this->ormConverter = new Converters\Orm($this->metadata); $this->schemaConverter = new Converters\Schema(); } protected function getMetadata() { return $this->metadata; } protected function getOrmConverter() { return $this->ormConverter; } protected function getSchemaConverter() { return $this->schemaConverter; } public function getSchemaFromMetadata() { if (!isset($this->schemaFromMetadata)) { $databaseMeta = $this->getMetadata()->getOrmMetadata(); $entityDefs = $this->getMetadata()->get('entityDefs'); $schema = $this->getSchemaConverter()->process($databaseMeta, $entityDefs); $this->schemaFromMetadata = $schema; } return $this->schemaFromMetadata; } /** * Main method of convertation from metadata to orm metadata and database schema * * @return bool */ public function process() { $GLOBALS['log']->add('Debug', 'Converters\Orm - Start: orm convertation'); $entityDefs = $this->getMetadata()->get('entityDefs'); $databaseMeta = array(); foreach($entityDefs as $entityName => $entityMeta) { if (empty($entityMeta)) { $GLOBALS['log']->add('ERROR', 'Converter:process(), Entity:'.$entityName.' - metadata cannot be converted into database format'); continue; } $databaseMeta = Util::merge($databaseMeta, $this->getOrmConverter()->process($entityName, $entityMeta, $entityDefs)); } $databaseMeta = $this->getOrmConverter()->prepare($databaseMeta); //save database meta to a file espoMetadata.php $result = $this->getMetadata()->setOrmMetadata($databaseMeta); $GLOBALS['log']->add('Debug', 'Converters\Orm - End: orm convertation, result=['.$result.']'); return $result; } } ?>