source: DCWoRMS/trunk/src/test/DEBBTranslator/xml/DEBBComponentTranslator.xsl @ 640

Revision 640, 12.9 KB checked in by gosiaw, 12 years ago (diff)

Parameters to DEBB Components xslt passed

Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<xsl:stylesheet version="1.0"
3        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:plm="http://www.plmxml.org/Schemas/PLMXMLSchema"
4        xmlns:cim="http://www.coolemall.eu/DEBBComponent" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
5        <!-- Specification of the output document -->
6        <xsl:output method="xml" version="1.0" encoding="UTF-8"
7                indent="yes" />
8               
9        <!-- Information for mapping of DEBB classes into DCWoRMS computingResource classes -->
10        <xsl:param name="computingResourceClasses" select="computingResourceClasses"/>
11
12        <!-- Information for mapping of resource classes into DCWoRMS resourceUnits classes -->
13        <xsl:param name="resourceUnitClasses" select="resourceUnitClasses"/>
14                       
15        <xsl:template match="/">
16                <xsl:element name="environment">
17                        <xsl:attribute name="xsi:noNamespaceSchemaLocation">DCWormsResSchema.xsd</xsl:attribute>
18                        <xsl:element name="resources">
19                                <xsl:element name="scheduler"></xsl:element>
20                                <xsl:apply-templates select="//*[ComponentId]"
21                                        mode="full" />
22                        </xsl:element>
23                </xsl:element>
24        </xsl:template>
25
26        <!-- TODO: Move most of "code" to basic template -->
27        <xsl:template match="//*[ComponentId]" mode="full">
28                <xsl:element name="computingResource">
29                        <xsl:attribute name="class"> 
30                                <xsl:value-of select="name(.)" /> 
31                        </xsl:attribute>
32                        <xsl:attribute name="name">
33                                <xsl:variable name="oldComponentId"><xsl:value-of select="ComponentId" /></xsl:variable>
34                                <xsl:variable name="newComponentId">
35                                <xsl:value-of select="translate($oldComponentId, '/', '_')" />
36                                </xsl:variable>
37                                <xsl:value-of select="$newComponentId" />
38                        </xsl:attribute>
39                        <xsl:call-template name="translateComputingElement"/>
40                </xsl:element>
41        </xsl:template>
42
43        <xsl:template match="//*[ComponentId]">
44                <xsl:call-template name="translateComputingElement"/>
45        </xsl:template>
46
47        <xsl:template name="translateComputingElement">
48                <xsl:if test="Memory">
49                        <xsl:apply-templates select="Memory" />
50                </xsl:if>
51                <xsl:if test="Storage">
52                        <xsl:apply-templates select="Storage" />
53                </xsl:if>
54                <xsl:call-template name="BasicDEBBPhysicalElementParameters" />
55                <xsl:if test="Baseboard">
56                        <xsl:apply-templates select="Baseboard" />
57                </xsl:if>
58                <xsl:if test="Sensor">
59                        <xsl:apply-templates select="Sensor" />
60                </xsl:if>
61                <xsl:if test="PowerSupply">
62                        <xsl:apply-templates select="PowerSupply" />
63                </xsl:if>
64                <xsl:if test="Processor">
65                        <xsl:apply-templates select="Processor" />
66                </xsl:if>
67                <xsl:if test="CoolingDevice">
68                        <!-- Base cooling device data -->
69                        <xsl:apply-templates select="CoolingDevice" mode="basic" />
70                        <!-- Air throughput connected, advanced, technical data -->
71                        <xsl:element name="profile">
72                                <xsl:element name="airThroughputProfile">
73                                        <xsl:element name="airThroughputStates">
74                                                <xsl:apply-templates select="CoolingDevice"
75                                                        mode="advanced" />
76                                        </xsl:element>
77                                </xsl:element>
78                        </xsl:element>
79                </xsl:if>       
80        </xsl:template>
81
82        <xsl:template match="Baseboard">
83                <xsl:element name="parameter">
84                        <xsl:attribute name="name">Baseboard</xsl:attribute>
85                        <!-- Don't call BasicDEBBPhysicalElementParameters, because parameter
86                                cannot contain parameters. Must be parameter containing properties. -->
87                        <xsl:call-template name="BasicDEBBPhysicalElementProperties" />
88                </xsl:element>
89        </xsl:template>
90
91        <xsl:template match="Sensor">
92                <xsl:element name="parameter">
93                        <xsl:attribute name="name">Sensor</xsl:attribute>
94                        <xsl:element name="property">
95                                <xsl:attribute name="name">Class</xsl:attribute>
96                                <xsl:element name="value">
97                                        <xsl:value-of select="Class" />
98                                </xsl:element>
99                        </xsl:element>
100                        <xsl:element name="property">
101                                <xsl:attribute name="name">Unit</xsl:attribute>
102                                <xsl:element name="value">
103                                        <xsl:value-of select="Unit" />
104                                </xsl:element>
105                        </xsl:element>
106                        <xsl:if test="MinValue">
107                                <xsl:element name="property">
108                                        <xsl:attribute name="name">MinValue</xsl:attribute>
109                                        <xsl:element name="value">
110                                                <xsl:value-of select="MinValue" />
111                                        </xsl:element>
112                                </xsl:element>
113                        </xsl:if>
114                        <xsl:if test="MaxValue">
115                                <xsl:element name="property">
116                                        <xsl:attribute name="name">MaxValue</xsl:attribute>
117                                        <xsl:element name="value">
118                                                <xsl:value-of select="MaxValue" />
119                                        </xsl:element>
120                                </xsl:element>
121                        </xsl:if>
122                        <xsl:if test="Factor">
123                                <xsl:element name="property">
124                                        <xsl:attribute name="name">Factor</xsl:attribute>
125                                        <xsl:element name="value">
126                                                <xsl:value-of select="Factor" />
127                                        </xsl:element>
128                                </xsl:element>
129                        </xsl:if>
130                        <xsl:if test="Accuracy">
131                                <xsl:element name="property">
132                                        <xsl:attribute name="name">Accuracy</xsl:attribute>
133                                        <xsl:element name="value">
134                                                <xsl:value-of select="Accuracy" />
135                                        </xsl:element>
136                                </xsl:element>
137                        </xsl:if>
138
139                        <!-- Don't call BasicDEBBPhysicalElementParameters, because parameter
140                                cannot contain parameters. Must be parameter containing properties. -->
141                        <xsl:call-template name="BasicDEBBPhysicalElementProperties" />
142                </xsl:element>
143        </xsl:template>
144
145        <xsl:template match="Processor">
146                <xsl:element name="computingResource">
147                        <xsl:attribute name="class">Processor</xsl:attribute>
148                        <xsl:call-template name="BasicDEBBPhysicalElementParameters" />
149                        <xsl:element name="parameter">
150                                <xsl:attribute name="name">MaxClockSpeed</xsl:attribute>
151                                <xsl:element name="value">
152                                        <xsl:value-of select="MaxClockSpeed" />
153                                </xsl:element>
154                        </xsl:element>
155                        <xsl:if test="PState | CState">
156                                <!-- If PState or CState elements present add powerProfile element -->
157                                <xsl:element name="profile">
158                                        <xsl:element name="powerProfile">
159                                                <xsl:element name="powerStates">
160                                                        <xsl:apply-templates select="PState" />
161                                                        <xsl:apply-templates select="CState" />
162                                                </xsl:element>
163                                        </xsl:element>
164                                </xsl:element>
165                        </xsl:if>
166                </xsl:element>
167        </xsl:template>
168
169        <xsl:template match="PState">
170                <xsl:element name="powerState">
171                        <xsl:call-template name="BasicStateParameters" />
172                        <!-- Voltage & Frequency -->
173                        <xsl:element name="parameter">
174                                <xsl:attribute name="name">Voltage</xsl:attribute>
175                                <xsl:element name="value">
176                                        <xsl:value-of select="Voltage" />
177                                </xsl:element>
178                        </xsl:element>
179                        <xsl:element name="parameter">
180                                <xsl:attribute name="name">Frequency</xsl:attribute>
181                                <xsl:element name="value">
182                                        <xsl:value-of select="Frequency" />
183                                </xsl:element>
184                        </xsl:element>
185                </xsl:element>
186        </xsl:template>
187
188        <xsl:template match="CState">
189                <xsl:element name="powerState">
190                        <xsl:call-template name="BasicStateParameters" />
191                </xsl:element>
192        </xsl:template>
193
194        <xsl:template name="BasicStateParameters">
195                <xsl:element name="name">
196                        <xsl:value-of select="State" />
197                </xsl:element>
198                <xsl:element name="powerUsage">
199                        <xsl:value-of select="PowerUsage" />
200                </xsl:element>
201                <xsl:element name="transition">
202                        <xsl:element name="to">
203                                <xsl:value-of select="Transition/ToState" />
204                        </xsl:element>
205                        <xsl:element name="powerUsage">
206                                <xsl:value-of select="Transition/PowerUsage" />
207                        </xsl:element>
208                        <xsl:element name="time">
209                                <xsl:value-of select="Transition/Time" />
210                        </xsl:element>
211                </xsl:element>
212        </xsl:template>
213
214        <xsl:template match="PowerSupply">
215                <xsl:element name="parameter">
216                        <xsl:attribute name="name">PowerSupply</xsl:attribute>
217                        <!-- Don't call BasicDEBBPhysicalElementParameters, because parameter
218                                cannot contain parameters. Must be parameter containing properties. -->
219                        <xsl:call-template name="BasicDEBBPhysicalElementProperties" />
220                </xsl:element>
221        </xsl:template>
222
223        <xsl:template match="Memory">
224                <xsl:element name="resourceUnit">
225                        <xsl:attribute name="class">Memory</xsl:attribute>
226                        <xsl:element name="amount">
227                                <xsl:value-of select="Capacity" />
228                        </xsl:element>
229                        <xsl:call-template name="BasicDEBBPhysicalElementParameters" />
230                </xsl:element>
231        </xsl:template>
232
233        <xsl:template match="Storage">
234                <xsl:element name="resourceUnit">
235                        <xsl:attribute name="class">Storage</xsl:attribute>
236                        <xsl:attribute name="type"><xsl:value-of select="Class" /></xsl:attribute>
237                        <xsl:element name="amount">
238                                <xsl:attribute name="unit">MB</xsl:attribute>
239                                <xsl:value-of select="Capacity" />
240                        </xsl:element>
241                        <xsl:element name="parameter">
242                                <xsl:attribute name="name">Interface</xsl:attribute>
243                                <xsl:element name="value">
244                                        <xsl:value-of select="Interface" />
245                                </xsl:element>
246                        </xsl:element>
247                        <xsl:call-template name="BasicDEBBPhysicalElementParameters" />
248                </xsl:element>
249        </xsl:template>
250
251        <xsl:template match="CoolingDevice" mode="basic">
252                <xsl:element name="parameter">
253                        <xsl:attribute name="name">CoolingDevice</xsl:attribute>
254                        <!-- Don't call BasicDEBBPhysicalElementParameters, because parameter
255                                cannot contain parameters. Must be parameter containing properties. -->
256
257                        <!-- Obligatory attribute -->
258                        <xsl:element name="property">
259                                <xsl:attribute name="name">Class</xsl:attribute>
260                                <xsl:element name="value">
261                                        <xsl:value-of select="Class" />
262                                </xsl:element>
263                        </xsl:element>
264                        <xsl:if test="MaxCoolingCapacity">
265                                <xsl:element name="property">
266                                        <xsl:attribute name="name">MaxCoolingCapacity</xsl:attribute>
267                                        <xsl:element name="value">
268                                                <xsl:value-of select="MaxCoolingCapacity" />
269                                        </xsl:element>
270                                </xsl:element>
271                        </xsl:if>
272                        <xsl:if test="MaxAirThroughput">
273                                <xsl:element name="property">
274                                        <xsl:attribute name="name">MaxAirThroughput</xsl:attribute>
275                                        <xsl:element name="value">
276                                                <xsl:value-of select="MaxAirThroughput" />
277                                        </xsl:element>
278                                </xsl:element>
279                        </xsl:if>
280                        <xsl:if test="MaxWaterThroughput">
281                                <xsl:element name="property">
282                                        <xsl:attribute name="name">MaxWaterThroughput</xsl:attribute>
283                                        <xsl:element name="value">
284                                                <xsl:value-of select="MaxWaterThroughput" />
285                                        </xsl:element>
286                                </xsl:element>
287                        </xsl:if>
288                        <xsl:call-template name="BasicDEBBPhysicalElementProperties" />
289                </xsl:element>
290        </xsl:template>
291
292        <xsl:template match="CoolingDevice" mode="advanced">
293                <xsl:attribute name="name">DummyCoolingDeviceName</xsl:attribute>
294                <xsl:if test="ThroughputProfile">
295                        <xsl:apply-templates select="ThroughputProfile" />
296                </xsl:if>
297        </xsl:template>
298
299        <xsl:template match="ThroughputProfile">
300                <xsl:apply-templates select="FlowState" />
301        </xsl:template>
302
303        <xsl:template match="FlowState">
304                <xsl:element name="airThroughputState">
305                        <xsl:element name="name">
306                                <xsl:value-of select="State" />
307                        </xsl:element>
308                        <xsl:if test="Flow">
309                                <xsl:element name="value">
310                                        <xsl:value-of select="Flow" />
311                                </xsl:element>
312                        </xsl:if>
313                        <xsl:if test="PowerUsage">
314                                <xsl:element name="powerUsage">
315                                        <xsl:value-of select="PowerUsage" />
316                                </xsl:element>
317                        </xsl:if>
318                        <xsl:if test="Transition">
319                                <xsl:apply-templates select="Transition" />
320                        </xsl:if>
321                </xsl:element>
322        </xsl:template>
323
324        <xsl:template match="Transition">
325                <xsl:element name="parameter">
326                        <xsl:attribute name="name">ToState</xsl:attribute>
327                        <xsl:element name="value">
328                                <xsl:value-of select="ToState" />
329                        </xsl:element>
330                </xsl:element>
331                <xsl:element name="parameter">
332                        <xsl:attribute name="name">PowerUsage</xsl:attribute>
333                        <xsl:element name="value">
334                                <xsl:value-of select="PowerUsage" />
335                        </xsl:element>
336                </xsl:element>
337                <xsl:element name="parameter">
338                        <xsl:attribute name="name">Time</xsl:attribute>
339                        <xsl:element name="value">
340                                <xsl:value-of select="Time" />
341                        </xsl:element>
342                </xsl:element>
343        </xsl:template>
344
345        <!-- Template for transforming basic parameters of all devices of any type -->
346        <xsl:template name="BasicDEBBPhysicalElementParameters">
347                <xsl:if test="Manufacturer">
348                        <xsl:element name="parameter">
349                                <xsl:attribute name="name">Manufacturer</xsl:attribute>
350                                <xsl:element name="value">
351                                        <xsl:value-of select="Manufacturer" />
352                                </xsl:element>
353                        </xsl:element>
354                </xsl:if>
355                <xsl:if test="Product">
356                        <xsl:element name="parameter">
357                                <xsl:attribute name="name">Product</xsl:attribute>
358                                <xsl:element name="value">
359                                        <xsl:value-of select="Product" />
360                                </xsl:element>
361                        </xsl:element>
362                </xsl:if>
363                <xsl:if test="MaxPower">
364                        <xsl:element name="parameter">
365                                <xsl:attribute name="name">MaxPower</xsl:attribute>
366                                <xsl:element name="value">
367                                        <xsl:value-of select="MaxPower" />
368                                </xsl:element>
369                        </xsl:element>
370                </xsl:if>
371        </xsl:template>
372
373        <xsl:template name="BasicDEBBPhysicalElementProperties">
374                <xsl:if test="Manufacturer">
375                        <xsl:element name="property">
376                                <xsl:attribute name="name">Manufacturer</xsl:attribute>
377                                <xsl:element name="value">
378                                        <xsl:value-of select="Manufacturer" />
379                                </xsl:element>
380                        </xsl:element>
381                </xsl:if>
382                <xsl:if test="Product">
383                        <xsl:element name="property">
384                                <xsl:attribute name="name">Product</xsl:attribute>
385                                <xsl:element name="value">
386                                        <xsl:value-of select="Product" />
387                                </xsl:element>
388                        </xsl:element>
389                </xsl:if>
390                <xsl:if test="MaxPower">
391                        <xsl:element name="property">
392                                <xsl:attribute name="name">MaxPower</xsl:attribute>
393                                <xsl:element name="value">
394                                        <xsl:value-of select="MaxPower" />
395                                </xsl:element>
396                        </xsl:element>
397                </xsl:if>
398        </xsl:template>
399</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.