##// END OF EJS Templates
Miguel Valdez -
r221:f16b19555d02
parent child
Show More
@@ -1,694 +1,698
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, ElementTree
5 from xml.etree.ElementTree import Element, SubElement, ElementTree
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 import sys
9 import sys
10 import datetime
10 import datetime
11 from model.jrodataIO import *
11 from model.jrodataIO import *
12 from model.jroprocessing import *
12 from model.jroprocessing import *
13 from model.jroplot import *
13 from model.jroplot import *
14
14
15 def prettify(elem):
15 def prettify(elem):
16 """Return a pretty-printed XML string for the Element.
16 """Return a pretty-printed XML string for the Element.
17 """
17 """
18 rough_string = ET.tostring(elem, 'utf-8')
18 rough_string = ET.tostring(elem, 'utf-8')
19 reparsed = minidom.parseString(rough_string)
19 reparsed = minidom.parseString(rough_string)
20 return reparsed.toprettyxml(indent=" ")
20 return reparsed.toprettyxml(indent=" ")
21
21
22 class ParameterConf():
22 class ParameterConf():
23
23
24 id = None
24 id = None
25 name = None
25 name = None
26 value = None
26 value = None
27 format = None
27 format = None
28
28
29 ELEMENTNAME = 'Parameter'
29 ELEMENTNAME = 'Parameter'
30
30
31 def __init__(self):
31 def __init__(self):
32
32
33 self.format = 'str'
33 self.format = 'str'
34
34
35 def getElementName(self):
35 def getElementName(self):
36
36
37 return self.ELEMENTNAME
37 return self.ELEMENTNAME
38
38
39 def getValue(self):
39 def getValue(self):
40
40
41 if self.format == 'list':
41 if self.format == 'list':
42 strList = self.value.split(',')
42 strList = self.value.split(',')
43 return strList
43 return strList
44
44
45 if self.format == 'intlist':
45 if self.format == 'intlist':
46 strList = self.value.split(',')
46 strList = self.value.split(',')
47 intList = [int(x) for x in strList]
47 intList = [int(x) for x in strList]
48 return intList
48 return intList
49
49
50 if self.format == 'floatlist':
50 if self.format == 'floatlist':
51 strList = self.value.split(',')
51 strList = self.value.split(',')
52 floatList = [float(x) for x in strList]
52 floatList = [float(x) for x in strList]
53 return floatList
53 return floatList
54
54
55 if self.format == 'date':
55 if self.format == 'date':
56 strList = self.value.split('/')
56 strList = self.value.split('/')
57 intList = [int(x) for x in strList]
57 intList = [int(x) for x in strList]
58 date = datetime.date(intList[0], intList[1], intList[2])
58 date = datetime.date(intList[0], intList[1], intList[2])
59 return date
59 return date
60
60
61 if self.format == 'time':
61 if self.format == 'time':
62 strList = self.value.split(':')
62 strList = self.value.split(':')
63 intList = [int(x) for x in strList]
63 intList = [int(x) for x in strList]
64 time = datetime.time(intList[0], intList[1], intList[2])
64 time = datetime.time(intList[0], intList[1], intList[2])
65 return time
65 return time
66
66
67 func = eval(self.format)
67 func = eval(self.format)
68
68
69 return func(self.value)
69 return func(self.value)
70
70
71 def setup(self, id, name, value, format='str'):
71 def setup(self, id, name, value, format='str'):
72
72
73 self.id = id
73 self.id = id
74 self.name = name
74 self.name = name
75 self.value = str(value)
75 self.value = str(value)
76 self.format = format
76 self.format = format
77
77
78 def makeXml(self, opElement):
78 def makeXml(self, opElement):
79
79
80 parmElement = SubElement(opElement, self.ELEMENTNAME)
80 parmElement = SubElement(opElement, self.ELEMENTNAME)
81 parmElement.set('id', str(self.id))
81 parmElement.set('id', str(self.id))
82 parmElement.set('name', self.name)
82 parmElement.set('name', self.name)
83 parmElement.set('value', self.value)
83 parmElement.set('value', self.value)
84 parmElement.set('format', self.format)
84 parmElement.set('format', self.format)
85
85
86 def readXml(self, parmElement):
86 def readXml(self, parmElement):
87
87
88 self.id = parmElement.get('id')
88 self.id = parmElement.get('id')
89 self.name = parmElement.get('name')
89 self.name = parmElement.get('name')
90 self.value = parmElement.get('value')
90 self.value = parmElement.get('value')
91 self.format = parmElement.get('format')
91 self.format = parmElement.get('format')
92
92
93 def printattr(self):
93 def printattr(self):
94
94
95 print "Parameter[%s]: name = %s, value = %s, format = %s" %(self.id, self.name, self.value, self.format)
95 print "Parameter[%s]: name = %s, value = %s, format = %s" %(self.id, self.name, self.value, self.format)
96
96
97 class OperationConf():
97 class OperationConf():
98
98
99 id = None
99 id = None
100 name = None
100 name = None
101 priority = None
101 priority = None
102 type = None
102 type = None
103
103
104 parmConfObjList = []
104 parmConfObjList = []
105
105
106 ELEMENTNAME = 'Operation'
106 ELEMENTNAME = 'Operation'
107
107
108 def __init__(self):
108 def __init__(self):
109
109
110 id = 0
110 id = 0
111 name = None
111 name = None
112 priority = None
112 priority = None
113 type = 'self'
113 type = 'self'
114
114
115
115
116 def __getNewId(self):
116 def __getNewId(self):
117
117
118 return int(self.id)*10 + len(self.parmConfObjList) + 1
118 return int(self.id)*10 + len(self.parmConfObjList) + 1
119
119
120 def getElementName(self):
120 def getElementName(self):
121
121
122 return self.ELEMENTNAME
122 return self.ELEMENTNAME
123
123
124 def getParameterObjList(self):
124 def getParameterObjList(self):
125
125
126 return self.parmConfObjList
126 return self.parmConfObjList
127
127
128 def setup(self, id, name, priority, type):
128 def setup(self, id, name, priority, type):
129
129
130 self.id = id
130 self.id = id
131 self.name = name
131 self.name = name
132 self.type = type
132 self.type = type
133 self.priority = priority
133 self.priority = priority
134
134
135 self.parmConfObjList = []
135 self.parmConfObjList = []
136
136
137 def addParameter(self, name, value, format='str'):
137 def addParameter(self, name, value, format='str'):
138
138
139 id = self.__getNewId()
139 id = self.__getNewId()
140
140
141 parmConfObj = ParameterConf()
141 parmConfObj = ParameterConf()
142 parmConfObj.setup(id, name, value, format)
142 parmConfObj.setup(id, name, value, format)
143
143
144 self.parmConfObjList.append(parmConfObj)
144 self.parmConfObjList.append(parmConfObj)
145
145
146 return parmConfObj
146 return parmConfObj
147
147
148 def makeXml(self, upElement):
148 def makeXml(self, upElement):
149
149
150 opElement = SubElement(upElement, self.ELEMENTNAME)
150 opElement = SubElement(upElement, self.ELEMENTNAME)
151 opElement.set('id', str(self.id))
151 opElement.set('id', str(self.id))
152 opElement.set('name', self.name)
152 opElement.set('name', self.name)
153 opElement.set('type', self.type)
153 opElement.set('type', self.type)
154 opElement.set('priority', str(self.priority))
154 opElement.set('priority', str(self.priority))
155
155
156 for parmConfObj in self.parmConfObjList:
156 for parmConfObj in self.parmConfObjList:
157 parmConfObj.makeXml(opElement)
157 parmConfObj.makeXml(opElement)
158
158
159 def readXml(self, opElement):
159 def readXml(self, opElement):
160
160
161 self.id = opElement.get('id')
161 self.id = opElement.get('id')
162 self.name = opElement.get('name')
162 self.name = opElement.get('name')
163 self.type = opElement.get('type')
163 self.type = opElement.get('type')
164 self.priority = opElement.get('priority')
164 self.priority = opElement.get('priority')
165
165
166 self.parmConfObjList = []
166 self.parmConfObjList = []
167
167
168 parmElementList = opElement.getiterator(ParameterConf().getElementName())
168 parmElementList = opElement.getiterator(ParameterConf().getElementName())
169
169
170 for parmElement in parmElementList:
170 for parmElement in parmElementList:
171 parmConfObj = ParameterConf()
171 parmConfObj = ParameterConf()
172 parmConfObj.readXml(parmElement)
172 parmConfObj.readXml(parmElement)
173 self.parmConfObjList.append(parmConfObj)
173 self.parmConfObjList.append(parmConfObj)
174
174
175 def printattr(self):
175 def printattr(self):
176
176
177 print "%s[%s]: name = %s, type = %s, priority = %s" %(self.ELEMENTNAME,
177 print "%s[%s]: name = %s, type = %s, priority = %s" %(self.ELEMENTNAME,
178 self.id,
178 self.id,
179 self.name,
179 self.name,
180 self.type,
180 self.type,
181 self.priority)
181 self.priority)
182
182
183 for parmConfObj in self.parmConfObjList:
183 for parmConfObj in self.parmConfObjList:
184 parmConfObj.printattr()
184 parmConfObj.printattr()
185
185
186 def createObject(self):
186 def createObject(self):
187
187
188 if self.type == 'self':
188 if self.type == 'self':
189 raise ValueError, "This operation type cannot be created"
189 raise ValueError, "This operation type cannot be created"
190
190
191 if self.type == 'other':
191 if self.type == 'other':
192 className = eval(self.name)
192 className = eval(self.name)
193 opObj = className()
193 opObj = className()
194
194
195 return opObj
195 return opObj
196
196
197 class ProcUnitConf():
197 class ProcUnitConf():
198
198
199 id = None
199 id = None
200 name = None
200 name = None
201 datatype = None
201 datatype = None
202 inputId = None
202 inputId = None
203
203
204 opConfObjList = []
204 opConfObjList = []
205
205
206 procUnitObj = None
206 procUnitObj = None
207 opObjList = []
207 opObjList = []
208
208
209 ELEMENTNAME = 'ProcUnit'
209 ELEMENTNAME = 'ProcUnit'
210
210
211 def __init__(self):
211 def __init__(self):
212
212
213 self.id = None
213 self.id = None
214 self.datatype = None
214 self.datatype = None
215 self.name = None
215 self.name = None
216 self.inputId = None
216 self.inputId = None
217
217
218 self.opConfObjList = []
218 self.opConfObjList = []
219
219
220 self.procUnitObj = None
220 self.procUnitObj = None
221 self.opObjDict = {}
221 self.opObjDict = {}
222
222
223 def __getPriority(self):
223 def __getPriority(self):
224
224
225 return len(self.opConfObjList)+1
225 return len(self.opConfObjList)+1
226
226
227 def __getNewId(self):
227 def __getNewId(self):
228
228
229 return int(self.id)*10 + len(self.opConfObjList) + 1
229 return int(self.id)*10 + len(self.opConfObjList) + 1
230
230
231 def getElementName(self):
231 def getElementName(self):
232
232
233 return self.ELEMENTNAME
233 return self.ELEMENTNAME
234
234
235 def getId(self):
235 def getId(self):
236
236
237 return str(self.id)
237 return str(self.id)
238
238
239 def getInputId(self):
239 def getInputId(self):
240
240
241 return str(self.inputId)
241 return str(self.inputId)
242
242
243 def getOperationObjList(self):
243 def getOperationObjList(self):
244
244
245 return self.opConfObjList
245 return self.opConfObjList
246
246
247 def getProcUnitObj(self):
247 def getProcUnitObj(self):
248
248
249 return self.procUnitObj
249 return self.procUnitObj
250
250
251 def setup(self, id, name, datatype, inputId):
251 def setup(self, id, name, datatype, inputId):
252
252
253 self.id = id
253 self.id = id
254 self.name = name
254 self.name = name
255 self.datatype = datatype
255 self.datatype = datatype
256 self.inputId = inputId
256 self.inputId = inputId
257
257
258 self.opConfObjList = []
258 self.opConfObjList = []
259
259
260 self.addOperation(name='init', optype='self')
260 self.addOperation(name='init', optype='self')
261
261
262 def addParameter(self, **kwargs):
262 def addParameter(self, **kwargs):
263
263
264 opObj = self.opConfObjList[0]
264 opObj = self.opConfObjList[0]
265
265
266 opObj.addParameter(**kwargs)
266 opObj.addParameter(**kwargs)
267
267
268 return opObj
268 return opObj
269
269
270 def addOperation(self, name, optype='self'):
270 def addOperation(self, name, optype='self'):
271
271
272 id = self.__getNewId()
272 id = self.__getNewId()
273 priority = self.__getPriority()
273 priority = self.__getPriority()
274
274
275 opConfObj = OperationConf()
275 opConfObj = OperationConf()
276 opConfObj.setup(id, name=name, priority=priority, type=optype)
276 opConfObj.setup(id, name=name, priority=priority, type=optype)
277
277
278 self.opConfObjList.append(opConfObj)
278 self.opConfObjList.append(opConfObj)
279
279
280 return opConfObj
280 return opConfObj
281
281
282 def makeXml(self, procUnitElement):
282 def makeXml(self, procUnitElement):
283
283
284 upElement = SubElement(procUnitElement, self.ELEMENTNAME)
284 upElement = SubElement(procUnitElement, self.ELEMENTNAME)
285 upElement.set('id', str(self.id))
285 upElement.set('id', str(self.id))
286 upElement.set('name', self.name)
286 upElement.set('name', self.name)
287 upElement.set('datatype', self.datatype)
287 upElement.set('datatype', self.datatype)
288 upElement.set('inputId', str(self.inputId))
288 upElement.set('inputId', str(self.inputId))
289
289
290 for opConfObj in self.opConfObjList:
290 for opConfObj in self.opConfObjList:
291 opConfObj.makeXml(upElement)
291 opConfObj.makeXml(upElement)
292
292
293 def readXml(self, upElement):
293 def readXml(self, upElement):
294
294
295 self.id = upElement.get('id')
295 self.id = upElement.get('id')
296 self.name = upElement.get('name')
296 self.name = upElement.get('name')
297 self.datatype = upElement.get('datatype')
297 self.datatype = upElement.get('datatype')
298 self.inputId = upElement.get('inputId')
298 self.inputId = upElement.get('inputId')
299
299
300 self.opConfObjList = []
300 self.opConfObjList = []
301
301
302 opElementList = upElement.getiterator(OperationConf().getElementName())
302 opElementList = upElement.getiterator(OperationConf().getElementName())
303
303
304 for opElement in opElementList:
304 for opElement in opElementList:
305 opConfObj = OperationConf()
305 opConfObj = OperationConf()
306 opConfObj.readXml(opElement)
306 opConfObj.readXml(opElement)
307 self.opConfObjList.append(opConfObj)
307 self.opConfObjList.append(opConfObj)
308
308
309 def printattr(self):
309 def printattr(self):
310
310
311 print "%s[%s]: name = %s, datatype = %s, inputId = %s" %(self.ELEMENTNAME,
311 print "%s[%s]: name = %s, datatype = %s, inputId = %s" %(self.ELEMENTNAME,
312 self.id,
312 self.id,
313 self.name,
313 self.name,
314 self.datatype,
314 self.datatype,
315 self.inputId)
315 self.inputId)
316
316
317 for opConfObj in self.opConfObjList:
317 for opConfObj in self.opConfObjList:
318 opConfObj.printattr()
318 opConfObj.printattr()
319
319
320 def createObjects(self):
320 def createObjects(self):
321
321
322 className = eval(self.name)
322 className = eval(self.name)
323 procUnitObj = className()
323 procUnitObj = className()
324
324
325 for opConfObj in self.opConfObjList:
325 for opConfObj in self.opConfObjList:
326
326
327 if opConfObj.type == 'self':
327 if opConfObj.type == 'self':
328 continue
328 continue
329
329
330 opObj = opConfObj.createObject()
330 opObj = opConfObj.createObject()
331
331
332 self.opObjDict[opConfObj.id] = opObj
332 self.opObjDict[opConfObj.id] = opObj
333 procUnitObj.addOperation(opObj, opConfObj.id)
333 procUnitObj.addOperation(opObj, opConfObj.id)
334
334
335 self.procUnitObj = procUnitObj
335 self.procUnitObj = procUnitObj
336
336
337 return procUnitObj
337 return procUnitObj
338
338
339 def run(self):
339 def run(self):
340
340
341 finalSts = False
341 finalSts = False
342
342
343 for opConfObj in self.opConfObjList:
343 for opConfObj in self.opConfObjList:
344
344
345 kwargs = {}
345 kwargs = {}
346 for parmConfObj in opConfObj.getParameterObjList():
346 for parmConfObj in opConfObj.getParameterObjList():
347 kwargs[parmConfObj.name] = parmConfObj.getValue()
347 kwargs[parmConfObj.name] = parmConfObj.getValue()
348
348
349 #print "\tRunning the '%s' operation with %s" %(opConfObj.name, opConfObj.id)
349 #print "\tRunning the '%s' operation with %s" %(opConfObj.name, opConfObj.id)
350 sts = self.procUnitObj.call(opConfObj, **kwargs)
350 sts = self.procUnitObj.call(opConfObj, **kwargs)
351 finalSts = finalSts or sts
351 finalSts = finalSts or sts
352
352
353 return finalSts
353 return finalSts
354
354
355 class ReadUnitConf(ProcUnitConf):
355 class ReadUnitConf(ProcUnitConf):
356
356
357 path = None
357 path = None
358 startDate = None
358 startDate = None
359 endDate = None
359 endDate = None
360 startTime = None
360 startTime = None
361 endTime = None
361 endTime = None
362 online = None
362 online = None
363 expLabel = None
363 expLabel = None
364 delay = None
364 delay = None
365
365
366 ELEMENTNAME = 'ReadUnit'
366 ELEMENTNAME = 'ReadUnit'
367
367
368 def __init__(self):
368 def __init__(self):
369
369
370 self.id = None
370 self.id = None
371 self.datatype = None
371 self.datatype = None
372 self.name = None
372 self.name = None
373 self.inputId = 0
373 self.inputId = 0
374
374
375 self.opConfObjList = []
375 self.opConfObjList = []
376 self.opObjList = []
376 self.opObjList = []
377
377
378 def getElementName(self):
378 def getElementName(self):
379
379
380 return self.ELEMENTNAME
380 return self.ELEMENTNAME
381
381
382 def setup(self, id, name, datatype, path, startDate, endDate, startTime, endTime, online=0, expLabel='', delay=60):
382 def setup(self, id, name, datatype, path, startDate, endDate, startTime, endTime, online=0, expLabel='', delay=60):
383
383
384 self.id = id
384 self.id = id
385 self.name = name
385 self.name = name
386 self.datatype = datatype
386 self.datatype = datatype
387
387
388 self.path = path
388 self.path = path
389 self.startDate = startDate
389 self.startDate = startDate
390 self.endDate = endDate
390 self.endDate = endDate
391 self.startTime = startTime
391 self.startTime = startTime
392 self.endTime = endTime
392 self.endTime = endTime
393 self.online = online
393 self.online = online
394 self.expLabel = expLabel
394 self.expLabel = expLabel
395 self.delay = delay
395 self.delay = delay
396
396
397 self.addRunOperation()
397 self.addRunOperation()
398
398
399 def addRunOperation(self):
399 def addRunOperation(self):
400
400
401 opObj = self.addOperation(name = 'run', optype = 'self')
401 opObj = self.addOperation(name = 'run', optype = 'self')
402
402
403 opObj.addParameter(name='path' , value=self.path, format='str')
403 opObj.addParameter(name='path' , value=self.path, format='str')
404 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
404 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
405 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
405 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
406 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
406 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
407 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
407 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
408 opObj.addParameter(name='expLabel' , value=self.expLabel, format='str')
408 opObj.addParameter(name='expLabel' , value=self.expLabel, format='str')
409 opObj.addParameter(name='online' , value=self.online, format='int')
409 opObj.addParameter(name='online' , value=self.online, format='int')
410 opObj.addParameter(name='delay' , value=self.delay, format='float')
410 opObj.addParameter(name='delay' , value=self.delay, format='float')
411
411
412 return opObj
412 return opObj
413
413
414
414
415 class Controller():
415 class Controller():
416
416
417 id = None
417 id = None
418 name = None
418 name = None
419 description = None
419 description = None
420 # readUnitConfObjList = None
420 # readUnitConfObjList = None
421 procUnitConfObjDict = None
421 procUnitConfObjDict = None
422
422
423 ELEMENTNAME = 'Controller'
423 ELEMENTNAME = 'Controller'
424
424
425 def __init__(self):
425 def __init__(self):
426
426
427 self.id = None
427 self.id = None
428 self.name = None
428 self.name = None
429 self.description = None
429 self.description = None
430
430
431 # self.readUnitConfObjList = []
431 # self.readUnitConfObjList = []
432 self.procUnitConfObjDict = {}
432 self.procUnitConfObjDict = {}
433
433
434 def __getNewId(self):
434 def __getNewId(self):
435
435
436 id = int(self.id)*10 + len(self.procUnitConfObjDict) + 1
436 id = int(self.id)*10 + len(self.procUnitConfObjDict) + 1
437
437
438 return str(id)
438 return str(id)
439
439
440 def getElementName(self):
440 def getElementName(self):
441
441
442 return self.ELEMENTNAME
442 return self.ELEMENTNAME
443
443
444 def setup(self, id, name, description):
444 def setup(self, id, name, description):
445
445
446 self.id = id
446 self.id = id
447 self.name = name
447 self.name = name
448 self.description = description
448 self.description = description
449
449
450 def addReadUnit(self, datatype, path, startDate='', endDate='', startTime='', endTime='', online=0, expLabel='', delay=60):
450 def addReadUnit(self, datatype, path, startDate='', endDate='', startTime='', endTime='', online=0, expLabel='', delay=60):
451
451
452 id = self.__getNewId()
452 id = self.__getNewId()
453 name = '%sReader' %(datatype)
453 name = '%sReader' %(datatype)
454
454
455 readUnitConfObj = ReadUnitConf()
455 readUnitConfObj = ReadUnitConf()
456 readUnitConfObj.setup(id, name, datatype, path, startDate, endDate, startTime, endTime, online, expLabel, delay)
456 readUnitConfObj.setup(id, name, datatype, path, startDate, endDate, startTime, endTime, online, expLabel, delay)
457
457
458 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
458 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
459
459
460 return readUnitConfObj
460 return readUnitConfObj
461
461
462 def addProcUnit(self, datatype, inputId):
462 def addProcUnit(self, datatype, inputId):
463
463
464 id = self.__getNewId()
464 id = self.__getNewId()
465 name = '%sProc' %(datatype)
465 name = '%sProc' %(datatype)
466
466
467 procUnitConfObj = ProcUnitConf()
467 procUnitConfObj = ProcUnitConf()
468 procUnitConfObj.setup(id, name, datatype, inputId)
468 procUnitConfObj.setup(id, name, datatype, inputId)
469
469
470 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
470 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
471
471
472 return procUnitConfObj
472 return procUnitConfObj
473
473
474 def makeXml(self):
474 def makeXml(self):
475
475
476 projectElement = Element('Controller')
476 projectElement = Element('Controller')
477 projectElement.set('id', str(self.id))
477 projectElement.set('id', str(self.id))
478 projectElement.set('name', self.name)
478 projectElement.set('name', self.name)
479 projectElement.set('description', self.description)
479 projectElement.set('description', self.description)
480
480
481 # for readUnitConfObj in self.readUnitConfObjList:
481 # for readUnitConfObj in self.readUnitConfObjList:
482 # readUnitConfObj.makeXml(projectElement)
482 # readUnitConfObj.makeXml(projectElement)
483
483
484 for procUnitConfObj in self.procUnitConfObjDict.values():
484 for procUnitConfObj in self.procUnitConfObjDict.values():
485 procUnitConfObj.makeXml(projectElement)
485 procUnitConfObj.makeXml(projectElement)
486
486
487 self.projectElement = projectElement
487 self.projectElement = projectElement
488
488
489 def writeXml(self, filename):
489 def writeXml(self, filename):
490
490
491 self.makeXml()
491 self.makeXml()
492
492
493 print prettify(self.projectElement)
493 print prettify(self.projectElement)
494
494
495 ElementTree(self.projectElement).write(filename, method='xml')
495 ElementTree(self.projectElement).write(filename, method='xml')
496
496
497 def readXml(self, filename):
497 def readXml(self, filename):
498
498
499 #tree = ET.parse(filename)
499 #tree = ET.parse(filename)
500 self.projectElement = None
500 self.projectElement = None
501 # self.readUnitConfObjList = []
501 # self.readUnitConfObjList = []
502 self.procUnitConfObjDict = {}
502 self.procUnitConfObjDict = {}
503
503
504 self.projectElement = ElementTree().parse(filename)
504 self.projectElement = ElementTree().parse(filename)
505
505
506 self.project = self.projectElement.tag
506 self.project = self.projectElement.tag
507
507
508 self.id = self.projectElement.get('id')
508 self.id = self.projectElement.get('id')
509 self.name = self.projectElement.get('name')
509 self.name = self.projectElement.get('name')
510 self.description = self.projectElement.get('description')
510 self.description = self.projectElement.get('description')
511
511
512 readUnitElementList = self.projectElement.getiterator(ReadUnitConf().getElementName())
512 readUnitElementList = self.projectElement.getiterator(ReadUnitConf().getElementName())
513
513
514 for readUnitElement in readUnitElementList:
514 for readUnitElement in readUnitElementList:
515 readUnitConfObj = ReadUnitConf()
515 readUnitConfObj = ReadUnitConf()
516 readUnitConfObj.readXml(readUnitElement)
516 readUnitConfObj.readXml(readUnitElement)
517
517
518 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
518 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
519
519
520 procUnitElementList = self.projectElement.getiterator(ProcUnitConf().getElementName())
520 procUnitElementList = self.projectElement.getiterator(ProcUnitConf().getElementName())
521
521
522 for procUnitElement in procUnitElementList:
522 for procUnitElement in procUnitElementList:
523 procUnitConfObj = ProcUnitConf()
523 procUnitConfObj = ProcUnitConf()
524 procUnitConfObj.readXml(procUnitElement)
524 procUnitConfObj.readXml(procUnitElement)
525
525
526 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
526 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
527
527
528 def printattr(self):
528 def printattr(self):
529
529
530 print "Controller[%s]: name = %s, description = %s" %(self.id,
530 print "Controller[%s]: name = %s, description = %s" %(self.id,
531 self.name,
531 self.name,
532 self.description)
532 self.description)
533
533
534 # for readUnitConfObj in self.readUnitConfObjList:
534 # for readUnitConfObj in self.readUnitConfObjList:
535 # readUnitConfObj.printattr()
535 # readUnitConfObj.printattr()
536
536
537 for procUnitConfObj in self.procUnitConfObjDict.values():
537 for procUnitConfObj in self.procUnitConfObjDict.values():
538 procUnitConfObj.printattr()
538 procUnitConfObj.printattr()
539
539
540 def createObjects(self):
540 def createObjects(self):
541
541
542 # for readUnitConfObj in self.readUnitConfObjList:
542 # for readUnitConfObj in self.readUnitConfObjList:
543 # readUnitConfObj.createObjects()
543 # readUnitConfObj.createObjects()
544
544
545 for procUnitConfObj in self.procUnitConfObjDict.values():
545 for procUnitConfObj in self.procUnitConfObjDict.values():
546 procUnitConfObj.createObjects()
546 procUnitConfObj.createObjects()
547
547
548 def __connect(self, objIN, obj):
548 def __connect(self, objIN, obj):
549
549
550 obj.setInput(objIN.getOutput())
550 obj.setInput(objIN.getOutput())
551
551
552 def connectObjects(self):
552 def connectObjects(self):
553
553
554 for puConfObj in self.procUnitConfObjDict.values():
554 for puConfObj in self.procUnitConfObjDict.values():
555
555
556 inputId = puConfObj.getInputId()
556 inputId = puConfObj.getInputId()
557
557
558 if int(inputId) == 0:
558 if int(inputId) == 0:
559 continue
559 continue
560
560
561 puConfINObj = self.procUnitConfObjDict[inputId]
561 puConfINObj = self.procUnitConfObjDict[inputId]
562
562
563 puObj = puConfObj.getProcUnitObj()
563 puObj = puConfObj.getProcUnitObj()
564 puINObj = puConfINObj.getProcUnitObj()
564 puINObj = puConfINObj.getProcUnitObj()
565
565
566 self.__connect(puINObj, puObj)
566 self.__connect(puINObj, puObj)
567
567
568 def run(self):
568 def run(self):
569
569
570 # for readUnitConfObj in self.readUnitConfObjList:
570 # for readUnitConfObj in self.readUnitConfObjList:
571 # readUnitConfObj.run()
571 # readUnitConfObj.run()
572
572
573 while(True):
573 while(True):
574
574
575 finalSts = False
575 finalSts = False
576
576
577 for procUnitConfObj in self.procUnitConfObjDict.values():
577 for procUnitConfObj in self.procUnitConfObjDict.values():
578 #print "Running the '%s' process with %s" %(procUnitConfObj.name, procUnitConfObj.id)
578 #print "Running the '%s' process with %s" %(procUnitConfObj.name, procUnitConfObj.id)
579 sts = procUnitConfObj.run()
579 sts = procUnitConfObj.run()
580 finalSts = finalSts or sts
580 finalSts = finalSts or sts
581
581
582 #If every process unit finished so end process
582 #If every process unit finished so end process
583 if not(finalSts):
583 if not(finalSts):
584 print "Every process units have finished"
584 print "Every process units have finished"
585 break
585 break
586
586
587 if __name__ == '__main__':
587 if __name__ == '__main__':
588
588
589 desc = "Segundo Test"
589 desc = "Segundo Test"
590 filename = "schain.xml"
590 filename = "schain.xml"
591
591
592 controllerObj = Controller()
592 controllerObj = Controller()
593
593
594 controllerObj.setup(id = '191', name='test01', description=desc)
594 controllerObj.setup(id = '191', name='test01', description=desc)
595
595
596 readUnitConfObj = controllerObj.addReadUnit(datatype='Voltage',
596 readUnitConfObj = controllerObj.addReadUnit(datatype='Voltage',
597 path='data/rawdata/',
597 path='data/rawdata/',
598 startDate='2011/01/01',
598 startDate='2011/01/01',
599 endDate='2012/12/31',
599 endDate='2012/12/31',
600 startTime='00:00:00',
600 startTime='00:00:00',
601 endTime='23:59:59',
601 endTime='23:59:59',
602 online=0)
602 online=0)
603
603
604 opObj00 = readUnitConfObj.addOperation(name='printTotalBlocks')
604 # opObj00 = readUnitConfObj.addOperation(name='printInfo')
605
605
606 procUnitConfObj0 = controllerObj.addProcUnit(datatype='Voltage', inputId=readUnitConfObj.getId())
606 procUnitConfObj0 = controllerObj.addProcUnit(datatype='Voltage', inputId=readUnitConfObj.getId())
607
607
608 opObj10 = procUnitConfObj0.addOperation(name='selectChannels')
608 opObj10 = procUnitConfObj0.addOperation(name='selectChannels')
609 opObj10.addParameter(name='channelList', value='3,4,5', format='intlist')
609 opObj10.addParameter(name='channelList', value='3,4,5', format='intlist')
610
610
611 opObj10 = procUnitConfObj0.addOperation(name='selectHeights')
611 opObj10 = procUnitConfObj0.addOperation(name='selectHeights')
612 opObj10.addParameter(name='minHei', value='90', format='float')
612 opObj10.addParameter(name='minHei', value='90', format='float')
613 opObj10.addParameter(name='maxHei', value='180', format='float')
613 opObj10.addParameter(name='maxHei', value='300', format='float')
614
614
615 opObj12 = procUnitConfObj0.addOperation(name='CohInt', optype='other')
615 opObj12 = procUnitConfObj0.addOperation(name='CohInt', optype='other')
616 opObj12.addParameter(name='n', value='10', format='int')
616 opObj12.addParameter(name='n', value='10', format='int')
617
617
618 opObj12 = procUnitConfObj0.addOperation(name='CohInt', optype='other')
619 opObj12.addParameter(name='n', value='2', format='int')
620 opObj12.addParameter(name='overlapping', value='1', format='int')
621
618 procUnitConfObj1 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj0.getId())
622 procUnitConfObj1 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj0.getId())
619 procUnitConfObj1.addParameter(name='nFFTPoints', value='16', format='int')
623 procUnitConfObj1.addParameter(name='nFFTPoints', value='32', format='int')
620
624
621 opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other')
625 opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other')
622 opObj11.addParameter(name='idfigure', value='1', format='int')
626 opObj11.addParameter(name='idfigure', value='1', format='int')
623 opObj11.addParameter(name='wintitle', value='SpectraPlot', format='str')
627 opObj11.addParameter(name='wintitle', value='SpectraPlot', format='str')
624 opObj11.addParameter(name='zmin', value='40', format='int')
628 opObj11.addParameter(name='zmin', value='40', format='int')
625 opObj11.addParameter(name='zmax', value='80', format='int')
629 opObj11.addParameter(name='zmax', value='90', format='int')
626 opObj11.addParameter(name='showprofile', value='1', format='int')
630 opObj11.addParameter(name='showprofile', value='1', format='int')
627
631
628 opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='other')
632 opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='other')
629 opObj11.addParameter(name='idfigure', value='10', format='int')
633 opObj11.addParameter(name='idfigure', value='10', format='int')
630 opObj11.addParameter(name='wintitle', value='RTI', format='str')
634 opObj11.addParameter(name='wintitle', value='RTI', format='str')
631 # opObj11.addParameter(name='xmin', value='21', format='float')
635 # opObj11.addParameter(name='xmin', value='21', format='float')
632 # opObj11.addParameter(name='xmax', value='22', format='float')
636 # opObj11.addParameter(name='xmax', value='22', format='float')
633 opObj11.addParameter(name='zmin', value='40', format='int')
637 opObj11.addParameter(name='zmin', value='40', format='int')
634 opObj11.addParameter(name='zmax', value='80', format='int')
638 opObj11.addParameter(name='zmax', value='90', format='int')
635 opObj11.addParameter(name='showprofile', value='1', format='int')
639 opObj11.addParameter(name='showprofile', value='1', format='int')
636 opObj11.addParameter(name='timerange', value=str(20), format='int')
640 opObj11.addParameter(name='timerange', value=str(60), format='int')
637
641
638 # opObj10 = procUnitConfObj1.addOperation(name='selectChannels')
642 # opObj10 = procUnitConfObj1.addOperation(name='selectChannels')
639 # opObj10.addParameter(name='channelList', value='0,2,4,6', format='intlist')
643 # opObj10.addParameter(name='channelList', value='0,2,4,6', format='intlist')
640 #
644 #
641 # opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='other')
645 # opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='other')
642 # opObj12.addParameter(name='n', value='2', format='int')
646 # opObj12.addParameter(name='n', value='2', format='int')
643 #
647 #
644 # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other')
648 # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other')
645 # opObj11.addParameter(name='idfigure', value='2', format='int')
649 # opObj11.addParameter(name='idfigure', value='2', format='int')
646 # opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str')
650 # opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str')
647 # opObj11.addParameter(name='zmin', value='70', format='int')
651 # opObj11.addParameter(name='zmin', value='70', format='int')
648 # opObj11.addParameter(name='zmax', value='90', format='int')
652 # opObj11.addParameter(name='zmax', value='90', format='int')
649 #
653 #
650 # opObj10 = procUnitConfObj1.addOperation(name='selectChannels')
654 # opObj10 = procUnitConfObj1.addOperation(name='selectChannels')
651 # opObj10.addParameter(name='channelList', value='2,6', format='intlist')
655 # opObj10.addParameter(name='channelList', value='2,6', format='intlist')
652 #
656 #
653 # opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='other')
657 # opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='other')
654 # opObj12.addParameter(name='n', value='2', format='int')
658 # opObj12.addParameter(name='n', value='2', format='int')
655 #
659 #
656 # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other')
660 # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other')
657 # opObj11.addParameter(name='idfigure', value='3', format='int')
661 # opObj11.addParameter(name='idfigure', value='3', format='int')
658 # opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str')
662 # opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str')
659 # opObj11.addParameter(name='zmin', value='70', format='int')
663 # opObj11.addParameter(name='zmin', value='70', format='int')
660 # opObj11.addParameter(name='zmax', value='90', format='int')
664 # opObj11.addParameter(name='zmax', value='90', format='int')
661
665
662
666
663 # opObj12 = procUnitConfObj1.addOperation(name='decoder')
667 # opObj12 = procUnitConfObj1.addOperation(name='decoder')
664 # opObj12.addParameter(name='ncode', value='2', format='int')
668 # opObj12.addParameter(name='ncode', value='2', format='int')
665 # opObj12.addParameter(name='nbauds', value='8', format='int')
669 # opObj12.addParameter(name='nbauds', value='8', format='int')
666 # opObj12.addParameter(name='code0', value='001110011', format='int')
670 # opObj12.addParameter(name='code0', value='001110011', format='int')
667 # opObj12.addParameter(name='code1', value='001110011', format='int')
671 # opObj12.addParameter(name='code1', value='001110011', format='int')
668
672
669
673
670
674
671 # procUnitConfObj2 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj1.getId())
675 # procUnitConfObj2 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj1.getId())
672 #
676 #
673 # opObj21 = procUnitConfObj2.addOperation(name='IncohInt', optype='other')
677 # opObj21 = procUnitConfObj2.addOperation(name='IncohInt', optype='other')
674 # opObj21.addParameter(name='n', value='2', format='int')
678 # opObj21.addParameter(name='n', value='2', format='int')
675 #
679 #
676 # opObj11 = procUnitConfObj2.addOperation(name='SpectraPlot', optype='other')
680 # opObj11 = procUnitConfObj2.addOperation(name='SpectraPlot', optype='other')
677 # opObj11.addParameter(name='idfigure', value='4', format='int')
681 # opObj11.addParameter(name='idfigure', value='4', format='int')
678 # opObj11.addParameter(name='wintitle', value='SpectraPlot OBJ 2', format='str')
682 # opObj11.addParameter(name='wintitle', value='SpectraPlot OBJ 2', format='str')
679 # opObj11.addParameter(name='zmin', value='70', format='int')
683 # opObj11.addParameter(name='zmin', value='70', format='int')
680 # opObj11.addParameter(name='zmax', value='90', format='int')
684 # opObj11.addParameter(name='zmax', value='90', format='int')
681
685
682 print "Escribiendo el archivo XML"
686 print "Escribiendo el archivo XML"
683
687
684 controllerObj.writeXml(filename)
688 controllerObj.writeXml(filename)
685
689
686 print "Leyendo el archivo XML"
690 print "Leyendo el archivo XML"
687 controllerObj.readXml(filename)
691 controllerObj.readXml(filename)
688 #controllerObj.printattr()
692 #controllerObj.printattr()
689
693
690 controllerObj.createObjects()
694 controllerObj.createObjects()
691 controllerObj.connectObjects()
695 controllerObj.connectObjects()
692 controllerObj.run()
696 controllerObj.run()
693
697
694 No newline at end of file
698
General Comments 0
You need to be logged in to leave comments. Login now