/** * @return Database */ public function readConnectedDatabase() { $this->getDatabase(); $database = new Database(); $database->setSchema($this->database->getSchema()); $database->setName($this->database->getName()); $database->setPlatform($this->getPlatform()); $this->getParser()->parse($database); return $database; }
public function testSetupObject() { $database = new Database(); $database->loadMapping(array('name' => 'bookstore', 'baseClass' => 'CustomBaseObject', 'defaultIdMethod' => 'native', 'defaultPhpNamingMethod' => 'underscore', 'heavyIndexing' => 'true', 'tablePrefix' => 'acme_', 'defaultStringFormat' => 'XML')); $this->assertSame('bookstore', $database->getName()); $this->assertSame('CustomBaseObject', $database->getBaseClass()); $this->assertSame('XML', $database->getDefaultStringFormat()); $this->assertSame('native', $database->getDefaultIdMethod()); $this->assertSame('underscore', $database->getDefaultPhpNamingMethod()); $this->assertSame('acme_', $database->getTablePrefix()); $this->assertTrue($database->isHeavyIndexing()); $this->assertTrue($database->getHeavyIndexing()); }
/** * Adds a database to the list and sets the Schema property to this * Schema. The database can be specified as a Database object or a * DOMNode object. * * @param Database|array $database * @return Database */ public function addDatabase($database) { if ($database instanceof Database) { $platform = null; $database->setParentSchema($this); if (null === $database->getPlatform()) { if ($config = $this->getGeneratorConfig()) { $platform = $config->getConfiguredPlatform(null, $database->getName()); } $database->setPlatform($platform ? $platform : $this->platform); } $this->databases[] = $database; return $database; } // XML attributes array / hash $db = new Database(); $db->setParentSchema($this); $db->loadMapping($database); return $this->addDatabase($db); }
/** * Appends the generated <database> XML node to its parent node. * * @param Database $database The Database model instance * @param \DOMNode $parentNode The parent DOMNode object */ private function appendDatabaseNode(Database $database, \DOMNode $parentNode) { $databaseNode = $parentNode->appendChild($this->document->createElement('database')); $databaseNode->setAttribute('name', $database->getName()); $databaseNode->setAttribute('defaultIdMethod', $database->getDefaultIdMethod()); if ($package = $database->getPackage()) { $databaseNode->setAttribute('package', $package); } if ($schema = $database->getSchema()) { $databaseNode->setAttribute('schema', $schema); } if ($namespace = $database->getNamespace()) { $databaseNode->setAttribute('namespace', $namespace); } if ($baseClass = $database->getBaseClass()) { $databaseNode->setAttribute('baseClass', $baseClass); } if ($baseQueryClass = $database->getBaseQueryClass()) { $databaseNode->setAttribute('baseQueryClass', $baseQueryClass); } if ($defaultNamingMethod = $database->getDefaultPhpNamingMethod()) { $databaseNode->setAttribute('defaultPhpNamingMethod', $defaultNamingMethod); } $defaultAccessorVisibility = $database->getDefaultAccessorVisibility(); if ($defaultAccessorVisibility !== Database::VISIBILITY_PUBLIC) { $databaseNode->setAttribute('defaultAccessorVisibility', $defaultAccessorVisibility); } $defaultMutatorVisibility = $database->getDefaultMutatorVisibility(); if ($defaultMutatorVisibility !== Database::VISIBILITY_PUBLIC) { $databaseNode->setAttribute('defaultMutatorVisibility', $defaultMutatorVisibility); } $defaultStringFormat = $database->getDefaultStringFormat(); if (Database::DEFAULT_STRING_FORMAT !== $defaultStringFormat) { $databaseNode->setAttribute('defaultStringFormat', $defaultStringFormat); } if ($database->isHeavyIndexing()) { $databaseNode->setAttribute('heavyIndexing', 'true'); } if ($tablePrefix = $database->getTablePrefix()) { $databaseNode->setAttribute('tablePrefix', $tablePrefix); } if ($database->isIdentifierQuotingEnabled()) { $databaseNode->setAttribute('identifierQuoting', 'true'); } /* FIXME - Before we can add support for domains in the schema, we need to have a method of the Column that indicates whether the column was mapped to a SPECIFIC domain (since Column->getDomain() will always return a Domain object) foreach ($this->domainMap as $domain) { $this->appendDomainNode($databaseNode); } */ foreach ($database->getVendorInformation() as $vendorInformation) { $this->appendVendorInformationNode($vendorInformation, $databaseNode); } foreach ($database->getTables() as $table) { $this->appendTableNode($table, $databaseNode); } }