ArrayList values = getValueListNodeValues(attrs);
for (int i = 0; i < attrs.getLength(); i++) { if (attrs.getValue(i) != null) CurrentValueListParameter.put(attrs.getName(i), attrs.getValue(i)); } CurrentValueListParameter.put("isDelimitedCase", "false");
       public void action (AttributeList attrs) {            // 1. grab parent node name           String parentNodeName = getParentNodeName();           // 2. try to determine values from attributes (e.g. algorithm method)           ArrayList values = getValueListNodeValues(attrs);           // 3. IT could be that no values exist because they are stored           // in PCDATA rather than as algorithm (treat in char data handler           // in this case).           if(values.size() > 0 ) { // algoritm case                ArrayList valueObjList = new ArrayList();              if( parentNodeName.equals(XDFNodeName.AXIS) )              {                    // get the last axis                    List axisList = (List) CurrentArray.getAxisList();                    Axis lastAxisObject = (Axis) axisList.get(axisList.size()-1);                    Iterator iter = values.iterator();                    while (iter.hasNext()) {                        String valuePCDATA = (String) iter.next();                        Value value = new Value (valuePCDATA);                        valueObjList.add(lastAxisObject.addAxisValue(value));                    }              } else if ( parentNodeName.equals(XDFNodeName.VALUEGROUP) )              {                   /*                    ValueGroup lastValueGroup = (ValueGroup)                         CurrentValueGroupList.get(CurrentValueGroupList.size()-1);                     newvalueGroup = lastValueGroup.addValueGroup(newvalueGroup);                   */                if ( LastValueGroupParentObject instanceof Parameter )                {                    Parameter myParamObject = (Parameter) LastValueGroupParentObject;                    Iterator iter = values.iterator();                    while (iter.hasNext()) {                        String valuePCDATA = (String) iter.next();                        Value value = new Value (valuePCDATA);                        valueObjList.add(myParamObject.addValue(value));                    }                } else if ( LastValueGroupParentObject instanceof Axis )                {                    // get the last axis                    Axis myAxisObject = (Axis) LastValueGroupParentObject;                    Iterator iter = values.iterator();                    while (iter.hasNext()) {                         String valuePCDATA = (String) iter.next();                        Value value = new Value (valuePCDATA);                        valueObjList.add(myAxisObject.addAxisValue(value));                    }                } else {                   Log.errorln("Error: unknown valueGroupParent "+LastValueGroupParentObject+                               " cant treat for "+XDFNodeName.VALUELIST);                   System.exit(-1); // fatal error, shut down                 }              } else if ( parentNodeName.equals(XDFNodeName.PARAMETER) )              {                  Iterator iter = values.iterator();                 while (iter.hasNext())                  {                    String valuePCDATA = (String) iter.next();                    Value value = new Value (valuePCDATA);                    valueObjList.add(LastParameterObject.addValue(value));                 }              } else {                 Log.errorln("Error: weird parent node "+parentNodeName+" for "+XDFNodeName.VALUELIST);                 System.exit(-1); // fatal error, shut down               }              // add these new value objects to all open groups              Iterator iter1 = CurrentValueGroupList.iterator();              Iterator iter2 = valueObjList.iterator();              while (iter1.hasNext())               {                 ValueGroup nextValueGroupObj = (ValueGroup) iter1.next();                 while (iter2.hasNext())                  {                    Value nextValueObj = (Value) iter2.next();                    nextValueObj.addToGroup(nextValueGroupObj);                 }                 // reset iter2                 iter2 = valueObjList.iterator();              }           } else { // PCDATA case              String delimiter = DefaultValueListDelimiter;              String repeatable = DefaultValueListRepeatable;              // pickup overriding values from attribute list              for (int i = 0; i < attrs.getLength(); i++)              {                   String name = attrs.getName(i);                   if ( name.equals("delimiter") ) {                      delimiter = attrs.getValue(i);                  } else if ( name.equals("repeatable")) {                     repeatable = attrs.getValue(i);                  }              }              CurrentValueListParameter = new Hashtable(); // re-init              CurrentValueListParameter.put("parentNode", parentNodeName);              CurrentValueListParameter.put("delimiter", delimiter);              CurrentValueListParameter.put("repeatable", repeatable);           }       }