Ignore:
Timestamp:
2005-02-22T10:58:15+13:00 (19 years ago)
Author:
kjdon
Message:

moved the argument details xml parsing code to Argument.parseXML - the same code was duplicated in BuildOptions, PluginManager, ClassifierManager

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gli/src/org/greenstone/gatherer/cdm/Argument.java

    r8313 r9126  
    530530    text.append(value);
    531531    return text.toString();
    532     }   
     532    }
     533
     534    /** parse the <Option> XML from eg import.pl -xml or pluginfo.pl -xml */
     535    public void parseXML(Element option) {
     536
     537    for(Node node = option.getFirstChild(); node != null; node = node.getNextSibling()) {
     538        String node_name = node.getNodeName();
     539        if(node_name.equals("Name")) {
     540        setName(XMLTools.getValue(node));
     541        }
     542        else if(node_name.equals("Desc")) {
     543        setDescription(XMLTools.getValue(node));
     544        }
     545        else if(node_name.equals("Type")) {
     546        setType(XMLTools.getValue(node));
     547        }
     548        else if(node_name.equals("Default")) {
     549        setDefaultValue(XMLTools.getValue(node));
     550        }
     551        else if(node_name.equals("Required")) {
     552        String v = XMLTools.getValue(node);
     553        if(v != null && v.equals("yes")) {
     554            setRequired(true);
     555        }
     556        }
     557        else if(node_name.equals("List")) {
     558        // Two final loops are required to parse lists.
     559        for(Node value = node.getFirstChild(); value != null; value = value.getNextSibling()) {
     560            if(value.getNodeName().equals("Value")) {
     561            String key = null;
     562            String desc = "";
     563            for(Node subvalue = value.getFirstChild(); subvalue != null; subvalue = subvalue.getNextSibling()) {
     564                node_name = subvalue.getNodeName();
     565                if(node_name.equals("Name")) {
     566                key = XMLTools.getValue(subvalue);
     567                }
     568                else if(node_name.equals("Desc")) {
     569                desc = XMLTools.getValue(subvalue);
     570                }
     571            }
     572            if(key != null) {
     573                addOption(key, desc);
     574            }
     575            }
     576        }
     577        }
     578        else if(node_name.equals("Range")) {
     579        String range_raw = XMLTools.getValue(node);
     580        int index = -1;
     581        if((index = range_raw.indexOf(StaticStrings.COMMA_CHARACTER)) != -1) {
     582            if(index > 0) {
     583            try {
     584                String first_number = range_raw.substring(0, index);
     585                setMinimum(Integer.parseInt(first_number));
     586                first_number = null;
     587            }
     588            catch(Exception exception) {
     589            }
     590            }
     591           
     592            if(index + 1 < range_raw.length()) {
     593            try {
     594                String second_number = range_raw.substring(index + 1);
     595                setMaximum(Integer.parseInt(second_number));
     596                second_number = null;   
     597            }
     598            catch(Exception exception) {
     599            }
     600            }
     601        }
     602        // Else it wasn't a valid range anyway, so ignore it
     603        }
     604        else if(node_name.equals("HiddenGLI")) {
     605        setHiddenGLI();
     606        }
     607        else if(node_name.equals("ModeGLI")) {
     608        String mode_level_str = XMLTools.getValue(node);
     609        try {
     610            int mode_level = Integer.parseInt(mode_level_str);
     611            setModeLevel(mode_level);
     612        }
     613        catch(Exception exception) {
     614            DebugStream.println("Exception in Argument.parseXML() - Unexpected but non-fatal");
     615            DebugStream.printStackTrace(exception);
     616        }
     617        }
     618       
     619    } // for each option
     620   
     621    } // parseXML
    533622}
Note: See TracChangeset for help on using the changeset viewer.