controller.py
478 lines
| 14.0 KiB
| text/x-python
|
PythonLexer
|
r174 | ''' | |
Created on September , 2012 | |||
@author: | |||
''' | |||
from xml.etree.ElementTree import Element, SubElement, ElementTree | |||
from xml.etree import ElementTree as ET | |||
|
r175 | from xml.dom import minidom | |
|
r174 | import sys | |
|
r175 | 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=" ") | |||
|
r174 | ||
|
r180 | class Controller(): | |
|
r174 | ||
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=''): | |||
|
r195 | id = self.getNewId() | |
|
r174 | ||
|
r193 | readBranchObj = ReadBranch() | |
readBranchObj.setup(id, dpath, dataformat, readMode, startDate, endDate, startTime, endTime) | |||
|
r174 | ||
self.readBranchObjList.append(readBranchObj) | |||
return readBranchObj | |||
def addProcBranch(self, name): | |||
|
r195 | id = self.getNewId() | |
|
r174 | ||
|
r193 | procBranchObj = ProcBranch() | |
procBranchObj.setup(id, name) | |||
|
r174 | ||
self.procBranchObjList.append(procBranchObj) | |||
return procBranchObj | |||
|
r195 | def getNewId(self): | |
id = int(self.id)*10 + len(self.readBranchObjList) + len(self.procBranchObjList) + 1 | |||
return id | |||
|
r174 | def makeXml(self): | |
|
r180 | projectElement = Element('Controller') | |
|
r174 | projectElement.set('id', str(self.id)) | |
projectElement.set('name', self.name) | |||
|
r194 | projectElement.set('description', self.description) | |
|
r174 | ||
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) | |||
|
r175 | def readXml(self, filename): | |
#tree = ET.parse(filename) | |||
self.projectElement = None | |||
|
r193 | self.readBranchObjList = None | |
self.procBranchObjList = None | |||
self.projectElement = ElementTree().parse(filename) | |||
|
r175 | ||
self.project = self.projectElement.tag | |||
self.id = self.projectElement.get('id') | |||
|
r193 | 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) | |||
|
r194 | ||
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() | |||
|
r174 | class ReadBranch(): | |
id = None | |||
|
r194 | name = None | |
|
r193 | # dpath = None | |
# dataformat = None | |||
# readMode = None | |||
# startDate = None | |||
# endDate = None | |||
# startTime = None | |||
# endTime = None | |||
parmObjList = [] | |||
|
r174 | ||
|
r193 | def __init__(self): | |
self.parmObjList = [] | |||
def setup(self, id, dpath, dataformat, readMode, startDate, endDate, startTime, endTime): | |||
|
r174 | ||
self.id = id | |||
self.dpath = dpath | |||
self.dataformat = dataformat | |||
self.readMode = readMode | |||
self.startDate = startDate | |||
self.endDate = endDate | |||
self.startTime = startTime | |||
self.endTime = endTime | |||
|
r193 | def addParameter(self, name, value): | |
|
r195 | id = int(self.id)*10 + len(self.parmObjList) + 1 | |
|
r193 | ||
parmObj = ParameterConf() | |||
parmObj.setup(id, name, value) | |||
self.parmObjList.append(parmObj) | |||
return parmObj | |||
|
r174 | def makeXml(self, projectElement): | |
readBranchElement = SubElement(projectElement, 'readBranch') | |||
readBranchElement.set('id', str(self.id)) | |||
|
r193 | ||
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: | |||
|
r194 | parmObj = ParameterConf() | |
|
r193 | parmObj.readXml(parmElement) | |
self.parmObjList.append(parmObj) | |||
|
r194 | ||
def printattr(self): | |||
print "ReadBranch[%s]: name = %s" %(self.id, | |||
self.name) | |||
|
r174 | ||
|
r194 | for parmObj in self.parmObjList: | |
parmObj.printattr() | |||
|
r174 | ||
class ProcBranch(): | |||
id = None | |||
name = None | |||
upObjList = None | |||
|
r193 | def __init__(self): | |
pass | |||
def setup(self, id, name): | |||
|
r174 | ||
self.id = id | |||
self.name = name | |||
self.upObjList = [] | |||
|
r195 | def addUP(self, name, type, inputId): | |
|
r174 | ||
|
r195 | id = int(self.id)*10 + len(self.upObjList) + 1 | |
|
r174 | ||
|
r193 | upObj = UPConf() | |
|
r195 | upObj.setup(id, name, type, inputId) | |
|
r174 | ||
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) | |||
|
r193 | 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() | |||
|
r194 | upObj.readXml(upElement) | |
|
r193 | self.upObjList.append(upObj) | |
|
r194 | def printattr(self): | |
print "ProcBranch[%s]: name = %s" %(self.id, | |||
self.name) | |||
for upObj in self.upObjList: | |||
upObj.printattr() | |||
|
r180 | class UPConf(): | |
|
r174 | ||
id = None | |||
name = None | |||
type = None | |||
|
r194 | inputId = None | |
|
r174 | ||
opObjList = [] | |||
|
r193 | def __init__(self): | |
pass | |||
|
r195 | def setup(self, id, name, type, inputId): | |
|
r174 | ||
self.id = id | |||
self.name = name | |||
self.type = type | |||
|
r194 | self.inputId = inputId | |
|
r174 | ||
self.opObjList = [] | |||
|
r181 | def addOperation(self, name, priority, type='self'): | |
|
r174 | ||
|
r195 | id = int(self.id)*10 + len(self.opObjList) + 1 | |
|
r174 | ||
|
r193 | opObj = OperationConf() | |
opObj.setup(id, name, priority, type) | |||
|
r174 | ||
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) | |||
|
r194 | upElement.set('inputId', str(self.inputId)) | |
|
r174 | ||
for opObj in self.opObjList: | |||
opObj.makeXml(upElement) | |||
|
r193 | def readXml(self, upElement): | |
self.id = upElement.get('id') | |||
self.name = upElement.get('name') | |||
self.type = upElement.get('type') | |||
|
r194 | self.inputId = upElement.get('inputId') | |
self.opObjList = [] | |||
|
r193 | ||
opElementList = upElement.getiterator('Operation') | |||
for opElement in opElementList: | |||
|
r194 | opObj = OperationConf() | |
opObj.readXml(opElement) | |||
self.opObjList.append(opObj) | |||
|
r193 | ||
|
r184 | def getOperationObjList(self): | |
|
r182 | ||
return self.opObjList | |||
|
r194 | 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() | |||
|
r180 | class OperationConf(): | |
|
r174 | ||
id = 0 | |||
name = None | |||
priority = None | |||
|
r181 | type = 'self' | |
|
r174 | parmObjList = [] | |
|
r193 | def __init__(self): | |
pass | |||
def setup(self, id, name, priority, type): | |||
|
r174 | ||
self.id = id | |||
self.name = name | |||
self.priority = priority | |||
|
r181 | self.type = type | |
|
r174 | ||
self.parmObjList = [] | |||
def addParameter(self, name, value): | |||
|
r195 | id = int(self.id)*10 + len(self.parmObjList) + 1 | |
|
r174 | ||
|
r193 | parmObj = ParameterConf() | |
parmObj.setup(id, name, value) | |||
|
r174 | ||
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) | |||
|
r193 | ||
def readXml(self, opElement): | |||
self.id = opElement.get('id') | |||
self.name = opElement.get('name') | |||
self.type = opElement.get('type') | |||
|
r194 | self.parmObjList = [] | |
|
r193 | parmElementList = opElement.getiterator('Parameter') | |
for parmElement in parmElementList: | |||
|
r194 | parmObj = ParameterConf() | |
parmObj.readXml(parmElement) | |||
self.parmObjList.append(parmObj) | |||
|
r184 | def getParameterObjList(self): | |
|
r182 | ||
return self.parmObjList | |||
|
r174 | ||
|
r194 | 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() | |||
|
r180 | class ParameterConf(): | |
|
r174 | ||
id = None | |||
name = None | |||
value = None | |||
|
r193 | def __init__(self): | |
pass | |||
def setup(self, id, name, value): | |||
|
r174 | ||
self.id = id | |||
self.name = name | |||
self.value = value | |||
def makeXml(self, opElement): | |||
parmElement = SubElement(opElement, 'Parameter') | |||
|
r194 | parmElement.set('id', str(self.id)) | |
|
r174 | parmElement.set('name', self.name) | |
parmElement.set('value', self.value) | |||
|
r175 | ||
|
r193 | def readXml(self, parmElement): | |
|
r175 | ||
|
r193 | self.id = parmElement.get('id') | |
self.name = parmElement.get('name') | |||
self.value = parmElement.get('value') | |||
|
r194 | ||
def printattr(self): | |||
print "Parameter[%s]: name = %s, value = %s" %(self.id, self.name, self.value) | |||
|
r174 | ||
if __name__ == '__main__': | |||
desc = "Este es un test" | |||
filename = "test.xml" | |||
|
r180 | projectObj = Controller() | |
|
r174 | ||
|
r194 | projectObj.setParms(id = '191', name='test01', description=desc) | |
|
r174 | ||
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') | |||
|
r195 | ||
upObj1 = procBranchObj.addUP(name='UP1', type='Voltage', inputId=readBranchObj.id) | |||
upObj2 = procBranchObj.addUP(name='UP2', type='Voltage', inputId=upObj1.id) | |||
|
r174 | ||
opObj11 = upObj1.addOperation(name='removeDC', priority=1) | |||
opObj11.addParameter(name='type', value='1') | |||
|
r194 | opObj12 = upObj1.addOperation(name='decoder', priority=2) | |
|
r174 | opObj12.addParameter(name='ncode', value='2') | |
opObj12.addParameter(name='nbauds', value='8') | |||
|
r194 | opObj12.addParameter(name='code0', value='001110011') | |
|
r174 | opObj12.addParameter(name='code1', value='001110011') | |
|
r194 | print "Escribiendo el archivo XML" | |
|
r175 | ||
|
r174 | projectObj.writeXml(filename) | |
|
r194 | print "Leyendo el archivo XML" | |
|
r175 | projectObj.readXml(filename) | |
|
r194 | projectObj.printattr() | |
|
r174 |