<?php
namespace Oro\Bundle\EntityExtendBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Oro\Bundle\EntityConfigBundle\Metadata\Annotation\Config;
use Oro\Bundle\EntityConfigBundle\Metadata\Annotation\ConfigField;
use Oro\Bundle\EntityBundle\EntityProperty\DatesAwareInterface;
use Oro\Bundle\EntityBundle\EntityProperty\DatesAwareTrait;
use Oro\Bundle\EntityExtendBundle\Model\ExtendAttributeFamily;
use Oro\Bundle\LocaleBundle\Entity\LocalizedFallbackValue;
use Oro\Bundle\UserBundle\Entity\User;
/**
* @ORM\Table(name="oro_attribute_family")
* @ORM\Entity()
* @Config(
* defaultValues={
* "dataaudit"={
* "auditable"=true
* },
* "ownership"={
* "owner_type"="USER",
* "owner_field_name"="owner",
* "owner_column_name"="user_owner_id"
* },
* }
* )
*/
class AttributeFamily extends ExtendAttributeFamily implements DatesAwareInterface
{
use DatesAwareTrait;
/**
* {@inheritdoc}
*/
public function __construct()
{
parent::__construct();
$this->labels = new ArrayCollection();
$this->attributes = new ArrayCollection();
}
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var ArrayCollection|LocalizedFallbackValue[]
*
* @ORM\ManyToMany(
* targetEntity="Oro\Bundle\LocaleBundle\Entity\LocalizedFallbackValue",
* cascade={"ALL"},
* orphanRemoval=true
* )
* @ORM\JoinTable(
* name="oro_attribute_family_label",
* joinColumns={
* @ORM\JoinColumn(name="attribute_family_id", referencedColumnName="id", onDelete="CASCADE")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="localized_value_id", referencedColumnName="id", onDelete="CASCADE", unique=true)
* }
* )
* @ConfigField(
* defaultValues={
* "ownership"={
* "owner_type"="USER",
* "owner_field_name"="owner",
* "owner_column_name"="user_owner_id"
* },
* "dataaudit"={
* "auditable"=true
* },
* "importexport"={
* "order"=40,
* "full"=true,
* "fallback_field"="string"
* }
* }
* )
*/
private $labels;
/**
* @var string
* @ORM\Column(name="code", type="string", length=255, unique=true)
*/
private $code;
/**
* @var ArrayCollection
* @ORM\ManyToMany(
* targetEntity="Oro\Bundle\EntityConfigBundle\Entity\FieldConfigModel",
* cascade={"ALL"},
* orphanRemoval=true
* )
* @ORM\JoinTable(
* name="oro_attribute_family_field",
* joinColumns={
* @ORM\JoinColumn(name="attribute_family_id", referencedColumnName="id", onDelete="CASCADE")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="oro_entity_config_field", referencedColumnName="id", onDelete="CASCADE")
* }
* )
*/
private $attributes;
/**
* @var bool
* @ORM\Column(name="is_enabled", type="boolean", length=255, unique=true)
*/
private $isEnabled;
/**
* @var User
* @ORM\ManyToOne(targetEntity="Oro\Bundle\UserBundle\Entity\User")
* @ORM\JoinColumn(name="user_owner_id", referencedColumnName="id", onDelete="SET NULL")
*/
protected $owner;
/**
* @param LocalizedFallbackValue $label
*
* @return $this
*/
public function addLabel(LocalizedFallbackValue $label)
{
if (!$this->labels->contains($label)) {
$this->labels->add($label);
}
return $this;
}
/**
* @param LocalizedFallbackValue $label
*
* @return $this
*/
public function removeLabel(LocalizedFallbackValue $label)
{
if ($this->labels->contains($label)) {
$this->labels->removeElement($label);
}
return $this;
}
/**
* @return User
*/
public function getOwner()
{
return $this->owner;
}
/**
* @param User $owner
*
* @return $this
*/
public function setOwner(User $owner)
{
$this->owner = $owner;
return $this;
}
/**
* @param string $code
* @return $this
*/
public function setCode($code)
{
$this->code = $code;
return $this;
}
/**
* @return string
*/
public function getCode()
{
return $this->code;
}
/**
* @param bool $isEnabled
* @return $this
*/
public function setIsEnabled($isEnabled)
{
$this->isEnabled = $isEnabled;
return $this;
}
/**
* @return bool
*/
public function getIsEnabled()
{
return $this->isEnabled;
}
/**
* @return int
*/
public function getId()
{
return $this->id;
}
}