bugfixes mainly...
[mir.git] / source / mir / producer / reader / DefaultProducerNodeBuilders.java
index aa145cc..97feb4f 100755 (executable)
@@ -156,8 +156,8 @@ public class DefaultProducerNodeBuilders {
 
       key = (String) anAttributes.get(ENUMERATION_KEY_ATTRIBUTE);
       definition = (String) anAttributes.get(ENUMERATION_DEFINITION_ATTRIBUTE);
-      selection = (String) anAttributes.get(ENUMERATION_SELECTION_ATTRIBUTE);
-      order = (String) anAttributes.get(ENUMERATION_ORDER_ATTRIBUTE);
+      selection = (String) ReaderTool.getStringAttributeWithDefault(anAttributes, ENUMERATION_SELECTION_ATTRIBUTE, "");
+      order = (String) ReaderTool.getStringAttributeWithDefault(anAttributes, ENUMERATION_ORDER_ATTRIBUTE, "");
       limit = (String) anAttributes.get(ENUMERATION_LIMIT_ATTRIBUTE);
       skip = (String) anAttributes.get(ENUMERATION_SKIP_ATTRIBUTE);
     };
@@ -191,7 +191,7 @@ public class DefaultProducerNodeBuilders {
     private final static String   LIST_SKIP_ATTRIBUTE = SKIP_ATTRIBUTE;
     private final static String[] LIST_REQUIRED_ATTRIBUTES = { LIST_KEY_ATTRIBUTE, LIST_DEFINITION_ATTRIBUTE };
     private final static String[] LIST_OPTIONAL_ATTRIBUTES = { LIST_SELECTION_ATTRIBUTE, LIST_ORDER_ATTRIBUTE, LIST_SKIP_ATTRIBUTE, LIST_LIMIT_ATTRIBUTE};
-    private final static String[] LIST_SUBNODES = {LIST_DEFAULT_SUBNODE};
+    private final static String[] LIST_SUBNODES = {};
 
     private String key;
     private String definition;
@@ -212,14 +212,14 @@ public class DefaultProducerNodeBuilders {
 
       key = (String) anAttributes.get(LIST_KEY_ATTRIBUTE);
       definition = (String) anAttributes.get(LIST_DEFINITION_ATTRIBUTE);
-      selection = (String) anAttributes.get(LIST_SELECTION_ATTRIBUTE);
-      order = (String) anAttributes.get(LIST_ORDER_ATTRIBUTE);
+      selection = (String) ReaderTool.getStringAttributeWithDefault(anAttributes, LIST_SELECTION_ATTRIBUTE, "");
+      order = (String) ReaderTool.getStringAttributeWithDefault(anAttributes, LIST_ORDER_ATTRIBUTE, "");
       limit = (String) anAttributes.get(LIST_LIMIT_ATTRIBUTE);
       skip = (String) anAttributes.get(LIST_SKIP_ATTRIBUTE);
     };
 
     public ProducerNode constructNode() {
-      return new EntityListProducerNode(key, model, definition, selection, order, limit, skip, getSubNode(LIST_DEFAULT_SUBNODE ));
+      return new EntityListProducerNode(key, model, definition, selection, order, limit, skip, null );
     };
 
     public static class factory implements ProducerNodeBuilderFactory {
@@ -269,7 +269,7 @@ public class DefaultProducerNodeBuilders {
     private final static String   RESOURCEBUNDLE_DEFAULT_SUBNODE = "default";
     private final static String[] RESOURCEBUNDLE_REQUIRED_ATTRIBUTES = { RESOURCEBUNDLE_KEY_ATTRIBUTE, RESOURCEBUNDLE_BUNDLE_ATTRIBUTE };
     private final static String[] RESOURCEBUNDLE_OPTIONAL_ATTRIBUTES = { RESOURCEBUNDLE_LANGUAGE_ATTRIBUTE};
-    private final static String[] RESOURCEBUNDLE_SUBNODES = {RESOURCEBUNDLE_DEFAULT_SUBNODE};
+    private final static String[] RESOURCEBUNDLE_SUBNODES = {};
 
     private String key;
     private String bundle;
@@ -288,7 +288,7 @@ public class DefaultProducerNodeBuilders {
     };
 
     public ProducerNode constructNode() {
-      return new ResourceBundleProducerNode(key, bundle, language, getSubNode(RESOURCEBUNDLE_DEFAULT_SUBNODE ));
+      return new ResourceBundleProducerNode(key, bundle, language, null );
     };
   }
 
@@ -434,10 +434,12 @@ public class DefaultProducerNodeBuilders {
     private final static String   BATCHER_MINBATCHSIZE_ATTRIBUTE = "minbatchsize";
     private final static String   BATCHER_SKIP_ATTRIBUTE = SKIP_ATTRIBUTE;
 
+    private final static String   BATCHER_PROCESS_ATTRIBUTE = "process";
+
     private final static String   BATCHER_BATCH_SUBNODE = "batches";
     private final static String   BATCHER_BATCHLIST_SUBNODE = "batchlist";
     private final static String[] BATCHER_REQUIRED_ATTRIBUTES = { BATCHER_DATAKEY_ATTRIBUTE, BATCHER_INFOKEY_ATTRIBUTE, BATCHER_DEFINITION_ATTRIBUTE, BATCHER_BATCHSIZE_ATTRIBUTE };
-    private final static String[] BATCHER_OPTIONAL_ATTRIBUTES = { BATCHER_SELECTION_ATTRIBUTE, BATCHER_ORDER_ATTRIBUTE, BATCHER_MINBATCHSIZE_ATTRIBUTE, BATCHER_SKIP_ATTRIBUTE };
+    private final static String[] BATCHER_OPTIONAL_ATTRIBUTES = { BATCHER_SELECTION_ATTRIBUTE, BATCHER_ORDER_ATTRIBUTE, BATCHER_MINBATCHSIZE_ATTRIBUTE, BATCHER_SKIP_ATTRIBUTE, BATCHER_PROCESS_ATTRIBUTE };
     private final static String[] BATCHER_SUBNODES = { BATCHER_BATCH_SUBNODE, BATCHER_BATCHLIST_SUBNODE };
 
     // ML: batchSize, minBatchSize, skip should be expressions!
@@ -448,10 +450,10 @@ public class DefaultProducerNodeBuilders {
     private String definition;
     private String selection;
     private String order;
-    private int batchSize;
-    private int minBatchSize;
-    private int skip;
-
+    private String batchSize;
+    private String minBatchSize;
+    private String skip;
+    private String process;
 
     public BatchingProducerNodeBuilder(EntityAdapterModel aModel) {
       super(BATCHER_SUBNODES);
@@ -468,9 +470,10 @@ public class DefaultProducerNodeBuilders {
       selection = ReaderTool.getStringAttributeWithDefault(anAttributes, BATCHER_SELECTION_ATTRIBUTE, "" );
       order = ReaderTool.getStringAttributeWithDefault(anAttributes, BATCHER_ORDER_ATTRIBUTE, "" );
 
-      batchSize = ReaderTool.getIntegerAttributeWithDefault(anAttributes, BATCHER_BATCHSIZE_ATTRIBUTE, 20 );
-      minBatchSize = ReaderTool.getIntegerAttributeWithDefault(anAttributes, BATCHER_MINBATCHSIZE_ATTRIBUTE, 0 );
-      skip = ReaderTool.getIntegerAttributeWithDefault(anAttributes, BATCHER_SKIP_ATTRIBUTE, 0 );
+      batchSize = ReaderTool.getStringAttributeWithDefault(anAttributes, BATCHER_BATCHSIZE_ATTRIBUTE, "20" );
+      minBatchSize = ReaderTool.getStringAttributeWithDefault(anAttributes, BATCHER_MINBATCHSIZE_ATTRIBUTE, "0" );
+      skip = ReaderTool.getStringAttributeWithDefault(anAttributes, BATCHER_SKIP_ATTRIBUTE, "0" );
+      process = ReaderTool.getStringAttributeWithDefault(anAttributes, BATCHER_PROCESS_ATTRIBUTE, "-1" );
     };
 
     public ProducerNode constructNode() {
@@ -484,6 +487,7 @@ public class DefaultProducerNodeBuilders {
           batchSize,
           minBatchSize,
           skip,
+          process,
           getSubNode( BATCHER_BATCH_SUBNODE ),
           getSubNode( BATCHER_BATCHLIST_SUBNODE )
       );
@@ -537,6 +541,34 @@ public class DefaultProducerNodeBuilders {
 
 ////////////////////////////////////////////////////////////////////////////////
 
+  public static class ScriptedProducerParameterNodeBuilder implements ProducerNodeBuilder {
+    private String parameterName;
+    private String scriptedNodeName;
+
+    public ScriptedProducerParameterNodeBuilder(String aScriptedNodeName, String aParameterName) {
+      parameterName = aParameterName;
+      scriptedNodeName = aScriptedNodeName;
+    }
+
+    public void setSubNode(String aName, ProducerNode aNode) {
+    };
+
+    public Set getAvailableSubNodes() {
+      return new HashSet();
+    };
+
+    public void setAttributes(Map anAttributes) throws ProducerConfigExc {
+      if (!anAttributes.isEmpty())
+        throw new ProducerConfigExc("No parameters allowed here");
+    };
+
+    public ProducerNode constructNode() {
+      return new ScriptedProducerNodeDefinition.NodeParameterProducerNode(scriptedNodeName, parameterName);
+    };
+  }
+
+////////////////////////////////////////////////////////////////////////////////
+
   public static class ScriptedProducerNodeBuilder implements ProducerNodeBuilder {
     private ScriptedProducerNodeDefinition definition;
     private Map nodeParameterValues;