##// END OF EJS Templates
Se agrego el ID de identificacion para cada clase del controlador....
Miguel Valdez -
r195:7a77d1c4b33f
parent child
Show More
@@ -1,474 +1,479
1 1 '''
2 2 Created on September , 2012
3 3 @author:
4 4 '''
5 5 from xml.etree.ElementTree import Element, SubElement, ElementTree
6 6 from xml.etree import ElementTree as ET
7 7 from xml.dom import minidom
8 8
9 9 import sys
10 10
11 11 def prettify(elem):
12 12 """Return a pretty-printed XML string for the Element.
13 13 """
14 14 rough_string = ET.tostring(elem, 'utf-8')
15 15 reparsed = minidom.parseString(rough_string)
16 16 return reparsed.toprettyxml(indent=" ")
17 17
18 18 class Controller():
19 19
20 20 id = None
21 21 name = None
22 22 description = None
23 23 readBranchObjList = None
24 24 procBranchObjList = None
25 25
26 26 def __init__(self):
27 27
28 28 # self.id = id
29 29 # self.name = name
30 30 # self.description = description
31 31
32 32 self.readBranchObjList = []
33 33 self.procBranchObjList = []
34 34
35 35 def setParms(self, id, name, description):
36 36
37 37 self.id = id
38 38 self.name = name
39 39 self.description = description
40 40
41 41 def addReadBranch(self, dpath, dataformat, readMode, startDate='', endDate='', startTime='', endTime=''):
42 42
43 id = len(self.readBranchObjList) + 1
43 id = self.getNewId()
44 44
45 45 readBranchObj = ReadBranch()
46 46 readBranchObj.setup(id, dpath, dataformat, readMode, startDate, endDate, startTime, endTime)
47 47
48 48 self.readBranchObjList.append(readBranchObj)
49 49
50 50 return readBranchObj
51 51
52 52 def addProcBranch(self, name):
53 53
54 id = len(self.procBranchObjList) + 1
54 id = self.getNewId()
55 55
56 56 procBranchObj = ProcBranch()
57 57 procBranchObj.setup(id, name)
58 58
59 59 self.procBranchObjList.append(procBranchObj)
60 60
61 61 return procBranchObj
62 62
63 def getNewId(self):
64
65 id = int(self.id)*10 + len(self.readBranchObjList) + len(self.procBranchObjList) + 1
66 return id
67
63 68 def makeXml(self):
64 69
65 70 projectElement = Element('Controller')
66 71 projectElement.set('id', str(self.id))
67 72 projectElement.set('name', self.name)
68 73 projectElement.set('description', self.description)
69 74
70 75 for readBranchObj in self.readBranchObjList:
71 76 readBranchObj.makeXml(projectElement)
72 77
73 78 for procBranchObj in self.procBranchObjList:
74 79 procBranchObj.makeXml(projectElement)
75 80
76 81 self.projectElement = projectElement
77 82
78 83 def writeXml(self, filename):
79 84
80 85 self.makeXml()
81 86 ElementTree(self.projectElement).write(filename, method='xml')
82 87 print prettify(self.projectElement)
83 88
84 89 def readXml(self, filename):
85 90
86 91 #tree = ET.parse(filename)
87 92 self.projectElement = None
88 93 self.readBranchObjList = None
89 94 self.procBranchObjList = None
90 95
91 96 self.projectElement = ElementTree().parse(filename)
92 97
93 98 self.project = self.projectElement.tag
94 99
95 100 self.id = self.projectElement.get('id')
96 101 self.name = self.projectElement.get('name')
97 102
98 103 self.readBranchObjList = []
99 104
100 105 readBranchElementList = self.projectElement.getiterator('readBranch')
101 106
102 107 for readBranchElement in readBranchElementList:
103 108 readBrachObj = ReadBranch()
104 109 readBrachObj.readXml(readBranchElement)
105 110 self.readBranchObjList.append(readBranchObj)
106 111
107 112 self.procBranchObjList = []
108 113
109 114 procBranchElementList = self.projectElement.getiterator('procBranch')
110 115
111 116 for procBranchElement in procBranchElementList:
112 117 procBranchObj = ProcBranch()
113 118 procBranchObj.readXml(procBranchElement)
114 119 self.procBranchObjList.append(procBranchObj)
115 120
116 121 def printattr(self):
117 122
118 123 print "Controller[%s]: name = %s, description = %s" %(self.id,
119 124 self.name,
120 125 self.description)
121 126
122 127 for readBranchObj in self.readBranchObjList:
123 128 readBranchObj.printattr()
124 129
125 130 for procBranchObj in self.procBranchObjList:
126 131 procBranchObj.printattr()
127 132
128 133 class ReadBranch():
129 134
130 135 id = None
131 136 name = None
132 137 # dpath = None
133 138 # dataformat = None
134 139 # readMode = None
135 140 # startDate = None
136 141 # endDate = None
137 142 # startTime = None
138 143 # endTime = None
139 144
140 145 parmObjList = []
141 146
142 147 def __init__(self):
143 148
144 149 self.parmObjList = []
145 150
146 151 def setup(self, id, dpath, dataformat, readMode, startDate, endDate, startTime, endTime):
147 152
148 153 self.id = id
149 154 self.dpath = dpath
150 155 self.dataformat = dataformat
151 156 self.readMode = readMode
152 157 self.startDate = startDate
153 158 self.endDate = endDate
154 159 self.startTime = startTime
155 160 self.endTime = endTime
156 161
157 162 def addParameter(self, name, value):
158 163
159 id = len(self.parmObjList) + 1
164 id = int(self.id)*10 + len(self.parmObjList) + 1
160 165
161 166 parmObj = ParameterConf()
162 167 parmObj.setup(id, name, value)
163 168
164 169 self.parmObjList.append(parmObj)
165 170
166 171 return parmObj
167 172
168 173 def makeXml(self, projectElement):
169 174
170 175 readBranchElement = SubElement(projectElement, 'readBranch')
171 176 readBranchElement.set('id', str(self.id))
172 177
173 178 self.addParameter(name='dpath' , value=self.dpath)
174 179 self.addParameter(name='dataformat', value=self.dataformat)
175 180 self.addParameter(name='startDate' , value=self.startDate)
176 181 self.addParameter(name='endDate' , value=self.endDate)
177 182 self.addParameter(name='startTime' , value=self.startTime)
178 183 self.addParameter(name='endTime' , value=self.endTime)
179 184 self.addParameter(name='readMode' , value=str(self.readMode))
180 185
181 186 for parmObj in self.parmObjList:
182 187 parmObj.makeXml(readBranchElement)
183 188
184 189 def readXml(self, readBranchElement):
185 190
186 191 self.id = readBranchElement.get('id')
187 192
188 193 self.parmObjList = []
189 194
190 195 parmElementList = readBranchElement.getiterator('Parameter')
191 196
192 197 for parmElement in parmElementList:
193 198 parmObj = ParameterConf()
194 199 parmObj.readXml(parmElement)
195 200 self.parmObjList.append(parmObj)
196 201
197 202 def printattr(self):
198 203
199 204 print "ReadBranch[%s]: name = %s" %(self.id,
200 205 self.name)
201 206
202 207 for parmObj in self.parmObjList:
203 208 parmObj.printattr()
204 209
205 210 class ProcBranch():
206 211
207 212 id = None
208 213 name = None
209 214
210 215 upObjList = None
211 216
212 217 def __init__(self):
213 218 pass
214 219
215 220 def setup(self, id, name):
216 221
217 222 self.id = id
218 223 self.name = name
219 224
220 225 self.upObjList = []
221 226
222 def addUP(self, name, type):
227 def addUP(self, name, type, inputId):
223 228
224 id = len(self.upObjList) + 1
229 id = int(self.id)*10 + len(self.upObjList) + 1
225 230
226 231 upObj = UPConf()
227 upObj.setup(id, name, type)
232 upObj.setup(id, name, type, inputId)
228 233
229 234 self.upObjList.append(upObj)
230 235
231 236 return upObj
232 237
233 238 def makeXml(self, projectElement):
234 239
235 240 procBranchElement = SubElement(projectElement, 'procBranch')
236 241 procBranchElement.set('id', str(self.id))
237 242 procBranchElement.set('name', self.name)
238 243
239 244 for upObj in self.upObjList:
240 245 upObj.makeXml(procBranchElement)
241 246
242 247 def readXml(self, procBranchElement):
243 248
244 249 self.id = procBranchElement.get('id')
245 250 self.name = procBranchElement.get('name')
246 251
247 252 self.upObjList = []
248 253
249 254 upElementList = procBranchElement.getiterator('UP')
250 255
251 256 for upElement in upElementList:
252 257 upObj = UPConf()
253 258 upObj.readXml(upElement)
254 259 self.upObjList.append(upObj)
255 260
256 261 def printattr(self):
257 262
258 263 print "ProcBranch[%s]: name = %s" %(self.id,
259 264 self.name)
260 265
261 266 for upObj in self.upObjList:
262 267 upObj.printattr()
263 268
264 269 class UPConf():
265 270
266 271 id = None
267 272 name = None
268 273 type = None
269 274 inputId = None
270 275
271 276 opObjList = []
272 277
273 278 def __init__(self):
274 279 pass
275 280
276 def setup(self, id, name, type, inputId=0):
281 def setup(self, id, name, type, inputId):
277 282
278 283 self.id = id
279 284 self.name = name
280 285 self.type = type
281 286 self.inputId = inputId
282 287
283 288 self.opObjList = []
284 289
285 290 def addOperation(self, name, priority, type='self'):
286 291
287 id = len(self.opObjList) + 1
292 id = int(self.id)*10 + len(self.opObjList) + 1
288 293
289 294 opObj = OperationConf()
290 295 opObj.setup(id, name, priority, type)
291 296
292 297 self.opObjList.append(opObj)
293 298
294 299 return opObj
295 300
296 301 def makeXml(self, procBranchElement):
297 302
298 303 upElement = SubElement(procBranchElement, 'UP')
299 304 upElement.set('id', str(self.id))
300 305 upElement.set('name', self.name)
301 306 upElement.set('type', self.type)
302 307 upElement.set('inputId', str(self.inputId))
303 308
304 309 for opObj in self.opObjList:
305 310 opObj.makeXml(upElement)
306 311
307 312 def readXml(self, upElement):
308 313
309 314 self.id = upElement.get('id')
310 315 self.name = upElement.get('name')
311 316 self.type = upElement.get('type')
312 317 self.inputId = upElement.get('inputId')
313 318
314 319 self.opObjList = []
315 320
316 321 opElementList = upElement.getiterator('Operation')
317 322
318 323 for opElement in opElementList:
319 324 opObj = OperationConf()
320 325 opObj.readXml(opElement)
321 326 self.opObjList.append(opObj)
322 327
323 328 def getOperationObjList(self):
324 329
325 330 return self.opObjList
326 331
327 332 def printattr(self):
328 333
329 334 print "UP[%s]: name = %s, type = %s, inputId = %s" %(self.id,
330 335 self.name,
331 336 self.type,
332 337 self.inputId)
333 338
334 339 for opObj in self.opObjList:
335 340 opObj.printattr()
336 341
337 342 class OperationConf():
338 343
339 344 id = 0
340 345 name = None
341 346 priority = None
342 347 type = 'self'
343 348
344 349 parmObjList = []
345 350
346 351 def __init__(self):
347 352 pass
348 353
349 354 def setup(self, id, name, priority, type):
350 355
351 356 self.id = id
352 357 self.name = name
353 358 self.priority = priority
354 359 self.type = type
355 360
356 361 self.parmObjList = []
357 362
358 363 def addParameter(self, name, value):
359 364
360 id = len(self.parmObjList) + 1
365 id = int(self.id)*10 + len(self.parmObjList) + 1
361 366
362 367 parmObj = ParameterConf()
363 368 parmObj.setup(id, name, value)
364 369
365 370 self.parmObjList.append(parmObj)
366 371
367 372 return parmObj
368 373
369 374 def makeXml(self, upElement):
370 375
371 376 opElement = SubElement(upElement, 'Operation')
372 377 opElement.set('id', str(self.id))
373 378 opElement.set('name', self.name)
374 379 opElement.set('priority', str(self.priority))
375 380
376 381 for parmObj in self.parmObjList:
377 382 parmObj.makeXml(opElement)
378 383
379 384 def readXml(self, opElement):
380 385
381 386 self.id = opElement.get('id')
382 387 self.name = opElement.get('name')
383 388 self.type = opElement.get('type')
384 389
385 390 self.parmObjList = []
386 391
387 392 parmElementList = opElement.getiterator('Parameter')
388 393
389 394 for parmElement in parmElementList:
390 395 parmObj = ParameterConf()
391 396 parmObj.readXml(parmElement)
392 397 self.parmObjList.append(parmObj)
393 398
394 399 def getParameterObjList(self):
395 400
396 401 return self.parmObjList
397 402
398 403 def printattr(self):
399 404
400 405 print "Operation[%s]: name = %s, type = %s, priority = %s" %(self.id,
401 406 self.name,
402 407 self.type,
403 408 self.priority)
404 409
405 410 for parmObj in self.parmObjList:
406 411 parmObj.printattr()
407 412
408 413 class ParameterConf():
409 414
410 415 id = None
411 416 name = None
412 417 value = None
413 418
414 419 def __init__(self):
415 420 pass
416 421
417 422 def setup(self, id, name, value):
418 423
419 424 self.id = id
420 425 self.name = name
421 426 self.value = value
422 427
423 428 def makeXml(self, opElement):
424 429
425 430 parmElement = SubElement(opElement, 'Parameter')
426 431 parmElement.set('id', str(self.id))
427 432 parmElement.set('name', self.name)
428 433 parmElement.set('value', self.value)
429 434
430 435 def readXml(self, parmElement):
431 436
432 437 self.id = parmElement.get('id')
433 438 self.name = parmElement.get('name')
434 439 self.value = parmElement.get('value')
435 440
436 441 def printattr(self):
437 442
438 443 print "Parameter[%s]: name = %s, value = %s" %(self.id, self.name, self.value)
439 444
440 445 if __name__ == '__main__':
441 446
442 447 desc = "Este es un test"
443 448 filename = "test.xml"
444 449
445 450 projectObj = Controller()
446 451
447 452 projectObj.setParms(id = '191', name='test01', description=desc)
448 453
449 454 readBranchObj = projectObj.addReadBranch(dpath='mydata', dataformat='rawdata', readMode=0, startDate='1', endDate='3', startTime='4', endTime='5')
450 455
451 456 procBranchObj = projectObj.addProcBranch(name='Branch1')
452 457
453 458 procBranchObj1 = projectObj.addProcBranch(name='Branch2')
454 upObj1 = procBranchObj.addUP(name='UP1', type='Voltage')
455 upObj2 = procBranchObj.addUP(name='UP2', type='Voltage')
459
460 upObj1 = procBranchObj.addUP(name='UP1', type='Voltage', inputId=readBranchObj.id)
461 upObj2 = procBranchObj.addUP(name='UP2', type='Voltage', inputId=upObj1.id)
456 462
457 463 opObj11 = upObj1.addOperation(name='removeDC', priority=1)
458 464 opObj11.addParameter(name='type', value='1')
459 465
460
461 466 opObj12 = upObj1.addOperation(name='decoder', priority=2)
462 467 opObj12.addParameter(name='ncode', value='2')
463 468 opObj12.addParameter(name='nbauds', value='8')
464 469 opObj12.addParameter(name='code0', value='001110011')
465 470 opObj12.addParameter(name='code1', value='001110011')
466 471
467 472 print "Escribiendo el archivo XML"
468 473
469 474 projectObj.writeXml(filename)
470 475
471 476 print "Leyendo el archivo XML"
472 477 projectObj.readXml(filename)
473 478 projectObj.printattr()
474 479 No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now