diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java index e7af97537..f03d5d3c9 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java @@ -22,6 +22,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.Tem import edu.cornell.mannlib.vitro.webapp.controller.individuallist.IndividualListResults; import edu.cornell.mannlib.vitro.webapp.dao.IndividualDao; import edu.cornell.mannlib.vitro.webapp.modules.searchEngine.SearchEngineException; +import edu.cornell.mannlib.vitro.webapp.modules.searchEngine.SearchQuery; import edu.cornell.mannlib.vitro.webapp.utils.searchengine.SearchQueryUtils; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individuallist.ListedIndividual; @@ -150,7 +151,7 @@ public class IndividualListController extends FreemarkerHttpServlet { throws SearchException{ try{ List classUris = Collections.singletonList(vclassURI); - IndividualListQueryResults results = SearchQueryUtils.buildAndExecuteVClassQuery(classUris, alpha, page, INDIVIDUALS_PER_PAGE, indDao); + IndividualListQueryResults results = buildAndExecuteVClassQuery(classUris, alpha, page, INDIVIDUALS_PER_PAGE, indDao); return getResultsForVClassQuery(results, page, INDIVIDUALS_PER_PAGE, alpha); } catch (SearchEngineException e) { String msg = "An error occurred retrieving results for vclass query"; @@ -165,7 +166,7 @@ public class IndividualListController extends FreemarkerHttpServlet { public static IndividualListResults getResultsForVClassIntersections(List vclassURIs, int page, int pageSize, String alpha, IndividualDao indDao) { try{ - IndividualListQueryResults results = SearchQueryUtils.buildAndExecuteVClassQuery(vclassURIs, alpha, page, pageSize, indDao); + IndividualListQueryResults results = buildAndExecuteVClassQuery(vclassURIs, alpha, page, pageSize, indDao); return getResultsForVClassQuery(results, page, pageSize, alpha); } catch(Throwable th) { log.error("Error retrieving individuals corresponding to intersection multiple classes." + vclassURIs.toString(), th); @@ -176,7 +177,7 @@ public class IndividualListController extends FreemarkerHttpServlet { public static IndividualListResults getRandomResultsForVClass(String vclassURI, int page, int pageSize, IndividualDao indDao) { try{ List classUris = Collections.singletonList(vclassURI); - IndividualListQueryResults results = SearchQueryUtils.buildAndExecuteRandomVClassQuery(classUris, page, pageSize, indDao); + IndividualListQueryResults results = buildAndExecuteRandomVClassQuery(classUris, page, pageSize, indDao); return getResultsForVClassQuery(results, page, pageSize, ""); } catch(Throwable th) { log.error("An error occurred retrieving random results for vclass query", th); @@ -184,13 +185,7 @@ public class IndividualListController extends FreemarkerHttpServlet { } } - //TODO: Get rid of this method and utilize SearchQueryUtils - currently appears to be referenced - //only within DataGetterUtils - public static long getIndividualCount(List vclassUris) { - return SearchQueryUtils.getIndividualCount(vclassUris); - } - - private static IndividualListResults getResultsForVClassQuery(IndividualListQueryResults results, int page, int pageSize, String alpha) { + private static IndividualListResults getResultsForVClassQuery(IndividualListQueryResults results, int page, int pageSize, String alpha) { long hitCount = results.getHitCount(); if ( hitCount > pageSize ){ return new IndividualListResults(hitCount, results.getIndividuals(), alpha, true, makePagesList(hitCount, pageSize, page)); @@ -198,7 +193,32 @@ public class IndividualListController extends FreemarkerHttpServlet { return new IndividualListResults(hitCount, results.getIndividuals(), alpha, false, Collections.emptyList()); } } - + + + private static IndividualListQueryResults buildAndExecuteVClassQuery( + List vclassURIs, String alpha, int page, int pageSize, IndividualDao indDao) + throws SearchEngineException { + SearchQuery query = SearchQueryUtils.getQuery(vclassURIs, alpha, page, pageSize); + IndividualListQueryResults results = IndividualListQueryResults.runQuery(query, indDao); + log.debug("Executed search query for " + vclassURIs); + if (results.getIndividuals().isEmpty()) { + log.debug("entities list is null for vclass " + vclassURIs); + } + return results; + } + + private static IndividualListQueryResults buildAndExecuteRandomVClassQuery( + List vclassURIs, int page, int pageSize, IndividualDao indDao) + throws SearchEngineException { + SearchQuery query = SearchQueryUtils.getRandomQuery(vclassURIs, page, pageSize); + IndividualListQueryResults results = IndividualListQueryResults.runQuery(query, indDao); + log.debug("Executed search query for " + vclassURIs); + if (results.getIndividuals().isEmpty()) { + log.debug("entities list is null for vclass " + vclassURIs); + } + return results; + } + public static List makePagesList( long size, int pageSize, int selectedPage ) { diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/DataGetterUtils.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/DataGetterUtils.java index 973d54e8a..80324934a 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/DataGetterUtils.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/DataGetterUtils.java @@ -38,6 +38,7 @@ import edu.cornell.mannlib.vitro.webapp.dao.DisplayVocabulary; import edu.cornell.mannlib.vitro.webapp.dao.VClassGroupsForRequest; import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; import edu.cornell.mannlib.vitro.webapp.dao.jena.VClassGroupCache; +import edu.cornell.mannlib.vitro.webapp.utils.searchengine.SearchQueryUtils; public class DataGetterUtils { @@ -260,19 +261,6 @@ public class DataGetterUtils { "PREFIX xsd: \n" + "PREFIX display: <" + DisplayVocabulary.DISPLAY_NS +"> \n"; - //This query is used in more than one place, so can be placed here - //An alternative is to have individuals for classes data getter extend classgroupdatagetter - //This currently assumes one class group uri per data getter, but this can be extended - /** - * For page data getter conversions - */ - /** - * Get Individual count for search query for intersection of multiple classes - */ - public static long getIndividualCountForIntersection(VitroRequest vreq, List classUris) { - return IndividualListController.getIndividualCount(classUris); - } - //Return data getter type to be employed in display model public static String generateDataGetterTypeURI(String dataGetterClassName) { return "java:" + dataGetterClassName; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/IndividualsForClassesDataGetter.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/IndividualsForClassesDataGetter.java index 25f0ff7fc..47a17976e 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/IndividualsForClassesDataGetter.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/IndividualsForClassesDataGetter.java @@ -33,6 +33,7 @@ import edu.cornell.mannlib.vitro.webapp.dao.DisplayVocabulary; import edu.cornell.mannlib.vitro.webapp.dao.VClassGroupsForRequest; import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; import edu.cornell.mannlib.vitro.webapp.dao.jena.VClassGroupCache; +import edu.cornell.mannlib.vitro.webapp.utils.searchengine.SearchQueryUtils; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.VClassGroupTemplateModel; /** @@ -217,7 +218,8 @@ public class IndividualsForClassesDataGetter extends DataGetterBase implements D for(VClass r: restrictClasses) { classUris.add(r.getURI()); } - long count = DataGetterUtils.getIndividualCountForIntersection(vreq, classUris); + long count = SearchQueryUtils.getIndividualCount(classUris); + return new Long(count).intValue(); } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/searchengine/SearchQueryUtils.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/searchengine/SearchQueryUtils.java index 42cad8150..3ab74ccf6 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/searchengine/SearchQueryUtils.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/searchengine/SearchQueryUtils.java @@ -221,27 +221,4 @@ public class SearchQueryUtils { } } - public static IndividualListQueryResults buildAndExecuteVClassQuery( - List vclassURIs, String alpha, int page, int pageSize, IndividualDao indDao) - throws SearchEngineException { - SearchQuery query = SearchQueryUtils.getQuery(vclassURIs, alpha, page, pageSize); - IndividualListQueryResults results = IndividualListQueryResults.runQuery(query, indDao); - log.debug("Executed search query for " + vclassURIs); - if (results.getIndividuals().isEmpty()) { - log.debug("entities list is null for vclass " + vclassURIs); - } - return results; - } - - public static IndividualListQueryResults buildAndExecuteRandomVClassQuery( - List vclassURIs, int page, int pageSize, IndividualDao indDao) - throws SearchEngineException { - SearchQuery query = SearchQueryUtils.getRandomQuery(vclassURIs, page, pageSize); - IndividualListQueryResults results = IndividualListQueryResults.runQuery(query, indDao); - log.debug("Executed search query for " + vclassURIs); - if (results.getIndividuals().isEmpty()) { - log.debug("entities list is null for vclass " + vclassURIs); - } - return results; - } }