Changeset 7615 for RevitalizationWS


Ignore:
Timestamp:
18/10/10 15:07:54 (9 years ago)
Author:
mnagni
Message:

Changed in the DiscoverySchema? the type of the ResourceLocator? element from xs:boolean to xs:string (as boolean the wsdl2java wan not able satisfy the nillable="true" attribute of the element, eventually returning false)
Improved the resultset_counter update (now runs in a independent thread)

Location:
RevitalizationWS/ws/DiscoveryService/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • RevitalizationWS/ws/DiscoveryService/trunk/pom.xml

    r7545 r7615  
    1818                        <groupId>ndg.services</groupId> 
    1919                        <artifactId>common</artifactId> 
    20                         <version>1.1.0</version> 
     20                        <version>1.1.1</version> 
    2121                </dependency> 
    2222 
  • RevitalizationWS/ws/DiscoveryService/trunk/src/main/java/ndg/services/discovery/model/SearchAgent.java

    r7332 r7615  
    2121import ndg.services.discovery.basic.DiscoveryDictionary; 
    2222import ndg.services.discovery.basic.DiscoveryDictionary.TemporalOperator; 
     23import ndg.services.jpa.OriginalDocument; 
    2324import ndg.services.schemas.discovery.BoundingBoxType; 
    2425import ndg.services.schemas.discovery.DateRangeType; 
     
    3031import ndg.services.schemas.discovery.TermSearchType; 
    3132import ndg.services.schemas.discovery.SearchType.SearchCriteria; 
    32 import ndg.services.jpa.OriginalDocument; 
    3333 
    3434import org.apache.log4j.Level; 
     35import org.apache.log4j.Logger; 
    3536 
    3637/** 
     
    130131                PresentAgent present = new PresentAgent(); 
    131132                res = present.doPresent(conn, toFilter, searchType.getRetrieveCriteria()); 
    132                 updateCountVal(toFilter); 
     133                 
     134                //Create an independent thread to let Axis return the results faster 
     135                new Thread(new UpdateCountVal(toFilter)).start(); 
     136 
    133137                return res; 
    134138        } 
     
    165169        } 
    166170 
    167         private void preapareResourceLocatorSearch(StringBuffer fromSQL, StringBuffer whereSQL, boolean resourceLocator) { 
     171        private void preapareResourceLocatorSearch(StringBuffer fromSQL, StringBuffer whereSQL, String resourceLocator) { 
    168172                checkWHERE_AND(whereSQL, false); 
    169                 whereSQL.append("resource_locator = '" + resourceLocator + "'");                 
     173                resourceLocator = (resourceLocator == null || (!resourceLocator.equalsIgnoreCase("true") && !resourceLocator.equalsIgnoreCase("false"))) ? 
     174                        "resource_locator = 'TRUE' or resource_locator = 'FALSE'" : 
     175                        "resource_locator = '" + resourceLocator + "'";                  
     176                whereSQL.append(resourceLocator);                
    170177        }  
    171178         
     
    428435                        throw new NdgSQLException(e); 
    429436                } 
    430  
     437        } 
     438         
     439        private class UpdateCountVal implements Runnable{ 
     440                private Logger logger = Logger.getLogger(UpdateCountVal.class.getName()); 
     441                 
     442                private final List<String> documentIDs; 
     443 
     444                public void run() { 
     445                        try { 
     446                                updateCountVal(); 
     447                        } catch (NdgSQLException e) { 
     448                                if (logger.isInfoEnabled()) 
     449                                        logger.info(e.getMessage(), e); 
     450                        } catch (ResourceNotAvailable e) { 
     451                                if (logger.isInfoEnabled()) 
     452                                        logger.info(e.getMessage(), e); 
     453                        } 
     454                }        
     455                 
     456                public UpdateCountVal(List<String> documentIDs) { 
     457                        super(); 
     458                        this.documentIDs = documentIDs; 
     459                } 
     460 
     461                private void updateCountVal() throws NdgSQLException, ResourceNotAvailable { 
     462                        Connection conn = DiscoveryBasic.getInstance().getDiscoveryConnection(); 
     463                        boolean commit = false; 
     464                        try { 
     465                                conn.setAutoCommit(false); 
     466                                for (String docId : documentIDs) { 
     467                                        executeUpdateCountVal(conn, docId); 
     468                                } 
     469                                commit = true; 
     470                        } catch (SQLException e) { 
     471                                // NdgMessage msg = new NdgMessage("sql.resultset.parsing.error", 
     472                                // new Object[] { sqlQuery }); 
     473                                throw new NdgSQLException(e); 
     474                        } finally { 
     475                                commitOrRollback(conn, commit); 
     476                        } 
     477                } 
     478 
     479                private void executeUpdateCountVal(Connection conn, String docId) throws NdgSQLException { 
     480                        int monitorIndex = 0; 
     481                        while(true) { 
     482                                try { 
     483                                        doCountVal(conn, docId); 
     484                                        break; 
     485                                } catch (SQLException e) { 
     486                                        monitorIndex++; 
     487                                        if (monitorIndex > 15) 
     488                                                break; 
     489                                                //throw new NdgSQLException(e); 
     490                                }                        
     491                        } 
     492                } 
     493                 
     494                private void doCountVal(Connection conn, String docId) throws SQLException { 
     495                        Statement statement = conn.createStatement(); 
     496                        ResultSet rs = statement.executeQuery(getValue); 
     497                        if (!rs.next()) 
     498                                return; 
     499                        Integer counter = rs.getInt("counter"); 
     500                        PreparedStatement updateCounter = conn.prepareStatement(updateCounterSQL); 
     501                        updateCounter.setInt(1, counter + 1); 
     502                        updateCounter.setString(2, docId); 
     503                        updateCounter.executeUpdate();           
     504                } 
    431505        } 
    432506} 
  • RevitalizationWS/ws/DiscoveryService/trunk/src/main/resources/META-INF/DiscoverySchema.xsd

    r7332 r7615  
    7979                                                        </xs:annotation> 
    8080                                                </xs:element> 
    81                                                 <xs:element name="ResourceLocator" type="xs:boolean" minOccurs="0"/> 
     81                                                <xs:element name="ResourceLocator" type="xs:string" nillable="true" minOccurs="0"/> 
    8282                                        </xs:sequence> 
    8383                                </xs:complexType> 
Note: See TracChangeset for help on using the changeset viewer.