[VIVO-1245] Cleanup of IndividualSearchResult

This commit is contained in:
Graham Triggs 2016-05-24 14:33:45 +01:00
parent ca45b5e93d
commit 38836c15c9
2 changed files with 75 additions and 73 deletions

View file

@ -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<IndividualSearchResult> getIndividualTemplateModels(List<Individual> individuals, VitroRequest vreq) {
List<IndividualSearchResult> models = new ArrayList<IndividualSearchResult>(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<String> getMostSpecificTypes() {
ObjectPropertyStatementDao opsDao = vreq.getWebappDaoFactory().getObjectPropertyStatementDao();
Map<String, String> types = opsDao.getMostSpecificTypesInClassgroupsForIndividual(individual.getURI());
return types.values();
}
public String getSnippet() {
return individual.getSearchSnippet();
}
}

View file

@ -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<IndividualSearchResult> getIndividualTemplateModels(List<Individual> individuals, VitroRequest vreq) {
List<IndividualSearchResult> models = new ArrayList<IndividualSearchResult>(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<String> getMostSpecificTypes() {
ObjectPropertyStatementDao opsDao = vreq.getWebappDaoFactory().getObjectPropertyStatementDao();
Map<String, String> 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;
}
}
}