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

Revision 795, 14.5 KB checked in by gosiaw, 12 years ago (diff)

Generating <profile> section for CoolingDevice? only if it has ThroughputProfile? defined

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