Project

General

Profile

« Previous | Next » 

Revision 2424

Added by sgarg about 19 years ago

Added code such that an offset can be specified in metacat.properties for entering records into xml_queryresult table. The value of xml_returnfield.usage_count should be more than the value specified in metacat.properties for records to be entered into xml_queryresult. so if you want results for any combination of returnfields should be stored in xml_queryresult only after that combination has been requested 50 times, set this value to 50

View differences:

DBQuery.java
39 39
import java.io.IOException;
40 40
import java.io.InputStream;
41 41
import java.io.PrintWriter;
42
import java.io.Reader;
43 42
import java.io.StringReader;
44 43
import java.io.StringWriter;
45 44
import java.sql.PreparedStatement;
......
616 615
                                       throws Exception
617 616
   {
618 617

  
619
     // get the return field and check if there is a record in xml_returnfield
620
     int returnfield_id = getXmlReturnfieldsTableId(qspec, dbconn);
618
     // check if there is a record in xml_returnfield
619
     // and get the returnfield_id and usage count
620
     int usage_count = getXmlReturnfieldsTableId(qspec, dbconn);
621
     boolean enterRecords = false;
622

  
623
     // get value of xml_returnfield_count
624
     int count = (new Integer(MetaCatUtil
625
                            .getOption("xml_returnfield_count")))
626
                            .intValue();
627
     if(usage_count > count){
628
         enterRecords = true;
629
     }
630

  
621 631
     if(returnfield_id < 0){
622 632
         MetaCatUtil.debugMessage("Error in getting returnfield id from"
623 633
                                  + "xml_returnfield table", 20);
624 634
     }
625 635

  
636

  
637

  
626 638
     // get the hashtable containing the docids that already in the
627 639
     // xml_queryresult table
628 640
     MetaCatUtil.debugMessage("size of partOfDoclist before"
......
659 671
         key = (String) keys.nextElement();
660 672
         element = (String)partOfDoclist.get(key);
661 673

  
662
         if(element != null && element.length() < offset){
674
         if(enterRecords && element != null && element.length() < offset){
663 675
             query = "INSERT INTO xml_queryresult (returnfield_id, docid, "
664 676
                 + "queryresult_string) VALUES ('" + returnfield_id
665 677
                 + "', '" + key + "', '" + element + "')";
......
771 783
    * Method to get id from xml_returnfield table
772 784
    * for a given query specification
773 785
    */
786
   private int returnfield_id;
774 787
   private int getXmlReturnfieldsTableId(QuerySpecification qspec,
775 788
                                           DBConnection dbconn){
776 789
       int id = -1;
790
       int count = 1;
777 791
       PreparedStatement pstmt = null;
778 792
       ResultSet rs = null;
779 793
       String returnfield = qspec.getSortedReturnFieldString();
......
796 810
           if(tableHasRows){
797 811
               // get the id
798 812
               id = rs.getInt(1);
799
               int count = rs.getInt(2) + 1;
813
               count = rs.getInt(2) + 1;
800 814
               rs.close();
801 815
               pstmt.close();
802 816

  
......
847 861
                                     + e.getMessage(), 20);
848 862
           id = -1;
849 863
       }
850
       return id;
864

  
865
       returnfield_id = id;
866
       return count;
851 867
   }
852 868

  
853 869

  

Also available in: Unified diff