/** * * @param \blaze\persistence\meta\ClassDescriptor $config * @param File $file */ public function save(\blaze\persistence\meta\ClassDescriptor $config, $file) { $f = null; if ($file instanceof \blaze\io\File) { $f = $file; } else { $f = new \blaze\io\File(\blaze\lang\String::asNative($file)); } $doc = new \DOMDocument(); $root = $doc->createElement('persistence-mapping'); $doc->appendChild($root); $node = $doc->createElement('class'); $root->appendChild($node); AttributeUtil::set($node, 'package', $config->getPackage()); AttributeUtil::set($node, 'name', $config->getName()); AttributeUtil::set($node, 'schema', $config->getTableDescriptor()->getSchema()); AttributeUtil::set($node, 'table', $config->getTableDescriptor()->getName()); foreach ($config->getIdentifiers() as $member) { $this->saveId($node, $doc, $member); } foreach ($config->getSingleFields() as $member) { $this->saveField($node, $doc, $member); } foreach ($config->getCollectionFields() as $member) { $this->saveCollection($node, $doc, $member); } $doc->save($f->getAbsolutePath()); }
private function recursiveColumnLookup(\blaze\persistence\meta\ClassDescriptor $classDesc, $parts) { $part = array_shift($parts); foreach ($classDesc->getIdentifiers() as $member) { if ($member->getFieldDescriptor()->getName()->toNative() === $part) { return $member->getFieldDescriptor()->getColumnDescriptor(); } } foreach ($classDesc->getSingleFields() as $member) { if ($member->getName()->toNative()) { return $member->getColumnDescriptor(); } } foreach ($classDesc->getCollectionFields() as $member) { if ($member->getFieldDescriptor()->getName()->toNative()) { return $member->getColumnDescriptor(); } } return null; }