Changeset 7897 for RevitalizationWS


Ignore:
Timestamp:
04/03/11 13:12:06 (8 years ago)
Author:
mnagni
Message:

Removed the Thread class managing the recordset_counter update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • RevitalizationWS/ws/DiscoveryService/trunk/src/main/java/ndg/services/discovery/model/SearchAgent.java

    r7896 r7897  
    128128                PresentAgent present = new PresentAgent(); 
    129129                res = present.doPresent(conn, toFilter, searchType.getRetrieveCriteria()); 
     130 
     131                int numUpdated = doUpdateVal(conn, toFilter); 
     132                logHelper.logMessage("Updated " + numUpdated + " resultset_counter", Level.INFO); 
     133 
     134                return res; 
     135        } 
     136 
     137        private int doUpdateVal(Connection conn, List<String> documentIDs) { 
     138                if (documentIDs == null || documentIDs.size() == 0) { 
     139                        return 0; 
     140                } 
    130141                 
    131                 //Create an independent thread to let Axis return the results faster 
    132                 new Thread(new UpdateCountVal(toFilter)).start(); 
    133  
    134                 return res; 
    135         } 
    136  
     142                StringBuffer sb = new StringBuffer(); 
     143                sb.append("UPDATE original_document SET resultset_count = resultset_count + 1 WHERE original_document_filename ");                                       
     144                sb.append(" IN ("); 
     145 
     146                Iterator<String> iter = documentIDs.iterator(); 
     147                while (iter.hasNext()) { 
     148                        sb.append("'"); 
     149                        sb.append(iter.next()); 
     150                        sb.append("'"); 
     151                        if (iter.hasNext()) 
     152                                sb.append(", "); 
     153                } 
     154                sb.append(") "); 
     155                 
     156                Statement statement; 
     157                try { 
     158                        statement = conn.createStatement(); 
     159                        return statement.executeUpdate(sb.toString()); 
     160                } catch (SQLException e) { 
     161                        logHelper.logMessage("Error on updating resultset_counter", Level.ERROR); 
     162                }                
     163                return 0; 
     164        } 
     165         
    137166        @Override 
    138167        List<String> loadResultSet(ResultSet rs) throws SQLException { 
     
    415444                return ret; 
    416445        } 
    417          
    418         private class UpdateCountVal implements Runnable{ 
    419                 private Logger logger = Logger.getLogger(UpdateCountVal.class.getName()); 
    420                  
    421                 private final List<String> documentIDs; 
    422  
    423                 public void run() { 
    424                         try { 
    425                                 updateCountVal(); 
    426                         } catch (NdgSQLException e) { 
    427                                 if (logger.isInfoEnabled()) 
    428                                         logger.info(e.getMessage(), e); 
    429                         } catch (ResourceNotAvailable e) { 
    430                                 if (logger.isInfoEnabled()) 
    431                                         logger.info(e.getMessage(), e); 
    432                         } 
    433                 }        
    434                  
    435                 public UpdateCountVal(List<String> documentIDs) { 
    436                         super(); 
    437                         this.documentIDs = documentIDs; 
    438                 } 
    439  
    440                 private void updateCountVal() throws NdgSQLException, ResourceNotAvailable { 
    441                         Connection conn = DiscoveryBasic.getInstance().getDiscoveryConnection(); 
    442                         boolean commit = false; 
    443                         int ret = 0; 
    444                         try { 
    445                                 conn.setAutoCommit(false); 
    446                                 ret = doUpdateVal(conn); 
    447                                 commit = true; 
    448                         } catch (SQLException e) { 
    449                                 // NdgMessage msg = new NdgMessage("sql.resultset.parsing.error", 
    450                                 // new Object[] { sqlQuery }); 
    451                                 throw new NdgSQLException(e); 
    452                         } finally { 
    453                                 commitOrRollback(conn, commit); 
    454                                 if (logger.isInfoEnabled()) 
    455                                         logger.info("Updated " + ret + " resultset_counter"); 
    456                         } 
    457                 } 
    458  
    459                 private int doUpdateVal(Connection conn) throws SQLException { 
    460                         if (documentIDs == null || documentIDs.size() == 0) { 
    461                                 return 0; 
    462                         } 
    463                          
    464                         StringBuffer sb = new StringBuffer(); 
    465                         sb.append("UPDATE original_document SET resultset_count = resultset_count + 1 WHERE original_document_filename ");                                       
    466                         sb.append(" IN ("); 
    467  
    468                         Iterator<String> iter = documentIDs.iterator(); 
    469                         while (iter.hasNext()) { 
    470                                 sb.append("'"); 
    471                                 sb.append(iter.next()); 
    472                                 sb.append("'"); 
    473                                 if (iter.hasNext()) 
    474                                         sb.append(", "); 
    475                         } 
    476                         sb.append(") "); 
    477                          
    478                         Statement statement = conn.createStatement(); 
    479                         return statement.executeUpdate(sb.toString()); 
    480                 }                
    481         } 
    482446} 
Note: See TracChangeset for help on using the changeset viewer.