lcsim/src/org/lcsim/job
diff -u -r1.17 -r1.18
--- JobControlManager.java 12 Mar 2009 20:24:37 -0000 1.17
+++ JobControlManager.java 12 Mar 2009 23:44:03 -0000 1.18
@@ -252,151 +252,7 @@
loop = new LCSimLoop();
root = null;
}
-
- /**
- * Converts a String <code>value</code> to a Java class specified by <code>propertyType</code>.
- * @param value The string value from the XML parameter.
- * @param propertyType The type of the parameter.
- * @return The value of <code>value</code> as Class <code>propertyType</code>.
- */
- private Object convertParameter(Element parameterElement, Class propertyType)
- {
- // The Object that will be returned and passed to the Driver's setter.
- Object o = null;
-
- // The contents of the parameter's XML element.
- String value = parameterElement.getText();
-
- // Single int.
- if (propertyType.equals(int.class))
- {
- o = Integer.valueOf(value);
- }
- // Single String.
- else if (propertyType.equals(String.class))
- {
- o = value;
- }
- // Single double.
- else if (propertyType.equals(double.class))
- {
- o = Double.valueOf(value);
- }
- // Single float.
- else if (propertyType.equals(float.class))
- {
- o = Float.valueOf(value);
- }
- // Single boolean.
- else if (propertyType.equals(boolean.class))
- {
- o = Boolean.valueOf(value);
- }
- // Single Hep3Vector type.
- else if (propertyType.equals(Hep3Vector.class))
- {
- StringTokenizer tokenize = new StringTokenizer(value);
- double x = Double.valueOf(tokenize.nextToken());
- double y = Double.valueOf(tokenize.nextToken());
- double z = Double.valueOf(tokenize.nextToken());
- o = new BasicHep3Vector(x, y, z);
- }
- // 1d array of doubles.
- else if (propertyType.getName().equals("[D"))
- {
- StringTokenizer tokenize = new StringTokenizer(value);
- int size = tokenize.countTokens();
- double da[] = new double[size];
- int i = 0;
- while (tokenize.hasMoreTokens())
- {
- da[i] = Double.valueOf(tokenize.nextToken());
- ++i;
- }
- o = da;
- }
- // 1d array of ints.
- else if (propertyType.getName().equals("[I"))
- {
- StringTokenizer tokenize = new StringTokenizer(value);
- int size = tokenize.countTokens();
- int ia[] = new int[size];
- int i = 0;
- while (tokenize.hasMoreTokens())
- {
- ia[i] = Integer.valueOf(tokenize.nextToken());
- ++i;
- }
- o = ia;
- }
- // 1d array of floats.
- else if (propertyType.getName().equals("[F"))
- {
- StringTokenizer tokenize = new StringTokenizer(value);
- int size = tokenize.countTokens();
- float fa[] = new float[size];
- int i = 0;
- while (tokenize.hasMoreTokens())
- {
- fa[i] = Float.valueOf(tokenize.nextToken());
- ++i;
- }
- o = fa;
- }
- // 1d array of strings.
- else if (propertyType.getName().equals("[Ljava.lang.String;"))
- {
- StringTokenizer tokenize = new StringTokenizer(value);
- int size = tokenize.countTokens();
- String sa[] = new String[size];
- int i = 0;
- while (tokenize.hasMoreTokens())
- {
- sa[i] = tokenize.nextToken();
- ++i;
- }
- o = sa;
- }
- // 1d array of booleans.
- else if (propertyType.getName().equals("[Z"))
- {
- StringTokenizer tokenize = new StringTokenizer(value);
- int size = tokenize.countTokens();
- boolean ba[] = new boolean[size];
- int i = 0;
- while (tokenize.hasMoreTokens())
- {
- ba[i] = Boolean.valueOf(tokenize.nextToken());
- ++i;
- }
- o = ba;
- }
- // Single File type.
- else if (propertyType.equals(File.class))
- {
- o = new File(value);
- }
- // Single URL type.
- else if (propertyType.equals(URL.class))
- {
- try
- {
- o = new URL(value);
- }
- catch (MalformedURLException x)
- {
- throw new RuntimeException("Bad URL " + value + " in XML job description.",x);
- }
- }
- // Element to be processed by user's setter method.
- else if (propertyType.equals(Element.class))
- {
- o = parameterElement;
- }
-
- return o;
- }
-
+
/**
* Add a Driver to the Driver map.
* @param name The unique name of the Driver.
@@ -440,21 +296,7 @@
logStream.println("-- End System Properties");
logStream.println();
}
-
- private static Class getPrimitiveType(String name)
- {
- if (name.equals("byte")) return byte.class;
- if (name.equals("short")) return short.class;
- if (name.equals("int")) return int.class;
- if (name.equals("long")) return long.class;
- if (name.equals("char")) return char.class;
- if (name.equals("float")) return float.class;
- if (name.equals("double")) return double.class;
- if (name.equals("boolean")) return boolean.class;
- if (name.equals("String")) return String.class;
- return null;
- }
-
+
private void setupInputFiles()
{
// Read local files.
@@ -869,7 +711,8 @@
else if (methList.size() > 1)
{
if (parameterElement.getAttribute("type") == null)
- throw new RuntimeException("Parameter " + pname + " is overloaded but type field is missing from parameter!");
+ throw new RuntimeException("Parameter " + pname + " in Driver " + driverClass.getCanonicalName()
+ + " is overloaded, but a type field is missing from the parameter's xml element.");
try
{
// Try a primitive type first.
@@ -902,7 +745,6 @@
}
// Create an Object for next Driver parameter using the conversion method.
- //System.out.println(parameterElement.getValue());
Object nextParameter = convertParameter(parameterElement, propertyType);
// Invoke the setter.
@@ -936,7 +778,165 @@
if (driverFind != null)
driverExec.add(driverFind);
else
- throw new RuntimeException("Driver not found: " + driverName);
+ throw new RuntimeException("Driver " + driverName + " was not found.");
+ }
+ }
+
+ /**
+ * Converts a String <code>value</code> to a Java class specified by <code>propertyType</code>.
+ * @param value The string value from the XML parameter.
+ * @param propertyType The type of the parameter.
+ * @return The value of <code>value</code> as Class <code>propertyType</code>.
+ */
+ private Object convertParameter(Element parameterElement, Class propertyType)
+ {
+ // The Object that will be returned and passed to the Driver's setter.
+ Object o = null;
+
+ // The contents of the parameter's XML element.
+ String value = parameterElement.getText();
+
+ // Single int.
+ if (propertyType.equals(int.class))
+ {
+ o = Integer.valueOf(value);
+ }
+ // Single String.
+ else if (propertyType.equals(String.class))
+ {
+ o = value;
+ }
+ // Single double.
+ else if (propertyType.equals(double.class))
+ {
+ o = Double.valueOf(value);
+ }
+ // Single float.
+ else if (propertyType.equals(float.class))
+ {
+ o = Float.valueOf(value);
+ }
+ // Single boolean.
+ else if (propertyType.equals(boolean.class))
+ {
+ o = Boolean.valueOf(value);
+ }
+ // Single Hep3Vector type.
+ else if (propertyType.equals(Hep3Vector.class))
+ {
+ StringTokenizer tokenize = new StringTokenizer(value);
+ double x = Double.valueOf(tokenize.nextToken());
+ double y = Double.valueOf(tokenize.nextToken());
+ double z = Double.valueOf(tokenize.nextToken());
+ o = new BasicHep3Vector(x, y, z);
+ }
+ // 1d array of doubles.
+ else if (propertyType.getName().equals("[D"))
+ {
+ StringTokenizer tokenize = new StringTokenizer(value);
+ int size = tokenize.countTokens();
+ double da[] = new double[size];
+ int i = 0;
+ while (tokenize.hasMoreTokens())
+ {
+ da[i] = Double.valueOf(tokenize.nextToken());
+ ++i;
+ }
+ o = da;
+ }
+ // 1d array of ints.
+ else if (propertyType.getName().equals("[I"))
+ {
+ StringTokenizer tokenize = new StringTokenizer(value);
+ int size = tokenize.countTokens();
+ int ia[] = new int[size];
+ int i = 0;
+ while (tokenize.hasMoreTokens())
+ {
+ ia[i] = Integer.valueOf(tokenize.nextToken());
+ ++i;
+ }
+ o = ia;
}
+ // 1d array of floats.
+ else if (propertyType.getName().equals("[F"))
+ {
+ StringTokenizer tokenize = new StringTokenizer(value);
+ int size = tokenize.countTokens();
+ float fa[] = new float[size];
+ int i = 0;
+ while (tokenize.hasMoreTokens())
+ {
+ fa[i] = Float.valueOf(tokenize.nextToken());
+ ++i;
+ }
+ o = fa;
+ }
+ // 1d array of strings.
+ else if (propertyType.getName().equals("[Ljava.lang.String;"))
+ {
+ StringTokenizer tokenize = new StringTokenizer(value);
+ int size = tokenize.countTokens();
+ String sa[] = new String[size];
+ int i = 0;
+ while (tokenize.hasMoreTokens())
+ {
+ sa[i] = tokenize.nextToken();
+ ++i;
+ }
+ o = sa;
+ }
+ // 1d array of booleans.
+ else if (propertyType.getName().equals("[Z"))
+ {
+ StringTokenizer tokenize = new StringTokenizer(value);
+ int size = tokenize.countTokens();
+ boolean ba[] = new boolean[size];
+ int i = 0;
+ while (tokenize.hasMoreTokens())
+ {
+ ba[i] = Boolean.valueOf(tokenize.nextToken());
+ ++i;
+ }
+ o = ba;
+ }
+ // Single File type.
+ else if (propertyType.equals(File.class))
+ {
+ o = new File(value);
+ }
+ // Single URL type.
+ else if (propertyType.equals(URL.class))
+ {
+ try
+ {
+ o = new URL(value);
+ }
+ catch (MalformedURLException x)
+ {
+ throw new RuntimeException("Bad URL " + value + " in XML job description.",x);
+ }
+ }
+ // Element to be processed by user's setter method.
+ else if (propertyType.equals(Element.class))
+ {
+ o = parameterElement;
+ }
+
+ return o;
}
+
+ private static Class getPrimitiveType(String name)
+ {
+ if (name.equals("byte")) return byte.class;
+ if (name.equals("short")) return short.class;
+ if (name.equals("int")) return int.class;
+ if (name.equals("long")) return long.class;
+ if (name.equals("char")) return char.class;
+ if (name.equals("float")) return float.class;
+ if (name.equals("double")) return double.class;
+ if (name.equals("boolean")) return boolean.class;
+ if (name.equals("String")) return String.class;
+ return null;
+ }
}