package usda.weru.mcrew;

import java.util.Arrays;

/**  XMLConstants
 *  This interface class holds all constants pertaining to the XML data of the application.
 *	The constants such as dtd file name, xsl file name (i.e non data) are all placed in XMLDoc.java
 */
public class XMLConstants {

    /**
     * Contant that indicates default identity of a crop to be used when creating
     * a new identity object 
     */
    public static final int kCropId = 3;

    /**
     * Integer value to be used as a primary unit's identification number. Could be 
     * Metric units or English units. Current default is English units which in our
     * code has integer value of 0 (zero).
     */
    public static final int kPrimaryUnit = 0;

    /**
     * Integer value to be used as a alternate unit's identification number in WEPS
     * GUI's configuration panel settings. Could be Metric units or English units. 
     * Current default is Metric units which in our code has integer value of 1 (one).
     */
    public static final int kAlternateUnit = 1;

    /**
     * This value is used as default for indenting the text during formatting
     */
    public static final int INDENT = 2;

    /**
     * The default code value of the CODE & ID part of the Identity object to be 
     * used when an identity object for a crop is being created.  (The "crop"
     * or "residue" name is a "Group " parameter value)
     */
    public static final String sCropCode = "G";

    /**
     * The default code value of the CODE & ID part of the Identity object to be 
     * used when an identity object for an operation is being created.  (All "operations"
     * require an "Operation" process type)
     */
    public static final String sOperationCode = "O";

    /**
     * The default name of a CROP XML file to be used while running the MCREW application
     * when a crop file is NOT privided in the distribution or the application doesn't find
     * it in the mentioned path. 
     */
    public static final String sDefaultCropFile = "no_crop.xml";

    /**
     * The encoding used while creating the various XML documents.
     */
    public static final String sEncoding = "ISO-8859-1";

    /**
     * Version number of the application. This gives the user an idea that the 
     * application went through a major revision and updation.
     */
    public static final String sVersion = "1.0";

    /**
     * Donot know exactly but think its used to inform the application that the 
     * files from where the data will be provided will be in XML format.
     */
    public static final String sMediaType = "application/xml";

    /**
     * An XML attribute that signifies that the corresponding parameter value will be "Hidden",
     * i.e., not displayed in an MCREW "drilldown" screen.
     */
    public static final String sHidden = "H";

    /**
     * An XML attribute that signifies that the corresponding parameter value will be "Editable",
     * if displayed in an MCREW "drilldown" screen.
     */
    public static final String sEditable = "E";

    /**
     * An XML attribute that signifies that the corresponding parameter value will be "Visible",
     * if displayed in an MCREW "drilldown" screen.  The parameter will "View-only", e.g. not editable.
     */
    public static final String sViewable = "V";

    /**
     * This is the WEPS file extension for management files used in MCREW i.e., 
     * when a new management file is saved in MCREW with the WEPS format specified
     * or an existing management file is opened in WEPS format it will be required to
     * have this file extension.
     */
    public static final String sWepsFileExtension = ".man";

    /**
     * This is the file extension for XML formatted management files used in MCREW i.e.,
     * when a new management file is saved in MCREW with the XML format specified
     * or an existing management file is opened in XML format it will be required to
     * have this file extension.
     */
    public static final String sXMLFileExtension = ".xml";

    /**
     * This is the configuration file for the entire MCREW application and how the 
     * data to be captured in different GUI tables like main MCREW table, tables on 
     * the operation_dlg GUI and on crop_dlg GUI is categorized in various XML files.
     */
    public static final String sDATACONFIG_FILE = "DATACONFIG_FILE";

    /**
     * The system or network path where the above mentioned configuration file resides.
     */
    public static final String sDATACONFIG_FILE_PATH = "DATACONFIG_FILE_PATH";

    /**
     * The file that tells us about all the columns and column headers for the main
     * MCREW table and the tagname to pull the data for populating various cells.
     */
    public static final String stable_file = "table_file";

    /**
     * The format in which the management file data shall reside can be understood
     * from this file and it helps the application to interprete the data to be brought
     * into the application.
     */
    public static final String smanformat_file = "manformat_file";

    /**
     * The file which the tells us about the views for the table(which columns and when).
     */
    public static final String sview_file = "view_file";

    /**
     * Tells us what units the data will appear in the application.
     */
    public static final String sunits = "units";

    /**
     * Empty string assigned when there are no values available as data.
     */
    public static final String sNovalue = "";

    /**
     * String assigned to data object variables when there are no actual data objects 
     * available to be assigned.
     */
    public static final String sNodataobject = "";

    /**
     * String assigned to file variables when there are no files available to be assigned.
     */
    public static final String sNofile = "";

    /**
     * Assigned when there is no database directory.
     */
    public static final String sNoDBdir = "";

    /**
     * Assigned when there is no tagname available.
     */
    public static final String sNotagname = "";

    /**
     * Assigned when there is no name available.
     */
    public static final String sNoName = "NoName";

    /**
     * Assigned when there are no crops available
     */
    public static final String sno_crop = "no crop";

    /**
     * Assigned when there are no crops available
     */
    public static final String snocrop = "nocrop";

    /**
     * The constant string used for assigning the integer datatype.
     */
    public static final String sint = "int";

    /**
     * The constant string used for assigning the double datatype.
     */
    public static final String sdouble = "double";

    /**
     * The constant string used for assigning a float datatype.
     */
    public static final String sfloat = "float";

    /**
     * The constant string used for assigning the string datatype.
     */
    public static final String sstring = "string";

    /**
     * The constant string used for assigning the value while creating the operation 
     * database root element in the XML files containing the sub-elements like 
     * operationname, actionvalue, etc. This file contains the sample data for 
     * all parameters under various operations. Also used in the initialize method
     * of operationobject to cross-check if the nodename was operationDB.
     */
    public static final String sOperationDBRootName = "operationDB";

    /**
     * This string is often used to check if the element that we get from the XML
     * file like DOM object created is an operation node or not. 
     */
    public static final String soperation = "operation";

    /**
     * An element name whose value is the name of a display XML file for either 
     * operation. This string constant is used while creating a node 
     * element or cross-checking when retriving or resetting new values to this element.
     */
    public static final String soperationDB = "operationDB";

    /**
     * This string is often used to check if the element that we get from the XML
     * file like cross-checking a DOM object to be a crop node or not. 
     */
    public static final String scrop = "crop";

    /**
     * The constant string used for assigning the value while creating the crop 
     * database root element in the XML files containing the sub-elements like 
     * cropname, param, etc. This file then specifies the structure of various crop 
     * operations and their parameters. Also used in the initialize method of cropobject
     * to cross-check if the nodename was cropDB.
     */
    public static final String sCropDBRootName = "cropDB";

    /**
     * This string is often used to check if the node name is the mentioned string 
     * which is the directory that stores the management files.
     */
    public static final String smanagement = "management";

    /**
     * This string is often used to check if the node name is the mentioned string 
     * which is the directory that stores the management template files.
     */
    public static final String smanagement_template = "management_template";

    /**
     * This string is often used to check if the node name is the mentioned string 
     * which is the directory that stores the management skeleton files.
     */
    public static final String smanagement_skeleton = "management_skeleton";

    /**
     * This is used for checking if the nodename is equal to management operation database
     * and if true then the operation data is inserted into the database directory table.
     */
    public static final String smanoperdb = "manoperdb";

    /**
     * Not yet documented.
     */
    public static final String scropdb = "cropdb";

    /**
     * The text used to create and crcss-check the root element or node in the 
     * weps management database directory.
     */
    public static final String sWepsManDBRootName = "wepsmanDB";

    /**
     * Not being used currently.
     */
    public static final String swepsmanDB = "wepsmanDB";

    /**
     * Used to add the row in the main MCREW table and initialize the row information
     * when a node with the following name is encountered fromm the DOM object.
     */
    public static final String swepsmanvalue = "wepsmanvalue";

    /**
     * This string is used to creat new nodes, cross-check if the DOM object's nodename
     * is the same as the element described below so as to assign or retrieve value for
     * processing or updating the mentioned data.
     */
    public static final String sversion = "version";

    /**
     * This string is used to creat new nodes, cross-check if the DOM object's nodename
     * is the same as the element described below so as to assign or retrieve value for
     * processing or updating the mentioned data.
     */
    public static final String srotationyears = "rotationyears";

    /**
     * This string is used to creat new nodes, cross-check if the DOM object's nodename
     * is the same as the element described below so as to assign or retrieve value for
     * processing or updating the mentioned data.
     */
    public static final String snotes = "notes";

    /**
     * The WEPS management file notes are stored as value of this variable. This string is 
     * used for creating the node with this element name in the XML file.
     */
    public static final String swepsmanfilenotes = "wepsmanfilenotes";

    /**
     * This string is used to creat new nodes, cross-check if the DOM object's nodename
     * is the same as the element described below so as to assign or retrieve value for
     * processing or updating the mentioned data.
     */
    public static final String sdataobjectdefn = "dataobject";

    /**
     * While iniitalizing the configuration data and reading the table column the 
     * column group is to be known and the DOM object's node elements are cross 
     * referenced when data updation and retrivals are done for the main MCREW table.
     */
    public static final String scolumngroup = "columngroup";

    /**
     * While iniitalizing the crop data in group names we use this string constant for
     * the creation of the node lements and during data retrivall for cross-reference 
     * if the node encountered is the same as the name stated. 
     */
    public static final String sgroupname = "groupname";

    /**
     * Used for the creation of the node elements that store the values for making the 
     * and during data retrivall for cross-reference 
     * if the node encountered is the same as the name stated. 
     */
    public static final String sdisplay = "display";

    /**
     * Defines the element name that goes in the tablecolumn XML file and this 
     * element stores the details of that column, for instance, columndataobject,
     * columnlabel, tagname, etc.
     */
    public static final String scolumndefn = "columndefn";

    /**
     * Helps in creating the node element in the dataconfig XML file and retrival of
     * data associated with that node which stores the tablecolumn and man_fileformat names.
     */
    public static final String smisc = "misc";

    /**
     * An element name whose values are the 3 major objects such as dates, operations or crops
     * and an example of which can be found out in mcrewconfig XML file. This string 
     * constant is used while creating a node element or cross-checking when retriving 
     * or resetting new values of this element.
     */
    public static final String scolumndataobject = "columndataobject";

    /**
     * An element name whose values are the objects for each column in the main MCREW table
     * such as dates, operations, crops, etc.
     * This string constant is used while creating a node element or cross-checking 
     * when retriving or resetting new values to this element.
     */
    public static final String sobjectname = "objectname";

    /**
     * The value of this element whose name is mentioned below is used to indicate 
     * the place of that columns in the table on main MCREW GUI.
     * This string constant is used while creating a node element or cross-checking 
     * when retriving or resetting new values to this element.
     */
    public static final String scolumnnum = "columnnum";

    /**
     * An element name whose values are the column headings. 
     * This string constant is used while creating a node element or cross-checking 
     * when retriving or resetting new values to this element.
     */
    public static final String scolumnlabel = "columnlabel";

    /**
     * An element name whose value is the name of a definition XML file for either 
     * operation or crop. This string constant is used while creating a node 
     * element or cross-checking when retriving or resetting new values to this element.
     */
    public static final String sdefnfile = "defnfile";

    /**
     * An element name whose value is the name of a language XML file for either 
     * operation or crop. This string constant is used while creating a node 
     * element or cross-checking when retriving or resetting new values to this element.
     */
    public static final String slangfile = "langfile";

    /**
     * An element name whose value is the name of the database directory where all the
     * operation and crop databases reside. This string constant is used while creating 
     * a node element or cross-checking when retriving or resetting new values to this element.
     */
    public static final String sDBdir = "DBdir";

    /**
     * An element name whose value is the name of a display XML file for either 
     * operation or crop. This string constant is used while creating a node 
     * element or cross-checking when retriving or resetting new values to this element.
     */
    public static final String sdisplayfile = "displayfile";

    /** 
     * An element name whose value is the name of an operation or crop attribute 
     * displayed in the XML file for the table data. This string constant is used
     * while creating a node element or cross-checking when retriving or resetting
     * new values to this eleme
     */
    public static final String stagname = "tagname";

    /**
     * An element name whose value is the extention of the management, XML, operation
     * or crop files This string constant is used while creating a node element or 
     * cross-checking when retriving or resetting new values to this eleme
     */
    public static final String sfileextension = "fileextension";

    /**
     * An element name whose value is the numeric positive integer value of an 
     * identity element whose parent-elementis an action element evident in 
     * operation_defn XML file.
     * This string constant is used while creating a node element or cross-checking
     * when retriving or resetting new values to this eleme
     */
    public static final String sidentity = "identity";

    /**
     * An element name whose value is the Char value of an identity element whose
     * parent-element is an action element evident in operation_defn XML file. 
     * This string constant is used while creating a node element or cross-checking
     * when retriving or resetting new values to this eleme
     */
    public static final String scode = "code";

    /**
     * An element name whose value is the name of a display XML file for either 
     * operation or crop. This string constant is used while creating a node 
     * element or cross-checking when retriving or resetting new values to this element.
     */
    public static final String sid = "id";

    // =============================EVERY thing ABOVE this line NEEDS to be VERIFIED  =============================    
    //                                    ====================================
    // =============================EVERY thing BELOW this line NEEDS to be documented =============================
    /**
     * The name of an "action" element defined in the "operation_defn.xml" file.
     */
    public static final String sactionname = "actionname";

    /**
     * An element object defined in the "operation_defn.xml" file. 
     */
    public static final String saction = "action";

    /**
     * This an element that defines a parameter.
     * It consists of several components: "paramname", "paramtype" and "paramunit"
     * They are defined in the "operation_defn.xml" and "crop_defn.xml" files.
     */
    public static final String sparamdefn = "paramdefn";

    /**
     * This is a component of a "paramdefn" element.  It is the name of the specified parameter.
     * These are defined in the "operation_defn.xml" and "crop_defn.xml" files.
     */
    public static final String sparamname = "paramname";

    /**
     * This is a component of a "paramdefn" element.  It specifies the type of parameter,
     * .e.g, "float", "int", "string", etc.
     * These are defined in the "operation_defn.xml" and "crop_defn.xml" files.
     */
    public static final String sparamtype = "paramtype";

    /**
     * This is a component of a "paramdefn" element.  It specifies the units for the parameter,
     * .e.g, "meters", "kph", "fraction", etc.
     * These are defined in the "operation_defn.xml" and "crop_defn.xml" files.
     */
    public static final String sparamunit = "paramunit";
    
    /**
     * These are components of a "paramdefn" element.  They specify the limits for the parameter:
     * abs is a hard limit that cannot be passed
     * rec is a recommended limit that should only be passed if necessary
     * These are defined in the "operation_defn.xml" and "crop_defn.xml" files.
     */
    
    public static final String sabs_min = "abs_min";
    
    public static final String sabs_max = "abs_max";
    
    public static final String srec_min = "rec_min";
    
    public static final String srec_max = "rec_max";
    
    /**
     * The string to determine whether the parameter is part of the decomposition subobject.
     * These are defined in the "crop_defn.xml" files.
     */
    public static final String sdecomp = "decomp";

    /**
     * An element name that consists of at least some of the following components:
     * "paramname", "paramprompt", "paramchoice", "paramaltunit", and "conversion".
     * The "paramlang" elements are component of "operationlang" elements in the
     * operation_lang.xml file and components of "croplang" elements in the
     * crop_lang.xml file.  The *_lang.xml files are intended to specify the
     * "language specific" parts of the crop and operation parameters
     * such as the prompt text specified and the "alternate (non-WEPS) units to
     * display the values in.  If the parameters happen to be integer flag values,
     * then the choice list strings are defined for each valid flag value.
     */
    public static final String sparamlang = "paramlang";

    /**
     * An element that is a component of the "paramlang" element.  The prompt
     * string desired for the parameter represented by a "paramlang" element
     * is specified in the "paramprompt" element.
     * The elements are defined in operation_lang.xml and crop_lang.xml files.
 
     */
    public static final String sparamprompt = "paramprompt";

    /**
     * An element that is a component of the "paramlang" element.  If a "paramlang"
     * element represents an integer parameter whose values are used as discrete
     * flags, then textual choice strings can be used to describe the function
     * of those flag values, which are specified in "paramchoice" elements.
     * The elements are defined in operation_lang.xml and crop_lang.xml files.
     */
    public static final String sparamchoice = "paramchoice";

    /**
     * An element that is a component of the "paramlang" element.  If a parameter
     * represented by a "paramlang" element has an alternate unit
     * (other than the WEPS default unit) that the parameter value should be displayed,
     * then that unit is specified in the "paramaltunit" element.
     * The elements are defined in operation_lang.xml and crop_lang.xml files.
     */
    public static final String sparamaltunit = "paramaltunit";

    /**
     * An element that is a component of the "paramlang" element.  If a "paramlang"
     * element is representing a parameter that is to be displayed in alternate
     * (non-native WEPS units), then the "conversion" element contains the
     * conversion information required to convert between the native WEPS
     * units and the "paramaltunit" specified for the parameter.
     * The "conversion" elements are defined in operation_lang.xml and crop_lang.xml files.
     */
    public static final String sconversion = "conversion";

    /**
     * An element that is a component of the "conversion" element.
     * It contains the numeric multiplier conversion value required
     * to convert between the native WEPS units and the paramaltunit" specified
     * for the parameter.
     * The "factor" elements are defined in operation_lang.xml and crop_lang.xml files.
     */
    public static final String sfactor = "factor";

    /**
     * An element that is a component of the "conversion" element.
     * It contains the numeric offset conversion value required in some cases
     * (for example temperature conversions) to convert between the native
     * WEPS units and the paramaltunit" specified for the parameter .
     * The "addend" elements are defined in operation_lang.xml and crop_lang.xml files.
     */
    public static final String saddend = "addend";

    /**
     * An element defined to specify whether a parameter is to be displayed in
     * the "crop drilldown" or "operation drilldown" screens.  If so, then it
     * also specifies whether the parameter value is to only be "visible" or
     * fully "editable".  The type of parameter value is also specified, e.g:
     * "choice list", "numeric", "string", or "multi-line string".  The "paramdisplay"
     * elements are defined and listed in the crop_display.xml and operation_display.xml
     * files.
     */
    public static final String sparamdisplay = "paramdisplay";

    /**
     * An element component of a "paramdisplay" element.  It defines whether a
     * parameter should be displayed to the user in the "crop drilldown" or
     * "operation drilldown" screens.   If so, then it specifies whether the
     * parameter value is to only be "visible" or fully "editable" by the user.
     * The "displayattribute" elements are defined and listed in the
     * crop_display.xml and operation_display.xml files.
     */
    public static final String sdisplayattribute = "displayattribute";

    /**
     * An element component of a "paramdisplay" element.  It defines how a
     * parameter should be displayed to the user in the "crop drilldown" or
     * "operation drilldown" screens.   
     */
    public static final String sformat = "format";

    /**
     * An element component of a "paramdisplay" element.  It defines the type of
     * parameter value to be displayed to the user in the "crop drilldown" or
     * "operation drilldown" screens, e.g:  "choice list", "numeric", "string",
     * or "multi-line string". 
     * The "valueattribute" elements are defined and listed in the
     * crop_display.xml and operation_display.xml files.
     */
    public static final String svalueattribute = "valueattribute";

    /**
     * A "valueattribute" element value that is used to specify that a parameter
     * value should be displayed with a choice list of fuels.
     */
    public static final String sfuel = "F";

    /**
     * A "valueattribute" element value that is used to specify that a parameter
     * value should be displayed with a choice list to the user.  It is defined
     * and used in the operation_display.xml and crop_display.xml files.
     */
    public static final String schoice = "C";

    /**
     * A "valueattribute" element value that is used to specify that a parameter
     * value should be displayed as multi-line text to the user.  It is defined
     * and used in the operation_display.xml and crop_display.xml files.
     */
    public static final String smultiline = "T";

    /**
     * An element which is used to list of possible group "identity" elements
     * required for each process or operation actions.  This element is defined
     * and used in the operation_defn.xml file.
     */
    public static final String sgroupid = "groupid";

    /**
     * An element name that defines the "category" a parameter is to be classified
     * under.  These categories are used to separate groups of parameters based upon
     * their function or use in the crop drilldown display screen. 
     */
    public static final String scategory = "category";

    /**
     * An element that is a component of the "category" element.  It represents
     * the name of the category and is displayed in the tab used to display the
     * grouped parameters in crop drilldown display screen.
     */
    public static final String scategoryname = "categoryname";

    /**
     * Currently not being used in the model.
     */
    public static final String scategorydisplay = "categorydisplay";

    /**
     *This is the element that tells if the category in the crop display screen
     * will be visible or not. THe value of this element decides this.
     */
    public static final String scatDisplayValue = "catDisplayValue";

    /**
     * The display category serves as a key while inserting the category names
     * in the mparameters hashtable that stores the different categories each 
     * parameter of the crop can be in.
     */
    public static final String sdisplaycategory = "displaycategory";

    /**
     * This is now unused & obsolete XML element.  Probably can be removed from
     * the code. 
     */
    public static final String scomment = "comment";

    /**
     * Currently not being used in the model. Obsolete.
     */
    public static final String sDefaultaction = "defaultaction";

    /**
     * Currently not being used in the model. Obsolete 
     */
    public static final String sDefaultparamdefn = "defaultparamdefn";

    /**
     * An element name that specifies the date an operation takes place in an
     * XML formatted MCREW management/crop rotation file.
     */
    public static final String sdate = "date";

    /**
     * An element name that specifies the name of an operation in an operation db file
     * and XML formatted MCREW management/crop rotation file.
     */
    public static final String soperationname = "operationname";

    /**
     * An element name that specifies the actions for operations in an operation db file
     * and XML formatted MCREW management/crop rotation file.
     */
    public static final String sactionvalue = "actionvalue";

    /**
     * An element name whose value is the name of a display XML file for either 
     * operation or crop. This string constant is used while creating a node 
     * element or cross-checking when retriving or resetting new values to this element.
     */
    public static final String sparam = "param";

    /**
     * This tells us the name of the parameter and will be used in the hashtable as
     * as a key while storing the parameter objects. This string constant is used 
     * while creating a node element or cross-checking when retriving or resetting 
     * new values to this element.
     */
    public static final String sname = "name";

    /**
     * An element name whose value is the name of a display XML file for either 
     * operation or crop. This string constant is used while creating a node 
     * element or cross-checking when retriving or resetting new values to this element.
     */
    public static final String svalue = "value";

    /**
     * An element name whose value is the name of a display XML file for either 
     * operation or crop. This string constant is used while creating a node 
     * element or cross-checking when retriving or resetting new values to this element.
     */
    public static final String scropDB = "cropDB";

    /**
     * An element name whose value is the name of a display XML file for either 
     * operation or crop. This string constant is used while creating a node 
     * element or cross-checking when retriving or resetting new values to this element.
     */
    public static final String scropname = "cropname";

    /**
     * An element name whose value is the name of a display XML file for either 
     * operation or crop. This string constant is used while creating a node 
     * element or cross-checking when retriving or resetting new values to this element.
     */
    public static final String sgcropname = "gcropname";

    /**
     * An element name that contains the identity element and the paramformatline element.
     * This can be found in the man_fileformat XML file. This string constant is used 
     * while creating a node element or cross-checking when retriving or resetting new 
     * values to this element.
     */
    public static final String sactionformat = "actionformat";

    /**
     * An element name whose value is the symbol attribute that tells that this line
     * in the .MAN file contains a text string used as notes associated with the 
     * parameter. This string constant is used while creating a node element or 
     * cross-checking when retriving or resetting new values to this element.
     */
    public static final String sparamformatline = "paramformatline";

    /**
     * This is used when updating or creating a skeleton file from .MAN file
     * and the element data is being accessed. Check SkeletonUpdater java file
     * for the implementation. This string constant is used while 
     * creating a node element or cross-checking when retriving or resetting new 
     * values to this element.
     */
    public static final String soperationskel = "operations";

    /**
     * This is used when updating or creating a skeleton file from .MAN file
     * and the element data is being accessed. Check SkeletonUpdater java file
     * for the implementation This string constant is used while creating a node
     * element or cross-checking when retriving or resetting new values to this element.
     */
    public static final String sopskel = "op";

    /**
     * An element name which is referenced in the skelImportpanel and skeletonUpdater java
     * files. Used while converting a skeleton XML file to a .MAN file. This string constant
     * is used while creating a node element or cross-checking when retriving or resetting 
     * new values to this element.
     */
    public static final String svegskel = "veg"; //"choice", multi-line text

    /**
     *
     */
    public static final String snoteskel = "notes"; //"choice", multi-line text

    /**
     * These are the XML description files for the operation and crop data which serve as
     * a reference in arranging data in a tree format. Thye also help in looking for a specific
     * dataset which is needed for that portion of the table data population and visualization.
     */
    private static final String[] c_xmlDescriptionfiles = {sdefnfile, slangfile, sdisplayfile};

    /**
     *
     * @return
     */
    public static String[] getXMLDescriptionfiles() {
        return Arrays.copyOf(c_xmlDescriptionfiles, c_xmlDescriptionfiles.length);
    }

    /**
     * The number of description files that go in the above array holding these files.
     */
    public static final int kTotalDescriptionfiles = 3;

    /** 
     * Name of the XML Crop file that has default values
     */
    public static final String sno_cropFileName = "no_crop.crop";

}
