From aa6985c0ddf77d0875250b8c46a8a0a36cf34fef Mon Sep 17 00:00:00 2001
From: Cyril Vazquez <cyril.vazquez@maarch.org>
Date: Tue, 26 Jun 2012 08:26:23 +0000
Subject: [PATCH]

---
 .../class/DataAccessService_Database.php      | 18 ++++++++---------
 core/trunk/core/tests/class/DataObject.php    | 11 +++++-----
 .../core/tests/class/DataObjectArray.php      |  5 -----
 .../core/tests/class/DataObjectChangeLog.php  |  5 +++++
 .../core/tests/class/DataObjectController.php | 20 +++++++++++++++----
 .../core/tests/class/DataObjectSchema.php     |  9 +++++++++
 6 files changed, 44 insertions(+), 24 deletions(-)

diff --git a/core/trunk/core/tests/class/DataAccessService_Database.php b/core/trunk/core/tests/class/DataAccessService_Database.php
index c0c215c59ed..92e7ced6006 100644
--- a/core/trunk/core/tests/class/DataAccessService_Database.php
+++ b/core/trunk/core/tests/class/DataAccessService_Database.php
@@ -1,5 +1,6 @@
 <?php
 class DataAccessService_Database 
+    
 {
 	
     private $connection;
@@ -7,11 +8,13 @@ class DataAccessService_Database
     public $tables = array();
     public $relations = array();
     private $limit;
+    private $db;
     
     public function DataAccessService_Database($schema='public', $limit=500) 
     {
         $this->schema = $schema;
         $this->limit = $limit;
+        $this->db = new dbquery();
     }
     
     public function addTable($tableName) 
@@ -90,11 +93,10 @@ class DataAccessService_Database
         
         //echo "<pre>DAS = " . print_r($this,true) . "</pre>";
         //echo "<pre>QUERY = " . $query . "</pre>";
-        $db = new dbquery();
-        $db->query($query);
+        $this->db->query($query);
         
         $results = array();
-        while($result = $db->fetch_assoc()) {
+        while($result = $this->db->fetch_assoc()) {
             $results[] = $result;
         }
         return $results;
@@ -131,9 +133,8 @@ class DataAccessService_Database
         $query .= " VALUES (" . $insertExpression . ")";
         
         //echo "<pre>DAS = " . print_r($this,true) . "</pre>";
-        //echo "<pre>QUERY = " . $query . "</pre>";
-        $db = new dbquery();
-        $db->query($query);
+        echo "<pre>QUERY = " . $query . "</pre>";
+        //$this->db->query($query);
         
         $this->saveChildObjects($dataObject);
     
@@ -156,9 +157,8 @@ class DataAccessService_Database
         $query .= " WHERE " . $keyExpression;
         
         //echo "<pre>DAS = " . print_r($this,true) . "</pre>";
-        //echo "<pre>QUERY = " . $query . "</pre>";
-        $db = new dbquery();
-        $db->query($query);
+        echo "<pre>QUERY = " . $query . "</pre>";
+        //$this->db->query($query);
         
         $this->saveChildObjects($dataObject);
         
diff --git a/core/trunk/core/tests/class/DataObject.php b/core/trunk/core/tests/class/DataObject.php
index e9a90185ed4..195298863e7 100644
--- a/core/trunk/core/tests/class/DataObject.php
+++ b/core/trunk/core/tests/class/DataObject.php
@@ -135,11 +135,6 @@ class DataObject
     public function beginLogging()
     {
         $this->changeLog = new DataObjectChangeLog();
-        $childObjects = $this->children;
-        for($i=0; $i<count($childObjects); $i++) {
-            $childObject = $childObjects[$i];
-            $childObject->beginLogging();
-        }
     }
     
     public function logCreation()
@@ -147,6 +142,11 @@ class DataObject
         $this->changeLog->logCreation($this->name);
     }
     
+    public function logRead() 
+    {
+        $this->changeLog->logRead($this->name);
+    }
+    
     //*************************************************************************
     // XML
     //*************************************************************************
@@ -211,7 +211,6 @@ class DataObject
     }
     
     private function formatXmlString($xml) {  
-      
         // add marker linefeeds to aid the pretty-tokeniser (adds a linefeed between all tag-end boundaries)
         $xml = preg_replace('/(>)(<)(\/*)/', "$1\n$2$3", $xml);
         
diff --git a/core/trunk/core/tests/class/DataObjectArray.php b/core/trunk/core/tests/class/DataObjectArray.php
index ceaa87a022d..d10bb8e0f70 100644
--- a/core/trunk/core/tests/class/DataObjectArray.php
+++ b/core/trunk/core/tests/class/DataObjectArray.php
@@ -76,11 +76,6 @@ class DataObjectArray
     public function beginLogging()
     {
         $this->changeLog = new DataObjectChangeLog();
-        $childObjects = $this->children;
-        for($i=0; $i<count($childObjects); $i++) {
-            $childObject = $childObjects[$i];
-            $childObject->beginLogging();
-        }   
     }
     
     public function logCreation()
diff --git a/core/trunk/core/tests/class/DataObjectChangeLog.php b/core/trunk/core/tests/class/DataObjectChangeLog.php
index 5d7bf8e6ae3..d4b75e35b9a 100644
--- a/core/trunk/core/tests/class/DataObjectChangeLog.php
+++ b/core/trunk/core/tests/class/DataObjectChangeLog.php
@@ -23,6 +23,11 @@ class DataObjectChangeLog
         $this->logChange(DataObjectChange::CREATE, $name);
     }
     
+    public function logRead($name) 
+    {
+        $this->logChange(DataObjectChange::READ, $name);
+    }
+    
     public function __get($name)
     {
         switch($name) {
diff --git a/core/trunk/core/tests/class/DataObjectController.php b/core/trunk/core/tests/class/DataObjectController.php
index 59f6c8cbb30..b2e3bd26abc 100644
--- a/core/trunk/core/tests/class/DataObjectController.php
+++ b/core/trunk/core/tests/class/DataObjectController.php
@@ -11,19 +11,22 @@ class dataObjectController extends DOMDocument
     
     public function dataObjectController() 
     {
+        // DataObject classes
         require_once 'core/tests/class/DataObjectSchema.php';
         require_once 'core/tests/class/DataObjectArray.php';
         require_once 'core/tests/class/DataObject.php';
         require_once 'core/tests/class/DataObjectProperty.php';
+        
+        // ChangeLog classes
         require_once 'core/tests/class/DataObjectChangeLog.php';
         require_once 'core/tests/class/DataObjectChange.php';
         
+        // DataAccessService / PDO classes
         require_once 'core/tests/class/DataAccessService_Database.php';
-        $this->dataAccessService_Database = new dataAccessService_Database();
         require_once 'core/tests/class/DataAccessService_XML.php';
-                
+        
+        // Validator classes
         require_once 'core/tests/class/DataObjectValidator.php';
-        $this->dataObjectValidator = new DataObjectValidator();
         
     }
     
@@ -32,12 +35,16 @@ class dataObjectController extends DOMDocument
         $this->schema = new DataObjectSchema();
         $this->schema->loadSchema($xsdFile);
         
+        $this->dataAccessService_Database = new dataAccessService_Database();
+        
         $objectSchemas = $this->schema->getObjectSchemas();
         for($i=0; $i<$objectSchemas->length; $i++) {
             $objectSchema = $objectSchemas->item($i);
             $this->prototypeDataObject($objectSchema);
         }
         
+        $this->dataObjectValidator = new DataObjectValidator();
+        
     }
     
     //*************************************************************************
@@ -81,6 +88,7 @@ class dataObjectController extends DOMDocument
         $dataObject = $this->instanciateDataObject($objectSchema);
         $this->loadDataObject($dataObject);
         $dataObject->beginLogging();
+        $dataObject->logRead();
         return $dataObject;
     }
     
@@ -113,7 +121,7 @@ class dataObjectController extends DOMDocument
     
     }
     
-    public function copy($dataObject)
+    public function copy($dataObject, $keepParent=true)
     {
         $dataObject = unserialize(serialize($dataObject));
 
@@ -129,6 +137,8 @@ class dataObjectController extends DOMDocument
             $children[$i]->clear();
         }
         
+        if(!$keepParent) $dataObject->parentObject = false;
+        
         $dataObject->beginLogging();
         $dataObject->logCreation();
                 
@@ -313,6 +323,8 @@ class dataObjectController extends DOMDocument
         for($i=0; $i<count($objectDatas); $i++) {
             $objectData = $objectDatas[$i];
             $dataObject = $this->instanciateDataObject($objectSchema);
+            $dataObject->beginLogging();
+            $dataObject->logRead();
             $arrayDataObject->append($dataObject);          
             $this->loadProperties($dataObject, $objectData);
             $this->loadChildren($dataObject);
diff --git a/core/trunk/core/tests/class/DataObjectSchema.php b/core/trunk/core/tests/class/DataObjectSchema.php
index 0fb96281a96..3ef561b2b6f 100644
--- a/core/trunk/core/tests/class/DataObjectSchema.php
+++ b/core/trunk/core/tests/class/DataObjectSchema.php
@@ -62,6 +62,15 @@ class DataObjectSchema extends DOMDocument {
         return $this->xpath->query($query, $contextElement);
     }
     
+    public function getDataSources()
+    {
+        $DSnodes = $this->xpath('/xsd:schema/xsd:annotation/xsd:appinfo/das:datasource');
+        for($i=0; $i<$DSnodes->length; $i++) {
+            $DS[] = $DSnodes->item($i);
+        }
+        return $DS;
+    }
+    
     public function getObjectSchemas() 
     {
         return $this->xpath('/xsd:schema/xsd:element');
-- 
GitLab