Example #1
0
 public function handle(array $row)
 {
     if ($this->first) {
         // skip first line
         $this->first = false;
         return true;
     }
     foreach ($this->columnConfig as $column => $relations) {
         $value = null;
         if (isset($relations['value'])) {
             $value = $relations['value'];
         } else {
             $value = $row[$column];
         }
         if ($value === null) {
             continue;
             //no value
         }
         if ($relations['type'] === 'ROOT') {
             $this->dao->getNode($value);
         } else {
             $belongsToName = $row[$relations['belongsTo']];
             if ($belongsToName === null) {
                 continue;
             }
             // No node to attach this relation to.
             $parent = $this->dao->getNode($belongsToName);
             $property = $this->dao->getPropertyById($relations['type']);
             $relationValue = null;
             if ($property->getDataType() == 'node') {
                 $relationValue = $this->dao->getNode($value);
                 $this->dao->createNodeRelation($parent, $relationValue, $property);
             } else {
                 if ($property->getDataType() == 'geometry') {
                     // TODO
                 } else {
                     $converter = StringConverter::getConverter($property->getDatatype());
                     $relationValue = $converter->toObject($value);
                     $relationValue = $converter->toString($relationValue);
                     $relation = new Relation($parent, $property, $relationValue);
                     $this->dao->addRelation($relation);
                 }
             }
         }
     }
     $this->dao->limitCache();
     return true;
 }
Example #2
0
 function getValue()
 {
     /*
      * Smelly code is smelly, but embeddings do not support cross-table fields yet
      */
     if ($this->valueObject !== null) {
         return $this->valueObject;
     }
     $type = $this->property->getDataType();
     if ($type == 'node') {
         $this->valueObject = $this->nodevalue;
     } elseif ($type == 'geometry') {
         $this->valueObject = $this->geometryvalue;
     } else {
         $converter = StringConverter::getConverter($this->property->getDataType());
         $this->valueObject = $converter->toObject($this->value);
     }
     return $this->valueObject;
 }