root/WaveDev/trunk/WaveDev/XML_gen/softcomponent_gen.py @ 583

Revision 583, 3.9 KB (checked in by ttsou, 8 years ago)

now deletes temporary xml files

Line 
1import sys
2import commands
3import os
4from amara import binderytools
5
6#
7# UUID Generator
8#
9def uuidgen():
10   return commands.getoutput('uuidgen -t')
11
12
13def componentGen(componentName, portName, waveformDir):
14   portName = u'DefaultPort'
15   portType = u'data'
16   
17   commentLine = u'<!--Created with duct tape and toothpicks pre-alpha 0.0.1 by BrunoSchwarz-->\n<!--Powered by Python-->\n'
18
19   extension_spd = u'.spd.xml'
20   extension_scd = u'.scd.xml'
21   extension_prf = u'.prf.xml'
22   extension_exe = u'.exe'
23 
24   outputFileName_scd = componentName + 'Resource' + extension_scd
25   outputFileName_spd = componentName + 'Resource' + extension_spd
26   outputFileName_prf = componentName + 'Resource' + extension_prf
27 
28   preProcessed_scd = open(waveformDir + '.' + outputFileName_scd + '.tmp', 'w')
29   preProcessed_spd = open(waveformDir + '.' + outputFileName_spd + '.tmp', 'w')
30   preProcessed_prf = open(waveformDir + '.' + outputFileName_prf + '.tmp', 'w')
31   
32   postProcessed_scd = open(waveformDir + outputFileName_scd, 'w')
33   postProcessed_spd = open(waveformDir + outputFileName_spd, 'w')
34   postProcessed_prf = open(waveformDir + outputFileName_prf, 'w')
35 
36   #
37   # SPD Parser / Generator
38   #
39   
40   softpkgName = u'ossie' + componentName + u'Resource'
41   
42   doc_spd = binderytools.bind_file('../XML_gen/_spd.xml.tpl')
43   
44   doc_spd.softpkg.name = softpkgName
45   doc_spd.softpkg.id = u'DCE:' + unicode(uuidgen())
46 
47   doc_spd.softpkg.propertyfile.localfile.name = u'/waveforms/' \
48                                                + componentName \
49                                                + u'Resource' \
50                                                + extension_prf \
51   
52   doc_spd.softpkg.descriptor.localfile.name =  u'/waveforms/' \
53                                                + componentName \
54                                                + u'Resource' \
55                                                + extension_scd \
56   
57   doc_spd.softpkg.implementation.id = u'DCE:' + unicode(uuidgen())
58   doc_spd.softpkg.implementation.code.localfile.name = u'./' + componentName + u'/' + componentName
59   doc_spd.softpkg.implementation.code.entrypoint = componentName + extension_exe
60   
61   print >> preProcessed_spd, doc_spd.xml()
62   
63   #
64   # SCD Parser / Generator
65   #
66   
67   doc_scd = binderytools.bind_file('../XML_gen/_scd.xml.tpl')
68   
69   doc_scd.softwarecomponent.componentfeatures.ports.uses.usesname = portName
70   doc_scd.softwarecomponent.componentfeatures.ports.uses.porttype.type = portType
71 
72   print >> preProcessed_scd, doc_scd.xml()
73 
74   #
75   # PRF Parser / Generator
76   #
77   
78   doc_prf = binderytools.bind_file('../XML_gen/_prf.xml.tpl')
79   
80   print >> preProcessed_prf, doc_prf.xml()
81 
82   #
83   # Post Processing
84   #
85   preProcessed_scd = open(waveformDir + '.' + outputFileName_scd + '.tmp', 'r')
86   preProcessed_spd = open(waveformDir + '.' + outputFileName_spd + '.tmp', 'r')
87   preProcessed_prf = open(waveformDir + '.' + outputFileName_prf + '.tmp', 'r')
88 
89   #
90   # Specify external DTD
91   #
92 
93   #
94   # SPD
95   #
96   line0 = preProcessed_spd.readline()
97   remaining = preProcessed_spd.readlines()
98   postProcessed_spd.writelines(line0)
99   postProcessed_spd.writelines(u'<!DOCTYPE softpkg SYSTEM \"dtd/softpkg.dtd\">\n')
100   postProcessed_spd.writelines(commentLine)
101   postProcessed_spd.writelines(remaining)
102   postProcessed_spd.close()
103   
104   #
105   # SCD
106   #
107   line0 = preProcessed_scd.readline()
108   remaining = preProcessed_scd.readlines()
109   postProcessed_scd.writelines(line0)
110   postProcessed_scd.writelines(u'<!DOCTYPE softwarecomponent SYSTEM \"dtd/softwarecomponent.dtd\">\n')
111   postProcessed_scd.writelines(commentLine)
112   postProcessed_scd.writelines(remaining)
113   postProcessed_scd.close()
114   
115   #
116   # PRF
117   #
118   line0 = preProcessed_prf.readline()
119   remaining = preProcessed_prf.readlines()
120   postProcessed_prf.writelines(line0)
121   postProcessed_prf.writelines(u'<!DOCTYPE properties SYSTEM \"dtd/properties.dtd\">\n')
122   postProcessed_prf.writelines(commentLine)
123   postProcessed_prf.writelines(remaining)
124   postProcessed_prf.close()
125
126   #
127   # Remove temporary files
128   #
129   os.system('rm -f *.tmp')
130
Note: See TracBrowser for help on using the browser.