Revision 2424
Added by sgarg about 19 years ago
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
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