Exemple #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;
 }
Exemple #2
0
<?php

use Doctrine\DBAL\Types\Type;
use MyApp\Values\RenderableValue;
use Symfony\Component\HttpFoundation\Request;
Type::addType('tsvector', 'Utils\\Database\\Types\\Tsvector');
Type::addType('geometry', 'Utils\\Database\\Types\\Geometry');
$app->register(new \Silex\Provider\UrlGeneratorServiceProvider());
$app->register(new Utils\Services\Mapping\MappingServiceProvider());
$app['mapping.manager']->onRegister(function ($type, $mapping) {
    \MyApp\Converters\StringConverter::addConverter($type, $mapping->getDbConverter());
});
$app['mapping.manager']->register('text', function ($app) {
    return new \MyApp\FormTypes\TextType();
}, new \MyApp\Converters\TextConverter());
$app['mapping.manager']->register('year_period', function ($app) {
    return new \MyApp\FormTypes\YearPeriodType();
}, new \MyApp\Converters\YearPeriodConverter());
$app['mapping.manager']->register('node', function ($app) {
    return new \MyApp\FormTypes\NodeType($app, true);
}, new \MyApp\Converters\EntityConverter());
$app['mapping.manager']->register('geometry', function ($app) {
    return new \MyApp\FormTypes\GeometryType($app, true);
}, new \MyApp\Converters\EntityConverter());
$app['mapping.manager']->register('date', function ($app) {
    return null;
    // TODO
}, new \MyApp\Converters\DateConverter());
$app['mapping.manager']->register('link', function ($app) {
    return new \MyApp\FormTypes\LinkType();
}, new \MyApp\Converters\LinkConverter());
Exemple #3
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;
 }