Ignore:
Timestamp:
15/12/08 09:53:00 (11 years ago)
Author:
sdonegan
Message:

Previous version not quite right -added extra method for matching sql results with filenames.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI01-discovery/branches/ws-Discovery2-upgrade/src/ndg/common/discovery/Utilities.java

    r4607 r4631  
    88//import ndg.services.discovery.DiscoveryServiceSkeleton; 
    99 
    10 public class Utilities  
    11 { 
    12          
    13 //       Obtain a suitable logger. 
    14     private static Logger logger = Logger.getLogger(Utilities.class.getName()); 
    15      
    16          
     10public class Utilities { 
     11 
     12        // Obtain a suitable logger. 
     13        private static Logger logger = Logger.getLogger(Utilities.class.getName()); 
     14 
    1715        /** 
    1816         * Test if a string has a value set 
    19          * @param str - string to test 
     17         *  
     18         * @param str - 
     19         *            string to test 
    2020         * @return true if str is non null and not empty, false otherwise 
    2121         */ 
    22         public static boolean isStringDefined(String str) 
    23         { 
     22        public static boolean isStringDefined(String str) { 
    2423                if (str != null && str.length() > 0) 
    2524                        return true; 
    2625                return false; 
    2726        } 
    28          
    2927 
    3028        /** 
    3129         * Check a main string for occurances of subString - return number of occurances 
    3230         *  
    33          * @param subString - to check for 
    34          * @param mainString - to check subString in 
     31         * @param subString - 
     32         *            to check for 
     33         * @param mainString - 
     34         *            to check subString in 
    3535         * @return number of times subString is featured in mainString 
    3636         */ 
    37         public static int getSubStringCount(String subString, String mainString)  
    38         { 
     37        public static int getSubStringCount(String subString, String mainString) { 
    3938                int lastIndex = 0; 
    4039                int count = 0; 
    4140 
    42                 while (lastIndex != -1) 
    43                 { 
    44                        lastIndex = mainString.indexOf(subString,lastIndex); 
     41                while (lastIndex != -1) { 
     42                        lastIndex = mainString.indexOf(subString, lastIndex); 
    4543 
    46                        if (lastIndex != -1) 
    47                        { 
    48                            count++; 
    49                                lastIndex++; 
    50                        } 
     44                        if (lastIndex != -1) { 
     45                                count++; 
     46                                lastIndex++; 
     47                        } 
    5148                } 
    5249                return count; 
    5350        } 
    54          
    5551 
    5652        /** 
    5753         * Retrieves the value of a specified element 
    5854         *  
    59          * @param xmlString - String, in XML format, to check through 
    60          * @param elementName - name of element whose value should be extracted 
     55         * @param xmlString - 
     56         *            String, in XML format, to check through 
     57         * @param elementName - 
     58         *            name of element whose value should be extracted 
    6159         * @return array of values of elementName 
    6260         */ 
    63         public static String[] getElementValue(String xmlString, String elementName)  
    64         { 
     61        public static String[] getElementValue(String xmlString, String elementName) { 
    6562                ArrayList<String> results = new ArrayList<String>(); 
    66                 Pattern pattern = Pattern.compile( 
    67                                 "<" + elementName + ">(.*?)</" + elementName + ">"); 
     63                Pattern pattern = Pattern.compile("<" + elementName + ">(.*?)</" + elementName + ">"); 
    6864                Matcher matcher = pattern.matcher(xmlString); 
    69                 while (matcher.find()) 
    70                 { 
     65                while (matcher.find()) { 
    7166                        results.add(matcher.group(1)); 
    7267                } 
    73                 String[] outArray = new String [results.size()]; 
     68                String[] outArray = new String[results.size()]; 
    7469                results.toArray(outArray); 
    7570                return outArray; 
     
    7772         
    7873        /** 
     74         * Returns the closing element to be used with the regex depending on requestedFormat 
     75         *  
     76         * @param requestedFormat - 
     77         *            data format requested (i.e DIF etc etc)     
     78         * @return string representing the closing element for use in regex 
     79         */ 
     80        public static String returnClosingElement(String requestedFormat) { 
     81 
     82                String closingElement = ""; 
     83                 
     84                if (requestedFormat.equals("DIF")){ 
     85                        closingElement ="</Entry_ID>"; 
     86                } else if (requestedFormat.equals("ISO")){                       
     87                        closingElement ="</gco:CharacterString>";                        
     88                } else if (requestedFormat.equals("DC")){ 
     89                        closingElement ="</dc:identifier>"; 
     90                } else if (requestedFormat.equals("MOLES")){ 
     91                        closingElement ="</localIdentifier>"; 
     92                } else { // must be mdip 
     93                        closingElement ="</DatasetIdentifier>"; 
     94                } 
     95                 
     96        return closingElement; 
     97        } 
     98         
     99         
     100        /** 
    79101         * Returns a regex to be used when sorting the returned docs (presentAgent) to match the doc name 
    80          *       
    81          * @param requestedFormat - data format requested (i.e DIF etc etc) 
    82          * @param thisDocNameID - name of xml doc in list of names supplied to the sql call 
     102         *  
     103         * @param requestedFormat - 
     104         *            data format requested (i.e DIF etc etc) 
     105         * @param thisDocNameID - 
     106         *            name of xml doc in list of names supplied to the sql call 
    83107         * @return string representing a regex that can be used in a replaceAll on the actual doc for checking 
    84108         */ 
    85         public static String resultSetCheckString(String requestedFormat, String thisDocNameID)  
    86         { 
     109        public static String resultSetCheckString(String requestedFormat, String thisDocNameID) { 
     110                 
    87111                String searchTerm = ""; 
    88                  
    89                 //have to formulate a smart search term that allows datasetID from the filename to be located within the xml-as-text doc  
    90                  
    91                 //POA: 1. Strip of datacenter__FORMAT__ from front i.e. neodc.nerc.ac.uk__DIF__neodc.nerc.ac.uk-DIF-dataent_11658383444211836.xml - get the first index here of __DIF__ 
    92                 String formatStr = "__" + requestedFormat + "__"; 
    93                  
    94                 String idSansDataCentre = thisDocNameID.substring((thisDocNameID.indexOf(formatStr) + formatStr.length())); 
    95                 idSansDataCentre = idSansDataCentre.replaceAll("\\.xml",""); //get rid of the xml extension 
    96                  
    97                 //now get rid of the "-DIF-" and replace with ":DIF:" 
    98                 formatStr = "-" + requestedFormat + "-"; 
    99                 idSansDataCentre = idSansDataCentre.replaceAll(formatStr,":"+requestedFormat+":"); 
    100                                  
    101                 if (requestedFormat.equals("DIF"))  
    102                 {                                                
    103                         searchTerm = idSansDataCentre + "</Entry_ID>";                                           
    104                 } else if (requestedFormat.equals("MDIP")) {                     
     112                String formatStr = ""; 
     113                String idSansDataCentre = ""; 
     114 
     115                // have to formulate a smart search term that allows datasetID from the filename to be located within the xml-as-text doc 
     116 
     117                // 1. Strip of datacenter__FORMAT__ from front i.e. neodc.nerc.ac.uk__DIF__neodc.nerc.ac.uk-DIF-dataent_11658383444211836.xml - get the first index here of __DIF__ 
     118 
     119                // work out format to be stripped from the original filename (requested format is NO use here!) 
     120                if (thisDocNameID.indexOf("DIF") != -1) { 
    105121                         
    106                         searchTerm =   idSansDataCentre + "</DatasetIdentifier>";                                                
    107                 } else if (requestedFormat.equals("ISO")) {                      
     122                        formatStr = "__DIF__"; 
     123 
     124                        idSansDataCentre = thisDocNameID.substring((thisDocNameID.indexOf(formatStr) + formatStr.length())); 
     125                        idSansDataCentre = idSansDataCentre.replaceAll("\\.xml", ""); // get rid of the xml extension 
     126 
     127                        // now get rid of the "-DIF-" and replace with ":DIF:"                   
     128                        searchTerm = idSansDataCentre.replaceAll("-DIF-", ":DIF:") + returnClosingElement(requestedFormat); 
    108129                         
    109                         searchTerm =  idSansDataCentre + "</gco:CharacterString>";                                               
    110                 } else if (requestedFormat.equals("DC")) {                       
     130                } else if (thisDocNameID.indexOf("MDIP") != -1) { 
     131                        formatStr = "__MDIP__"; 
    111132                         
    112                         searchTerm = idSansDataCentre + "</dc:identifier>";                                              
    113                 } else { 
    114                         // must be MOLES in this case 
     133                        idSansDataCentre = thisDocNameID.substring((thisDocNameID.indexOf(formatStr) + formatStr.length())); 
     134                        idSansDataCentre = idSansDataCentre.replaceAll("\\.xml", ""); // get rid of the xml extension 
     135 
     136                        searchTerm = idSansDataCentre.replaceAll("-MDIP-", ":MDIP:")  + returnClosingElement(requestedFormat); 
    115137                         
    116                         searchTerm = idSansDataCentre + "</localIdentifier>";                                            
     138                         
     139                } else if (thisDocNameID.indexOf("DC") != -1) { 
     140                        formatStr = "__DC__"; 
     141                         
     142                        idSansDataCentre = thisDocNameID.substring((thisDocNameID.indexOf(formatStr) + formatStr.length())); 
     143                        idSansDataCentre = idSansDataCentre.replaceAll("\\.xml", ""); // get rid of the xml extension 
     144 
     145                        searchTerm = idSansDataCentre.replaceAll("-DC-", ":DC:") + returnClosingElement(requestedFormat); 
     146                         
     147                         
     148                } else if (thisDocNameID.indexOf("MOLES") != -1) {// dont think the next 3 are ever used 
     149                        formatStr = "__MOLES__"; 
     150                         
     151                        idSansDataCentre = thisDocNameID.substring((thisDocNameID.indexOf(formatStr) + formatStr.length())); 
     152                        idSansDataCentre = idSansDataCentre.replaceAll("\\.xml", ""); // get rid of the xml extension 
     153                         
     154                        searchTerm = idSansDataCentre.replaceAll("-MOLES-", ":MOLES:") + returnClosingElement(requestedFormat); 
     155                         
     156                } else { // must be ISO (which will be used one day..) 
     157                        formatStr = "__ISO__"; 
     158                         
     159                        idSansDataCentre = thisDocNameID.substring((thisDocNameID.indexOf(formatStr) + formatStr.length())); 
     160                        idSansDataCentre = idSansDataCentre.replaceAll("\\.xml", ""); // get rid of the xml extension 
     161 
     162                        searchTerm = idSansDataCentre.replaceAll("-ISO-", ":ISO:")  + returnClosingElement(requestedFormat); 
     163                         
    117164                } 
    118                  
    119                 //logger.info("search term returned: " + searchTerm ); 
    120165                 
    121166                return searchTerm; 
    122167        } 
    123168 
    124  
    125  
    126169} 
Note: See TracChangeset for help on using the changeset viewer.