##// END OF EJS Templates
Bugs fixed in Signal Chain GUI:...
Miguel Valdez -
r643:bf37eba8f6f6
parent child
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -1,7 +1,7
1 '''
1 '''
2 Created on Feb 7, 2012
2 Created on Feb 7, 2012
3
3
4 @author $Author$
4 @author $Author$
5 @version $Id$
5 @version $Id$
6 '''
6 '''
7 __version__ = "2.1.5.1" No newline at end of file
7 __version__ = "2.1.5.2" No newline at end of file
@@ -1,1089 +1,1097
1 '''
1 '''
2 Created on September , 2012
2 Created on September , 2012
3 @author:
3 @author:
4 '''
4 '''
5 from xml.etree.ElementTree import Element, SubElement
5 from xml.etree.ElementTree import Element, SubElement
6 from xml.etree import ElementTree as ET
6 from xml.etree import ElementTree as ET
7 from xml.dom import minidom
7 from xml.dom import minidom
8
8
9 from model import *
9 from model import *
10
10
11 try:
11 try:
12 from gevent import sleep
12 from gevent import sleep
13 except:
13 except:
14 from time import sleep
14 from time import sleep
15
15
16 import ast
16 import ast
17
17
18 def prettify(elem):
18 def prettify(elem):
19 """Return a pretty-printed XML string for the Element.
19 """Return a pretty-printed XML string for the Element.
20 """
20 """
21 rough_string = ET.tostring(elem, 'utf-8')
21 rough_string = ET.tostring(elem, 'utf-8')
22 reparsed = minidom.parseString(rough_string)
22 reparsed = minidom.parseString(rough_string)
23 return reparsed.toprettyxml(indent=" ")
23 return reparsed.toprettyxml(indent=" ")
24
24
25 class ParameterConf():
25 class ParameterConf():
26
26
27 id = None
27 id = None
28 name = None
28 name = None
29 value = None
29 value = None
30 format = None
30 format = None
31
31
32 __formated_value = None
32 __formated_value = None
33
33
34 ELEMENTNAME = 'Parameter'
34 ELEMENTNAME = 'Parameter'
35
35
36 def __init__(self):
36 def __init__(self):
37
37
38 self.format = 'str'
38 self.format = 'str'
39
39
40 def getElementName(self):
40 def getElementName(self):
41
41
42 return self.ELEMENTNAME
42 return self.ELEMENTNAME
43
43
44 def getValue(self):
44 def getValue(self):
45
45
46 value = self.value
46 value = self.value
47 format = self.format
47 format = self.format
48
48
49 if self.__formated_value != None:
49 if self.__formated_value != None:
50
50
51 return self.__formated_value
51 return self.__formated_value
52
52
53 if format == 'str':
53 if format == 'str':
54 self.__formated_value = str(value)
54 self.__formated_value = str(value)
55 return self.__formated_value
55 return self.__formated_value
56
56
57 if value == '':
57 if value == '':
58 raise ValueError, "%s: This parameter value is empty" %self.name
58 raise ValueError, "%s: This parameter value is empty" %self.name
59
59
60 if format == 'bool':
60 if format == 'bool':
61 value = int(value)
61 value = int(value)
62
62
63 if format == 'list':
63 if format == 'list':
64 strList = value.split(',')
64 strList = value.split(',')
65
65
66 self.__formated_value = strList
66 self.__formated_value = strList
67
67
68 return self.__formated_value
68 return self.__formated_value
69
69
70 if format == 'intlist':
70 if format == 'intlist':
71 """
71 """
72 Example:
72 Example:
73 value = (0,1,2)
73 value = (0,1,2)
74 """
74 """
75 value = value.replace('(', '')
75 value = value.replace('(', '')
76 value = value.replace(')', '')
76 value = value.replace(')', '')
77
77
78 value = value.replace('[', '')
78 value = value.replace('[', '')
79 value = value.replace(']', '')
79 value = value.replace(']', '')
80
80
81 strList = value.split(',')
81 strList = value.split(',')
82 intList = [int(x) for x in strList]
82 intList = [int(float(x)) for x in strList]
83
83
84 self.__formated_value = intList
84 self.__formated_value = intList
85
85
86 return self.__formated_value
86 return self.__formated_value
87
87
88 if format == 'floatlist':
88 if format == 'floatlist':
89 """
89 """
90 Example:
90 Example:
91 value = (0.5, 1.4, 2.7)
91 value = (0.5, 1.4, 2.7)
92 """
92 """
93
93
94 value = value.replace('(', '')
94 value = value.replace('(', '')
95 value = value.replace(')', '')
95 value = value.replace(')', '')
96
96
97 value = value.replace('[', '')
97 value = value.replace('[', '')
98 value = value.replace(']', '')
98 value = value.replace(']', '')
99
99
100 strList = value.split(',')
100 strList = value.split(',')
101 floatList = [float(x) for x in strList]
101 floatList = [float(x) for x in strList]
102
102
103 self.__formated_value = floatList
103 self.__formated_value = floatList
104
104
105 return self.__formated_value
105 return self.__formated_value
106
106
107 if format == 'date':
107 if format == 'date':
108 strList = value.split('/')
108 strList = value.split('/')
109 intList = [int(x) for x in strList]
109 intList = [int(x) for x in strList]
110 date = datetime.date(intList[0], intList[1], intList[2])
110 date = datetime.date(intList[0], intList[1], intList[2])
111
111
112 self.__formated_value = date
112 self.__formated_value = date
113
113
114 return self.__formated_value
114 return self.__formated_value
115
115
116 if format == 'time':
116 if format == 'time':
117 strList = value.split(':')
117 strList = value.split(':')
118 intList = [int(x) for x in strList]
118 intList = [int(x) for x in strList]
119 time = datetime.time(intList[0], intList[1], intList[2])
119 time = datetime.time(intList[0], intList[1], intList[2])
120
120
121 self.__formated_value = time
121 self.__formated_value = time
122
122
123 return self.__formated_value
123 return self.__formated_value
124
124
125 if format == 'pairslist':
125 if format == 'pairslist':
126 """
126 """
127 Example:
127 Example:
128 value = (0,1),(1,2)
128 value = (0,1),(1,2)
129 """
129 """
130
130
131 value = value.replace('(', '')
131 value = value.replace('(', '')
132 value = value.replace(')', '')
132 value = value.replace(')', '')
133
133
134 value = value.replace('[', '')
134 value = value.replace('[', '')
135 value = value.replace(']', '')
135 value = value.replace(']', '')
136
136
137 strList = value.split(',')
137 strList = value.split(',')
138 intList = [int(item) for item in strList]
138 intList = [int(item) for item in strList]
139 pairList = []
139 pairList = []
140 for i in range(len(intList)/2):
140 for i in range(len(intList)/2):
141 pairList.append((intList[i*2], intList[i*2 + 1]))
141 pairList.append((intList[i*2], intList[i*2 + 1]))
142
142
143 self.__formated_value = pairList
143 self.__formated_value = pairList
144
144
145 return self.__formated_value
145 return self.__formated_value
146
146
147 if format == 'multilist':
147 if format == 'multilist':
148 """
148 """
149 Example:
149 Example:
150 value = (0,1,2),(3,4,5)
150 value = (0,1,2),(3,4,5)
151 """
151 """
152 multiList = ast.literal_eval(value)
152 multiList = ast.literal_eval(value)
153
153
154 if type(multiList[0]) == int:
154 if type(multiList[0]) == int:
155 multiList = ast.literal_eval("(" + value + ")")
155 multiList = ast.literal_eval("(" + value + ")")
156
156
157 self.__formated_value = multiList
157 self.__formated_value = multiList
158
158
159 return self.__formated_value
159 return self.__formated_value
160
160
161 format_func = eval(format)
161 format_func = eval(format)
162
162
163 self.__formated_value = format_func(value)
163 self.__formated_value = format_func(value)
164
164
165 return self.__formated_value
165 return self.__formated_value
166
166
167 def updateId(self, new_id):
167 def updateId(self, new_id):
168
168
169 self.id = str(new_id)
169 self.id = str(new_id)
170
170
171 def setup(self, id, name, value, format='str'):
171 def setup(self, id, name, value, format='str'):
172
172
173 self.id = str(id)
173 self.id = str(id)
174 self.name = name
174 self.name = name
175 self.value = str(value)
175 self.value = str(value)
176 self.format = str.lower(format)
176 self.format = str.lower(format)
177
177
178 try:
179 self.getValue()
180 except:
181 return 0
182
183 return 1
184
178 def update(self, name, value, format='str'):
185 def update(self, name, value, format='str'):
179
186
180 self.name = name
187 self.name = name
181 self.value = str(value)
188 self.value = str(value)
182 self.format = format
189 self.format = format
183
190
184 def makeXml(self, opElement):
191 def makeXml(self, opElement):
185
192
186 parmElement = SubElement(opElement, self.ELEMENTNAME)
193 parmElement = SubElement(opElement, self.ELEMENTNAME)
187 parmElement.set('id', str(self.id))
194 parmElement.set('id', str(self.id))
188 parmElement.set('name', self.name)
195 parmElement.set('name', self.name)
189 parmElement.set('value', self.value)
196 parmElement.set('value', self.value)
190 parmElement.set('format', self.format)
197 parmElement.set('format', self.format)
191
198
192 def readXml(self, parmElement):
199 def readXml(self, parmElement):
193
200
194 self.id = parmElement.get('id')
201 self.id = parmElement.get('id')
195 self.name = parmElement.get('name')
202 self.name = parmElement.get('name')
196 self.value = parmElement.get('value')
203 self.value = parmElement.get('value')
197 self.format = str.lower(parmElement.get('format'))
204 self.format = str.lower(parmElement.get('format'))
198
205
199 #Compatible with old signal chain version
206 #Compatible with old signal chain version
200 if self.format == 'int' and self.name == 'idfigure':
207 if self.format == 'int' and self.name == 'idfigure':
201 self.name = 'id'
208 self.name = 'id'
202
209
203 def printattr(self):
210 def printattr(self):
204
211
205 print "Parameter[%s]: name = %s, value = %s, format = %s" %(self.id, self.name, self.value, self.format)
212 print "Parameter[%s]: name = %s, value = %s, format = %s" %(self.id, self.name, self.value, self.format)
206
213
207 class OperationConf():
214 class OperationConf():
208
215
209 id = None
216 id = None
210 name = None
217 name = None
211 priority = None
218 priority = None
212 type = None
219 type = None
213
220
214 parmConfObjList = []
221 parmConfObjList = []
215
222
216 ELEMENTNAME = 'Operation'
223 ELEMENTNAME = 'Operation'
217
224
218 def __init__(self):
225 def __init__(self):
219
226
220 self.id = '0'
227 self.id = '0'
221 self.name = None
228 self.name = None
222 self.priority = None
229 self.priority = None
223 self.type = 'self'
230 self.type = 'self'
224
231
225
232
226 def __getNewId(self):
233 def __getNewId(self):
227
234
228 return int(self.id)*10 + len(self.parmConfObjList) + 1
235 return int(self.id)*10 + len(self.parmConfObjList) + 1
229
236
230 def updateId(self, new_id):
237 def updateId(self, new_id):
231
238
232 self.id = str(new_id)
239 self.id = str(new_id)
233
240
234 n = 1
241 n = 1
235 for parmObj in self.parmConfObjList:
242 for parmObj in self.parmConfObjList:
236
243
237 idParm = str(int(new_id)*10 + n)
244 idParm = str(int(new_id)*10 + n)
238 parmObj.updateId(idParm)
245 parmObj.updateId(idParm)
239
246
240 n += 1
247 n += 1
241
248
242 def getElementName(self):
249 def getElementName(self):
243
250
244 return self.ELEMENTNAME
251 return self.ELEMENTNAME
245
252
246 def getParameterObjList(self):
253 def getParameterObjList(self):
247
254
248 return self.parmConfObjList
255 return self.parmConfObjList
249
256
250 def getParameterObj(self, parameterName):
257 def getParameterObj(self, parameterName):
251
258
252 for parmConfObj in self.parmConfObjList:
259 for parmConfObj in self.parmConfObjList:
253
260
254 if parmConfObj.name != parameterName:
261 if parmConfObj.name != parameterName:
255 continue
262 continue
256
263
257 return parmConfObj
264 return parmConfObj
258
265
259 return None
266 return None
260
267
261 def getParameterObjfromValue(self, parameterValue):
268 def getParameterObjfromValue(self, parameterValue):
262
269
263 for parmConfObj in self.parmConfObjList:
270 for parmConfObj in self.parmConfObjList:
264
271
265 if parmConfObj.getValue() != parameterValue:
272 if parmConfObj.getValue() != parameterValue:
266 continue
273 continue
267
274
268 return parmConfObj.getValue()
275 return parmConfObj.getValue()
269
276
270 return None
277 return None
271
278
272 def getParameterValue(self, parameterName):
279 def getParameterValue(self, parameterName):
273
280
274 parameterObj = self.getParameterObj(parameterName)
281 parameterObj = self.getParameterObj(parameterName)
275
282
276 # if not parameterObj:
283 # if not parameterObj:
277 # return None
284 # return None
278
285
279 value = parameterObj.getValue()
286 value = parameterObj.getValue()
280
287
281 return value
288 return value
282
289
283 def setup(self, id, name, priority, type):
290 def setup(self, id, name, priority, type):
284
291
285 self.id = str(id)
292 self.id = str(id)
286 self.name = name
293 self.name = name
287 self.type = type
294 self.type = type
288 self.priority = priority
295 self.priority = priority
289
296
290 self.parmConfObjList = []
297 self.parmConfObjList = []
291
298
292 def removeParameters(self):
299 def removeParameters(self):
293
300
294 for obj in self.parmConfObjList:
301 for obj in self.parmConfObjList:
295 del obj
302 del obj
296
303
297 self.parmConfObjList = []
304 self.parmConfObjList = []
298
305
299 def addParameter(self, name, value, format='str'):
306 def addParameter(self, name, value, format='str'):
300
307
301 id = self.__getNewId()
308 id = self.__getNewId()
302
309
303 parmConfObj = ParameterConf()
310 parmConfObj = ParameterConf()
304 parmConfObj.setup(id, name, value, format)
311 if not parmConfObj.setup(id, name, value, format):
312 return None
305
313
306 self.parmConfObjList.append(parmConfObj)
314 self.parmConfObjList.append(parmConfObj)
307
315
308 return parmConfObj
316 return parmConfObj
309
317
310 def changeParameter(self, name, value, format='str'):
318 def changeParameter(self, name, value, format='str'):
311
319
312 parmConfObj = self.getParameterObj(name)
320 parmConfObj = self.getParameterObj(name)
313 parmConfObj.update(name, value, format)
321 parmConfObj.update(name, value, format)
314
322
315 return parmConfObj
323 return parmConfObj
316
324
317 def makeXml(self, upElement):
325 def makeXml(self, upElement):
318
326
319 opElement = SubElement(upElement, self.ELEMENTNAME)
327 opElement = SubElement(upElement, self.ELEMENTNAME)
320 opElement.set('id', str(self.id))
328 opElement.set('id', str(self.id))
321 opElement.set('name', self.name)
329 opElement.set('name', self.name)
322 opElement.set('type', self.type)
330 opElement.set('type', self.type)
323 opElement.set('priority', str(self.priority))
331 opElement.set('priority', str(self.priority))
324
332
325 for parmConfObj in self.parmConfObjList:
333 for parmConfObj in self.parmConfObjList:
326 parmConfObj.makeXml(opElement)
334 parmConfObj.makeXml(opElement)
327
335
328 def readXml(self, opElement):
336 def readXml(self, opElement):
329
337
330 self.id = opElement.get('id')
338 self.id = opElement.get('id')
331 self.name = opElement.get('name')
339 self.name = opElement.get('name')
332 self.type = opElement.get('type')
340 self.type = opElement.get('type')
333 self.priority = opElement.get('priority')
341 self.priority = opElement.get('priority')
334
342
335 #Compatible with old signal chain version
343 #Compatible with old signal chain version
336 #Use of 'run' method instead 'init'
344 #Use of 'run' method instead 'init'
337 if self.type == 'self' and self.name == 'init':
345 if self.type == 'self' and self.name == 'init':
338 self.name = 'run'
346 self.name = 'run'
339
347
340 self.parmConfObjList = []
348 self.parmConfObjList = []
341
349
342 parmElementList = opElement.getiterator(ParameterConf().getElementName())
350 parmElementList = opElement.getiterator(ParameterConf().getElementName())
343
351
344 for parmElement in parmElementList:
352 for parmElement in parmElementList:
345 parmConfObj = ParameterConf()
353 parmConfObj = ParameterConf()
346 parmConfObj.readXml(parmElement)
354 parmConfObj.readXml(parmElement)
347
355
348 #Compatible with old signal chain version
356 #Compatible with old signal chain version
349 #If an 'plot' OPERATION is found, changes name operation by the value of its type PARAMETER
357 #If an 'plot' OPERATION is found, changes name operation by the value of its type PARAMETER
350 if self.type != 'self' and self.name == 'Plot':
358 if self.type != 'self' and self.name == 'Plot':
351 if parmConfObj.format == 'str' and parmConfObj.name == 'type':
359 if parmConfObj.format == 'str' and parmConfObj.name == 'type':
352 self.name = parmConfObj.value
360 self.name = parmConfObj.value
353 continue
361 continue
354
362
355 self.parmConfObjList.append(parmConfObj)
363 self.parmConfObjList.append(parmConfObj)
356
364
357 def printattr(self):
365 def printattr(self):
358
366
359 print "%s[%s]: name = %s, type = %s, priority = %s" %(self.ELEMENTNAME,
367 print "%s[%s]: name = %s, type = %s, priority = %s" %(self.ELEMENTNAME,
360 self.id,
368 self.id,
361 self.name,
369 self.name,
362 self.type,
370 self.type,
363 self.priority)
371 self.priority)
364
372
365 for parmConfObj in self.parmConfObjList:
373 for parmConfObj in self.parmConfObjList:
366 parmConfObj.printattr()
374 parmConfObj.printattr()
367
375
368 def createObject(self):
376 def createObject(self):
369
377
370 if self.type == 'self':
378 if self.type == 'self':
371 raise ValueError, "This operation type cannot be created"
379 raise ValueError, "This operation type cannot be created"
372
380
373 if self.type == 'external' or self.type == 'other':
381 if self.type == 'external' or self.type == 'other':
374 className = eval(self.name)
382 className = eval(self.name)
375 opObj = className()
383 opObj = className()
376
384
377 return opObj
385 return opObj
378
386
379 class ProcUnitConf():
387 class ProcUnitConf():
380
388
381 id = None
389 id = None
382 name = None
390 name = None
383 datatype = None
391 datatype = None
384 inputId = None
392 inputId = None
385 parentId = None
393 parentId = None
386
394
387 opConfObjList = []
395 opConfObjList = []
388
396
389 procUnitObj = None
397 procUnitObj = None
390 opObjList = []
398 opObjList = []
391
399
392 ELEMENTNAME = 'ProcUnit'
400 ELEMENTNAME = 'ProcUnit'
393
401
394 def __init__(self):
402 def __init__(self):
395
403
396 self.id = None
404 self.id = None
397 self.datatype = None
405 self.datatype = None
398 self.name = None
406 self.name = None
399 self.inputId = None
407 self.inputId = None
400
408
401 self.opConfObjList = []
409 self.opConfObjList = []
402
410
403 self.procUnitObj = None
411 self.procUnitObj = None
404 self.opObjDict = {}
412 self.opObjDict = {}
405
413
406 def __getPriority(self):
414 def __getPriority(self):
407
415
408 return len(self.opConfObjList)+1
416 return len(self.opConfObjList)+1
409
417
410 def __getNewId(self):
418 def __getNewId(self):
411
419
412 return int(self.id)*10 + len(self.opConfObjList) + 1
420 return int(self.id)*10 + len(self.opConfObjList) + 1
413
421
414 def getElementName(self):
422 def getElementName(self):
415
423
416 return self.ELEMENTNAME
424 return self.ELEMENTNAME
417
425
418 def getId(self):
426 def getId(self):
419
427
420 return self.id
428 return self.id
421
429
422 def updateId(self, new_id, parentId=parentId):
430 def updateId(self, new_id, parentId=parentId):
423
431
424
432
425 new_id = int(parentId)*10 + (int(self.id) % 10)
433 new_id = int(parentId)*10 + (int(self.id) % 10)
426 new_inputId = int(parentId)*10 + (int(self.inputId) % 10)
434 new_inputId = int(parentId)*10 + (int(self.inputId) % 10)
427
435
428 #If this proc unit has not inputs
436 #If this proc unit has not inputs
429 if self.inputId == '0':
437 if self.inputId == '0':
430 new_inputId = 0
438 new_inputId = 0
431
439
432 n = 1
440 n = 1
433 for opConfObj in self.opConfObjList:
441 for opConfObj in self.opConfObjList:
434
442
435 idOp = str(int(new_id)*10 + n)
443 idOp = str(int(new_id)*10 + n)
436 opConfObj.updateId(idOp)
444 opConfObj.updateId(idOp)
437
445
438 n += 1
446 n += 1
439
447
440 self.parentId = str(parentId)
448 self.parentId = str(parentId)
441 self.id = str(new_id)
449 self.id = str(new_id)
442 self.inputId = str(new_inputId)
450 self.inputId = str(new_inputId)
443
451
444
452
445 def getInputId(self):
453 def getInputId(self):
446
454
447 return self.inputId
455 return self.inputId
448
456
449 def getOperationObjList(self):
457 def getOperationObjList(self):
450
458
451 return self.opConfObjList
459 return self.opConfObjList
452
460
453 def getOperationObj(self, name=None):
461 def getOperationObj(self, name=None):
454
462
455 for opConfObj in self.opConfObjList:
463 for opConfObj in self.opConfObjList:
456
464
457 if opConfObj.name != name:
465 if opConfObj.name != name:
458 continue
466 continue
459
467
460 return opConfObj
468 return opConfObj
461
469
462 return None
470 return None
463
471
464 def getOpObjfromParamValue(self, value=None):
472 def getOpObjfromParamValue(self, value=None):
465
473
466 for opConfObj in self.opConfObjList:
474 for opConfObj in self.opConfObjList:
467 if opConfObj.getParameterObjfromValue(parameterValue=value) != value:
475 if opConfObj.getParameterObjfromValue(parameterValue=value) != value:
468 continue
476 continue
469 return opConfObj
477 return opConfObj
470 return None
478 return None
471
479
472 def getProcUnitObj(self):
480 def getProcUnitObj(self):
473
481
474 return self.procUnitObj
482 return self.procUnitObj
475
483
476 def setup(self, id, name, datatype, inputId, parentId=None):
484 def setup(self, id, name, datatype, inputId, parentId=None):
477
485
478 #Compatible with old signal chain version
486 #Compatible with old signal chain version
479 if datatype==None and name==None:
487 if datatype==None and name==None:
480 raise ValueError, "datatype or name should be defined"
488 raise ValueError, "datatype or name should be defined"
481
489
482 if name==None:
490 if name==None:
483 if 'Proc' in datatype:
491 if 'Proc' in datatype:
484 name = datatype
492 name = datatype
485 else:
493 else:
486 name = '%sProc' %(datatype)
494 name = '%sProc' %(datatype)
487
495
488 if datatype==None:
496 if datatype==None:
489 datatype = name.replace('Proc','')
497 datatype = name.replace('Proc','')
490
498
491 self.id = str(id)
499 self.id = str(id)
492 self.name = name
500 self.name = name
493 self.datatype = datatype
501 self.datatype = datatype
494 self.inputId = inputId
502 self.inputId = inputId
495 self.parentId = parentId
503 self.parentId = parentId
496
504
497 self.opConfObjList = []
505 self.opConfObjList = []
498
506
499 self.addOperation(name='run', optype='self')
507 self.addOperation(name='run', optype='self')
500
508
501 def removeOperations(self):
509 def removeOperations(self):
502
510
503 for obj in self.opConfObjList:
511 for obj in self.opConfObjList:
504 del obj
512 del obj
505
513
506 self.opConfObjList = []
514 self.opConfObjList = []
507 self.addOperation(name='run')
515 self.addOperation(name='run')
508
516
509 def addParameter(self, **kwargs):
517 def addParameter(self, **kwargs):
510 '''
518 '''
511 Add parameters to "run" operation
519 Add parameters to "run" operation
512 '''
520 '''
513 opObj = self.opConfObjList[0]
521 opObj = self.opConfObjList[0]
514
522
515 opObj.addParameter(**kwargs)
523 opObj.addParameter(**kwargs)
516
524
517 return opObj
525 return opObj
518
526
519 def addOperation(self, name, optype='self'):
527 def addOperation(self, name, optype='self'):
520
528
521 id = self.__getNewId()
529 id = self.__getNewId()
522 priority = self.__getPriority()
530 priority = self.__getPriority()
523
531
524 opConfObj = OperationConf()
532 opConfObj = OperationConf()
525 opConfObj.setup(id, name=name, priority=priority, type=optype)
533 opConfObj.setup(id, name=name, priority=priority, type=optype)
526
534
527 self.opConfObjList.append(opConfObj)
535 self.opConfObjList.append(opConfObj)
528
536
529 return opConfObj
537 return opConfObj
530
538
531 def makeXml(self, procUnitElement):
539 def makeXml(self, procUnitElement):
532
540
533 upElement = SubElement(procUnitElement, self.ELEMENTNAME)
541 upElement = SubElement(procUnitElement, self.ELEMENTNAME)
534 upElement.set('id', str(self.id))
542 upElement.set('id', str(self.id))
535 upElement.set('name', self.name)
543 upElement.set('name', self.name)
536 upElement.set('datatype', self.datatype)
544 upElement.set('datatype', self.datatype)
537 upElement.set('inputId', str(self.inputId))
545 upElement.set('inputId', str(self.inputId))
538
546
539 for opConfObj in self.opConfObjList:
547 for opConfObj in self.opConfObjList:
540 opConfObj.makeXml(upElement)
548 opConfObj.makeXml(upElement)
541
549
542 def readXml(self, upElement):
550 def readXml(self, upElement):
543
551
544 self.id = upElement.get('id')
552 self.id = upElement.get('id')
545 self.name = upElement.get('name')
553 self.name = upElement.get('name')
546 self.datatype = upElement.get('datatype')
554 self.datatype = upElement.get('datatype')
547 self.inputId = upElement.get('inputId')
555 self.inputId = upElement.get('inputId')
548
556
549 if self.ELEMENTNAME == "ReadUnit":
557 if self.ELEMENTNAME == "ReadUnit":
550 self.datatype = self.datatype.replace("Reader", "")
558 self.datatype = self.datatype.replace("Reader", "")
551
559
552 if self.ELEMENTNAME == "ProcUnit":
560 if self.ELEMENTNAME == "ProcUnit":
553 self.datatype = self.datatype.replace("Proc", "")
561 self.datatype = self.datatype.replace("Proc", "")
554
562
555 if self.inputId == 'None':
563 if self.inputId == 'None':
556 self.inputId = '0'
564 self.inputId = '0'
557
565
558 self.opConfObjList = []
566 self.opConfObjList = []
559
567
560 opElementList = upElement.getiterator(OperationConf().getElementName())
568 opElementList = upElement.getiterator(OperationConf().getElementName())
561
569
562 for opElement in opElementList:
570 for opElement in opElementList:
563 opConfObj = OperationConf()
571 opConfObj = OperationConf()
564 opConfObj.readXml(opElement)
572 opConfObj.readXml(opElement)
565 self.opConfObjList.append(opConfObj)
573 self.opConfObjList.append(opConfObj)
566
574
567 def printattr(self):
575 def printattr(self):
568
576
569 print "%s[%s]: name = %s, datatype = %s, inputId = %s" %(self.ELEMENTNAME,
577 print "%s[%s]: name = %s, datatype = %s, inputId = %s" %(self.ELEMENTNAME,
570 self.id,
578 self.id,
571 self.name,
579 self.name,
572 self.datatype,
580 self.datatype,
573 self.inputId)
581 self.inputId)
574
582
575 for opConfObj in self.opConfObjList:
583 for opConfObj in self.opConfObjList:
576 opConfObj.printattr()
584 opConfObj.printattr()
577
585
578 def createObjects(self):
586 def createObjects(self):
579
587
580 className = eval(self.name)
588 className = eval(self.name)
581 procUnitObj = className()
589 procUnitObj = className()
582
590
583 for opConfObj in self.opConfObjList:
591 for opConfObj in self.opConfObjList:
584
592
585 if opConfObj.type == 'self':
593 if opConfObj.type == 'self':
586 continue
594 continue
587
595
588 opObj = opConfObj.createObject()
596 opObj = opConfObj.createObject()
589
597
590 self.opObjDict[opConfObj.id] = opObj
598 self.opObjDict[opConfObj.id] = opObj
591 procUnitObj.addOperation(opObj, opConfObj.id)
599 procUnitObj.addOperation(opObj, opConfObj.id)
592
600
593 self.procUnitObj = procUnitObj
601 self.procUnitObj = procUnitObj
594
602
595 return procUnitObj
603 return procUnitObj
596
604
597 def run(self):
605 def run(self):
598
606
599 finalSts = False
607 finalSts = False
600
608
601 for opConfObj in self.opConfObjList:
609 for opConfObj in self.opConfObjList:
602
610
603 kwargs = {}
611 kwargs = {}
604 for parmConfObj in opConfObj.getParameterObjList():
612 for parmConfObj in opConfObj.getParameterObjList():
605 if opConfObj.name == 'run' and parmConfObj.name == 'datatype':
613 if opConfObj.name == 'run' and parmConfObj.name == 'datatype':
606 continue
614 continue
607
615
608 kwargs[parmConfObj.name] = parmConfObj.getValue()
616 kwargs[parmConfObj.name] = parmConfObj.getValue()
609
617
610 #print "\tRunning the '%s' operation with %s" %(opConfObj.name, opConfObj.id)
618 #print "\tRunning the '%s' operation with %s" %(opConfObj.name, opConfObj.id)
611 sts = self.procUnitObj.call(opType = opConfObj.type,
619 sts = self.procUnitObj.call(opType = opConfObj.type,
612 opName = opConfObj.name,
620 opName = opConfObj.name,
613 opId = opConfObj.id,
621 opId = opConfObj.id,
614 **kwargs)
622 **kwargs)
615 finalSts = finalSts or sts
623 finalSts = finalSts or sts
616
624
617 return finalSts
625 return finalSts
618
626
619 def close(self):
627 def close(self):
620
628
621 for opConfObj in self.opConfObjList:
629 for opConfObj in self.opConfObjList:
622 if opConfObj.type == 'self':
630 if opConfObj.type == 'self':
623 continue
631 continue
624
632
625 opObj = self.procUnitObj.getOperationObj(opConfObj.id)
633 opObj = self.procUnitObj.getOperationObj(opConfObj.id)
626 opObj.close()
634 opObj.close()
627
635
628 self.procUnitObj.close()
636 self.procUnitObj.close()
629
637
630 return
638 return
631
639
632 class ReadUnitConf(ProcUnitConf):
640 class ReadUnitConf(ProcUnitConf):
633
641
634 path = None
642 path = None
635 startDate = None
643 startDate = None
636 endDate = None
644 endDate = None
637 startTime = None
645 startTime = None
638 endTime = None
646 endTime = None
639
647
640 ELEMENTNAME = 'ReadUnit'
648 ELEMENTNAME = 'ReadUnit'
641
649
642 def __init__(self):
650 def __init__(self):
643
651
644 self.id = None
652 self.id = None
645 self.datatype = None
653 self.datatype = None
646 self.name = None
654 self.name = None
647 self.inputId = None
655 self.inputId = None
648
656
649 self.parentId = None
657 self.parentId = None
650
658
651 self.opConfObjList = []
659 self.opConfObjList = []
652 self.opObjList = []
660 self.opObjList = []
653
661
654 def getElementName(self):
662 def getElementName(self):
655
663
656 return self.ELEMENTNAME
664 return self.ELEMENTNAME
657
665
658 def setup(self, id, name, datatype, path, startDate="", endDate="", startTime="", endTime="", parentId=None, **kwargs):
666 def setup(self, id, name, datatype, path, startDate="", endDate="", startTime="", endTime="", parentId=None, **kwargs):
659
667
660 #Compatible with old signal chain version
668 #Compatible with old signal chain version
661 if datatype==None and name==None:
669 if datatype==None and name==None:
662 raise ValueError, "datatype or name should be defined"
670 raise ValueError, "datatype or name should be defined"
663
671
664 if name==None:
672 if name==None:
665 if 'Reader' in datatype:
673 if 'Reader' in datatype:
666 name = datatype
674 name = datatype
667 else:
675 else:
668 name = '%sReader' %(datatype)
676 name = '%sReader' %(datatype)
669
677
670 if datatype==None:
678 if datatype==None:
671 datatype = name.replace('Reader','')
679 datatype = name.replace('Reader','')
672
680
673 self.id = id
681 self.id = id
674 self.name = name
682 self.name = name
675 self.datatype = datatype
683 self.datatype = datatype
676
684
677 self.path = path
685 self.path = path
678 self.startDate = startDate
686 self.startDate = startDate
679 self.endDate = endDate
687 self.endDate = endDate
680 self.startTime = startTime
688 self.startTime = startTime
681 self.endTime = endTime
689 self.endTime = endTime
682
690
683 self.inputId = '0'
691 self.inputId = '0'
684 self.parentId = parentId
692 self.parentId = parentId
685
693
686 self.addRunOperation(**kwargs)
694 self.addRunOperation(**kwargs)
687
695
688 def update(self, datatype, path, startDate, endDate, startTime, endTime, parentId=None, name=None, **kwargs):
696 def update(self, datatype, path, startDate, endDate, startTime, endTime, parentId=None, name=None, **kwargs):
689
697
690 #Compatible with old signal chain version
698 #Compatible with old signal chain version
691 if datatype==None and name==None:
699 if datatype==None and name==None:
692 raise ValueError, "datatype or name should be defined"
700 raise ValueError, "datatype or name should be defined"
693
701
694 if name==None:
702 if name==None:
695 if 'Reader' in datatype:
703 if 'Reader' in datatype:
696 name = datatype
704 name = datatype
697 else:
705 else:
698 name = '%sReader' %(datatype)
706 name = '%sReader' %(datatype)
699
707
700 if datatype==None:
708 if datatype==None:
701 datatype = name.replace('Reader','')
709 datatype = name.replace('Reader','')
702
710
703 self.datatype = datatype
711 self.datatype = datatype
704 self.name = name
712 self.name = name
705 self.path = path
713 self.path = path
706 self.startDate = startDate
714 self.startDate = startDate
707 self.endDate = endDate
715 self.endDate = endDate
708 self.startTime = startTime
716 self.startTime = startTime
709 self.endTime = endTime
717 self.endTime = endTime
710
718
711 self.inputId = '0'
719 self.inputId = '0'
712 self.parentId = parentId
720 self.parentId = parentId
713
721
714 self.updateRunOperation(**kwargs)
722 self.updateRunOperation(**kwargs)
715
723
716 def addRunOperation(self, **kwargs):
724 def addRunOperation(self, **kwargs):
717
725
718 opObj = self.addOperation(name = 'run', optype = 'self')
726 opObj = self.addOperation(name = 'run', optype = 'self')
719
727
720 opObj.addParameter(name='datatype' , value=self.datatype, format='str')
728 opObj.addParameter(name='datatype' , value=self.datatype, format='str')
721 opObj.addParameter(name='path' , value=self.path, format='str')
729 opObj.addParameter(name='path' , value=self.path, format='str')
722 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
730 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
723 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
731 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
724 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
732 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
725 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
733 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
726
734
727 for key, value in kwargs.items():
735 for key, value in kwargs.items():
728 opObj.addParameter(name=key, value=value, format=type(value).__name__)
736 opObj.addParameter(name=key, value=value, format=type(value).__name__)
729
737
730 return opObj
738 return opObj
731
739
732 def updateRunOperation(self, **kwargs):
740 def updateRunOperation(self, **kwargs):
733
741
734 opObj = self.getOperationObj(name = 'run')
742 opObj = self.getOperationObj(name = 'run')
735 opObj.removeParameters()
743 opObj.removeParameters()
736
744
737 opObj.addParameter(name='datatype' , value=self.datatype, format='str')
745 opObj.addParameter(name='datatype' , value=self.datatype, format='str')
738 opObj.addParameter(name='path' , value=self.path, format='str')
746 opObj.addParameter(name='path' , value=self.path, format='str')
739 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
747 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
740 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
748 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
741 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
749 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
742 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
750 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
743
751
744 for key, value in kwargs.items():
752 for key, value in kwargs.items():
745 opObj.addParameter(name=key, value=value, format=type(value).__name__)
753 opObj.addParameter(name=key, value=value, format=type(value).__name__)
746
754
747 return opObj
755 return opObj
748
756
749 class Project():
757 class Project():
750
758
751 id = None
759 id = None
752 name = None
760 name = None
753 description = None
761 description = None
754 # readUnitConfObjList = None
762 # readUnitConfObjList = None
755 procUnitConfObjDict = None
763 procUnitConfObjDict = None
756
764
757 ELEMENTNAME = 'Project'
765 ELEMENTNAME = 'Project'
758
766
759 def __init__(self, control=None, dataq=None):
767 def __init__(self, control=None, dataq=None):
760
768
761 self.id = None
769 self.id = None
762 self.name = None
770 self.name = None
763 self.description = None
771 self.description = None
764
772
765 self.procUnitConfObjDict = {}
773 self.procUnitConfObjDict = {}
766
774
767 #global data_q
775 #global data_q
768 #data_q = dataq
776 #data_q = dataq
769
777
770 if control==None:
778 if control==None:
771 control = {'stop':False,'pause':False}
779 control = {'stop':False,'pause':False}
772
780
773 self.control = control
781 self.control = control
774
782
775 def __getNewId(self):
783 def __getNewId(self):
776
784
777 id = int(self.id)*10 + len(self.procUnitConfObjDict) + 1
785 id = int(self.id)*10 + len(self.procUnitConfObjDict) + 1
778
786
779 return str(id)
787 return str(id)
780
788
781 def getElementName(self):
789 def getElementName(self):
782
790
783 return self.ELEMENTNAME
791 return self.ELEMENTNAME
784
792
785 def getId(self):
793 def getId(self):
786
794
787 return self.id
795 return self.id
788
796
789 def updateId(self, new_id):
797 def updateId(self, new_id):
790
798
791 self.id = str(new_id)
799 self.id = str(new_id)
792
800
793 keyList = self.procUnitConfObjDict.keys()
801 keyList = self.procUnitConfObjDict.keys()
794 keyList.sort()
802 keyList.sort()
795
803
796 n = 1
804 n = 1
797 newProcUnitConfObjDict = {}
805 newProcUnitConfObjDict = {}
798
806
799 for procKey in keyList:
807 for procKey in keyList:
800
808
801 procUnitConfObj = self.procUnitConfObjDict[procKey]
809 procUnitConfObj = self.procUnitConfObjDict[procKey]
802 idProcUnit = str(int(self.id)*10 + n)
810 idProcUnit = str(int(self.id)*10 + n)
803 procUnitConfObj.updateId(idProcUnit, parentId = self.id)
811 procUnitConfObj.updateId(idProcUnit, parentId = self.id)
804
812
805 newProcUnitConfObjDict[idProcUnit] = procUnitConfObj
813 newProcUnitConfObjDict[idProcUnit] = procUnitConfObj
806 n += 1
814 n += 1
807
815
808 self.procUnitConfObjDict = newProcUnitConfObjDict
816 self.procUnitConfObjDict = newProcUnitConfObjDict
809
817
810 def setup(self, id, name, description):
818 def setup(self, id, name, description):
811
819
812 self.id = str(id)
820 self.id = str(id)
813 self.name = name
821 self.name = name
814 self.description = description
822 self.description = description
815
823
816 def update(self, name, description):
824 def update(self, name, description):
817
825
818 self.name = name
826 self.name = name
819 self.description = description
827 self.description = description
820
828
821 def addReadUnit(self, datatype=None, name=None, **kwargs):
829 def addReadUnit(self, datatype=None, name=None, **kwargs):
822
830
823 idReadUnit = self.__getNewId()
831 idReadUnit = self.__getNewId()
824
832
825 readUnitConfObj = ReadUnitConf()
833 readUnitConfObj = ReadUnitConf()
826 readUnitConfObj.setup(idReadUnit, name, datatype, parentId=self.id, **kwargs)
834 readUnitConfObj.setup(idReadUnit, name, datatype, parentId=self.id, **kwargs)
827
835
828 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
836 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
829
837
830 return readUnitConfObj
838 return readUnitConfObj
831
839
832 def addProcUnit(self, inputId='0', datatype=None, name=None):
840 def addProcUnit(self, inputId='0', datatype=None, name=None):
833
841
834 idProcUnit = self.__getNewId()
842 idProcUnit = self.__getNewId()
835
843
836 procUnitConfObj = ProcUnitConf()
844 procUnitConfObj = ProcUnitConf()
837 procUnitConfObj.setup(idProcUnit, name, datatype, inputId, parentId=self.id)
845 procUnitConfObj.setup(idProcUnit, name, datatype, inputId, parentId=self.id)
838
846
839 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
847 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
840
848
841 return procUnitConfObj
849 return procUnitConfObj
842
850
843 def removeProcUnit(self, id):
851 def removeProcUnit(self, id):
844
852
845 if id in self.procUnitConfObjDict.keys():
853 if id in self.procUnitConfObjDict.keys():
846 self.procUnitConfObjDict.pop(id)
854 self.procUnitConfObjDict.pop(id)
847
855
848 def getReadUnitId(self):
856 def getReadUnitId(self):
849
857
850 readUnitConfObj = self.getReadUnitObj()
858 readUnitConfObj = self.getReadUnitObj()
851
859
852 return readUnitConfObj.id
860 return readUnitConfObj.id
853
861
854 def getReadUnitObj(self):
862 def getReadUnitObj(self):
855
863
856 for obj in self.procUnitConfObjDict.values():
864 for obj in self.procUnitConfObjDict.values():
857 if obj.getElementName() == "ReadUnit":
865 if obj.getElementName() == "ReadUnit":
858 return obj
866 return obj
859
867
860 return None
868 return None
861
869
862 def getProcUnitObj(self, id=None, name=None):
870 def getProcUnitObj(self, id=None, name=None):
863
871
864 if id != None:
872 if id != None:
865 return self.procUnitConfObjDict[id]
873 return self.procUnitConfObjDict[id]
866
874
867 if name != None:
875 if name != None:
868 return self.getProcUnitObjByName(name)
876 return self.getProcUnitObjByName(name)
869
877
870 return None
878 return None
871
879
872 def getProcUnitObjByName(self, name):
880 def getProcUnitObjByName(self, name):
873
881
874 for obj in self.procUnitConfObjDict.values():
882 for obj in self.procUnitConfObjDict.values():
875 if obj.name == name:
883 if obj.name == name:
876 return obj
884 return obj
877
885
878 return None
886 return None
879
887
880 def procUnitItems(self):
888 def procUnitItems(self):
881
889
882 return self.procUnitConfObjDict.items()
890 return self.procUnitConfObjDict.items()
883
891
884 def makeXml(self):
892 def makeXml(self):
885
893
886 projectElement = Element('Project')
894 projectElement = Element('Project')
887 projectElement.set('id', str(self.id))
895 projectElement.set('id', str(self.id))
888 projectElement.set('name', self.name)
896 projectElement.set('name', self.name)
889 projectElement.set('description', self.description)
897 projectElement.set('description', self.description)
890
898
891 for procUnitConfObj in self.procUnitConfObjDict.values():
899 for procUnitConfObj in self.procUnitConfObjDict.values():
892 procUnitConfObj.makeXml(projectElement)
900 procUnitConfObj.makeXml(projectElement)
893
901
894 self.projectElement = projectElement
902 self.projectElement = projectElement
895
903
896 def writeXml(self, filename):
904 def writeXml(self, filename):
897
905
898 self.makeXml()
906 self.makeXml()
899
907
900 #print prettify(self.projectElement)
908 #print prettify(self.projectElement)
901
909
902 ElementTree(self.projectElement).write(filename, method='xml')
910 ElementTree(self.projectElement).write(filename, method='xml')
903
911
904 def readXml(self, filename):
912 def readXml(self, filename):
905
913
906 self.projectElement = None
914 self.projectElement = None
907 self.procUnitConfObjDict = {}
915 self.procUnitConfObjDict = {}
908
916
909 self.projectElement = ElementTree().parse(filename)
917 self.projectElement = ElementTree().parse(filename)
910
918
911 self.project = self.projectElement.tag
919 self.project = self.projectElement.tag
912
920
913 self.id = self.projectElement.get('id')
921 self.id = self.projectElement.get('id')
914 self.name = self.projectElement.get('name')
922 self.name = self.projectElement.get('name')
915 self.description = self.projectElement.get('description')
923 self.description = self.projectElement.get('description')
916
924
917 readUnitElementList = self.projectElement.getiterator(ReadUnitConf().getElementName())
925 readUnitElementList = self.projectElement.getiterator(ReadUnitConf().getElementName())
918
926
919 for readUnitElement in readUnitElementList:
927 for readUnitElement in readUnitElementList:
920 readUnitConfObj = ReadUnitConf()
928 readUnitConfObj = ReadUnitConf()
921 readUnitConfObj.readXml(readUnitElement)
929 readUnitConfObj.readXml(readUnitElement)
922
930
923 if readUnitConfObj.parentId == None:
931 if readUnitConfObj.parentId == None:
924 readUnitConfObj.parentId = self.id
932 readUnitConfObj.parentId = self.id
925
933
926 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
934 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
927
935
928 procUnitElementList = self.projectElement.getiterator(ProcUnitConf().getElementName())
936 procUnitElementList = self.projectElement.getiterator(ProcUnitConf().getElementName())
929
937
930 for procUnitElement in procUnitElementList:
938 for procUnitElement in procUnitElementList:
931 procUnitConfObj = ProcUnitConf()
939 procUnitConfObj = ProcUnitConf()
932 procUnitConfObj.readXml(procUnitElement)
940 procUnitConfObj.readXml(procUnitElement)
933
941
934 if procUnitConfObj.parentId == None:
942 if procUnitConfObj.parentId == None:
935 procUnitConfObj.parentId = self.id
943 procUnitConfObj.parentId = self.id
936
944
937 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
945 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
938
946
939 def printattr(self):
947 def printattr(self):
940
948
941 print "Project[%s]: name = %s, description = %s" %(self.id,
949 print "Project[%s]: name = %s, description = %s" %(self.id,
942 self.name,
950 self.name,
943 self.description)
951 self.description)
944
952
945 for procUnitConfObj in self.procUnitConfObjDict.values():
953 for procUnitConfObj in self.procUnitConfObjDict.values():
946 procUnitConfObj.printattr()
954 procUnitConfObj.printattr()
947
955
948 def createObjects(self):
956 def createObjects(self):
949
957
950 for procUnitConfObj in self.procUnitConfObjDict.values():
958 for procUnitConfObj in self.procUnitConfObjDict.values():
951 procUnitConfObj.createObjects()
959 procUnitConfObj.createObjects()
952
960
953 def __connect(self, objIN, thisObj):
961 def __connect(self, objIN, thisObj):
954
962
955 thisObj.setInput(objIN.getOutputObj())
963 thisObj.setInput(objIN.getOutputObj())
956
964
957 def connectObjects(self):
965 def connectObjects(self):
958
966
959 for thisPUConfObj in self.procUnitConfObjDict.values():
967 for thisPUConfObj in self.procUnitConfObjDict.values():
960
968
961 inputId = thisPUConfObj.getInputId()
969 inputId = thisPUConfObj.getInputId()
962
970
963 if int(inputId) == 0:
971 if int(inputId) == 0:
964 continue
972 continue
965
973
966 #Get input object
974 #Get input object
967 puConfINObj = self.procUnitConfObjDict[inputId]
975 puConfINObj = self.procUnitConfObjDict[inputId]
968 puObjIN = puConfINObj.getProcUnitObj()
976 puObjIN = puConfINObj.getProcUnitObj()
969
977
970 #Get current object
978 #Get current object
971 thisPUObj = thisPUConfObj.getProcUnitObj()
979 thisPUObj = thisPUConfObj.getProcUnitObj()
972
980
973 self.__connect(puObjIN, thisPUObj)
981 self.__connect(puObjIN, thisPUObj)
974
982
975 def run(self):
983 def run(self):
976
984
977 print
985 print
978 print "*"*40
986 print "*"*40
979 print " Starting SIGNAL CHAIN PROCESSING "
987 print " Starting SIGNAL CHAIN PROCESSING "
980 print "*"*40
988 print "*"*40
981 print
989 print
982
990
983 keyList = self.procUnitConfObjDict.keys()
991 keyList = self.procUnitConfObjDict.keys()
984 keyList.sort()
992 keyList.sort()
985
993
986 while(True):
994 while(True):
987
995
988 finalSts = False
996 finalSts = False
989
997
990 for procKey in keyList:
998 for procKey in keyList:
991 # print "Running the '%s' process with %s" %(procUnitConfObj.name, procUnitConfObj.id)
999 # print "Running the '%s' process with %s" %(procUnitConfObj.name, procUnitConfObj.id)
992
1000
993 procUnitConfObj = self.procUnitConfObjDict[procKey]
1001 procUnitConfObj = self.procUnitConfObjDict[procKey]
994 sts = procUnitConfObj.run()
1002 sts = procUnitConfObj.run()
995 finalSts = finalSts or sts
1003 finalSts = finalSts or sts
996
1004
997 #If every process unit finished so end process
1005 #If every process unit finished so end process
998 if not(finalSts):
1006 if not(finalSts):
999 print "Every process unit have finished"
1007 print "Every process unit have finished"
1000 break
1008 break
1001
1009
1002 if self.control['pause']:
1010 if self.control['pause']:
1003 print "Process suspended"
1011 print "Process suspended"
1004
1012
1005 while True:
1013 while True:
1006 sleep(0.1)
1014 sleep(0.1)
1007
1015
1008 if not self.control['pause']:
1016 if not self.control['pause']:
1009 break
1017 break
1010
1018
1011 if self.control['stop']:
1019 if self.control['stop']:
1012 break
1020 break
1013 print "Process reinitialized"
1021 print "Process reinitialized"
1014
1022
1015 if self.control['stop']:
1023 if self.control['stop']:
1016 # print "Process stopped"
1024 # print "Process stopped"
1017 break
1025 break
1018
1026
1019 #Closing every process
1027 #Closing every process
1020 for procKey in keyList:
1028 for procKey in keyList:
1021 procUnitConfObj = self.procUnitConfObjDict[procKey]
1029 procUnitConfObj = self.procUnitConfObjDict[procKey]
1022 procUnitConfObj.close()
1030 procUnitConfObj.close()
1023
1031
1024 print "Process finished"
1032 print "Process finished"
1025
1033
1026 def start(self, filename):
1034 def start(self, filename):
1027
1035
1028 self.writeXml(filename)
1036 self.writeXml(filename)
1029 self.readXml(filename)
1037 self.readXml(filename)
1030
1038
1031 self.createObjects()
1039 self.createObjects()
1032 self.connectObjects()
1040 self.connectObjects()
1033 self.run()
1041 self.run()
1034
1042
1035 if __name__ == '__main__':
1043 if __name__ == '__main__':
1036
1044
1037 desc = "Segundo Test"
1045 desc = "Segundo Test"
1038 filename = "schain.xml"
1046 filename = "schain.xml"
1039
1047
1040 controllerObj = Project()
1048 controllerObj = Project()
1041
1049
1042 controllerObj.setup(id = '191', name='test01', description=desc)
1050 controllerObj.setup(id = '191', name='test01', description=desc)
1043
1051
1044 readUnitConfObj = controllerObj.addReadUnit(datatype='Voltage',
1052 readUnitConfObj = controllerObj.addReadUnit(datatype='Voltage',
1045 path='data/rawdata/',
1053 path='data/rawdata/',
1046 startDate='2011/01/01',
1054 startDate='2011/01/01',
1047 endDate='2012/12/31',
1055 endDate='2012/12/31',
1048 startTime='00:00:00',
1056 startTime='00:00:00',
1049 endTime='23:59:59',
1057 endTime='23:59:59',
1050 online=1,
1058 online=1,
1051 walk=1)
1059 walk=1)
1052
1060
1053 procUnitConfObj0 = controllerObj.addProcUnit(datatype='Voltage', inputId=readUnitConfObj.getId())
1061 procUnitConfObj0 = controllerObj.addProcUnit(datatype='Voltage', inputId=readUnitConfObj.getId())
1054
1062
1055 opObj10 = procUnitConfObj0.addOperation(name='selectChannels')
1063 opObj10 = procUnitConfObj0.addOperation(name='selectChannels')
1056 opObj10.addParameter(name='channelList', value='3,4,5', format='intlist')
1064 opObj10.addParameter(name='channelList', value='3,4,5', format='intlist')
1057
1065
1058 opObj10 = procUnitConfObj0.addOperation(name='selectHeights')
1066 opObj10 = procUnitConfObj0.addOperation(name='selectHeights')
1059 opObj10.addParameter(name='minHei', value='90', format='float')
1067 opObj10.addParameter(name='minHei', value='90', format='float')
1060 opObj10.addParameter(name='maxHei', value='180', format='float')
1068 opObj10.addParameter(name='maxHei', value='180', format='float')
1061
1069
1062 opObj12 = procUnitConfObj0.addOperation(name='CohInt', optype='external')
1070 opObj12 = procUnitConfObj0.addOperation(name='CohInt', optype='external')
1063 opObj12.addParameter(name='n', value='10', format='int')
1071 opObj12.addParameter(name='n', value='10', format='int')
1064
1072
1065 procUnitConfObj1 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj0.getId())
1073 procUnitConfObj1 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj0.getId())
1066 procUnitConfObj1.addParameter(name='nFFTPoints', value='32', format='int')
1074 procUnitConfObj1.addParameter(name='nFFTPoints', value='32', format='int')
1067 # procUnitConfObj1.addParameter(name='pairList', value='(0,1),(0,2),(1,2)', format='')
1075 # procUnitConfObj1.addParameter(name='pairList', value='(0,1),(0,2),(1,2)', format='')
1068
1076
1069
1077
1070 opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
1078 opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
1071 opObj11.addParameter(name='idfigure', value='1', format='int')
1079 opObj11.addParameter(name='idfigure', value='1', format='int')
1072 opObj11.addParameter(name='wintitle', value='SpectraPlot0', format='str')
1080 opObj11.addParameter(name='wintitle', value='SpectraPlot0', format='str')
1073 opObj11.addParameter(name='zmin', value='40', format='int')
1081 opObj11.addParameter(name='zmin', value='40', format='int')
1074 opObj11.addParameter(name='zmax', value='90', format='int')
1082 opObj11.addParameter(name='zmax', value='90', format='int')
1075 opObj11.addParameter(name='showprofile', value='1', format='int')
1083 opObj11.addParameter(name='showprofile', value='1', format='int')
1076
1084
1077 print "Escribiendo el archivo XML"
1085 print "Escribiendo el archivo XML"
1078
1086
1079 controllerObj.writeXml(filename)
1087 controllerObj.writeXml(filename)
1080
1088
1081 print "Leyendo el archivo XML"
1089 print "Leyendo el archivo XML"
1082 controllerObj.readXml(filename)
1090 controllerObj.readXml(filename)
1083 #controllerObj.printattr()
1091 #controllerObj.printattr()
1084
1092
1085 controllerObj.createObjects()
1093 controllerObj.createObjects()
1086 controllerObj.connectObjects()
1094 controllerObj.connectObjects()
1087 controllerObj.run()
1095 controllerObj.run()
1088
1096
1089 No newline at end of file
1097
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now