diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/searchresult/BaseIndividualSearchResult.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/searchresult/BaseIndividualSearchResult.java deleted file mode 100644 index 7fa0fce6d..000000000 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/searchresult/BaseIndividualSearchResult.java +++ /dev/null @@ -1,70 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vitro.webapp.web.templatemodels.searchresult; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import edu.cornell.mannlib.vitro.webapp.beans.Individual; -import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; -import edu.cornell.mannlib.vitro.webapp.dao.ObjectPropertyStatementDao; -import edu.cornell.mannlib.vitro.webapp.web.ViewFinder; -import edu.cornell.mannlib.vitro.webapp.web.ViewFinder.ClassView; -import edu.cornell.mannlib.vitro.webapp.web.templatemodels.BaseTemplateModel; - -public abstract class BaseIndividualSearchResult extends BaseTemplateModel { - - private static final Log log = LogFactory.getLog(BaseIndividualSearchResult.class); - - protected final VitroRequest vreq; - protected final Individual individual; - - public BaseIndividualSearchResult(Individual individual, VitroRequest vreq) { - this.vreq = vreq; - this.individual = individual; - } - - protected String getView(ClassView view) { - ViewFinder vf = new ViewFinder(view); - return vf.findClassView(individual, vreq); - } - - public static List getIndividualTemplateModels(List individuals, VitroRequest vreq) { - List models = new ArrayList(individuals.size()); - for (Individual individual : individuals) { - models.add(new IndividualSearchResult(individual, vreq)); - } - return models; - } - - /* Template properties */ - - public String getUri() { - return individual.getURI(); - } - - public String getProfileUrl() { - return UrlBuilder.getIndividualProfileUrl(individual, vreq); - } - - public String getName() { - return individual.getName(); - } - - public Collection getMostSpecificTypes() { - ObjectPropertyStatementDao opsDao = vreq.getWebappDaoFactory().getObjectPropertyStatementDao(); - Map types = opsDao.getMostSpecificTypesInClassgroupsForIndividual(individual.getURI()); - return types.values(); - } - - public String getSnippet() { - return individual.getSearchSnippet(); - } - -} diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/searchresult/IndividualSearchResult.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/searchresult/IndividualSearchResult.java index 01204ad00..9c72e2d71 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/searchresult/IndividualSearchResult.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/searchresult/IndividualSearchResult.java @@ -2,18 +2,90 @@ package edu.cornell.mannlib.vitro.webapp.web.templatemodels.searchresult; +import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; +import edu.cornell.mannlib.vitro.webapp.dao.ObjectPropertyStatementDao; +import edu.cornell.mannlib.vitro.webapp.web.ViewFinder; +import edu.cornell.mannlib.vitro.webapp.web.templatemodels.BaseTemplateModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import edu.cornell.mannlib.vitro.webapp.beans.Individual; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -public class IndividualSearchResult extends BaseIndividualSearchResult { +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +public class IndividualSearchResult extends BaseTemplateModel { private static final Log log = LogFactory.getLog(IndividualSearchResult.class); - + + private static Class resultClass = IndividualSearchResult.class; + + protected final VitroRequest vreq; + protected final Individual individual; + public IndividualSearchResult(Individual individual, VitroRequest vreq) { - super(individual, vreq); + this.vreq = vreq; + this.individual = individual; } + protected String getView(ViewFinder.ClassView view) { + ViewFinder vf = new ViewFinder(view); + return vf.findClassView(individual, vreq); + } + + public static List getIndividualTemplateModels(List individuals, VitroRequest vreq) { + List models = new ArrayList(individuals.size()); + for (Individual individual : individuals) { +// models.add(new IndividualSearchResult(individual, vreq)); + + try { + Constructor ctor = resultClass.getDeclaredConstructor(Individual.class, VitroRequest.class); + models.add((IndividualSearchResult)ctor.newInstance(individual, vreq)); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + return models; + } + + /* Template properties */ + + public String getUri() { + return individual.getURI(); + } + + public String getProfileUrl() { + return UrlBuilder.getIndividualProfileUrl(individual, vreq); + } + + public String getName() { + return individual.getName(); + } + + public Collection getMostSpecificTypes() { + ObjectPropertyStatementDao opsDao = vreq.getWebappDaoFactory().getObjectPropertyStatementDao(); + Map types = opsDao.getMostSpecificTypesInClassgroupsForIndividual(individual.getURI()); + return types.values(); + } + + public String getSnippet() { + return individual.getSearchSnippet(); + } + + protected static void registerResultClass(Class clazz) { + if (IndividualSearchResult.class.isAssignableFrom(clazz)) { + resultClass = clazz; + } + } } \ No newline at end of file