/**
  * @param \Symfony\Component\Form\FormFactoryInterface $formFactory
  * @param \Symfony\Component\Form\Test\FormBuilderInterface $formBuilder
  * @param \FSi\Bundle\AdminBundle\Admin\ResourceRepository\GenericResourceElement $element
  * @param \FSi\Bundle\ResourceRepositoryBundle\Model\ResourceValueRepository $valueRepository
  * @param \FSi\Bundle\ResourceRepositoryBundle\Model\ResourceValue $resourceValue
  * @param \Symfony\Component\Form\FormInterface $form
  */
 function it_builds_form_for_resource_group($formFactory, $formBuilder, $element, $valueRepository, $resourceValue, $form)
 {
     $element->getKey()->willReturn('resources');
     $valueRepository->get('resources.resource_key')->willReturn($resourceValue);
     $formFactory->createBuilder('form', array('resources_resource_key' => $resourceValue), array('form_options'))->willReturn($formBuilder);
     $formBuilder->add('resources_resource_key', 'resource', array('resource_key' => 'resources.resource_key'))->shouldBeCalled();
     $formBuilder->getForm()->willReturn($form);
     $this->build($element)->shouldReturn($form);
 }
 /**
  * @param GenericResourceElement $element
  * @param \FSi\Bundle\ResourceRepositoryBundle\Model\ResourceValueRepository $valueRepository
  * @param array|\FSi\Bundle\ResourceRepositoryBundle\Repository\Resource\Type\ResourceInterface[] $resources
  * @return array
  */
 private function createFormData(GenericResourceElement $element, ResourceValueRepository $valueRepository, array $resources)
 {
     $data = array();
     foreach ($resources as $resourceKey => $resource) {
         $resourceName = $this->buildResourceName($element, $resourceKey);
         $data[$this->normalizeKey($resourceName)] = $valueRepository->get($resource->getName());
     }
     return $data;
 }
 /**
  * @param string $key
  * @param mixed
  */
 public function set($key, $value)
 {
     $resource = $this->builder->getResource($key);
     $entity = $this->resourceValueRepository->get($resource->getName());
     $accessor = PropertyAccess::createPropertyAccessor();
     if (isset($entity) && !isset($value)) {
         $this->resourceValueRepository->remove($entity);
         return;
     }
     if (isset($entity)) {
         $accessor->setValue($entity, $resource->getResourceProperty(), $value);
         $this->resourceValueRepository->save($entity);
     } else {
         $entity = new $this->resourceValueClass();
         $accessor->setValue($entity, $resource->getResourceProperty(), $value);
         $this->resourceValueRepository->add($entity);
     }
 }