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

Revision 696, 14.1 KB checked in by gosiaw, 12 years ago (diff)

powerState elements corrected once again

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