Example #1
0
 /**
  * {@inheritDoc}
  */
 public function createCharacteristicFromDefinition(Definition $definition, $value = null)
 {
     $characteristic = null;
     // TODO characteristic classes map
     switch ($definition->getType()) {
         case 'text':
             $characteristic = new TextCharacteristic();
             break;
         case 'html':
             $characteristic = new HtmlCharacteristic();
             break;
         case 'number':
             $characteristic = new NumberCharacteristic();
             break;
         case 'boolean':
             $characteristic = new BooleanCharacteristic();
             break;
         case 'datetime':
             $characteristic = new DatetimeCharacteristic();
             break;
         case 'choice':
             $characteristic = new ChoiceCharacteristic();
             if (null !== $value && !$value instanceof ChoiceCharacteristicValue) {
                 $tmp = $value;
                 $value = new ChoiceCharacteristicValue();
                 $value->setIdentifier($definition->getIdentifier())->setValue($tmp);
             }
             break;
         default:
             throw new \InvalidArgumentException(sprintf('Invalid type "%s".', $definition->getType()));
     }
     $characteristic->setIdentifier($definition->getIdentifier())->setValue($value);
     return $characteristic;
 }
 public function findByDefinition(Definition $definition)
 {
     $query = $this->createQueryBuilder('c')->where('c.identifier = :identifier')->setParameter('identifier', $definition->getIdentifier())->orderBy('c.value', 'ASC')->getQuery();
     return $query->getResult();
 }
 /**
  * Fills the data with the proper characteristic type.
  *
  * @param \Doctrine\Common\Collections\Collection $data
  * @param \Ekyna\Component\Characteristics\Schema\Definition $definition
  * @throws \InvalidArgumentException
  */
 private function appendProperData(Collection $data, Definition $definition)
 {
     $identifier = $definition->getIdentifier();
     if ($data->offsetExists($identifier)) {
         return;
     }
     $characteristic = $this->manager->createCharacteristicFromDefinition($definition);
     $data->set($identifier, $characteristic);
 }