Changeset 4974 for TI01-discovery


Ignore:
Timestamp:
13/02/09 16:02:35 (11 years ago)
Author:
sdonegan
Message:

Updated methodology for returning docs - if requested format matches the original ingest format then service will return original ingest doc, otherwise will use results of xquery transforms. Addresses problem noted by BODC and MDIP.

File:
1 edited

Legend:

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

    r4795 r4974  
    8181        { 
    8282                PresentSummary result = null; 
    83  
    84                 // firstly prepare the search query string 
    85                 String sqlQuery = constructSearchQuery(); 
    86                  
    87                 // now run the query using the db client configured appropriately 
     83                                 
     84                //now run the query using the db client configured appropriately 
    8885                InterfaceDBClient client = DBProperties.setupDBClient(); 
    89                 String[][] results = client.runQuery(sqlQuery); 
    90                 client.closeConnection(); 
    91                  
     86                                 
     87                //construct apostrophe separated list of documents to use in 'IN' statement 
     88                Iterator<String> it = this.documentNames.iterator();             
     89                String[][] results = new String[this.documentNames.size()][2]; 
     90                 
     91                int counter = 0; 
     92                 
     93                while ( it.hasNext() ) 
     94                {                        
     95                        String thisdoc = it.next(); 
     96                         
     97                        //get original format 
     98                        String origFormatQuery = getOriginalIngestFormat(thisdoc); 
     99                        String[][] thisDocOriginalFormatArr = client.runQuery(origFormatQuery); 
     100                        String thisDocOriginalFormat = thisDocOriginalFormatArr[0][0]; 
     101                         
     102                        //construct sql query to extract THIS DOC using these params 
     103                        String sqlQuery = constructSearchQuery(thisDocOriginalFormat, thisdoc); 
     104                         
     105                        //run query 
     106                        String[][] singleDoc = client.runQuery(sqlQuery);                        
     107                         
     108                        //put back in results set 
     109                        results[counter][0] = singleDoc[0][0]; 
     110                        results[counter][1] = singleDoc[0][1]; 
     111                         
     112                        counter++; 
     113                } 
     114                 
     115                client.closeConnection();                
     116                         
    92117                // now extract the results data 
    93118                result = processResults(results); 
     
    137162 
    138163        /** 
     164         * Set up a SQL Select query to obtain original ingest format 
     165         *  
     166         * @return String - SQL command 
     167         */ 
     168        private String getOriginalIngestFormat(String origDocFileName) 
     169        { 
     170                String getOriginal = "select original_format from original_document where original_document_filename = '" + origDocFileName  + "';"; 
     171                 
     172                return getOriginal; 
     173        } 
     174         
     175        /** 
    139176         * Set up a SQL Select query with the input search parameters 
    140177         *  
     178         * @param String - original document format 
     179         * @param String - original document filename 
    141180         * @return String - SQL command 
    142181         */ 
    143         private String constructSearchQuery()  
     182        private String constructSearchQuery(String thisDocOrigFormat, String thisDocOrigFileName)  
    144183        { 
    145184                logger.info("Creating search query"); 
     
    148187                 
    149188                // construct apostrophe separated list of documents to use in 'IN' statement 
    150                 Iterator<String> it = this.documentNames.iterator(); 
     189                /*Iterator<String> it = this.documentNames.iterator(); 
    151190                StringBuffer allDocs = new StringBuffer(); 
    152191                while ( it.hasNext() ) 
    153192                { 
    154193                        String thisdoc = it.next(); 
     194                         
    155195                        if (allDocs.length() > 0) 
    156196                                allDocs.append(", "); 
    157197                        allDocs.append("'" + thisdoc + "'"); 
    158                 } 
     198                }*/ 
    159199                 
    160200                // if the format is original, we can look this up directly from the original doc table 
    161201                if (this.getFormat().equals(DiscoveryServiceSkeleton.ORIGINAL_FORMAT)) 
    162202                { 
     203                         
    163204                        sqlCmd = "SELECT original_document_filename, original_document FROM " +  
    164205                                        DBProperties.ORIGINAL_DOCUMENT_TABLE + DBProperties.WHERE_STATEMENT +  
    165                                         DBProperties.ORIGINAL_DOCUMENT_TABLE + ".original_document_filename IN (" + allDocs.toString() + ")"; 
     206                                        DBProperties.ORIGINAL_DOCUMENT_TABLE + ".original_document_filename IN ('" + thisDocOrigFileName + "')"; 
    166207                } 
    167208                else 
    168209                { 
     210                         
     211                        //build in extra functionality here to ensure that original ingest format is returned matching requested format as applicable 
     212                         
     213                        if (thisDocOrigFormat.equals(this.getFormat())){ 
     214                                logger.info("REQUESTED FORMAT MATCHES ORIG INGEST FORMAT SO RETURNING ORIGINAL DOCUMENT!"); 
     215                                sqlCmd = "SELECT original_document_filename, original_document FROM " +  
     216                                DBProperties.ORIGINAL_DOCUMENT_TABLE + ", " + DBProperties.TRANSFORMED_DOCUMENT_TABLE + 
     217                                DBProperties.WHERE_STATEMENT + DBProperties.TRANSFORMED_DOCUMENT_TABLE + ".original_document_id = " + 
     218                                DBProperties.ORIGINAL_DOCUMENT_TABLE + ".original_document_id AND " + 
     219                                DBProperties.TRANSFORMED_DOCUMENT_TABLE + ".transformed_format = '" + this.getFormat() + "' AND " + 
     220                                DBProperties.ORIGINAL_DOCUMENT_TABLE + ".original_document_filename IN ('" + thisDocOrigFileName + "')"; 
     221                 
     222                        } else { 
     223                                                 
    169224                        sqlCmd = "SELECT original_document_filename, transformed_document FROM " +  
    170225                                        DBProperties.ORIGINAL_DOCUMENT_TABLE + ", " + DBProperties.TRANSFORMED_DOCUMENT_TABLE + 
     
    172227                                        DBProperties.ORIGINAL_DOCUMENT_TABLE + ".original_document_id AND " + 
    173228                                        DBProperties.TRANSFORMED_DOCUMENT_TABLE + ".transformed_format = '" + this.getFormat() + "' AND " + 
    174                                         DBProperties.ORIGINAL_DOCUMENT_TABLE + ".original_document_filename IN (" + allDocs.toString() + ")"; 
     229                                        DBProperties.ORIGINAL_DOCUMENT_TABLE + ".original_document_filename IN ('" + thisDocOrigFileName + "')"; 
     230                         
     231                        } 
    175232                } 
    176233                logger.info("Search query created"); 
Note: See TracChangeset for help on using the changeset viewer.