コード例 #1
0
 /**
  * add object with mainModel (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->getModel() instanceof MainModel) {
         throw new \Exception('mdodel must be instance of MainModel');
     }
     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');
         }
     }
 }
コード例 #2
0
 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);
 }
コード例 #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;
 }
コード例 #4
0
 /**
  * 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;
 }
コード例 #5
0
 /**
  * load instancied object with serialized object
  * @param Object $pObject
  * @param boolean $pForceLoad if object already exists and is already loaded, force to reload object
  * @throws \Exception
  * @return Object|null null if load is unsuccessfull
  */
 public function loadAndFillObject(Object $pObject, $pForceLoad = false)
 {
     $lSuccess = false;
     $this->load();
     if (is_null($lSerializationUnit = $this->getSerialization())) {
         throw new \Exception("model doesn't have serialization");
     }
     if (!$pObject->isLoaded() || $pForceLoad) {
         $lSuccess = $lSerializationUnit->loadObject($pObject);
     }
     return $lSuccess;
 }
コード例 #6
0
	}
}';
$lResult = ObjectService::getObjects(json_decode($Json));
if (!is_object($lResult) || !isset($lResult->success) || !$lResult->success || !isset($lResult->result) || !is_array($lResult->result)) {
    throw new Exception('bad ObjectService::getObjects return ' . json_encode($lResult));
}
if (json_encode($lResult->result) != '[{"id1":"1","id2":"23","date":"2016-05-01T14:53:54+02:00","timestamp":"2016-10-16T21:50:19+02:00","string":"aaaa","integer":"0","mainParentTestDb":"1"},{"id1":"1","id2":"101","date":"2016-04-13T09:14:33+02:00","timestamp":"2016-10-16T21:50:19+02:00","object":{"plop":"plop","plop2":"plop2"},"objectWithId":{"plop":"plop","plop2":"plop2"},"string":"cccc","integer":"2","mainParentTestDb":"1"}]') {
    throw new Exception('bad objects : ' . json_encode($lResult->result));
}
/** ****************************** test following export import objects ****************************** **/
$lBasedObjects = [json_decode('{"id1":"1","id2":"23","date":"2016-05-01T14:53:54+02:00","timestamp":"2016-10-16T21:50:19+02:00","string":"aaaa","integer":0,"mainParentTestDb":"1"}'), json_decode('{"id1":"1","id2":"101","date":"2016-04-13T09:14:33+02:00","timestamp":"2016-10-16T21:50:19+02:00","string":"cccc","integer":2,"object":{"plop":"plop","plop2":"plop2"},"objectWithId":{"plop":"plop","plop2":"plop2"},"mainParentTestDb":"1"}')];
$lObject = null;
foreach ($lResult->result as $lIndex => $lPhpObject) {
    $lObject = new Object('testDb');
    $lObject->fromObject($lPhpObject);
    $lObject2 = new Object('testDb');
    $lObject2->fromXml($lObject->toXml(false));
    if (json_encode($lObject2->toObject(false, 'Europe/Berlin')) !== json_encode($lBasedObjects[$lIndex])) {
        throw new Exception('bad object : ' . json_encode($lObject2->toObject(false, 'Europe/Berlin')));
    }
}
/** ****************************** test DateTime/DateTimeZone with database serialization ****************************** **/
$lDbTestModel = InstanceModel::getInstance()->getInstanceModel('testDb');
$lObject = $lDbTestModel->loadObject('[1,1501774389]');
$lObjectJson = $lObject->toObject();
$lObject->getValue('timestamp')->sub(new DateInterval('P0Y0M0DT5H0M0S'));
$lObject->save(SqlTable::UPDATE);
$lObject = $lDbTestModel->loadObject('[1,1501774389]', true);
$lObject->getValue('timestamp')->add(new DateInterval('P0Y0M0DT5H0M0S'));
$lObject->save(SqlTable::UPDATE);
$lObject = $lDbTestModel->loadObject('[1,1501774389]', true);
コード例 #7
0
 protected function _fillObjectwithId(Object $pObject, $pId)
 {
     if (!is_null($pId)) {
         $lIdProperties = $this->getIdProperties();
         if (count($lIdProperties) == 1) {
             $pObject->setValue($lIdProperties[0], $pId);
         } else {
             $lIdValues = $this->decodeId($pId);
             foreach ($this->getIdProperties() as $lIndex => $lPropertyName) {
                 $pObject->setValue($lPropertyName, $lIdValues[$lIndex]);
             }
         }
     }
     return $pObject;
 }
コード例 #8
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;
 }