Rajout de doctrine/orm
[zf2.biz/application_blanche.git] / vendor / doctrine / orm / tests / Doctrine / Tests / Models / ECommerce / ECommerceProduct.php
diff --git a/vendor/doctrine/orm/tests/Doctrine/Tests/Models/ECommerce/ECommerceProduct.php b/vendor/doctrine/orm/tests/Doctrine/Tests/Models/ECommerce/ECommerceProduct.php
new file mode 100644 (file)
index 0000000..f053fd2
--- /dev/null
@@ -0,0 +1,178 @@
+<?php
+
+namespace Doctrine\Tests\Models\ECommerce;
+
+use Doctrine\Common\Collections\ArrayCollection;
+
+/**
+ * ECommerceProduct
+ * Represents a type of product of a shopping application.
+ *
+ * @author Giorgio Sironi
+ * @Entity
+ * @Table(name="ecommerce_products",indexes={@Index(name="name_idx", columns={"name"})})
+ */
+class ECommerceProduct
+{
+    /**
+     * @Column(type="integer")
+     * @Id
+     * @GeneratedValue
+     */
+    private $id;
+
+    /**
+     * @Column(type="string", length=50, nullable=true)
+     */
+    private $name;
+
+    /**
+     * @OneToOne(targetEntity="ECommerceShipping", cascade={"persist"})
+     * @JoinColumn(name="shipping_id", referencedColumnName="id")
+     */
+    private $shipping;
+
+    /**
+     * @OneToMany(targetEntity="ECommerceFeature", mappedBy="product", cascade={"persist"})
+     */
+    private $features;
+
+    /**
+     * @ManyToMany(targetEntity="ECommerceCategory", cascade={"persist"}, inversedBy="products")
+     * @JoinTable(name="ecommerce_products_categories",
+     *      joinColumns={@JoinColumn(name="product_id", referencedColumnName="id")},
+     *      inverseJoinColumns={@JoinColumn(name="category_id", referencedColumnName="id")})
+     */
+    private $categories;
+
+    /**
+     * This relation is saved with two records in the association table for
+     * simplicity.
+     * @ManyToMany(targetEntity="ECommerceProduct", cascade={"persist"})
+     * @JoinTable(name="ecommerce_products_related",
+     *      joinColumns={@JoinColumn(name="product_id", referencedColumnName="id")},
+     *      inverseJoinColumns={@JoinColumn(name="related_id", referencedColumnName="id")})
+     */
+    private $related;
+
+    public $isCloned = false;
+    public $wakeUp = false;
+
+    public function __construct()
+    {
+        $this->features = new ArrayCollection;
+        $this->categories = new ArrayCollection;
+        $this->related = new ArrayCollection;
+    }
+
+    public function getId()
+    {
+        return $this->id;
+    }
+
+    public function getName()
+    {
+        return $this->name;
+    }
+
+    public function setName($name)
+    {
+        $this->name = $name;
+    }
+
+    public function getShipping()
+    {
+        return $this->shipping;
+    }
+
+    public function setShipping(ECommerceShipping $shipping)
+    {
+        $this->shipping = $shipping;
+    }
+
+    public function removeShipping()
+    {
+        $this->shipping = null;
+    }
+
+    public function getFeatures()
+    {
+        return $this->features;
+    }
+
+    public function addFeature(ECommerceFeature $feature)
+    {
+        $this->features[] = $feature;
+        $feature->setProduct($this);
+    }
+
+    /** does not set the owning side */
+    public function brokenAddFeature(ECommerceFeature $feature)
+    {
+        $this->features[] = $feature;
+    }
+
+    public function removeFeature(ECommerceFeature $feature)
+    {
+        $removed = $this->features->removeElement($feature);
+        if ($removed) {
+            $feature->removeProduct();
+        }
+        return $removed;
+    }
+
+    public function addCategory(ECommerceCategory $category)
+    {
+        if (!$this->categories->contains($category)) {
+            $this->categories[] = $category;
+            $category->addProduct($this);
+        }
+    }
+
+    public function removeCategory(ECommerceCategory $category)
+    {
+        $removed = $this->categories->removeElement($category);
+        if ($removed) {
+            $category->removeProduct($this);
+        }
+    }
+
+    public function getCategories()
+    {
+        return $this->categories;
+    }
+
+    public function getRelated()
+    {
+        return $this->related;
+    }
+
+    public function addRelated(ECommerceProduct $related)
+    {
+        if (!$this->related->contains($related)) {
+            $this->related[] = $related;
+            $related->addRelated($this);
+        }
+    }
+
+    public function removeRelated(ECommerceProduct $related)
+    {
+        $removed = $this->related->removeElement($related);
+        if ($removed) {
+            $related->removeRelated($this);
+        }
+    }
+
+    public function __clone()
+    {
+        $this->isCloned = true;
+    }
+
+    /**
+     * Testing docblock contents here
+     */
+    public function __wakeup()
+    {
+        $this->wakeUp = true;
+    }
+}