. */ namespace Volkszaehler\Model; use Volkszaehler\Util; use Volkszaehler\Model; /** * Property entity * * @author Steffen Vogel * @package default * * @Entity * @Table( * name="properties", * uniqueConstraints={ * @UniqueConstraint(name="unique_properties", columns={"id", "name"}) * } * ) * @HasLifecycleCallbacks */ class Property { /** * @Id * @Column(type="smallint", nullable=false) * @GeneratedValue(strategy="AUTO") * * @todo wait until DDC-117 is fixed (PKs on FKs) */ protected $id; /** @Column(type="string", nullable=false) */ protected $name; /** @Column(type="string", nullable=false) */ protected $value; /** @ManyToOne(targetEntity="Entity", inversedBy="properties") */ protected $entity; /** * Constructor * * @param string $key * @param string $value */ public function __construct(Model\Entity $entity, $name, $value) { $this->setName($name); $this->setValue($value); $this->entity = $entity; } /** * Validate property name & value * * Throws an exception if something is incorrect * * @PrePersist * @PreUpdate * @PostLoad * @todo to be implemented */ function validate() { } /* * Setter & Getter */ public function getName() { return $this->name; } public function getValue() { return $this->value; } public function getDefinition() { return PropertyDefinition::get($this->name); } public function setValue($value) { if (!$this->getDefinition()->validateValue($value)) { throw new \Exception('invalid property value'); } $this->value = $value; } /** * * @param string $name * @todo validation */ protected function setName($name) { $this->name = $name; } } ?>