Changeset 7897
- Timestamp:
- 04/03/11 13:12:06 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
RevitalizationWS/ws/DiscoveryService/trunk/src/main/java/ndg/services/discovery/model/SearchAgent.java
r7896 r7897 128 128 PresentAgent present = new PresentAgent(); 129 129 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 } 130 141 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 137 166 @Override 138 167 List<String> loadResultSet(ResultSet rs) throws SQLException { … … 415 444 return ret; 416 445 } 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 }482 446 }
Note: See TracChangeset
for help on using the changeset viewer.