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

Revision 692, 13.9 KB checked in by gosiaw, 12 years ago (diff)

Changes after telco 6.12.2012

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