예제 #1
0
 /**
  *
  * @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());
 }
예제 #2
0
 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;
 }