2 from datasource import datasource
3 from xml.dom import minidom
4 from xml.dom.minidom import Document
5 from input import inputText
7 class satxml(datasource):
8 def __init__(self, filename = "satellites.xml"):
9 self.filename = filename
10 datasource.__init__(self)
12 if not os.path.isfile(filename):
13 print "File %s doesn't exist. Creating it." % filename
16 text = datasource.getStatus(self)
19 def getCapabilities(self):
20 return [("set filename", self.setFilename), ("read file", self.read), ("write file", self.write), ("print all", self.printAll)]
23 return "satellites.xml"
25 def setFilename(self):
26 print "Please give a filename <satellites.xml>:"
27 filename = inputText()
29 self.filename = "satellites.xml"
31 self.filename = filename
32 print "Filename set to %s" % self.filename
35 basicsatxml = minidom.parse(self.filename)
37 for sat in basicsatxml.firstChild.childNodes:
38 if sat.nodeType == sat.ELEMENT_NODE and sat.localName == "sat":
40 satname = str(sat.getAttribute("name"))
41 satpos = str(sat.getAttribute("position"))
42 self.addSat(satname, satpos)
43 for transponder in sat.childNodes:
44 if transponder.nodeType == transponder.ELEMENT_NODE and transponder.localName == "transponder":
46 paramlist = ["frequency", "symbol_rate", "polarization", "fec", "system", "modulation", "tsid", "onid"]
47 for param in paramlist:
48 entry = str(transponder.getAttribute(param))
50 parameters[param] = entry
51 if len(parameters.keys()) > 1:
52 self.addTransponder(satpos, parameters)
53 print self.transponderlist
57 satellites = satxml.createElement("satellites")
58 satxml.appendChild(satellites)
59 satlist = self.transponderlist.keys()
60 print self.transponderlist
64 xmlsat = satxml.createElement("sat")
65 xmlsat.setAttribute("name", self.satnames[sat])
66 xmlsat.setAttribute("flags", "1")
67 xmlsat.setAttribute("position", sat)
68 satellites.appendChild(xmlsat)
69 transponders = self.transponderlist[sat]
70 transponders.sort(key = lambda a: a["frequency"])
72 for transponder in transponders:
73 xmltransponder = satxml.createElement("transponder")
74 paramlist = ["frequency", "symbol_rate", "polarization", "fec", "system", "modulation", "tsid", "onid"]
75 for param in paramlist:
76 if transponder.has_key(param):
77 xmltransponder.setAttribute(param, transponder[param])
78 xmlsat.appendChild(xmltransponder)
79 prettyxml = satxml.toprettyxml()
81 file = open(self.filename, "w")