1 package org.lcsim.detector.converter.compact;
2
3 import org.jdom.Element;
4 import org.jdom.JDOMException;
5 import org.lcsim.detector.IParameters;
6 import org.lcsim.detector.Parameters;
7 import org.lcsim.detector.ParametersStore;
8 import org.lcsim.detector.converter.XMLConverter;
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 public class ParametersConverter implements XMLConverter
31 {
32 public void convert( Element element ) throws JDOMException
33 {
34 if ( element.getAttribute( "name" ) == null )
35 {
36 throw new RuntimeException( "Top element doesn't have a name attribute." );
37 }
38
39 IParameters param = new Parameters( element.getAttributeValue( "name" ) );
40
41 for ( Object o : element.getChildren() )
42 {
43 Element e = ( Element ) o;
44 String elementName = e.getName();
45 if ( elementName.contains( "Parameter" ) )
46 {
47 if ( e.getAttribute( "name" ) == null )
48 {
49 System.out.println( "Parameter is missing the name attribute." );
50 }
51
52 String paramName = e.getAttributeValue( "name" );
53 String value = e.getValue();
54
55 if ( value == null )
56 {
57 System.out.println( "Parameter <" + paramName + "> is missing a value." );
58 }
59
60 String[] values = value.split( " " );
61
62 if ( elementName.equals( "integerParameter" ) )
63 {
64 param.addIntegerParameter( paramName, Integer.parseInt( value ) );
65 }
66 else if ( elementName.equals( "integerArrayParameter" ) )
67 {
68 int[] intValues = new int[ values.length ];
69 for ( int i = 0; i < values.length; i++ )
70 {
71 if ( values[ i ] != null && !values[ i ].equals( "" ) )
72 intValues[ i ] = Integer.parseInt( values[ i ] );
73 }
74 param.addIntegerArrayParameter( paramName, intValues );
75 }
76 else if ( elementName.equals( "doubleParameter" ) )
77 {
78 param.addDoubleParameter( paramName, Double.parseDouble( value ) );
79 }
80 else if ( elementName.equals( "doubleArrayParameter" ) )
81 {
82 double[] doubleValues = new double[ values.length ];
83 for ( int i = 0; i < values.length; i++ )
84 {
85 if ( values[ i ] != null && !values[ i ].equals( "" ) )
86 doubleValues[ i ] = Double.parseDouble( values[ i ] );
87 }
88 param.addDoubleArrayParameter( paramName, doubleValues );
89 }
90 else if ( elementName.equals( "stringParameter" ) )
91 {
92 param.addStringParameter( paramName, value );
93 }
94 else if ( elementName.equals( "stringArrayParameter" ) )
95 {
96 String[] stringValues = new String[ values.length ];
97 for ( int i = 0; i < values.length; i++ )
98 {
99 if ( values[ i ] != null && !values[ i ].equals( "" ) )
100 stringValues[ i ] = values[ i ];
101 };
102 param.addStringArrayParameter( paramName, stringValues );
103 }
104 else if ( elementName.equals( "booleanParameter" ) )
105 {
106 param.addBooleanParameter( paramName, Boolean.parseBoolean( value ) );
107 }
108 else if ( elementName.equals( "booleanArrayParameter" ) )
109 {
110 boolean[] booleanValues = new boolean[ values.length ];
111 for ( int i = 0; i < values.length; i++ )
112 {
113 if ( values[ i ] != null && !values[ i ].equals( "" ) )
114 booleanValues[ i ] = Boolean.parseBoolean( values[ i ] );
115 }
116 param.addBooleanArrayParameter( paramName, booleanValues );
117 }
118 }
119 }
120
121 ParametersStore.getInstance().add( param );
122 }
123 }