##// END OF EJS Templates
Se agrego el ID de identificacion para cada clase del controlador....
Se agrego el ID de identificacion para cada clase del controlador. Se agrego el parametro inputId a la Unidad de Procesamiento (UP)

File last commit:

r195:7a77d1c4b33f
r195:7a77d1c4b33f
Show More
controller.py
478 lines | 14.0 KiB | text/x-python | PythonLexer
'''
Created on September , 2012
@author:
'''
from xml.etree.ElementTree import Element, SubElement, ElementTree
from xml.etree import ElementTree as ET
from xml.dom import minidom
import sys
def prettify(elem):
"""Return a pretty-printed XML string for the Element.
"""
rough_string = ET.tostring(elem, 'utf-8')
reparsed = minidom.parseString(rough_string)
return reparsed.toprettyxml(indent=" ")
class Controller():
id = None
name = None
description = None
readBranchObjList = None
procBranchObjList = None
def __init__(self):
# self.id = id
# self.name = name
# self.description = description
self.readBranchObjList = []
self.procBranchObjList = []
def setParms(self, id, name, description):
self.id = id
self.name = name
self.description = description
def addReadBranch(self, dpath, dataformat, readMode, startDate='', endDate='', startTime='', endTime=''):
id = self.getNewId()
readBranchObj = ReadBranch()
readBranchObj.setup(id, dpath, dataformat, readMode, startDate, endDate, startTime, endTime)
self.readBranchObjList.append(readBranchObj)
return readBranchObj
def addProcBranch(self, name):
id = self.getNewId()
procBranchObj = ProcBranch()
procBranchObj.setup(id, name)
self.procBranchObjList.append(procBranchObj)
return procBranchObj
def getNewId(self):
id = int(self.id)*10 + len(self.readBranchObjList) + len(self.procBranchObjList) + 1
return id
def makeXml(self):
projectElement = Element('Controller')
projectElement.set('id', str(self.id))
projectElement.set('name', self.name)
projectElement.set('description', self.description)
for readBranchObj in self.readBranchObjList:
readBranchObj.makeXml(projectElement)
for procBranchObj in self.procBranchObjList:
procBranchObj.makeXml(projectElement)
self.projectElement = projectElement
def writeXml(self, filename):
self.makeXml()
ElementTree(self.projectElement).write(filename, method='xml')
print prettify(self.projectElement)
def readXml(self, filename):
#tree = ET.parse(filename)
self.projectElement = None
self.readBranchObjList = None
self.procBranchObjList = None
self.projectElement = ElementTree().parse(filename)
self.project = self.projectElement.tag
self.id = self.projectElement.get('id')
self.name = self.projectElement.get('name')
self.readBranchObjList = []
readBranchElementList = self.projectElement.getiterator('readBranch')
for readBranchElement in readBranchElementList:
readBrachObj = ReadBranch()
readBrachObj.readXml(readBranchElement)
self.readBranchObjList.append(readBranchObj)
self.procBranchObjList = []
procBranchElementList = self.projectElement.getiterator('procBranch')
for procBranchElement in procBranchElementList:
procBranchObj = ProcBranch()
procBranchObj.readXml(procBranchElement)
self.procBranchObjList.append(procBranchObj)
def printattr(self):
print "Controller[%s]: name = %s, description = %s" %(self.id,
self.name,
self.description)
for readBranchObj in self.readBranchObjList:
readBranchObj.printattr()
for procBranchObj in self.procBranchObjList:
procBranchObj.printattr()
class ReadBranch():
id = None
name = None
# dpath = None
# dataformat = None
# readMode = None
# startDate = None
# endDate = None
# startTime = None
# endTime = None
parmObjList = []
def __init__(self):
self.parmObjList = []
def setup(self, id, dpath, dataformat, readMode, startDate, endDate, startTime, endTime):
self.id = id
self.dpath = dpath
self.dataformat = dataformat
self.readMode = readMode
self.startDate = startDate
self.endDate = endDate
self.startTime = startTime
self.endTime = endTime
def addParameter(self, name, value):
id = int(self.id)*10 + len(self.parmObjList) + 1
parmObj = ParameterConf()
parmObj.setup(id, name, value)
self.parmObjList.append(parmObj)
return parmObj
def makeXml(self, projectElement):
readBranchElement = SubElement(projectElement, 'readBranch')
readBranchElement.set('id', str(self.id))
self.addParameter(name='dpath' , value=self.dpath)
self.addParameter(name='dataformat', value=self.dataformat)
self.addParameter(name='startDate' , value=self.startDate)
self.addParameter(name='endDate' , value=self.endDate)
self.addParameter(name='startTime' , value=self.startTime)
self.addParameter(name='endTime' , value=self.endTime)
self.addParameter(name='readMode' , value=str(self.readMode))
for parmObj in self.parmObjList:
parmObj.makeXml(readBranchElement)
def readXml(self, readBranchElement):
self.id = readBranchElement.get('id')
self.parmObjList = []
parmElementList = readBranchElement.getiterator('Parameter')
for parmElement in parmElementList:
parmObj = ParameterConf()
parmObj.readXml(parmElement)
self.parmObjList.append(parmObj)
def printattr(self):
print "ReadBranch[%s]: name = %s" %(self.id,
self.name)
for parmObj in self.parmObjList:
parmObj.printattr()
class ProcBranch():
id = None
name = None
upObjList = None
def __init__(self):
pass
def setup(self, id, name):
self.id = id
self.name = name
self.upObjList = []
def addUP(self, name, type, inputId):
id = int(self.id)*10 + len(self.upObjList) + 1
upObj = UPConf()
upObj.setup(id, name, type, inputId)
self.upObjList.append(upObj)
return upObj
def makeXml(self, projectElement):
procBranchElement = SubElement(projectElement, 'procBranch')
procBranchElement.set('id', str(self.id))
procBranchElement.set('name', self.name)
for upObj in self.upObjList:
upObj.makeXml(procBranchElement)
def readXml(self, procBranchElement):
self.id = procBranchElement.get('id')
self.name = procBranchElement.get('name')
self.upObjList = []
upElementList = procBranchElement.getiterator('UP')
for upElement in upElementList:
upObj = UPConf()
upObj.readXml(upElement)
self.upObjList.append(upObj)
def printattr(self):
print "ProcBranch[%s]: name = %s" %(self.id,
self.name)
for upObj in self.upObjList:
upObj.printattr()
class UPConf():
id = None
name = None
type = None
inputId = None
opObjList = []
def __init__(self):
pass
def setup(self, id, name, type, inputId):
self.id = id
self.name = name
self.type = type
self.inputId = inputId
self.opObjList = []
def addOperation(self, name, priority, type='self'):
id = int(self.id)*10 + len(self.opObjList) + 1
opObj = OperationConf()
opObj.setup(id, name, priority, type)
self.opObjList.append(opObj)
return opObj
def makeXml(self, procBranchElement):
upElement = SubElement(procBranchElement, 'UP')
upElement.set('id', str(self.id))
upElement.set('name', self.name)
upElement.set('type', self.type)
upElement.set('inputId', str(self.inputId))
for opObj in self.opObjList:
opObj.makeXml(upElement)
def readXml(self, upElement):
self.id = upElement.get('id')
self.name = upElement.get('name')
self.type = upElement.get('type')
self.inputId = upElement.get('inputId')
self.opObjList = []
opElementList = upElement.getiterator('Operation')
for opElement in opElementList:
opObj = OperationConf()
opObj.readXml(opElement)
self.opObjList.append(opObj)
def getOperationObjList(self):
return self.opObjList
def printattr(self):
print "UP[%s]: name = %s, type = %s, inputId = %s" %(self.id,
self.name,
self.type,
self.inputId)
for opObj in self.opObjList:
opObj.printattr()
class OperationConf():
id = 0
name = None
priority = None
type = 'self'
parmObjList = []
def __init__(self):
pass
def setup(self, id, name, priority, type):
self.id = id
self.name = name
self.priority = priority
self.type = type
self.parmObjList = []
def addParameter(self, name, value):
id = int(self.id)*10 + len(self.parmObjList) + 1
parmObj = ParameterConf()
parmObj.setup(id, name, value)
self.parmObjList.append(parmObj)
return parmObj
def makeXml(self, upElement):
opElement = SubElement(upElement, 'Operation')
opElement.set('id', str(self.id))
opElement.set('name', self.name)
opElement.set('priority', str(self.priority))
for parmObj in self.parmObjList:
parmObj.makeXml(opElement)
def readXml(self, opElement):
self.id = opElement.get('id')
self.name = opElement.get('name')
self.type = opElement.get('type')
self.parmObjList = []
parmElementList = opElement.getiterator('Parameter')
for parmElement in parmElementList:
parmObj = ParameterConf()
parmObj.readXml(parmElement)
self.parmObjList.append(parmObj)
def getParameterObjList(self):
return self.parmObjList
def printattr(self):
print "Operation[%s]: name = %s, type = %s, priority = %s" %(self.id,
self.name,
self.type,
self.priority)
for parmObj in self.parmObjList:
parmObj.printattr()
class ParameterConf():
id = None
name = None
value = None
def __init__(self):
pass
def setup(self, id, name, value):
self.id = id
self.name = name
self.value = value
def makeXml(self, opElement):
parmElement = SubElement(opElement, 'Parameter')
parmElement.set('id', str(self.id))
parmElement.set('name', self.name)
parmElement.set('value', self.value)
def readXml(self, parmElement):
self.id = parmElement.get('id')
self.name = parmElement.get('name')
self.value = parmElement.get('value')
def printattr(self):
print "Parameter[%s]: name = %s, value = %s" %(self.id, self.name, self.value)
if __name__ == '__main__':
desc = "Este es un test"
filename = "test.xml"
projectObj = Controller()
projectObj.setParms(id = '191', name='test01', description=desc)
readBranchObj = projectObj.addReadBranch(dpath='mydata', dataformat='rawdata', readMode=0, startDate='1', endDate='3', startTime='4', endTime='5')
procBranchObj = projectObj.addProcBranch(name='Branch1')
procBranchObj1 = projectObj.addProcBranch(name='Branch2')
upObj1 = procBranchObj.addUP(name='UP1', type='Voltage', inputId=readBranchObj.id)
upObj2 = procBranchObj.addUP(name='UP2', type='Voltage', inputId=upObj1.id)
opObj11 = upObj1.addOperation(name='removeDC', priority=1)
opObj11.addParameter(name='type', value='1')
opObj12 = upObj1.addOperation(name='decoder', priority=2)
opObj12.addParameter(name='ncode', value='2')
opObj12.addParameter(name='nbauds', value='8')
opObj12.addParameter(name='code0', value='001110011')
opObj12.addParameter(name='code1', value='001110011')
print "Escribiendo el archivo XML"
projectObj.writeXml(filename)
print "Leyendo el archivo XML"
projectObj.readXml(filename)
projectObj.printattr()