Example #1
0
 /**
  * Save new set of data from a t41_Data_Object object using INSERT 
  *
  * @param t41_Data_Object $do
  * @return boolean
  * @throws t41_Backend_Exception
  */
 public function create(ObjectModel\DataObject $do)
 {
     // set database to use
     $this->_selectDatabase($do->getUri());
     // get collection to use, from mapper if available, else from data object
     $collection = $this->_mapper instanceof Backend\Mapper ? $this->_mapper->getDatastore($do->getClass()) : $do->getClass();
     $collec = $this->_db->selectCollection($collection);
     // get a valid data array passing mapper if any
     if ($this->_mapper) {
         $recordSet = $do->map($this->_mapper, 'backend', $this->_uri->getAlias());
     } else {
         $recordSet = $do->toArray($this->_uri->getAlias());
     }
     /* @todo check wether... */
     try {
         $collec->insert($recordSet);
     } catch (\Exception $e) {
         // @todo decide whether to throw an exception or just save last message in a property
         die($e->getMessage());
         return false;
     }
     // inject new t41_Object_Uri object in data object
     $uri = Backend::PREFIX . $this->_uri->getAlias() . '/' . $this->_database . '/' . $collection . '/' . $recordSet['_id']->__toString();
     $uri = new ObjectModel\ObjectUri($uri, $this->_uri);
     $do->setUri($uri);
     return true;
 }
Example #2
0
 /**
  * Save new set of data from a t41_Data_Object object using INSERT 
  *
  * @param t41_Data_Object $do
  * @return boolean
  * @throws t41_Backend_Exception
  */
 public function create(ObjectModel\DataObject $do)
 {
     if (!$this->_setRessource($do->getClass())) {
         die('BACKEND_RESSOURCE_ERROR');
     }
     // get a valid data array passing mapper if any
     if ($this->_mapper) {
         $recordSet = $do->map($this->_mapper);
     } else {
         $recordSet = $do->toArray();
     }
     $id = md5(microtime() . get_class($this));
     try {
         $root = $this->_ressource->getElementsByTagName($this->_rootName);
         $root = $root->item(0);
         if (!$root instanceof \DOMElement) {
             $root = $this->_ressource->createElement($this->_rootName);
             $this->_ressource->appendChild($root);
         }
         $node = $this->_ressource->createElement($this->_itemName);
         $node->setAttribute($this->_pkey, $id);
         foreach ($recordSet as $key => $value) {
             $tag = $this->_ressource->createElement($key, $value);
             $node->appendChild($tag);
         }
         $root->appendChild($node);
         $this->_saveRessource();
     } catch (Exception $e) {
         // @todo decide wether throw an exception or just save last message in a property
         return false;
     }
     $uri = $id;
     if (!$this->_mapper instanceof Backend\Mapper) {
         $uri = $this->_path . $this->_file . '/' . $id;
     }
     $uri = new ObjectModel\ObjectUri($uri);
     $do->setUri($uri);
     return true;
 }
Example #3
0
 /**
  * Update record data in the backend with passed data object properties values 
  *
  * @param t41_Data_Object $do
  * @return boolean
  */
 public function update(ObjectModel\DataObject $do)
 {
     // Properties mapping (to array)
     if ($this->_mapper) {
         $data = $do->map($this->_mapper, $do->getClass());
     } else {
         $data = $do->toArray();
     }
     $data = $this->_unflattenArray($data);
     return (bool) $this->_ressource->update($do->getUri()->getIdentifier(), $data);
 }
Example #4
0
 /**
  * Save new set of data from a t41_Data_Object object using INSERT 
  *
  * @param \t41\ObjectModel\DataObject $do
  * @return boolean
  * @throws \t41\Backend\Adapter\Exception
  */
 public function create(ObjectModel\DataObject $do)
 {
     $table = $this->_getTableFromClass($do->getClass());
     if (!$table) {
         throw new Exception('BACKEND_MISSING_DBTABLE_PARAM');
     }
     // get a valid data array passing mapper if any
     if ($this->_mapper) {
         $recordSet = $do->map($this->_mapper, $this);
     } else {
         $recordSet = $do->toArray($this);
     }
     //			Zend_Debug::dump($recordSet);
     $this->_setLastQuery('insert', $recordSet);
     try {
         $this->_connect();
         $this->_ressource->insert(isset($table) ? $table : $do->getClass(), $recordSet['data']);
     } catch (Exception $e) {
         if (true) {
             throw new Exception("Error Creating Record: " . $e->getMessage);
         } else {
             return false;
         }
     }
     // inject new t41_Object_Uri object in data object
     // @todo provide support for primary keys that are not generated by DB (not AUTO INCREMENTED INTEGER)
     $id = $this->_ressource->lastInsertId();
     $uri = $id;
     if (!$this->_mapper instanceof Backend\Mapper) {
         $uri = $table . '/' . $uri;
     }
     $uri = new ObjectModel\ObjectUri($uri);
     $do->setUri($uri);
     /* get collection handling properties (if any) and process them */
     foreach ($do->getProperties() as $property) {
         if (!$property instanceof Property\CollectionProperty) {
             continue;
         }
         $collection = $property->getValue();
         //var_dump($collection->getMembers());
         /* @var $member t41_Object_Model */
         foreach ($collection->getMembers() as $member) {
             $member->setProperty($property->getParameter('keyprop'), $uri);
             $member->save();
         }
     }
     return true;
 }