Exemplo n.º 1
0
 /**
  * @param EntityMetadata $metadata
  * @param array $entities
  */
 public function __construct(EntityMetadata $metadata, array $entities)
 {
     $this->metadata = $metadata;
     $this->setEntities($entities);
     foreach ($metadata->getFieldsMetadata() as $fieldMetadata) {
         $this->addNewField($fieldMetadata);
     }
 }
Exemplo n.º 2
0
 /**
  * @param EntityMetadata $entityMetadata
  */
 protected function applyEntityMetadataConfig(EntityMetadata $entityMetadata)
 {
     $className = $entityMetadata->getClassName();
     $mergeConfig = $this->entityConfigHelper->getConfig(self::CONFIG_MERGE_SCOPE, $className, null);
     if ($mergeConfig) {
         $entityMetadata->merge($mergeConfig->all());
     }
 }
Exemplo n.º 3
0
 public function testNotTaggable()
 {
     $this->helper->expects($this->once())->method('isTaggable')->willReturn(false);
     $this->entityMetadata = $this->getMockBuilder('Oro\\Bundle\\EntityMergeBundle\\Metadata\\EntityMetadata')->setMethods(['getClassName', 'addFieldMetadata'])->disableOriginalConstructor()->getMock();
     $this->entityMetadata->expects($this->any())->method('getClassName')->will($this->returnValue(get_class($this->createNotTaggableEntity())));
     $this->entityMetadata->expects($this->never())->method('addFieldMetadata');
     $event = new EntityMetadataEvent($this->entityMetadata);
     $this->listener->onBuildMetadata($event);
 }
Exemplo n.º 4
0
 /**
  * @param EntityMetadata $entityMetadata
  * @return bool
  */
 private function isTaggable(EntityMetadata $entityMetadata)
 {
     $className = $entityMetadata->getClassName();
     $classInterfaces = class_implements($className);
     if (isset($classInterfaces['Oro\\Bundle\\TagBundle\\Entity\\Taggable'])) {
         return true;
     }
     return false;
 }
Exemplo n.º 5
0
 /**
  * @param EntityMetadata $entityMetadata
  *
  * @return string
  */
 protected function getNoteFieldName($entityMetadata)
 {
     $fieldsMetadata = $entityMetadata->getFieldsMetadata();
     foreach ($fieldsMetadata as $fieldName => $fieldMetadata) {
         //if there is Metadata field already exists,
         //it should be changed to custom Metadata field(with appropriate logic and Strategy)
         if ($fieldMetadata->getSourceClassName() === Note::ENTITY_NAME) {
             return $fieldName;
         }
     }
     //or generate default name
     return strtolower(str_replace('\\', '_', Note::ENTITY_NAME));
 }
Exemplo n.º 6
0
 public function testOnBuildMetadata()
 {
     $entity = Note::ENTITY_NAME;
     $alias = 'oro_bundle_notebundle_entity_note';
     $calls = 1;
     $config = $this->getMock('Oro\\Bundle\\EntityConfigBundle\\Config\\ConfigInterface');
     $this->configProvider->expects($this->any())->method('getConfig')->willReturn($config);
     $config->expects($this->exactly($calls))->method('get')->willReturn('label');
     $fieldMetadataOptions = ['display' => true, 'activity' => true, 'type' => $entity, 'field_name' => $alias, 'is_collection' => true, 'template' => 'OroActivityListBundle:Merge:value.html.twig', 'label' => 'Items', 'merge_modes' => [MergeModes::NOTES_UNITE, MergeModes::NOTES_REPLACE]];
     $fieldMetadata = new FieldMetadata($fieldMetadataOptions);
     $this->entityMetadata->expects($this->at(1))->method('addFieldMetadata')->with($this->equalTo($fieldMetadata));
     $this->activityListChainProvider->expects($this->exactly($calls))->method('isApplicableTarget')->willReturn(true);
     $event = new EntityMetadataEvent($this->entityMetadata);
     $this->listener->onBuildMetadata($event);
 }
Exemplo n.º 7
0
 /**
  * @param EntityMetadata $entityMetadata
  * @param ClassMetadata $classMetadata
  * @param string $className
  */
 protected function addDoctrineInverseAssociations(EntityMetadata $entityMetadata, ClassMetadata $classMetadata, $className)
 {
     $allMetadata = $this->doctrineHelper->getAllMetadata();
     foreach ($allMetadata as $metadata) {
         if ($metadata == $classMetadata) {
             // Skip own class metadata
             continue;
         }
         $currentClassName = $metadata->getName();
         $associationMappings = $metadata->getAssociationsByTargetClass($className);
         foreach ($associationMappings as $fieldName => $associationMapping) {
             if (isset($associationMapping['type']) && $associationMapping['type'] === ClassMetadataInfo::MANY_TO_MANY || isset($associationMapping['mappedBy'])) {
                 // Skip "mapped by" and many-to-many as it's included on other side.
                 continue;
             }
             $associationMapping['mappedBySourceEntity'] = false;
             $mergeModes = [MergeModes::UNITE];
             if ($associationMapping['type'] === ClassMetadataInfo::ONE_TO_ONE) {
                 // for fields with ONE_TO_ONE relation Unite strategy is impossible, so Replace is used
                 $mergeModes = [MergeModes::REPLACE];
             }
             $fieldMetadata = $this->metadataFactory->createFieldMetadata(array('field_name' => $this->createInverseAssociationFieldName($currentClassName, $fieldName), 'merge_modes' => $mergeModes, 'source_field_name' => $fieldName, 'source_class_name' => $currentClassName), $associationMapping);
             $entityMetadata->addFieldMetadata($fieldMetadata);
         }
     }
 }
Exemplo n.º 8
0
 /**
  * @dataProvider getDataProvider
  */
 public function testOnBuildMetadata($keys, $calls)
 {
     $config = $this->getMock('Oro\\Bundle\\EntityConfigBundle\\Config\\ConfigInterface');
     $this->configProvider->expects($this->any())->method('getConfig')->willReturn($config);
     $config->expects($this->exactly($calls))->method('get')->willReturn('label');
     $i = 0;
     $k = array_keys($keys);
     foreach ($k as $key) {
         $i++;
         $fieldMetadataOptions = ['display' => true, 'activity' => true, 'type' => $key, 'field_name' => $key, 'is_collection' => true, 'template' => 'OroActivityListBundle:Merge:value.html.twig', 'label' => 'Items', 'merge_modes' => [MergeModes::ACTIVITY_UNITE, MergeModes::ACTIVITY_REPLACE]];
         $fieldMetadata = new FieldMetadata($fieldMetadataOptions);
         $this->entityMetadata->expects($this->at($i))->method('addFieldMetadata')->with($this->equalTo($fieldMetadata));
     }
     $this->activityManager->expects($this->once())->method('getActivities')->willReturn($keys);
     $event = new EntityMetadataEvent($this->entityMetadata);
     $this->listener->onBuildMetadata($event);
 }
Exemplo n.º 9
0
 /**
  * @param EntityMetadata $entityMetadata
  *
  * @return array
  */
 protected function getAvailableActivityTypes(EntityMetadata $entityMetadata)
 {
     $className = $entityMetadata->getClassName();
     $types = $this->activityManager->getActivities($className);
     return array_keys($types);
 }
Exemplo n.º 10
0
 /**
  * @param EntityMetadata $entityMetadata
  *
  * @return bool
  */
 private function isTaggable(EntityMetadata $entityMetadata)
 {
     $className = $entityMetadata->getClassName();
     return $this->taggableHelper->isTaggable($className);
 }
Exemplo n.º 11
0
 /**
  * Render entity label
  *
  * @param mixed $entity
  * @param EntityMetadata $metadata
  * @return string
  */
 public function renderEntityLabel($entity, EntityMetadata $metadata)
 {
     $template = $metadata->get('template') ?: $this->defaultTemplate;
     $stringValue = $this->convertToString($entity, $metadata);
     return $this->environment->render($template, array('metadata' => $metadata, 'entity' => $entity, 'convertedValue' => $stringValue, 'isListValue' => false));
 }
Exemplo n.º 12
0
 /**
  * @expectedException \Oro\Bundle\EntityMergeBundle\Exception\InvalidArgumentException
  * @expectedExceptionMessage Cannot get class name from merge entity metadata.
  */
 public function testGetClassNameFails()
 {
     $this->doctrineMetadata->expects($this->once())->method('has')->with('name')->will($this->returnValue(false));
     $this->metadata->getClassName();
 }