Commit 342b20ca3f447aab0b0670ca1dd45d7de9aa2c5d

Authored by Benjamin Renard
1 parent 0fea5567

Fix inheritence between TimeTableCacheMgr and CatalogCacheMgr

js/app/models/TimeTable.js
1 /** 1 /**
2 * Project  : AMDA-NG 2 * Project  : AMDA-NG
3 - * Name : timeTable.js 3 + * Name : timeTable.js
4 * Description : TimeTable Business Object Definition 4 * Description : TimeTable Business Object Definition
5 * @class amdaModel.TimeTable 5 * @class amdaModel.TimeTable
6 - * @extends amdaModel.AmdaObject  
7 - * 6 + * @extends amdaModel.AmdaObject
  7 + *
8 * @author cdarmon 8 * @author cdarmon
9 * @version $Id: TimeTable.js 1907 2013-11-25 15:59:42Z myriam $ 9 * @version $Id: TimeTable.js 1907 2013-11-25 15:59:42Z myriam $
10 ****************************************************************************** 10 ******************************************************************************
@@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
16 16
17 17
18 Ext.define('amdaModel.Interval', { 18 Ext.define('amdaModel.Interval', {
19 - extend: 'amdaModel.AmdaObject', 19 + extend: 'amdaModel.AmdaObject',
20 fields: [ 20 fields: [
21 { 21 {
22 name: 'id', 22 name: 'id',
@@ -80,19 +80,19 @@ Ext.define('amdaModel.Interval', { @@ -80,19 +80,19 @@ Ext.define('amdaModel.Interval', {
80 { name: 'isNew', type : 'boolean', defaultValue: false}, 80 { name: 'isNew', type : 'boolean', defaultValue: false},
81 { name: 'isModified', type : 'boolean', defaultValue: false} 81 { name: 'isModified', type : 'boolean', defaultValue: false}
82 ], 82 ],
83 - 83 +
84 getJsonValues : function () { 84 getJsonValues : function () {
85 var values = new Object(); 85 var values = new Object();
86 values.start = this.get('start'); 86 values.start = this.get('start');
87 values.stop = this.get('stop'); 87 values.stop = this.get('stop');
88 return values; 88 return values;
89 }, 89 },
90 - 90 +
91 proxy: { 91 proxy: {
92 type: 'direct', 92 type: 'direct',
93 api : 93 api :
94 { 94 {
95 - read : AmdaAction.readTTCacheIntervals 95 + read : AmdaAction.readCacheIntervals
96 }, 96 },
97 extraParams : {'typeTT' : ''}, 97 extraParams : {'typeTT' : ''},
98 reader: 98 reader:
@@ -102,8 +102,8 @@ Ext.define('amdaModel.Interval', { @@ -102,8 +102,8 @@ Ext.define('amdaModel.Interval', {
102 totalProperty : 'totalCount' 102 totalProperty : 'totalCount'
103 } 103 }
104 } 104 }
105 -  
106 - /* 105 +
  106 + /*
107 validations: [ 107 validations: [
108 {type: 'presence', field: 'age'}, 108 {type: 'presence', field: 'age'},
109 {type: 'length', field: 'name', min: 2}, 109 {type: 'length', field: 'name', min: 2},
@@ -112,49 +112,49 @@ Ext.define('amdaModel.Interval', { @@ -112,49 +112,49 @@ Ext.define('amdaModel.Interval', {
112 {type: 'format', field: 'username', matcher: /([a-z]+)[0-9]{2,3}/} 112 {type: 'format', field: 'username', matcher: /([a-z]+)[0-9]{2,3}/}
113 ], 113 ],
114 */ 114 */
115 - 115 +
116 }); 116 });
117 117
118 118
119 Ext.define('amdaModel.TimeTable', { 119 Ext.define('amdaModel.TimeTable', {
120 - 120 +
121 extend: 'amdaModel.AmdaObject', 121 extend: 'amdaModel.AmdaObject',
122 - 122 +
123 fields : [ 123 fields : [
124 {name: 'fromPlugin', type: 'boolean', defaultValue: false}, 124 {name: 'fromPlugin', type: 'boolean', defaultValue: false},
125 {name: 'created', type: 'date'}, 125 {name: 'created', type: 'date'},
126 {name: 'description', type: 'string'}, 126 {name: 'description', type: 'string'},
127 - {name: 'history', type: 'string'}, 127 + {name: 'history', type: 'string'},
128 {name: 'nbIntervals', type: 'int'}, 128 {name: 'nbIntervals', type: 'int'},
129 {name: 'objName', type: 'string', defaultValue: ""}, 129 {name: 'objName', type: 'string', defaultValue: ""},
130 {name: 'objFormat', type: 'string', defaultValue: ""}, 130 {name: 'objFormat', type: 'string', defaultValue: ""},
131 {name: 'folderId', type: 'string', defaultValue: ""}, 131 {name: 'folderId', type: 'string', defaultValue: ""},
132 {name: 'cacheToken', type: 'string', defaultValue: ""}, 132 {name: 'cacheToken', type: 'string', defaultValue: ""},
133 {name: 'relatedCatalogId', type: 'string', defaultValue: ""} 133 {name: 'relatedCatalogId', type: 'string', defaultValue: ""}
134 - ],  
135 - 134 + ],
  135 +
136 /*commit: function(){ 136 /*commit: function(){
137 this.callParent(arguments); 137 this.callParent(arguments);
138 - 138 +
139 // fix the modifications for its intervals 139 // fix the modifications for its intervals
140 - Ext.Array.each(this.get('intervals'), function(item, index, all) {  
141 -//TODO check if JSON object should be processed  
142 - if (item.$className) { 140 + Ext.Array.each(this.get('intervals'), function(item, index, all) {
  141 +//TODO check if JSON object should be processed
  142 + if (item.$className) {
143 item.commit(); 143 item.commit();
144 - } 144 + }
145 }); 145 });
146 - 146 +
147 },*/ 147 },*/
148 - 148 +
149 // hasMany: {model: 'amdaModel.Interval', name: 'intervals'}, 149 // hasMany: {model: 'amdaModel.Interval', name: 'intervals'},
150 - 150 +
151 /** 151 /**
152 * get TimeTable values to sent to Server 152 * get TimeTable values to sent to Server
153 * @return object 153 * @return object
154 */ 154 */
155 //TODO utf8_encode() and Ext.urlEncode() ??? 155 //TODO utf8_encode() and Ext.urlEncode() ???
156 getJsonValues : function (hasId) { 156 getJsonValues : function (hasId) {
157 - var values = new Object(); 157 + var values = new Object();
158 if (hasId) { 158 if (hasId) {
159 values.id = this.get('id'); 159 values.id = this.get('id');
160 } 160 }
@@ -171,13 +171,10 @@ Ext.define('amdaModel.TimeTable', { @@ -171,13 +171,10 @@ Ext.define('amdaModel.TimeTable', {
171 values.folderId = this.get('folderId'); 171 values.folderId = this.get('folderId');
172 values.nbIntervals = this.get('nbIntervals'); 172 values.nbIntervals = this.get('nbIntervals');
173 values.cacheToken = this.get('cacheToken'); 173 values.cacheToken = this.get('cacheToken');
174 - 174 +
175 values.leaf = true; 175 values.leaf = true;
176 values.nodeType = amdaModel.TimeTableNode.nodeType; 176 values.nodeType = amdaModel.TimeTableNode.nodeType;
177 return values; 177 return values;
178 } 178 }
179 179
180 }); 180 });
181 -  
182 -  
183 -  
js/app/views/CatalogUI.js
@@ -98,7 +98,7 @@ Ext.define('amdaUI.CatalogUI', { @@ -98,7 +98,7 @@ Ext.define('amdaUI.CatalogUI', {
98 var row = this.TTGrid.getStore().getTotalCount(); 98 var row = this.TTGrid.getStore().getTotalCount();
99 var me = this; 99 var me = this;
100 this.TTGrid.getSelectionModel().deselectAll(); 100 this.TTGrid.getSelectionModel().deselectAll();
101 - AmdaAction.addTTCacheInterval({'start' : start, 'stop' : stop, 'index' : row, 'isCatalog' : true},function (result, e) { 101 + AmdaAction.addCacheInterval({'start' : start, 'stop' : stop, 'index' : row, 'isCatalog' : true},function (result, e) {
102 this.status = result.status; 102 this.status = result.status;
103 if (!this.TTGrid.getStore().loading) { 103 if (!this.TTGrid.getStore().loading) {
104 this.TTGrid.getStore().reload({ 104 this.TTGrid.getStore().reload({
@@ -395,7 +395,7 @@ Ext.define('amdaUI.CatalogUI', { @@ -395,7 +395,7 @@ Ext.define('amdaUI.CatalogUI', {
395 remoteSort: true, 395 remoteSort: true,
396 proxy: { 396 proxy: {
397 type: 'direct', 397 type: 'direct',
398 - api : { read : AmdaAction.readTTCacheIntervals }, 398 + api : { read : AmdaAction.readCacheIntervals },
399 // remplir automatiquement tt, sharedtt , catalog, shared catalog 399 // remplir automatiquement tt, sharedtt , catalog, shared catalog
400 extraParams : {'typeTT' : 'catalog'}, 400 extraParams : {'typeTT' : 'catalog'},
401 reader: 401 reader:
@@ -466,7 +466,7 @@ Ext.define('amdaUI.CatalogUI', { @@ -466,7 +466,7 @@ Ext.define('amdaUI.CatalogUI', {
466 } 466 }
467 else { 467 else {
468 //From existing TT file 468 //From existing TT file
469 - AmdaAction.initObjectCacheFromTT(this.object.get('id'), typeTT, this.onAfterInit, this); 469 + AmdaAction.initObjectCacheFromObject(this.object.get('id'), typeTT, this.onAfterInit, this);
470 } 470 }
471 } 471 }
472 //Statistical plugin 472 //Statistical plugin
@@ -588,16 +588,17 @@ Ext.define('amdaUI.CatalogUI', { @@ -588,16 +588,17 @@ Ext.define('amdaUI.CatalogUI', {
588 // Only update the record if the new value is different than the 588 // Only update the record if the new value is different than the
589 // startValue. When the view refreshes its el will gain focus 589 // startValue. When the view refreshes its el will gain focus
590 if (!record.isEqual(value, startValue)) { 590 if (!record.isEqual(value, startValue)) {
591 - var obj = {};  
592 -  
593 - obj['cacheId'] = record.get('cacheId');  
594 - obj['isCatalog'] = true;  
595 - obj[activeColumn.dataIndex] = value; 591 + var obj = {
  592 + 'cacheId' : record.get('cacheId'),
  593 + 'isCatalog' : true,
  594 + 'data' : {}
  595 + };
  596 + obj['data']['activeColumn.dataIndex'] = value;
596 597
597 //Interval is modified on the server side 598 //Interval is modified on the server side
598 me.editing = true; 599 me.editing = true;
599 600
600 - AmdaAction.modifyTTCacheInterval(obj, function (result, e) { 601 + AmdaAction.modifyCacheInterval(obj, function (result, e) {
601 var module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.catalog.id); 602 var module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.catalog.id);
602 if (module) 603 if (module)
603 module.getUiContent().status = result.status; 604 module.getUiContent().status = result.status;
@@ -647,7 +648,7 @@ Ext.define('amdaUI.CatalogUI', { @@ -647,7 +648,7 @@ Ext.define('amdaUI.CatalogUI', {
647 this.TTGrid.getSelectionModel().deselectAll(); 648 this.TTGrid.getSelectionModel().deselectAll();
648 649
649 var me = this; 650 var me = this;
650 - AmdaAction.addTTCacheInterval({'index' : row, 'isCatalog' : true}, function (result, e) { 651 + AmdaAction.addCacheInterval({'index' : row, 'isCatalog' : true}, function (result, e) {
651 this.status = result.status; 652 this.status = result.status;
652 if (!this.TTGrid.getStore().loading) { 653 if (!this.TTGrid.getStore().loading) {
653 this.TTGrid.getStore().reload({ 654 this.TTGrid.getStore().reload({
js/app/views/TimeTableUI.js
@@ -139,7 +139,7 @@ Ext.define('amdaUI.TimeTableUI', { @@ -139,7 +139,7 @@ Ext.define('amdaUI.TimeTableUI', {
139 else 139 else
140 { 140 {
141 //From existing TT file 141 //From existing TT file
142 - AmdaAction.initObjectCacheFromTT(this.object.get('id'), typeTT, onAfterInit); 142 + AmdaAction.initObjectCacheFromObject(this.object.get('id'), typeTT, onAfterInit);
143 } 143 }
144 } 144 }
145 }, 145 },
@@ -249,7 +249,7 @@ Ext.define('amdaUI.TimeTableUI', { @@ -249,7 +249,7 @@ Ext.define('amdaUI.TimeTableUI', {
249 var row = this.TTGrid.getStore().getTotalCount(); 249 var row = this.TTGrid.getStore().getTotalCount();
250 var me = this; 250 var me = this;
251 this.TTGrid.getSelectionModel().deselectAll(); 251 this.TTGrid.getSelectionModel().deselectAll();
252 - AmdaAction.addTTCacheInterval({'start' : start, 'stop' : stop, 'index' : row},function (result, e) { 252 + AmdaAction.addCacheInterval({'start' : start, 'stop' : stop, 'index' : row},function (result, e) {
253 this.status = result.status; 253 this.status = result.status;
254 if (!this.TTGrid.getStore().loading) { 254 if (!this.TTGrid.getStore().loading) {
255 this.TTGrid.getStore().reload({ 255 this.TTGrid.getStore().reload({
@@ -405,28 +405,18 @@ Ext.define('amdaUI.TimeTableUI', { @@ -405,28 +405,18 @@ Ext.define('amdaUI.TimeTableUI', {
405 // Only update the record if the new value is different than the 405 // Only update the record if the new value is different than the
406 // startValue. When the view refreshes its el will gain focus 406 // startValue. When the view refreshes its el will gain focus
407 if (!record.isEqual(value, startValue)) { 407 if (!record.isEqual(value, startValue)) {
408 - var obj = null;  
409 - if (activeColumn.dataIndex == 'start')  
410 - obj = {  
411 - 'cacheId' : record.get('cacheId'),  
412 - 'start' : value  
413 - };  
414 - else if (activeColumn.dataIndex == 'stop')  
415 - obj = {  
416 - 'cacheId' : record.get('cacheId'),  
417 - 'stop' : value  
418 - };  
419 - else  
420 - {  
421 - me.editing = false;  
422 - return;  
423 - } 408 + var obj = {
  409 + 'cacheId' : record.get('cacheId'),
  410 + 'isCatalog' : false,
  411 + 'data' : {}
  412 + };
  413 + obj['data'][activeColumn.dataIndex] = value;
424 414
425 //context.grid.getSelectionModel().deselectAll(); 415 //context.grid.getSelectionModel().deselectAll();
426 //Interval is modified on the server side 416 //Interval is modified on the server side
427 me.editing = true; 417 me.editing = true;
428 418
429 - AmdaAction.modifyTTCacheInterval(obj, function (result, e) { 419 + AmdaAction.modifyCacheInterval(obj, function (result, e) {
430 420
431 var ttModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.tt.id); 421 var ttModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.tt.id);
432 if (ttModule) 422 if (ttModule)
@@ -585,7 +575,7 @@ Ext.define('amdaUI.TimeTableUI', { @@ -585,7 +575,7 @@ Ext.define('amdaUI.TimeTableUI', {
585 this.TTGrid.getSelectionModel().deselectAll(); 575 this.TTGrid.getSelectionModel().deselectAll();
586 576
587 var me = this; 577 var me = this;
588 - AmdaAction.addTTCacheInterval({'index' : row}, function (result, e) { 578 + AmdaAction.addCacheInterval({'index' : row}, function (result, e) {
589 this.status = result.status; 579 this.status = result.status;
590 if (!this.TTGrid.getStore().loading) { 580 if (!this.TTGrid.getStore().loading) {
591 this.TTGrid.getStore().reload({ 581 this.TTGrid.getStore().reload({
php/TTCacheDump.php
1 <?php 1 <?php
2 -define ("USERTTDIR", "/home/benjamin/AMDA-GIT/AMDA/AMDA_IHM/data/testKernel/TT/"); 2 +/*define ("USERWSDIR", "/home/amda_admin/AMDA-GIT/AMDA_IHM/data/testKernel/WS/");
  3 +define ("USERTTDIR", "/home/amda_admin/AMDA-GIT/AMDA_IHM/data/testKernel/TT/");
3 4
4 require_once("classes/AmdaObjectMgr.php"); 5 require_once("classes/AmdaObjectMgr.php");
5 require_once("classes/TimeTableMgr.php"); 6 require_once("classes/TimeTableMgr.php");
  7 +require_once("classes/CatalogMgr.php");
6 require_once("classes/TimeTableCacheMgr.php"); 8 require_once("classes/TimeTableCacheMgr.php");
  9 +require_once("classes/TimeTableCacheObject.php");
  10 +require_once("classes/IntervalCacheObject.php");
  11 +require_once("classes/CatalogCacheMgr.php");
  12 +*/
7 13
8 -$cacheMgr = new TimeTableCacheMgr(); 14 +require_once("config.php");
  15 +
  16 +define ("USERWSDIR", "/home/amda_admin/AMDA-GIT/AMDA_IHM/data/testKernel/WS/");
  17 +define ("USERTTDIR", "/home/amda_admin/AMDA-GIT/AMDA_IHM/data/testKernel/TT/");
  18 +
  19 +$cacheMgr = new CatalogCacheMgr();
9 20
10 $cacheMgr->dump(); 21 $cacheMgr->dump();
11 22
php/classes/AmdaAction.php
@@ -1079,7 +1079,7 @@ class AmdaAction @@ -1079,7 +1079,7 @@ class AmdaAction
1079 } 1079 }
1080 1080
1081 1081
1082 - public function initObjectCacheFromTT($id, $type) 1082 + public function initObjectCacheFromObject($id, $type)
1083 { 1083 {
1084 if ($type == 'catalog' || $type == 'sharedcatalog') $cacheMgr = new CatalogCacheMgr(); 1084 if ($type == 'catalog' || $type == 'sharedcatalog') $cacheMgr = new CatalogCacheMgr();
1085 else $cacheMgr = new TimeTableCacheMgr(); 1085 else $cacheMgr = new TimeTableCacheMgr();
@@ -1121,7 +1121,7 @@ class AmdaAction @@ -1121,7 +1121,7 @@ class AmdaAction
1121 return $cacheMgr->initFromUploadedFile($name, $format); 1121 return $cacheMgr->initFromUploadedFile($name, $format);
1122 } 1122 }
1123 1123
1124 - public function readTTCacheIntervals($o) 1124 + public function readCacheIntervals($o)
1125 { 1125 {
1126 if (isset($o->typeTT) && ($o->typeTT == 'catalog' || $o->typeTT == 'sharedcatalog')) $cacheMgr = new CatalogCacheMgr(); 1126 if (isset($o->typeTT) && ($o->typeTT == 'catalog' || $o->typeTT == 'sharedcatalog')) $cacheMgr = new CatalogCacheMgr();
1127 else $cacheMgr = new TimeTableCacheMgr(); 1127 else $cacheMgr = new TimeTableCacheMgr();
@@ -1151,7 +1151,7 @@ class AmdaAction @@ -1151,7 +1151,7 @@ class AmdaAction
1151 return $cacheMgr->saveInObject($o->ttId,$o->action,$o->cacheToken); 1151 return $cacheMgr->saveInObject($o->ttId,$o->action,$o->cacheToken);
1152 } 1152 }
1153 1153
1154 - public function addTTCacheInterval($o) 1154 + public function addCacheInterval($o)
1155 { 1155 {
1156 if ($o->isCatalog) $cacheMgr = new CatalogCacheMgr(); 1156 if ($o->isCatalog) $cacheMgr = new CatalogCacheMgr();
1157 else $cacheMgr = new TimeTableCacheMgr(); 1157 else $cacheMgr = new TimeTableCacheMgr();
@@ -1167,16 +1167,15 @@ class AmdaAction @@ -1167,16 +1167,15 @@ class AmdaAction
1167 return $cacheMgr->removeIntervalFromId($id); 1167 return $cacheMgr->removeIntervalFromId($id);
1168 } 1168 }
1169 1169
1170 - public function modifyTTCacheInterval($o) 1170 + public function modifyCacheInterval($o)
1171 { 1171 {
1172 if ($o->isCatalog) 1172 if ($o->isCatalog)
1173 { 1173 {
1174 $cacheMgr = new CatalogCacheMgr(); 1174 $cacheMgr = new CatalogCacheMgr();
1175 - return $cacheMgr->modifyIntervalFromId($o);  
1176 } 1175 }
1177 else $cacheMgr = new TimeTableCacheMgr(); 1176 else $cacheMgr = new TimeTableCacheMgr();
1178 1177
1179 - return $cacheMgr->modifyIntervalFromId($o->cacheId, $o->start, $o->stop); 1178 + return $cacheMgr->modifyIntervalFromId($o->cacheId, $o->data);
1180 } 1179 }
1181 1180
1182 public function operationTTCacheIntervals($extendTime, $shiftTime) 1181 public function operationTTCacheIntervals($extendTime, $shiftTime)
php/classes/CatalogCacheIntervalObject.php
@@ -98,7 +98,12 @@ class CatalogCacheIntervalObject extends TimeTableCacheIntervalObject @@ -98,7 +98,12 @@ class CatalogCacheIntervalObject extends TimeTableCacheIntervalObject
98 98
99 public function dump() 99 public function dump()
100 { 100 {
101 - echo " => Interval : id = ".$this->id.", index = ".$this->index.", start = ".$this->start.", stop = ".$this->stop.", isNew = ".$this->isNew.", isModified = ".$this->isModified.PHP_EOL; 101 + parent::dump();
  102 + echo " parameters = ";
  103 + foreach ($this->params as $param) {
  104 + echo $param.", ";
  105 + }
  106 + echo PHP_EOL;
102 } 107 }
103 } 108 }
104 109
php/classes/CatalogCacheMgr.php
@@ -6,11 +6,8 @@ @@ -6,11 +6,8 @@
6 6
7 class CatalogCacheMgr extends TimeTableCacheMgr 7 class CatalogCacheMgr extends TimeTableCacheMgr
8 { 8 {
9 - protected $objectMgr = null;  
10 - protected $cache = null;  
11 9
12 function __construct() { 10 function __construct() {
13 -  
14 $this->objectMgr = new CatalogMgr(); 11 $this->objectMgr = new CatalogMgr();
15 } 12 }
16 13
@@ -22,208 +19,93 @@ class CatalogCacheMgr extends TimeTableCacheMgr @@ -22,208 +19,93 @@ class CatalogCacheMgr extends TimeTableCacheMgr
22 $this->cache = new CatalogCacheObject(); 19 $this->cache = new CatalogCacheObject();
23 } 20 }
24 21
  22 + public function initObjectCache($options = array()) {
  23 + $result = parent::initObjectCache($options);
  24 + if (!$result['success']) {
  25 + return $result;
  26 + }
25 27
26 - public function initFromTmpObject($folderId, $name) {  
27 -  
28 - //Create new cache  
29 - $this->resetCache();  
30 -  
31 - //Load intervals from TmpObject file (Statistics Module)  
32 - $intervals_res = $this->objectMgr->getTmpObject($folderId, $name); 28 + //init parameters
  29 + $nparams = isset($options['nparams']) ? $options['nparams'] : 1;
  30 + $this->cache->setParamsNumber((int)$nparams);
33 31
34 - if (!isset($intervals_res))  
35 - return array('success' => false, 'message' => 'Cannot get Tmp Object'); 32 + $paramHeaders = array();
36 33
37 - if (array_key_exists('intervals', $intervals_res))  
38 - {  
39 - foreach ($intervals_res['intervals'] as $interval)  
40 - {  
41 - //Add interval  
42 - $this->cache->addInterval($interval['start'], $interval['stop'], $interval['paramTable']); 34 + for ($i = 0; $i < (int)$nparams; $i++) {
  35 + $paramHeaders[$i]['id'] = 'id_'.(string)($i+1);
  36 + $paramHeaders[$i]['name'] = 'column_'.(string)($i+1);
  37 + $paramHeaders[$i]['size'] = 1;
  38 + $paramHeaders[$i]['type'] = 'Float';
43 39
44 - }  
45 } 40 }
46 -  
47 - $this->cache->setIsModified(true);  
48 -  
49 - $paramHeaders = $intervals_res['parameters'];  
50 -  
51 - $this->cache->setParamsNumber(count($paramHeaders));  
52 $this->cache->setParamsSizes($paramHeaders); 41 $this->cache->setParamsSizes($paramHeaders);
53 $this->cache->setParamsTypes($paramHeaders); 42 $this->cache->setParamsTypes($paramHeaders);
54 -  
55 - unset($intervals_res);  
56 -  
57 - //Update cache  
58 - $this->cache->updateIndexes();  
59 -  
60 //Save cache file 43 //Save cache file
61 - return array('success'=>$this->saveToFile(), 'token'=>$this->cache->getToken(),  
62 - 'status'=>$this->cache->getStatus(), 'parameters'=>$paramHeaders); 44 + return $result + array('parameters' => $paramHeaders);
63 } 45 }
64 46
65 - public function initFromUploadedFile($name, $format) 47 + public function initFromObject($id, $type)
66 { 48 {
67 - //Create new cache  
68 - $this->resetCache();  
69 -  
70 - //Load intervals from uploaded file  
71 - $intervals_res = $this->objectMgr->getUploadedObject($name, $format);  
72 -  
73 - if (!isset($intervals_res))  
74 - return array('success' => false, 'message' => 'Cannot get Uploaded Object');  
75 -  
76 - if (array_key_exists('intervals', $intervals_res))  
77 - {  
78 - foreach ($intervals_res['intervals'] as $interval)  
79 - {  
80 - //Add interval  
81 - $this->cache->addInterval($interval['start'], $interval['stop'], $interval['paramTable']);  
82 - } 49 + $result = parent::initFromObject($id, $type);
  50 + if (!$result['success']) {
  51 + return $result;
  52 + }
  53 +
  54 + $params_desc = $this->objectMgr->getCatalogParamDescription($id, $name, FALSE, $type);
  55 + if (!$params_desc['success']) {
  56 + return $params_desc;
83 } 57 }
84 58
85 - $this->cache->setIsModified(true);  
86 - $paramHeaders = $intervals_res['parameters']; 59 + $paramHeaders = $params_desc['parameters'];
87 60
88 $this->cache->setParamsNumber(count($paramHeaders)); 61 $this->cache->setParamsNumber(count($paramHeaders));
89 $this->cache->setParamsSizes($paramHeaders); 62 $this->cache->setParamsSizes($paramHeaders);
90 $this->cache->setParamsTypes($paramHeaders); 63 $this->cache->setParamsTypes($paramHeaders);
91 64
92 - unset($intervals_res);  
93 -  
94 - //Update cache  
95 - $this->cache->updateIndexes();  
96 -  
97 //Save cache file 65 //Save cache file
98 - return array('success'=>$this->saveToFile(), 'token'=>$this->cache->getToken(),  
99 - 'status'=>$this->cache->getStatus(), 'parameters'=>$paramHeaders); 66 + return $result+ array('parameters' => $paramHeaders);
100 } 67 }
101 68
102 - public function initFromObject($id, $type)  
103 - {  
104 - //Create new cache  
105 - $this->resetCache();  
106 -  
107 - //Load intervals from catalog file and add to cache  
108 - $intervals_res = $this->objectMgr->loadIntervalsFromObject($id,$type);  
109 -  
110 - if (!$intervals_res['success'])  
111 - return $intervals_res; 69 + public function initFromTmpObject($folderId, $name) {
  70 + $result = parent::initFromTmpObject($folderId, $name);
  71 + if (!$result['success']) {
  72 + return $result;
  73 + }
112 74
113 - foreach ($intervals_res['intervals'] as $interval)  
114 - {  
115 - //Add interval  
116 - $this->cache->addInterval($interval['start'], $interval['stop'], $interval['paramTable']); 75 + $params_desc = $this->objectMgr->getCatalogParamDescription($id, $name, FALSE, $type);
  76 + if (!$params_desc['success']) {
  77 + return $params_desc;
117 } 78 }
118 79
119 - $paramHeaders = $intervals_res['parameters']; 80 + $paramHeaders = $params_desc['parameters'];
120 81
121 $this->cache->setParamsNumber(count($paramHeaders)); 82 $this->cache->setParamsNumber(count($paramHeaders));
122 $this->cache->setParamsSizes($paramHeaders); 83 $this->cache->setParamsSizes($paramHeaders);
123 $this->cache->setParamsTypes($paramHeaders); 84 $this->cache->setParamsTypes($paramHeaders);
124 85
125 - unset($intervals_res);  
126 -  
127 - //Update cache  
128 - $this->cache->updateIndexes();  
129 -  
130 - //Save cache file  
131 - return array('success' => $this->saveToFile(), 'token' => $this->cache->getToken(),  
132 - 'status' => $this->cache->getStatus(),'parameters' => $paramHeaders); 86 + return $result+ array('parameters' => $paramHeaders);
133 } 87 }
134 88
135 -  
136 - protected function loadFromFile() 89 + public function initFromUploadedFile($name, $format)
137 { 90 {
138 - if (!file_exists($this->getCacheFilePath()))  
139 - return false;  
140 - $this->resetCache();  
141 - $handle = fopen($this->getCacheFilePath(), 'rb');  
142 - $result = false;  
143 - if (flock($handle, LOCK_SH))  
144 - {  
145 - $this->cache->loadBin($handle);  
146 - flock( $handle, LOCK_UN );  
147 - $result = true; 91 + $result = parent::initFromUploadedFile($name, $format);
  92 + if (!$result['success']) {
  93 + return $result;
148 } 94 }
149 - fclose($handle);  
150 - return $result;  
151 - }  
152 95
153 - public function saveInObject($id, $action, $token)  
154 - {  
155 - if (!$this->loadFromFile())  
156 - return array('success' => false, 'message' => 'Cannot load cache file');  
157 -  
158 - if ($token != $this->cache->getToken())  
159 - return array('success' => false, 'message' => 'Cache token check error');  
160 -  
161 - $this->cache->updateIndexes();  
162 - $this->saveToFile();  
163 -  
164 - $intervals = $this->cache->getIntervalsArray(NULL,NULL,true);  
165 -  
166 - $this->cache->reset();  
167 -  
168 - return $this->objectMgr->saveIntervals($id, $intervals, $action);  
169 - }  
170 -  
171 - public function addInterval($index, $start, $stop, $params = array()) {  
172 - if (!$this->loadFromFile())  
173 - return array('success' => false, 'message' => 'Cannot load cache file');  
174 -  
175 - if (!isset($index))  
176 - $index = 0;  
177 -  
178 - if (!isset($start))  
179 - $start = date('Y-m-d\TH:i:s');  
180 -  
181 - if (!isset($stop))  
182 - $stop = date('Y-m-d\TH:i:s');  
183 -  
184 - if (!isset($params))  
185 - $params = [];  
186 -  
187 - $this->cache->addInterval($start, $stop, $params, true, $index);  
188 -  
189 - //$this->cache->updateIndexes();  
190 -  
191 - $this->saveToFile();  
192 -  
193 - return array('success' => true, 'index' => $index, 'status' => $this->cache->getStatus());  
194 - }  
195 -  
196 - public function modifyIntervalFromId($obj) {  
197 - if (!$this->loadFromFile())  
198 - return array('success' => false, 'message' => 'Cannot load cache file');  
199 -  
200 - $this->cache->modifyIntervalFromId($obj);  
201 -  
202 - $this->saveToFile();  
203 -  
204 - return array('success' => true, 'status' => $this->cache->getStatus());  
205 - }  
206 -  
207 - public function initObjectCache($options = array()) {  
208 - //Create new cache  
209 - $nparams = isset($options['nparams']) ? $options['nparams'] : 1; 96 + $params_desc = $this->objectMgr->getCatalogParamDescription($id, $name, FALSE, $type);
  97 + if (!$params_desc['success']) {
  98 + return $params_desc;
  99 + }
210 100
211 - $this->resetCache();  
212 - $this->cache->setParamsNumber((int)$nparams);  
213 - $paramHeaders = array(); 101 + $paramHeaders = $params_desc['parameters'];
214 102
215 - for ($i = 0; $i < (int)$nparams; $i++) {  
216 - $paramHeaders[$i]['id'] = 'id_'.(string)($i+1);  
217 - $paramHeaders[$i]['name'] = 'param_'.(string)($i+1);  
218 - $paramHeaders[$i]['size'] = 1;  
219 - $paramHeaders[$i]['type'] = 'Float';  
220 -  
221 - } 103 + $this->cache->setParamsNumber(count($paramHeaders));
222 $this->cache->setParamsSizes($paramHeaders); 104 $this->cache->setParamsSizes($paramHeaders);
223 $this->cache->setParamsTypes($paramHeaders); 105 $this->cache->setParamsTypes($paramHeaders);
224 - //Save cache file  
225 - return array('success' => $this->saveToFile(), 'token' => $this->cache->getToken(),  
226 - 'status' => $this->cache->getStatus(), 'parameters' => $paramHeaders); 106 +
  107 + return $result+ array('parameters' => $paramHeaders);
227 } 108 }
228 - } 109 +
  110 +}
229 ?> 111 ?>
php/classes/CatalogCacheObject.php
@@ -6,17 +6,17 @@ class CatalogCacheObject extends TimeTableCacheObject @@ -6,17 +6,17 @@ class CatalogCacheObject extends TimeTableCacheObject
6 private $paramsSizes = array(); 6 private $paramsSizes = array();
7 private $paramsTypes = array(); 7 private $paramsTypes = array();
8 8
9 - public function addInterval($startIso, $stopIso, $params, $isNew = false, $index = -1) 9 + public function addInterval($interval, $isNew = false, $index = -1)
10 { 10 {
11 - $interval = new CatalogCacheIntervalObject($this->lastId, count($this->intervals)); 11 + $intervalObj = new CatalogCacheIntervalObject($this->lastId, count($this->intervals));
12 ++$this->lastId; 12 ++$this->lastId;
13 - $interval->setStartFromISO($startIso);  
14 - $interval->setStopFromISO($stopIso); 13 + $intervalObj->setStartFromISO($interval['start']);
  14 + $intervalObj->setStopFromISO($interval['stop']);
15 // for catalog 15 // for catalog
16 - $interval->setParams($params); 16 + $intervalObj->setParams($interval['paramTable']);
17 17
18 - $interval->setIsNew($isNew);  
19 - array_push($this->intervals, $interval); 18 + $intervalObj->setIsNew($isNew);
  19 + array_push($this->intervals, $intervalObj);
20 20
21 if ($index < 0) 21 if ($index < 0)
22 array_push($this->indexes, count($this->intervals) - 1); 22 array_push($this->indexes, count($this->intervals) - 1);
@@ -26,7 +26,7 @@ class CatalogCacheObject extends TimeTableCacheObject @@ -26,7 +26,7 @@ class CatalogCacheObject extends TimeTableCacheObject
26 if ($isNew) 26 if ($isNew)
27 $this->isModified = true; 27 $this->isModified = true;
28 28
29 - return $interval; 29 + return $intervalObj;
30 } 30 }
31 31
32 public function setParamsNumber($number) 32 public function setParamsNumber($number)
@@ -167,29 +167,23 @@ class CatalogCacheObject extends TimeTableCacheObject @@ -167,29 +167,23 @@ class CatalogCacheObject extends TimeTableCacheObject
167 return true; 167 return true;
168 } 168 }
169 169
170 - public function modifyIntervalFromId($obj) { 170 + public function modifyIntervalFromId($cacheId, $data) {
  171 + $result = parent::modifyIntervalFromId($cacheId, $data);
171 172
172 foreach ($this->intervals as $interval) 173 foreach ($this->intervals as $interval)
173 { 174 {
174 - if ($interval->getId() == $obj->cacheId) 175 + if ($interval->getId() == $cacheId)
175 { 176 {
176 - foreach((array)$obj as $key => $val) {  
177 -  
178 - if ($key == 'start')  
179 - $interval->setStartFromISO($val);  
180 - else if ($key == 'stop')  
181 - $interval->setStopFromISO($val);  
182 - else {  
183 - if (strpos($key, 'param') === false)  
184 - continue; 177 + foreach($data as $key => $value) {
  178 + if (strpos($key, 'param') !== FALSE) {
185 $params = $interval->getParams(); 179 $params = $interval->getParams();
186 $paramIndex = (int)substr($key,5); 180 $paramIndex = (int)substr($key,5);
187 $params[$paramIndex-2] = $val; 181 $params[$paramIndex-2] = $val;
188 $interval->setParams($params); 182 $interval->setParams($params);
  183 + $interval->setIsModified(true);
  184 + $this->isModified = true;
189 } 185 }
190 } 186 }
191 - $interval->setIsModified(true);  
192 - $this->isModified = true;  
193 return true; 187 return true;
194 } 188 }
195 } 189 }
php/classes/TimeTableCacheMgr.php
1 <?php 1 <?php
2 2
  3 +/**
  4 + * @class CatalogCacheMgr
  5 + */
  6 +
3 class TimeTableCacheMgr 7 class TimeTableCacheMgr
4 { 8 {
5 protected $objectMgr = null; 9 protected $objectMgr = null;
@@ -42,7 +46,7 @@ @@ -42,7 +46,7 @@
42 foreach ($intervals_res['intervals'] as $interval) 46 foreach ($intervals_res['intervals'] as $interval)
43 { 47 {
44 //Add interval 48 //Add interval
45 - $this->cache->addInterval($interval['start'], $interval['stop']); 49 + $this->cache->addInterval($interval);
46 } 50 }
47 51
48 unset($intervals_res); 52 unset($intervals_res);
@@ -68,7 +72,7 @@ @@ -68,7 +72,7 @@
68 foreach ($intervals_res['intervals'] as $interval) 72 foreach ($intervals_res['intervals'] as $interval)
69 { 73 {
70 //Add interval 74 //Add interval
71 - $this->cache->addInterval($interval['start'], $interval['stop']); 75 + $this->cache->addInterval($interval);
72 } 76 }
73 77
74 unset($intervals_res); 78 unset($intervals_res);
@@ -96,7 +100,7 @@ @@ -96,7 +100,7 @@
96 foreach ($intervals_res['intervals'] as $interval) 100 foreach ($intervals_res['intervals'] as $interval)
97 { 101 {
98 //Add interval 102 //Add interval
99 - $this->cache->addInterval($interval['start'], $interval['stop']); 103 + $this->cache->addInterval($interval);
100 } 104 }
101 } 105 }
102 106
@@ -126,7 +130,7 @@ @@ -126,7 +130,7 @@
126 foreach ($intervals_res['intervals'] as $interval) 130 foreach ($intervals_res['intervals'] as $interval)
127 { 131 {
128 //Add interval 132 //Add interval
129 - $this->cache->addInterval($interval['start'], $interval['stop']); 133 + $this->cache->addInterval($interval);
130 } 134 }
131 } 135 }
132 136
@@ -155,21 +159,7 @@ @@ -155,21 +159,7 @@
155 159
156 $this->cache->reset(); 160 $this->cache->reset();
157 161
158 - $res_intervals = array();  
159 - foreach ($intervals as $interval)  
160 - {  
161 - array_push(  
162 - $res_intervals,  
163 - (object)array(  
164 - 'start' => $interval['start'],  
165 - 'stop' => $interval['stop']  
166 - )  
167 - );  
168 - }  
169 -  
170 - unset($intervals);  
171 -  
172 - return $this->objectMgr->saveIntervals($id, $res_intervals, $action); 162 + return $this->objectMgr->saveIntervals($id, $intervals, $action);
173 } 163 }
174 164
175 public function getIntervals($start,$limit,$sort_obj,$filter_json) { 165 public function getIntervals($start,$limit,$sort_obj,$filter_json) {
@@ -241,7 +231,7 @@ @@ -241,7 +231,7 @@
241 if (!isset($stop)) 231 if (!isset($stop))
242 $stop = date('Y-m-d\TH:i:s'); 232 $stop = date('Y-m-d\TH:i:s');
243 233
244 - $this->cache->addInterval($start, $stop, true, $index); 234 + $this->cache->addInterval(array('start' => $start, 'stop' => $stop), true, $index);
245 235
246 //$this->cache->updateIndexes(); 236 //$this->cache->updateIndexes();
247 237
@@ -263,11 +253,11 @@ @@ -263,11 +253,11 @@
263 return array('success' => true, 'status' => $this->cache->getStatus()); 253 return array('success' => true, 'status' => $this->cache->getStatus());
264 } 254 }
265 255
266 - public function modifyIntervalFromId($id, $start, $stop) { 256 + public function modifyIntervalFromId($cacheId, $data) {
267 if (!$this->loadFromFile()) 257 if (!$this->loadFromFile())
268 return array('success' => false, 'message' => 'Cannot load cache file'); 258 return array('success' => false, 'message' => 'Cannot load cache file');
269 259
270 - $this->cache->modifyIntervalFromId($id, $start, $stop); 260 + $this->cache->modifyIntervalFromId($cacheId, $data);
271 261
272 $this->saveToFile(); 262 $this->saveToFile();
273 263
php/classes/TimeTableCacheObject.php
@@ -39,20 +39,20 @@ class TimeTableCacheObject @@ -39,20 +39,20 @@ class TimeTableCacheObject
39 $this->isModified = $isModified; 39 $this->isModified = $isModified;
40 } 40 }
41 41
42 - public function addInterval($startIso, $stopIso, $isNew = false, $index = -1) {  
43 - $interval = new TimeTableCacheIntervalObject($this->lastId, count($this->intervals)); 42 + public function addInterval($interval, $isNew = false, $index = -1) {
  43 + $intervalObj = new TimeTableCacheIntervalObject($this->lastId, count($this->intervals));
44 ++$this->lastId; 44 ++$this->lastId;
45 - $interval->setStartFromISO($startIso);  
46 - $interval->setStopFromISO($stopIso);  
47 - $interval->setIsNew($isNew);  
48 - array_push($this->intervals, $interval); 45 + $intervalObj->setStartFromISO($interval['start']);
  46 + $intervalObj->setStopFromISO($interval['stop']);
  47 + $intervalObj->setIsNew($isNew);
  48 + array_push($this->intervals, $intervalObj);
49 if ($index < 0) 49 if ($index < 0)
50 array_push($this->indexes, count($this->intervals) - 1); 50 array_push($this->indexes, count($this->intervals) - 1);
51 else 51 else
52 array_splice($this->indexes, $index, 0, array(count($this->intervals) - 1)); 52 array_splice($this->indexes, $index, 0, array(count($this->intervals) - 1));
53 if ($isNew) 53 if ($isNew)
54 $this->isModified = true; 54 $this->isModified = true;
55 - return $interval; 55 + return $intervalObj;
56 } 56 }
57 57
58 public function removeIntervalFromId($id) { 58 public function removeIntervalFromId($id) {
@@ -85,18 +85,26 @@ class TimeTableCacheObject @@ -85,18 +85,26 @@ class TimeTableCacheObject
85 return false; 85 return false;
86 } 86 }
87 87
88 - public function modifyIntervalFromId($id, $start, $stop) { 88 + public function modifyIntervalFromId($cacheId, $data) {
89 foreach ($this->intervals as $interval) 89 foreach ($this->intervals as $interval)
90 { 90 {
91 - if ($interval->getId() == $id) 91 + if ($interval->getId() == $cacheId)
92 { 92 {
93 - if (isset($start))  
94 - $interval->setStartFromISO($start);  
95 - if (isset($stop))  
96 - $interval->setStopFromISO($stop);  
97 - $interval->setIsModified(true);  
98 - $this->isModified = true;  
99 - return true; 93 + foreach ($data as $key => $value) {
  94 + switch ($key) {
  95 + case 'start' :
  96 + $interval->setStartFromISO($start);
  97 + $interval->setIsModified(true);
  98 + $this->isModified = true;
  99 + break;
  100 + case 'stop':
  101 + $interval->setStopFromISO($stop);
  102 + $interval->setIsModified(true);
  103 + $this->isModified = true;
  104 + break;
  105 + }
  106 + }
  107 + return $this->isModified;
100 } 108 }
101 } 109 }
102 110
php/config.php
@@ -156,16 +156,16 @@ $API = array( @@ -156,16 +156,16 @@ $API = array(
156 'loadTTIntervals'=>array('len'=>1), 156 'loadTTIntervals'=>array('len'=>1),
157 'saveTTCacheIntervalsInTT'=>array('len'=>1), 157 'saveTTCacheIntervalsInTT'=>array('len'=>1),
158 'initObjectCache'=>array ('len'=>2), 158 'initObjectCache'=>array ('len'=>2),
159 - 'initObjectCacheFromTT'=>array('len'=>2), 159 + 'initObjectCacheFromObject'=>array('len'=>2),
160 'initForChart'=>array('len'=>4), 160 'initForChart'=>array('len'=>4),
161 'initObjectCacheFromTmpObject'=>array('len'=>3), 161 'initObjectCacheFromTmpObject'=>array('len'=>3),
162 'initObjectCacheFromUploadedFile'=>array('len'=>3), 162 'initObjectCacheFromUploadedFile'=>array('len'=>3),
163 'initObjectCacheFromCatalog'=>array('len'=>2), 163 'initObjectCacheFromCatalog'=>array('len'=>2),
164 - 'readTTCacheIntervals'=>array('len'=>1), 164 + 'readCacheIntervals'=>array('len'=>1),
165 'readIntervalsForChart'=>array('len'=>1), 165 'readIntervalsForChart'=>array('len'=>1),
166 - 'addTTCacheInterval'=>array('len'=>1), 166 + 'addCacheInterval'=>array('len'=>1),
167 'removeTTCacheIntervalFromId'=>array('len'=>2), 167 'removeTTCacheIntervalFromId'=>array('len'=>2),
168 - 'modifyTTCacheInterval'=>array('len'=>1), 168 + 'modifyCacheInterval'=>array('len'=>1),
169 'operationTTCacheIntervals'=>array('len'=>2), 169 'operationTTCacheIntervals'=>array('len'=>2),
170 'mergeTTCacheIntervals'=>array('len'=>0), 170 'mergeTTCacheIntervals'=>array('len'=>0),
171 'getTTCacheStatistics'=>array('len'=>1), 171 'getTTCacheStatistics'=>array('len'=>1),