Changeset 9126


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

Location:
trunk/gli/src/org/greenstone/gatherer
Files:
5 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}
  • trunk/gli/src/org/greenstone/gatherer/cdm/ClassifierManager.java

    r8782 r9126  
    511511            if(node_name.equals("Option")) {
    512512            Argument argument = new Argument();
    513             // If its an option we parse the multitude of details an options might have.
    514             for(Node det = arg.getFirstChild(); det != null; det = det.getNextSibling()) {
    515                 node_name = det.getNodeName();
    516                 if(node_name.equals("Name")) {
    517                 argument.setName(XMLTools.getValue(det));
    518                 }
    519                 else if(node_name.equals("Desc")) {
    520                 argument.setDescription(XMLTools.getValue(det));
    521                 }
    522                 else if(node_name.equals("Type")) {
    523                 argument.setType(XMLTools.getValue(det));
    524                 }
    525                 else if(node_name.equals("Default")) {
    526                 argument.setDefaultValue(XMLTools.getValue(det));
    527                 }
    528                 else if(node_name.equals("List")) {
    529                 // Two final loops are required to parse lists.
    530                 for(Node value = det.getFirstChild(); value != null; value = value.getNextSibling()) {
    531                     if(value.getNodeName().equals("Value")) {
    532                     String key = null;
    533                     String desc = "";
    534                     for(Node subvalue = value.getFirstChild(); subvalue != null; subvalue = subvalue.getNextSibling()) {
    535                         node_name = subvalue.getNodeName();
    536                         if(node_name.equals("Name")) {
    537                         key = XMLTools.getValue(subvalue);
    538                         }
    539                         else if(node_name.equals("Desc")) {
    540                         desc = XMLTools.getValue(subvalue);
    541                         }
    542                     }
    543                     if(key != null) {
    544                         argument.addOption(key, desc);
    545                     }
    546                     }
    547                 }
    548                 }
    549                 else if(node_name.equals("Required")) {
    550                 String v = XMLTools.getValue(det);
    551                 ///ystem.err.println("Required = " + v);
    552                 if(v.equalsIgnoreCase("yes")) {
    553                     ///ystem.err.println("Setting required to true.");
    554                     argument.setRequired(true);
    555                 }
    556                 }
    557                 else if(node_name.equals(StaticStrings.RANGE_ELEMENT)) {
    558                 String range_raw = XMLTools.getValue(det);
    559                 int index = -1;
    560                 if((index = range_raw.indexOf(StaticStrings.COMMA_CHARACTER)) != -1) {
    561                     if(index > 0) {
    562                     try {
    563                         String first_number = range_raw.substring(0, index);
    564                         argument.setMinimum(Integer.parseInt(first_number));
    565                         first_number = null;
    566                     }
    567                     catch(Exception exception) {
    568                     }
    569                     }
    570                    
    571                     if(index + 1 < range_raw.length()) {
    572                     try {
    573                         String second_number = range_raw.substring(index + 1);
    574                         argument.setMaximum(Integer.parseInt(second_number));
    575                         second_number = null;
    576                        
    577                     }
    578                     catch(Exception exception) {
    579                     }
    580                     }
    581                    
    582                 }
    583                 // Else it wasn't a valid range anyway, so ignore it
    584                 }
    585             }
     513            argument.parseXML((Element)arg);
    586514            classifier.addArgument(argument);
    587515            }
  • trunk/gli/src/org/greenstone/gatherer/cdm/Plugin.java

    r9020 r9126  
    163163    public boolean doesExplodeMetadataDatabases()
    164164    {
    165     return false;
    166     // Plugin base_plugin = CollectionDesignManager.plugin_manager.getBasePlugin(getName());
    167     // return base_plugin.does_explode_metadata_databases;
     165    Plugin base_plugin = CollectionDesignManager.plugin_manager.getBasePlugin(getName());
     166    if (base_plugin == null) {
     167        return false;
     168    }
     169    return base_plugin.does_explode_metadata_databases;
    168170    }
    169171
  • trunk/gli/src/org/greenstone/gatherer/cdm/PluginManager.java

    r9105 r9126  
    171171    public boolean isFileExplodable(File file)
    172172    {
    173     // Temporary hack to test the rest of this, the correct code is below
    174     if (file.isFile() && file.getName().endsWith(".mst")) {
    175         return true;
    176     }
    177 
    178 //  for (int i = 0; i < library.getSize(); i++) {
    179 //      Plugin plugin = (Plugin) library.get(i);
    180 //      if (plugin.doesProcessFile(file) == true && plugin.doesExplodeMetadataDatabases() == true) {
    181 //      return true;
    182 //      }
    183 //  }
     173
     174    for (int i = 0; i < library.size(); i++) {
     175        Plugin plugin = (Plugin) library.get(i);
     176        if (plugin.doesProcessFile(file) == true && plugin.doesExplodeMetadataDatabases() == true) {
     177        return true;
     178        }
     179    }
    184180
    185181    return false;
    186182    }
    187183
    188     public String getExploderPlugin(File file)
     184    public Plugin getExploderPlugin(File file)
    189185    {
    190     // Temporary hack
    191     if (file.isFile() && file.getName().endsWith(".mst")) {
    192         return "ISISPlug";
     186    for (int i = 0; i < library.size(); i++) {
     187        Plugin plugin = (Plugin) library.get(i);
     188        if (plugin.doesProcessFile(file) == true && plugin.doesExplodeMetadataDatabases() == true) {
     189        return plugin;
     190        }
    193191    }
    194192    return null;
     193   
    195194    }
    196195
     
    653652        else if (node_name.equalsIgnoreCase("Explodes")) {
    654653        plugin.setDoesExplodeMetadataDatabases(XMLTools.getValue(node).equalsIgnoreCase(StaticStrings.YES_STR));
    655         System.err.println("Plugin " + plugin.getName() + " explodes metadata databases: " + plugin.doesExplodeMetadataDatabases());
     654        //System.err.println("Plugin " + plugin.getName() + " explodes metadata databases: " + plugin.doesExplodeMetadataDatabases());
    656655        }
    657656        // Parse the multitude of arguments
     
    662661            if(node_name.equalsIgnoreCase("Option")) {
    663662            Argument argument = new Argument();
    664             // If its an option we parse the multitude of details an options might have.
    665             for(Node det = arg.getFirstChild(); det != null; det = det.getNextSibling()) {
    666                 node_name = det.getNodeName();
    667                 if(node_name.equalsIgnoreCase("Name")) {
    668                 argument.setName(XMLTools.getValue(det));
    669                 }
    670                 else if(node_name.equalsIgnoreCase("Desc")) {
    671                 argument.setDescription(XMLTools.getValue(det));
    672                 }
    673                 else if(node_name.equalsIgnoreCase("Type")) {
    674                 argument.setType(XMLTools.getValue(det));
    675                 }
    676                 else if(node_name.equalsIgnoreCase("Default")) {
    677                 argument.setDefaultValue(XMLTools.getValue(det));
    678                 }
    679                 else if(node_name.equalsIgnoreCase("List")) {
    680                 // Two final loops are required to parse lists.
    681                 for(Node value = det.getFirstChild(); value != null; value = value.getNextSibling()) {
    682                     if(value.getNodeName().equalsIgnoreCase("Value")) {
    683                     String key = null;
    684                     String desc = "";
    685                     for(Node subvalue = value.getFirstChild(); subvalue != null; subvalue = subvalue.getNextSibling()) {
    686                         node_name = subvalue.getNodeName();
    687                         if(node_name.equalsIgnoreCase("Name")) {
    688                         key = XMLTools.getValue(subvalue);
    689                         }
    690                         else if(node_name.equalsIgnoreCase("Desc")) {
    691                         desc = XMLTools.getValue(subvalue);
    692                         }
    693                     }
    694                     if(key != null) {
    695                         argument.addOption(key, desc);
    696                     }
    697                     }
    698                 }
    699                 }
    700                 else if(node_name.equalsIgnoreCase("Required")) {
    701                 String v = XMLTools.getValue(det);
    702                 if(v != null && v.equalsIgnoreCase("yes")) {
    703                     argument.setRequired(true);
    704                 }
    705                 }
    706                 else if(node_name.equals(StaticStrings.RANGE_ELEMENT)) {
    707                 String range_raw = XMLTools.getValue(det);
    708                 int index = -1;
    709                 if((index = range_raw.indexOf(StaticStrings.COMMA_CHARACTER)) != -1) {
    710 if(index > 0) {
    711                     try {
    712                         String first_number = range_raw.substring(0, index);
    713                         argument.setMinimum(Integer.parseInt(first_number));
    714                         first_number = null;
    715                     }
    716                     catch(Exception exception) {
    717                     }
    718                     }
    719                    
    720                     if(index + 1 < range_raw.length()) {
    721                     try {
    722                         String second_number = range_raw.substring(index + 1);
    723                         argument.setMaximum(Integer.parseInt(second_number));
    724                         second_number = null;   
    725                     }
    726                     catch(Exception exception) {
    727                     }
    728                     }
    729                 }
    730                 // Else it wasn't a valid range anyway, so ignore it
    731                 }
    732             }
     663            argument.parseXML((Element)arg);
    733664            plugin.addArgument(argument);
    734665            }
  • trunk/gli/src/org/greenstone/gatherer/collection/BuildOptions.java

    r9036 r9126  
    217217    removeValue(import_values_element, name);
    218218    }
    219 
     219   
    220220    /** Retrieve the indexth element from the given set of arguments. */
    221221    private Argument getArgument(Element arguments_element, int index) {
    222     Argument argument = null;
    223     try {
    224         NodeList option_list = arguments_element.getElementsByTagName(OPTION);
    225         if(0 <= index && index < option_list.getLength()) {
    226         // Retrieve the appropriate argument
    227         Element option = (Element) option_list.item(index);
    228         // Iterate through this option elements children, making note of any details we find.
    229         argument = new Argument();
    230         for(Node node = option.getFirstChild(); node != null; node = node.getNextSibling()) {
    231             String node_name = node.getNodeName();
    232             if(node_name.equals("Name")) {
    233             argument.setName(XMLTools.getValue(node));
    234             }
    235             else if(node_name.equals("Desc")) {
    236             argument.setDescription(XMLTools.getValue(node));
    237             }
    238             else if(node_name.equals("Type")) {
    239             argument.setType(XMLTools.getValue(node));
    240             }
    241             else if(node_name.equals("Default")) {
    242             argument.setDefaultValue(XMLTools.getValue(node));
    243             }
    244             else if(node_name.equals("List")) {
    245             // Two final loops are required to parse lists.
    246             for(Node value = node.getFirstChild(); value != null; value = value.getNextSibling()) {
    247                 if(value.getNodeName().equals("Value")) {
    248                 String key = null;
    249                 String desc = "";
    250                 for(Node subvalue = value.getFirstChild(); subvalue != null; subvalue = subvalue.getNextSibling()) {
    251                     node_name = subvalue.getNodeName();
    252                     if(node_name.equals("Name")) {
    253                     key = XMLTools.getValue(subvalue);
    254                     }
    255                     else if(node_name.equals("Desc")) {
    256                     desc = XMLTools.getValue(subvalue);
    257                     }
    258                 }
    259                 if(key != null) {
    260                     argument.addOption(key, desc);
    261                 }
    262                 }
    263             }
    264             }
    265             else if(node_name.equals("Required")) {
    266             String v = XMLTools.getValue(node);
    267             if(v != null && v.equals("yes")) {
    268                 argument.setRequired(true);
    269             }
    270             }
    271             else if(node_name.equals(StaticStrings.RANGE_ELEMENT)) {
    272             String range_raw = XMLTools.getValue(node);
    273             int comma_index = -1;
    274             if((comma_index = range_raw.indexOf(StaticStrings.COMMA_CHARACTER)) != -1) {
    275                 if(comma_index > 0) {
    276                 try {
    277                     String first_number = range_raw.substring(0, comma_index);
    278                     argument.setMinimum(Integer.parseInt(first_number));
    279                     first_number = null;
    280                 }
    281                 catch(Exception exception) {
    282                 }
    283                 }
    284                
    285                 if(comma_index + 1 < range_raw.length()) {
    286                 try {
    287                     String second_number = range_raw.substring(comma_index + 1);
    288                     argument.setMaximum(Integer.parseInt(second_number));
    289                     second_number = null;   
    290                 }
    291                 catch(Exception exception) {
    292                 }
    293                 }
    294             }
    295             // Else it wasn't a valid range anyway, so ignore it
    296             range_raw = null;
    297             }
    298             else if(node_name.equals(StaticStrings.HIDDENGLI_ELEMENT)) {
    299             argument.setHiddenGLI();
    300             }
    301             else if(node_name.equals(StaticStrings.MODEGLI_ELEMENT)) {
    302             String mode_level_str = XMLTools.getValue(node);
    303             try {
    304                 int mode_level = Integer.parseInt(mode_level_str);
    305                 argument.setModeLevel(mode_level);
    306             }
    307             catch(Exception exception) {
    308                 DebugStream.println("Exception in BuildOptions.getArgument() - Unexpected but non-fatal");
    309                 DebugStream.printStackTrace(exception);
    310             }
    311             }
    312         }
    313         }
    314     }
    315     catch (Exception error) {
    316         DebugStream.println("Error in BuildOptions.getArgument(): " + error);
    317         DebugStream.printStackTrace(error);
    318     }
    319     return argument;
     222    NodeList option_list = arguments_element.getElementsByTagName(OPTION);
     223    if(0 <= index && index < option_list.getLength()) {
     224        Argument argument = new Argument();
     225        argument.parseXML((Element) option_list.item(index));
     226        return argument;
     227    }
     228    return null; // no arg at this position
    320229    }
    321230
Note: See TracChangeset for help on using the changeset viewer.