/**
  * add object with Model (if not already added)
  * @param Object $pObject
  * @param boolean $pThrowException throw exception if object can't be added (no complete id or object already added)
  * @throws \Exception
  */
 public function addObject(Object $pObject, $pThrowException = true)
 {
     if ($pObject->hasCompleteId()) {
         if ($pObject->getModel()->hasIdProperty()) {
             $lModelName = $pObject->getModel()->getModelName();
             $lId = $pObject->getId();
             if (!array_key_exists($lModelName, $this->mMap)) {
                 $this->mMap[$lModelName] = array();
             }
             // if object NOT already added, we can add it and create attached LocalObjectCollection
             if (!array_key_exists($lId, $this->mMap[$lModelName])) {
                 $this->mMap[$lModelName][$lId] = $pObject;
             } else {
                 if ($pThrowException) {
                     throw new \Exception('object already added');
                 }
             }
         }
     } else {
         if ($pThrowException) {
             trigger_error(json_encode($pObject->toObject()));
             trigger_error($pObject->getModel()->getModelName());
             trigger_error(json_encode($pObject->getModel()->getIdproperties()));
             throw new \Exception('object can\'t be added, object has no id or id is incomplete');
         }
     }
 }
 public function loadValue(Object $pObject)
 {
     if ($pObject->getModel() !== $this->getUniqueModel()) {
         throw new \Exception('object not compatible with property ');
     }
     $lSerializationUnit = $this->getUniqueModel()->getSerialization();
     if (is_null($lSerializationUnit)) {
         trigger_error("+++++++++ no serial +++++++++");
         return false;
     }
     return $lSerializationUnit->loadObject($pObject);
 }
Ejemplo n.º 3
0
 /**
  * execute controller
  * @param Oject $pObject
  * @param array $pParams
  * @param array $pVisitRootObject
  * @return unknown|boolean
  */
 public final function execute(Object $pObject, $pParams = array())
 {
     $this->_verifParameters($pParams);
     if ($pObject->getModel() instanceof Model || $pObject->getModel() instanceof ModelArray) {
         $this->mPropertyNameStack = array();
         $this->mMainObject = $pObject;
         $this->mParams = $pParams;
         $this->_init($pObject);
         if ($this->_isVisitRootObject()) {
             $lModelName = $pObject->getModel()->getModelName();
             $lProperty = new ForeignProperty($pObject->getModel(), $lModelName);
             $lCustomModel = new ModelCustom('modelCustom', array($lProperty));
             $lRootObject = $lCustomModel->getObjectInstance();
             $lRootObject->setValue($lModelName, $pObject);
             $this->_accept($lRootObject, $lModelName, $lModelName);
         } else {
             $this->_acceptChildren($pObject);
         }
         return $this->_finalize($pObject);
     }
     return false;
 }
 /**
  * add object with localModel (only if not already added)
  * @param Object $pObject
  * @param boolean $pThrowException throw exception if an object with same id already exists
  * @return boolean true if object is added
  */
 public function addObject(Object $pObject, $pThrowException = true)
 {
     if (!$pObject->getModel() instanceof LocalModel) {
         throw new \Exception('mdodel must be instance of LocalModel');
     }
     $lReturn = false;
     $lId = $pObject->getId();
     if (!$pObject->getModel()->hasIdProperty() || !$pObject->hasCompleteId()) {
         return $lReturn;
     }
     $pModelName = $pObject->getModel()->getModelName();
     if (!array_key_exists($pModelName, $this->mMap)) {
         $this->mMap[$pModelName] = array();
     }
     if (!array_key_exists($lId, $this->mMap[$pModelName])) {
         $this->mMap[$pModelName][$lId] = $pObject;
         $lReturn = true;
     } else {
         if ($pThrowException) {
             throw new \Exception('object already added');
         }
     }
     return $lReturn;
 }
Ejemplo n.º 5
0
 public function toXmlId(Object $pObject, $pXmlNode, $pUseSerializationName = false, $pTimeZone = null, &$pMainForeignObjects = null)
 {
     if ($pObject->getModel() !== $this) {
         throw new \Exception('current model instance must be same instance of object model');
     }
     return $this->_toXmlId($pObject, $pXmlNode, $pUseSerializationName, new \DateTimeZone(is_null($pTimeZone) ? date_default_timezone_get() : $pTimeZone), $pMainForeignObjects);
 }
Ejemplo n.º 6
0
 /**
  * (non-PHPdoc)
  * @see \comhon\object\object\SerializationUnit::_loadObject()
  */
 protected function _loadObject(Object $pObject)
 {
     $lWhereColumns = [];
     $lModel = $pObject->getModel();
     foreach ($lModel->getIdProperties() as $lPropertyName) {
         $lWhereColumns[$lModel->getProperty($lPropertyName)->getSerializationName()] = $pObject->getValue($lPropertyName);
     }
     $lReturn = $this->_loadObjectFromDatabase($pObject, array(), $lWhereColumns, LogicalJunction::CONJUNCTION);
     return $lReturn;
 }