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

Revision 693, 13.8 KB checked in by gosiaw, 12 years ago (diff)

Optional elements in powerState removed.

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                                                                        <xsl:apply-templates select="PState/Transition" />
165                                                                </xsl:element>
166                                                        </xsl:element>
167                                                </xsl:if>
168                                                <xsl:apply-templates select="PState" />
169                                                <xsl:apply-templates select="CState" />
170                                        </xsl:element>
171                                </xsl:element>
172                        </xsl:if>
173                </xsl:element>
174        </xsl:template>
175
176        <xsl:template match="PState">
177                <xsl:element name="parameter">
178                        <xsl:attribute name="name">pState</xsl:attribute>
179                        <xsl:element name="property">
180                                <xsl:attribute name="name">name</xsl:attribute>
181                                <xsl:element name="value">
182                                        <xsl:value-of select="State" />
183                                </xsl:element>
184                        </xsl:element>
185                        <xsl:element name="property">
186                                <xsl:attribute name="name">frequency</xsl:attribute>
187                                <xsl:element name="value">
188                                        <xsl:value-of select="Frequency" />
189                                </xsl:element>
190                        </xsl:element>
191                        <xsl:element name="property">
192                                <xsl:attribute name="name">voltage</xsl:attribute>
193                                <xsl:element name="value">
194                                        <xsl:value-of select="Voltage" />
195                                </xsl:element>
196                        </xsl:element>
197                        <xsl:element name="property">
198                                <xsl:attribute name="name">powerUsage</xsl:attribute>
199                                <xsl:element name="value">
200                                        <xsl:value-of select="PowerUsage" />
201                                </xsl:element>
202                        </xsl:element>
203                </xsl:element>
204        </xsl:template>
205
206        <xsl:template match="CState">
207                <!-- <xsl:element name="powerState"> -->
208                <!-- <xsl:call-template name="BasicStateParameters" /> -->
209                <!-- </xsl:element> -->
210        </xsl:template>
211
212        <xsl:template match="PState/Transition">
213                <xsl:element name="transition">
214                        <xsl:element name="to">
215                                <xsl:value-of select="ToState" />
216                        </xsl:element>
217                        <xsl:element name="powerUsage">
218                                <xsl:value-of select="PowerUsage" />
219                        </xsl:element>
220                        <xsl:element name="time">
221                                <xsl:value-of select="Time" />
222                        </xsl:element>
223                </xsl:element>
224        </xsl:template>
225
226        <xsl:template name="BasicStateParameters">
227                <xsl:element name="name">
228                        <xsl:value-of select="State" />
229                </xsl:element>
230                <xsl:element name="powerUsage">
231                        <xsl:value-of select="PowerUsage" />
232                </xsl:element>
233                <xsl:element name="transition">
234                        <xsl:element name="to">
235                                <xsl:value-of select="Transition/ToState" />
236                        </xsl:element>
237                        <xsl:element name="powerUsage">
238                                <xsl:value-of select="Transition/PowerUsage" />
239                        </xsl:element>
240                        <xsl:element name="time">
241                                <xsl:value-of select="Transition/Time" />
242                        </xsl:element>
243                </xsl:element>
244        </xsl:template>
245
246        <xsl:template match="PowerSupply">
247                <xsl:element name="parameter">
248                        <xsl:attribute name="name">powerSupply</xsl:attribute>
249                        <!-- Don't call BasicDEBBPhysicalElementParameters, because parameter
250                                cannot contain parameters. Must be parameter containing properties. -->
251                        <xsl:call-template name="BasicDEBBPhysicalElementProperties" />
252                </xsl:element>
253        </xsl:template>
254
255        <xsl:template match="Memory">
256                <xsl:element name="resourceUnit">
257                        <xsl:attribute name="class">Memory</xsl:attribute>
258                        <xsl:element name="amount">
259                                <xsl:value-of select="Capacity" />
260                        </xsl:element>
261                        <xsl:call-template name="BasicDEBBPhysicalElementParameters" />
262                </xsl:element>
263        </xsl:template>
264
265        <xsl:template match="Storage">
266                <xsl:element name="resourceUnit">
267                        <xsl:attribute name="class">Storage</xsl:attribute>
268                        <xsl:attribute name="type"><xsl:value-of select="Class" /></xsl:attribute>
269                        <xsl:element name="amount">
270                                <xsl:attribute name="unit">MB</xsl:attribute>
271                                <xsl:value-of select="Capacity" />
272                        </xsl:element>
273                        <xsl:element name="parameter">
274                                <xsl:attribute name="name">interface</xsl:attribute>
275                                <xsl:element name="value">
276                                        <xsl:value-of select="Interface" />
277                                </xsl:element>
278                        </xsl:element>
279                        <xsl:call-template name="BasicDEBBPhysicalElementParameters" />
280                </xsl:element>
281        </xsl:template>
282
283        <xsl:template match="CoolingDevice" mode="basic">
284                <xsl:element name="parameter">
285                        <xsl:attribute name="name">CoolingDevice</xsl:attribute>
286                        <!-- Don't call BasicDEBBPhysicalElementParameters, because parameter
287                                cannot contain parameters. Must be parameter containing properties. -->
288
289                        <!-- Obligatory attribute -->
290                        <xsl:element name="property">
291                                <xsl:attribute name="name">class</xsl:attribute>
292                                <xsl:element name="value">
293                                        <xsl:value-of select="Class" />
294                                </xsl:element>
295                        </xsl:element>
296                        <xsl:if test="MaxCoolingCapacity">
297                                <xsl:element name="property">
298                                        <xsl:attribute name="name">maxCoolingCapacity</xsl:attribute>
299                                        <xsl:element name="value">
300                                                <xsl:value-of select="MaxCoolingCapacity" />
301                                        </xsl:element>
302                                </xsl:element>
303                        </xsl:if>
304                        <xsl:if test="MaxAirThroughput">
305                                <xsl:element name="property">
306                                        <xsl:attribute name="name">maxAirThroughput</xsl:attribute>
307                                        <xsl:element name="value">
308                                                <xsl:value-of select="MaxAirThroughput" />
309                                        </xsl:element>
310                                </xsl:element>
311                        </xsl:if>
312                        <xsl:if test="MaxWaterThroughput">
313                                <xsl:element name="property">
314                                        <xsl:attribute name="name">maxWaterThroughput</xsl:attribute>
315                                        <xsl:element name="value">
316                                                <xsl:value-of select="MaxWaterThroughput" />
317                                        </xsl:element>
318                                </xsl:element>
319                        </xsl:if>
320                        <xsl:call-template name="BasicDEBBPhysicalElementProperties" />
321                </xsl:element>
322        </xsl:template>
323
324        <xsl:template match="CoolingDevice" mode="advanced">
325                <xsl:attribute name="name">DummyCoolingDeviceName</xsl:attribute>
326                <xsl:if test="ThroughputProfile">
327                        <xsl:apply-templates select="ThroughputProfile" />
328                </xsl:if>
329        </xsl:template>
330
331        <xsl:template match="ThroughputProfile">
332                <xsl:apply-templates select="FlowState" />
333        </xsl:template>
334
335        <xsl:template match="FlowState">
336                <xsl:element name="airThroughputState">
337                        <xsl:element name="name">
338                                <xsl:value-of select="State" />
339                        </xsl:element>
340                        <xsl:if test="Flow">
341                                <xsl:element name="value">
342                                        <xsl:value-of select="Flow" />
343                                </xsl:element>
344                        </xsl:if>
345                        <xsl:if test="PowerUsage">
346                                <xsl:element name="powerUsage">
347                                        <xsl:value-of select="PowerUsage" />
348                                </xsl:element>
349                        </xsl:if>
350                        <xsl:if test="Transition">
351                                <xsl:apply-templates select="Transition" />
352                        </xsl:if>
353                </xsl:element>
354        </xsl:template>
355
356        <xsl:template match="Transition">
357                <xsl:element name="parameter">
358                        <xsl:attribute name="name">toState</xsl:attribute>
359                        <xsl:element name="value">
360                                <xsl:value-of select="ToState" />
361                        </xsl:element>
362                </xsl:element>
363                <xsl:element name="parameter">
364                        <xsl:attribute name="name">powerUsage</xsl:attribute>
365                        <xsl:element name="value">
366                                <xsl:value-of select="PowerUsage" />
367                        </xsl:element>
368                </xsl:element>
369                <xsl:element name="parameter">
370                        <xsl:attribute name="name">time</xsl:attribute>
371                        <xsl:element name="value">
372                                <xsl:value-of select="Time" />
373                        </xsl:element>
374                </xsl:element>
375        </xsl:template>
376
377        <!-- Template for transforming basic parameters of all devices of any type -->
378        <xsl:template name="BasicDEBBPhysicalElementParameters">
379                <xsl:if test="Manufacturer">
380                        <xsl:element name="parameter">
381                                <xsl:attribute name="name">manufacturer</xsl:attribute>
382                                <xsl:element name="value">
383                                        <xsl:value-of select="Manufacturer" />
384                                </xsl:element>
385                        </xsl:element>
386                </xsl:if>
387                <xsl:if test="Product">
388                        <xsl:element name="parameter">
389                                <xsl:attribute name="name">product</xsl:attribute>
390                                <xsl:element name="value">
391                                        <xsl:value-of select="Product" />
392                                </xsl:element>
393                        </xsl:element>
394                </xsl:if>
395                <xsl:if test="MaxPower">
396                        <xsl:element name="parameter">
397                                <xsl:attribute name="name">maxPower</xsl:attribute>
398                                <xsl:element name="value">
399                                        <xsl:value-of select="MaxPower" />
400                                </xsl:element>
401                        </xsl:element>
402                </xsl:if>
403        </xsl:template>
404
405        <xsl:template name="BasicDEBBPhysicalElementProperties">
406                <xsl:if test="Manufacturer">
407                        <xsl:element name="property">
408                                <xsl:attribute name="name">manufacturer</xsl:attribute>
409                                <xsl:element name="value">
410                                        <xsl:value-of select="Manufacturer" />
411                                </xsl:element>
412                        </xsl:element>
413                </xsl:if>
414                <xsl:if test="Product">
415                        <xsl:element name="property">
416                                <xsl:attribute name="name">product</xsl:attribute>
417                                <xsl:element name="value">
418                                        <xsl:value-of select="Product" />
419                                </xsl:element>
420                        </xsl:element>
421                </xsl:if>
422                <xsl:if test="MaxPower">
423                        <xsl:element name="property">
424                                <xsl:attribute name="name">maxPower</xsl:attribute>
425                                <xsl:element name="value">
426                                        <xsl:value-of select="MaxPower" />
427                                </xsl:element>
428                        </xsl:element>
429                </xsl:if>
430        </xsl:template>
431</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.