/**
  *
  * @return \Bpi\ApiBundle\Domain\Entity\Resource
  */
 public function createCharlieResource()
 {
     $map = $this->createFilesystemMap();
     $resource_builder = new ResourceBuilder($map->get('assets'), new FakeRouter());
     $charlie = $resource_builder->body('alpha_body')->teaser('bravo_teaser')->title('charlie_title')->ctime(new \DateTime("now"))->copyleft(new Copyleft('charlie_copyleft'));
     return $charlie;
 }
 /**
  * {@inheritdoc}
  * @return Bpi\ApiBundle\Domain\Factory\ResourceBuilder
  */
 public function extract()
 {
     $entity = $this->doc->getEntity('resource');
     $builder = new ResourceBuilder();
     $fs = new Filesystem(new MemoryAdapter());
     $entity->walk(function ($e) use($builder, $fs) {
         if ($e->typeOf(Property::TYPE_ASSET)) {
             $file = new File($e->getName(), $fs);
             $file->setContent($e->getValue());
             $builder->addFile($file);
         }
     });
     return $builder->title($entity->property('title')->getValue())->body($entity->property('body')->getValue())->teaser($entity->property('teaser')->getValue())->ctime(new \DateTime($entity->property('ctime')->getValue()));
 }
 /**
  *
  * @param  \Bpi\ApiBundle\Domain\ValueObject\NodeId $node_id
  * @param  \Bpi\ApiBundle\Domain\Entity\Author $author
  * @param  ResourceBuilder $builder
  * @param  \Bpi\ApiBundle\Domain\Aggregate\Params $params
  * @return \Bpi\ApiBundle\Domain\Aggregate\Node
  */
 public function pushRevision(NodeId $node_id, Author $author, ResourceBuilder $builder, Params $params)
 {
     $node = $this->manager->getRepository('BpiApiBundle:Aggregate\\Node')->findOneById($node_id->id());
     $revision = $node->createRevision($author, $builder->build(), $params);
     $this->manager->persist($revision);
     $this->manager->flush();
     $this->manager->getRepository('BpiApiBundle:Entity\\Facet')->prepareFacet($revision);
     return $revision;
 }