Merge pull request #38 from vivo-project/feature/1245-resolve-duplication
[VIVO-1245] Reduce code duplication and class overwriting in VIVO
This commit is contained in:
commit
1ee0ef72a8
27 changed files with 238 additions and 195 deletions
|
@ -8,6 +8,7 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individuallist.ListedIndividualBuilder;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
@ -100,7 +101,7 @@ public class IndividualListController extends FreemarkerHttpServlet {
|
|||
List<ListedIndividual> indsTm = new ArrayList<ListedIndividual>();
|
||||
if (inds != null) {
|
||||
for ( Individual ind : inds ) {
|
||||
indsTm.add(new ListedIndividual(ind,vreq));
|
||||
indsTm.add(ListedIndividualBuilder.build(ind,vreq));
|
||||
}
|
||||
}
|
||||
body.put("individuals", indsTm);
|
||||
|
|
|
@ -9,6 +9,7 @@ import java.util.Map;
|
|||
import java.util.Properties;
|
||||
|
||||
import com.hp.hpl.jena.rdf.model.RDFNode;
|
||||
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.IndividualTemplateModelBuilder;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.json.JSONException;
|
||||
|
@ -268,7 +269,7 @@ class IndividualResponseBuilder {
|
|||
private IndividualTemplateModel getIndividualTemplateModel(
|
||||
Individual individual) {
|
||||
//individual.sortForDisplay();
|
||||
return new IndividualTemplateModel(individual, vreq);
|
||||
return IndividualTemplateModelBuilder.build(individual, vreq);
|
||||
}
|
||||
|
||||
private TemplateModel wrap(Object obj, BeansWrapper wrapper) throws TemplateModelException {
|
||||
|
|
|
@ -20,6 +20,12 @@ import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
|||
* This will be overridden in VIVO so we can have more info in the display.
|
||||
*/
|
||||
public class IndividualJsonWrapper {
|
||||
private static AddJSONFields addJSONFields = null;
|
||||
|
||||
public static void setAddJSONFields(AddJSONFields add) {
|
||||
addJSONFields = add;
|
||||
}
|
||||
|
||||
static JSONObject packageIndividualAsJson(VitroRequest vreq, Individual ind)
|
||||
throws JSONException {
|
||||
// need an unfiltered dao to get firstnames and lastnames
|
||||
|
@ -33,6 +39,9 @@ public class IndividualJsonWrapper {
|
|||
jo.put("imageUrl", ind.getImageUrl());
|
||||
jo.put("profileUrl", UrlBuilder.getIndividualProfileUrl(ind, vreq));
|
||||
jo.put("mostSpecificTypes", getMostSpecificTypes(ind, fullWdf));
|
||||
if (addJSONFields != null) {
|
||||
addJSONFields.add(jo, vreq, ind);
|
||||
}
|
||||
return jo;
|
||||
}
|
||||
|
||||
|
@ -45,4 +54,7 @@ public class IndividualJsonWrapper {
|
|||
return mostSpecificTypes.values();
|
||||
}
|
||||
|
||||
public interface AddJSONFields {
|
||||
public void add(JSONObject jo, VitroRequest vreq, Individual ind) throws JSONException;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.IndividualTemplateModelBuilder;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.json.JSONArray;
|
||||
|
@ -72,7 +73,7 @@ public class GetRandomSearchIndividualsByVClass extends GetSearchIndividualsByVC
|
|||
|
||||
Map<String, Object> modelMap = new HashMap<String, Object>();
|
||||
modelMap.put("individual",
|
||||
new IndividualTemplateModel(individual, vreq));
|
||||
IndividualTemplateModelBuilder.build(individual, vreq));
|
||||
modelMap.put("vclass", vclassName);
|
||||
|
||||
ShortViewService svs = ShortViewServiceSetup.getService(ctx);
|
||||
|
|
|
@ -6,6 +6,7 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.IndividualTemplateModelBuilder;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.json.JSONArray;
|
||||
|
@ -80,7 +81,7 @@ public class GetRenderedSearchIndividualsByVClass extends GetSearchIndividualsBy
|
|||
|
||||
Map<String, Object> modelMap = new HashMap<String, Object>();
|
||||
modelMap.put("individual",
|
||||
new IndividualTemplateModel(individual, vreq));
|
||||
IndividualTemplateModelBuilder.build(individual, vreq));
|
||||
modelMap.put("vclass", vclassName);
|
||||
|
||||
ShortViewService svs = ShortViewServiceSetup.getService(ctx);
|
||||
|
|
|
@ -56,4 +56,18 @@ public class JspToGeneratorMapping {
|
|||
log.error( "could not load VIVO jsp mappings",th );
|
||||
}
|
||||
}
|
||||
|
||||
public static <T> T createFor(String jsp, Class<T> clazz) {
|
||||
try {
|
||||
if (jspsToGenerators.containsKey(jsp)) {
|
||||
Class classDefinition = Class.forName(jspsToGenerators.get(jsp));
|
||||
if (clazz.isAssignableFrom(classDefinition)) {
|
||||
return (T) classDefinition.newInstance();
|
||||
}
|
||||
}
|
||||
} catch (Throwable th) {
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ import java.util.Map;
|
|||
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.searchresult.IndividualSearchResult;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
@ -34,8 +35,7 @@ import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess;
|
|||
*
|
||||
*/
|
||||
public class DefaultAddMissingIndividualFormGenerator implements EditConfigurationGenerator {
|
||||
|
||||
private Log log = LogFactory.getLog(DefaultAddMissingIndividualFormGenerator.class);
|
||||
private static final Log log = LogFactory.getLog(DefaultAddMissingIndividualFormGenerator.class);
|
||||
private boolean isObjectPropForm = false;
|
||||
private String subjectUri = null;
|
||||
private String predicateUri = null;
|
||||
|
@ -43,8 +43,9 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
|
|||
|
||||
private String template = "defaultAddMissingIndividualForm.ftl";
|
||||
private static String createCommand = "create";
|
||||
private static String objectVarName = "newIndividual";
|
||||
protected static String objectVarName = "newIndividual";
|
||||
private static HashMap<String,String> defaultsForXSDtypes ;
|
||||
|
||||
static {
|
||||
defaultsForXSDtypes = new HashMap<String,String>();
|
||||
//defaultsForXSDtypes.put("http://www.w3.org/2001/XMLSchema#dateTime","2001-01-01T12:00:00");
|
||||
|
@ -52,7 +53,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
|
|||
}
|
||||
|
||||
//Method which checks whether this particular generator should be employed
|
||||
public static boolean isCreateNewIndividual(VitroRequest vreq, HttpSession session) {
|
||||
public static final boolean isCreateNewIndividual(VitroRequest vreq, HttpSession session) {
|
||||
String command = vreq.getParameter("cmd");
|
||||
String predicateUri = EditConfigurationUtils.getPredicateUri(vreq);
|
||||
//This method also looks at domain and range uris and so is different than just getting the
|
||||
|
@ -98,6 +99,9 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
|
|||
//set fields
|
||||
setFields(editConfiguration, vreq, EditConfigurationUtils.getPredicateUri(vreq));
|
||||
|
||||
//form specific data
|
||||
addFormSpecificData(editConfiguration, vreq);
|
||||
|
||||
//add preprocesoors
|
||||
addPreprocessors(vreq, editConfiguration);
|
||||
|
||||
|
@ -116,7 +120,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
|
|||
return editConfiguration;
|
||||
}
|
||||
|
||||
private Map<String, String> generateNewResources(VitroRequest vreq) {
|
||||
protected Map<String, String> generateNewResources(VitroRequest vreq) {
|
||||
HashMap<String, String> newResources = new HashMap<String, String>();
|
||||
//Null triggers default namespace
|
||||
newResources.put(objectVarName, null);
|
||||
|
@ -210,14 +214,14 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
|
|||
return n3ForEdit;
|
||||
}
|
||||
|
||||
private List<String> getN3Prefixes() {
|
||||
protected List<String> getN3Prefixes() {
|
||||
List<String> prefixStrings = new ArrayList<String>();
|
||||
prefixStrings.add("@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .");
|
||||
prefixStrings.add("@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .");
|
||||
return prefixStrings;
|
||||
}
|
||||
|
||||
private String getN3PrefixesAsString() {
|
||||
protected String getN3PrefixesAsString() {
|
||||
String prefixes = StringUtils.join(getN3Prefixes(), "\n");
|
||||
return prefixes;
|
||||
}
|
||||
|
@ -226,7 +230,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
|
|||
return "?" + objectVarName + " rdfs:label ?name .";
|
||||
}
|
||||
|
||||
private List<String> generateN3Optional(VitroRequest vreq) {
|
||||
protected List<String> generateN3Optional(VitroRequest vreq) {
|
||||
//flag uri and asserted types need to be added here
|
||||
List<String> n3Optional = new ArrayList<String>();
|
||||
n3Optional.add("?" + objectVarName + " ?inverseProp ?subject .");
|
||||
|
@ -268,7 +272,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
|
|||
//n3 should look as follows
|
||||
//?subject ?predicate ?objectVar
|
||||
|
||||
private void setUrisAndLiteralsOnForm(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
|
||||
protected void setUrisAndLiteralsOnForm(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
|
||||
List<String> urisOnForm = new ArrayList<String>();
|
||||
List<String> literalsOnForm = new ArrayList<String>();
|
||||
literalsOnForm.add("name");
|
||||
|
@ -308,7 +312,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
|
|||
}
|
||||
|
||||
|
||||
private void setFields(EditConfigurationVTwo editConfiguration, VitroRequest vreq, String predicateUri) {
|
||||
protected void setFields(EditConfigurationVTwo editConfiguration, VitroRequest vreq, String predicateUri) {
|
||||
Map<String, FieldVTwo> fields = new HashMap<String, FieldVTwo>();
|
||||
if(EditConfigurationUtils.isObjectProperty(EditConfigurationUtils.getPredicateUri(vreq), vreq)) {
|
||||
|
||||
|
@ -391,7 +395,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
|
|||
return (typeOfNew != null && !typeOfNew.isEmpty());
|
||||
}
|
||||
|
||||
private String getTypeOfNew(VitroRequest vreq) {
|
||||
protected String getTypeOfNew(VitroRequest vreq) {
|
||||
return vreq.getParameter("typeOfNew");
|
||||
}
|
||||
// The default object proepty form offers the option to create a new item
|
||||
|
@ -456,7 +460,6 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
|
|||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void addFormSpecificData(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import java.util.Map;
|
|||
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.JspToGeneratorMapping;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
|
@ -98,7 +99,7 @@ public class DefaultObjectPropertyFormGenerator implements EditConfigurationGene
|
|||
|
||||
//Check if create new and return specific edit configuration from that generator.
|
||||
if(DefaultAddMissingIndividualFormGenerator.isCreateNewIndividual(vreq, session)) {
|
||||
DefaultAddMissingIndividualFormGenerator generator = new DefaultAddMissingIndividualFormGenerator();
|
||||
EditConfigurationGenerator generator = JspToGeneratorMapping.createFor("defaultAddMissingIndividualForm.jsp", DefaultAddMissingIndividualFormGenerator.class);
|
||||
return generator.getEditConfiguration(vreq, session);
|
||||
}
|
||||
|
||||
|
|
|
@ -12,14 +12,24 @@ import org.apache.commons.logging.LogFactory;
|
|||
*/
|
||||
public class ProcessDataGetterN3Map {
|
||||
private static final Log log = LogFactory.getLog(ProcessDataGetterN3Map.class);
|
||||
public static HashMap<String, String> getDataGetterTypeToProcessorMap() {
|
||||
HashMap<String, String> map = new HashMap<String, String>();
|
||||
map.put("edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SparqlQueryDataGetter", "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.utils.ProcessSparqlDataGetterN3");
|
||||
map.put("edu.cornell.mannlib.vitro.webapp.utils.dataGetter.ClassGroupPageData", "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.utils.ProcessClassGroupDataGetterN3");
|
||||
map.put("edu.cornell.mannlib.vitro.webapp.utils.dataGetter.IndividualsForClassesDataGetter", "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.utils.ProcessIndividualsForClassesDataGetterN3");
|
||||
map.put("edu.cornell.mannlib.vitro.webapp.utils.dataGetter.FixedHTMLDataGetter", "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.utils.ProcessFixedHTMLN3");
|
||||
map.put("edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SearchIndividualsDataGetter", "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.utils.ProcessSearchIndividualsDataGetterN3");
|
||||
|
||||
return map;
|
||||
private static HashMap<String, String> dataGetterMap;
|
||||
|
||||
static {
|
||||
dataGetterMap = new HashMap<String, String>();
|
||||
dataGetterMap.put("edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SparqlQueryDataGetter", "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.utils.ProcessSparqlDataGetterN3");
|
||||
dataGetterMap.put("edu.cornell.mannlib.vitro.webapp.utils.dataGetter.ClassGroupPageData", "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.utils.ProcessClassGroupDataGetterN3");
|
||||
dataGetterMap.put("edu.cornell.mannlib.vitro.webapp.utils.dataGetter.IndividualsForClassesDataGetter", "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.utils.ProcessIndividualsForClassesDataGetterN3");
|
||||
dataGetterMap.put("edu.cornell.mannlib.vitro.webapp.utils.dataGetter.FixedHTMLDataGetter", "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.utils.ProcessFixedHTMLN3");
|
||||
dataGetterMap.put("edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SearchIndividualsDataGetter", "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.utils.ProcessSearchIndividualsDataGetterN3");
|
||||
}
|
||||
|
||||
public static HashMap<String, String> getDataGetterTypeToProcessorMap() {
|
||||
return dataGetterMap;
|
||||
}
|
||||
|
||||
public static void replaceDataGetterMap(HashMap<String, String> newMap) {
|
||||
dataGetterMap = new HashMap<String, String>();
|
||||
dataGetterMap.putAll(newMap);
|
||||
}
|
||||
}
|
|
@ -11,6 +11,7 @@ import java.util.Map;
|
|||
|
||||
import javax.servlet.ServletContext;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individuallist.ListedIndividualBuilder;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.json.JSONArray;
|
||||
|
@ -174,7 +175,7 @@ public class BrowseDataGetter extends DataGetterBase implements DataGetter {
|
|||
|
||||
List<ListedIndividual> tInds = new ArrayList<ListedIndividual>(inds.size());
|
||||
for( Individual ind : inds){
|
||||
tInds.add(new ListedIndividual(ind, vreq));
|
||||
tInds.add(ListedIndividualBuilder.build(ind, vreq));
|
||||
}
|
||||
map.put("individualsInClass", tInds);
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ import java.util.Map;
|
|||
|
||||
import javax.servlet.ServletContext;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individuallist.ListedIndividualBuilder;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
|
@ -183,7 +184,7 @@ public class SearchIndividualsDataGetter extends DataGetterBase implements DataG
|
|||
List<ListedIndividual> indsTm = new ArrayList<ListedIndividual>();
|
||||
if (inds != null) {
|
||||
for ( Individual ind : inds ) {
|
||||
indsTm.add(new ListedIndividual(ind,vreq));
|
||||
indsTm.add(ListedIndividualBuilder.build(ind,vreq));
|
||||
}
|
||||
}
|
||||
body.put("individuals", indsTm);
|
||||
|
|
|
@ -16,13 +16,23 @@ import org.apache.commons.logging.LogFactory;
|
|||
public class MenuManagementDataUtils {
|
||||
private static final Log log = LogFactory.getLog(MenuManagementDataUtils.class);
|
||||
|
||||
private static IMenuManagementDataUtils impl = null;
|
||||
|
||||
//Data that is to be returned to template that does not involve data getters
|
||||
//e.g. what are the current class groups, etc.
|
||||
public static void includeRequiredSystemData(ServletContext context, Map<String, Object> templateData) {
|
||||
if (impl != null) {
|
||||
impl.includeRequiredSystemData(context, templateData);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void setImplementation(IMenuManagementDataUtils impl) {
|
||||
MenuManagementDataUtils.impl = impl;
|
||||
}
|
||||
|
||||
|
||||
public interface IMenuManagementDataUtils {
|
||||
public void includeRequiredSystemData(ServletContext context, Map<String, Object> templateData);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,74 +0,0 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
package edu.cornell.mannlib.vitro.webapp.utils.menuManagement;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.ServletContext;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import com.hp.hpl.jena.rdf.model.Model;
|
||||
import com.hp.hpl.jena.rdf.model.ModelFactory;
|
||||
import com.hp.hpl.jena.rdf.model.Resource;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||
import edu.cornell.mannlib.vitro.webapp.utils.dataGetter.ClassGroupPageData;
|
||||
import edu.cornell.mannlib.vitro.webapp.utils.dataGetter.IndividualsForClassesDataGetter;
|
||||
|
||||
/*
|
||||
* This class includes methods that help in selecting a data getter based on
|
||||
* parameters, and VIVO will have its own version or extend this
|
||||
*/
|
||||
public class SelectDataGetterUtils {
|
||||
private static final Log log = LogFactory.getLog(SelectDataGetterUtils.class);
|
||||
|
||||
/**Get data for an existing page and set variables for the template accordingly**/
|
||||
|
||||
|
||||
public static void processAndRetrieveData(VitroRequest vreq, ServletContext context, Map<String, Object> pageData, String dataGetterClass, Map<String, Object> templateData) {
|
||||
//The type of the data getter will show how to process the data from the data getter
|
||||
ProcessDataGetter processor = selectProcessor(dataGetterClass);
|
||||
processor.populateTemplate(vreq, pageData, templateData);
|
||||
}
|
||||
|
||||
//This will be different in VIVO than in VITRO
|
||||
private static ProcessDataGetter selectProcessor(String dataGetterClass) {
|
||||
if(dataGetterClass.equals(ClassGroupPageData.class.getName())) {
|
||||
return new ProcessClassGroup();
|
||||
} else if(dataGetterClass.equals(IndividualsForClassesDataGetter.class.getName())) {
|
||||
//below should be for vitro specific version
|
||||
return new ProcessIndividualsForClasses();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**Process parameters from form and select appropriate data getter on this basis **/
|
||||
public static Model createDataGetterModel(VitroRequest vreq, Resource dataGetterResource) {
|
||||
Model dataGetterModel = null;
|
||||
if(dataGetterResource != null) {
|
||||
//If "All selected" then use class group else use individuals for classes
|
||||
dataGetterModel = ModelFactory.createDefaultModel();
|
||||
|
||||
ProcessIndividualsForClasses individualsProcess = new ProcessIndividualsForClasses();
|
||||
|
||||
ProcessClassGroup classGroupProcess = new ProcessClassGroup();
|
||||
if(individualsProcess.useProcessor(vreq)) {
|
||||
dataGetterModel = individualsProcess.processSubmission(vreq, dataGetterResource);
|
||||
} else {
|
||||
dataGetterModel = classGroupProcess.processSubmission(vreq, dataGetterResource);
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
log.error("Data getter is null ");
|
||||
}
|
||||
return dataGetterModel;
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -12,8 +12,7 @@ public class IndividualTemplateModel extends BaseIndividualTemplateModel {
|
|||
|
||||
private static final Log log = LogFactory.getLog(IndividualTemplateModel.class);
|
||||
|
||||
public IndividualTemplateModel(Individual individual, VitroRequest vreq) {
|
||||
IndividualTemplateModel(Individual individual, VitroRequest vreq) {
|
||||
super(individual, vreq);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
package edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individuallist.ListedIndividual;
|
||||
|
||||
public class IndividualTemplateModelBuilder {
|
||||
static IIndividualTemplateModelBuilder customBuilder = null;
|
||||
|
||||
static public IndividualTemplateModel build(Individual individual, VitroRequest vreq) {
|
||||
if (customBuilder != null) {
|
||||
return customBuilder.build(individual, vreq);
|
||||
}
|
||||
|
||||
return new IndividualTemplateModel(individual, vreq);
|
||||
}
|
||||
|
||||
static public void setCustomBuilder(IIndividualTemplateModelBuilder builder) {
|
||||
customBuilder = builder;
|
||||
}
|
||||
|
||||
public interface IIndividualTemplateModelBuilder {
|
||||
public IndividualTemplateModel build(Individual individual, VitroRequest vreq);
|
||||
}
|
||||
}
|
|
@ -30,7 +30,7 @@ public abstract class BaseListedIndividual extends BaseTemplateModel {
|
|||
public static List<ListedIndividual> getIndividualTemplateModels(List<Individual> individuals, VitroRequest vreq) {
|
||||
List<ListedIndividual> models = new ArrayList<ListedIndividual>(individuals.size());
|
||||
for (Individual individual : individuals) {
|
||||
models.add(new ListedIndividual(individual, vreq));
|
||||
models.add(ListedIndividualBuilder.build(individual, vreq));
|
||||
}
|
||||
return models;
|
||||
}
|
||||
|
|
|
@ -12,8 +12,7 @@ public class ListedIndividual extends BaseListedIndividual {
|
|||
|
||||
private static final Log log = LogFactory.getLog(ListedIndividual.class);
|
||||
|
||||
public ListedIndividual(Individual individual, VitroRequest vreq) {
|
||||
ListedIndividual(Individual individual, VitroRequest vreq) {
|
||||
super(individual, vreq);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
package edu.cornell.mannlib.vitro.webapp.web.templatemodels.individuallist;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||
|
||||
public class ListedIndividualBuilder {
|
||||
static ILIstedIndividualBuilder customBuilder = null;
|
||||
|
||||
static public ListedIndividual build(Individual individual, VitroRequest vreq) {
|
||||
if (customBuilder != null) {
|
||||
return customBuilder.build(individual, vreq);
|
||||
}
|
||||
|
||||
return new ListedIndividual(individual, vreq);
|
||||
}
|
||||
|
||||
static public void setCustomBuilder(ILIstedIndividualBuilder builder) {
|
||||
customBuilder = builder;
|
||||
}
|
||||
|
||||
public interface ILIstedIndividualBuilder {
|
||||
public ListedIndividual build(Individual individual, VitroRequest vreq);
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
|
@ -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) {
|
||||
log.error("Unable to create IndividualSearchResult", e);
|
||||
} catch (InstantiationException e) {
|
||||
log.error("Unable to create IndividualSearchResult", e);
|
||||
} catch (IllegalAccessException e) {
|
||||
log.error("Unable to create IndividualSearchResult", e);
|
||||
} catch (InvocationTargetException e) {
|
||||
log.error("Unable to create IndividualSearchResult", e);
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -11,6 +11,7 @@ import java.util.Map;
|
|||
import javax.servlet.ServletContext;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individuallist.ListedIndividualBuilder;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.json.JSONArray;
|
||||
|
@ -163,7 +164,7 @@ public class BrowseWidget extends Widget {
|
|||
|
||||
List<ListedIndividual> tInds = new ArrayList<ListedIndividual>(inds.size());
|
||||
for( Individual ind : inds){
|
||||
tInds.add(new ListedIndividual(ind, vreq));
|
||||
tInds.add(ListedIndividualBuilder.build(ind, vreq));
|
||||
}
|
||||
map.put("individualsInClass", tInds);
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||
|
||||
<#import "lib-generator-classes.ftl" as generators />
|
||||
|
||||
<div>
|
||||
|
||||
<#if pages?has_content >
|
||||
|
@ -25,7 +27,7 @@
|
|||
<form id="addIndividualClass" action="${urls.base}/editRequestDispatch" method="get">
|
||||
<input type="hidden" name="typeOfNew" value="http://vitro.mannlib.cornell.edu/ontologies/display/1.1#Page">
|
||||
<input type="hidden" name="switchToDisplayModel" value="1">
|
||||
<input type="hidden" name="editForm" value="edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.NewIndividualFormGenerator" role="input">
|
||||
<input type="hidden" name="editForm" value="${generators.NewIndividualFormGenerator}" role="input">
|
||||
<input type="submit" id="submit" value="${i18n().add_page}" role="button">
|
||||
</form>
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||
|
||||
<#import "lib-generator-classes.ftl" as generators />
|
||||
|
||||
<div>
|
||||
|
||||
<#if pages?has_content >
|
||||
|
@ -25,7 +27,7 @@
|
|||
<form id="addIndividualClass" action="${urls.base}/editRequestDispatch" method="get">
|
||||
<input type="hidden" name="typeOfNew" value="http://vitro.mannlib.cornell.edu/ontologies/display/1.1#Page">
|
||||
<input type="hidden" name="switchToDisplayModel" value="1">
|
||||
<input type="hidden" name="editForm" value="edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.NewIndividualFormGenerator" role="input">
|
||||
<input type="hidden" name="editForm" value="${generators.NewIndividualFormGenerator}" role="input">
|
||||
<input type="submit" id="submit" value="${i18n().Add_page}" role="button">
|
||||
</form>
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
<#-- Template for Site Administration data input panel -->
|
||||
|
||||
<#import "lib-form.ftl" as form>
|
||||
<#import "lib-generator-classes.ftl" as generators />
|
||||
|
||||
<#if dataInput?has_content>
|
||||
<section class="pageBodyGroup" role="region">
|
||||
|
@ -12,7 +13,7 @@
|
|||
<select id="VClassURI" name="typeOfNew" class="form-item long-options" role="select">
|
||||
<@form.optionGroups groups=dataInput.groupedClassOptions />
|
||||
</select>
|
||||
<input type="hidden" name="editForm" value="edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.NewIndividualFormGenerator" role="input" />
|
||||
<input type="hidden" name="editForm" value="${generators.NewIndividualFormGenerator}" role="input" />
|
||||
<input type="submit" id="submit" value="${i18n().add_individual_of_class}" role="button" />
|
||||
</form>
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||
|
||||
<#assign ManageLabelsGenerator = "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.ManageLabelsGenerator" />
|
||||
<#assign NewIndividualFormGenerator = "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.NewIndividualFormGenerator" />
|
|
@ -4,6 +4,8 @@
|
|||
Macros and functions for working with properties and property lists
|
||||
------------------------------------------------------------------------------>
|
||||
|
||||
<#import "lib-generator-classes.ftl" as generators />
|
||||
|
||||
<#-- Return true iff there are statements for this property -->
|
||||
<#function hasStatements propertyGroups propertyName>
|
||||
|
||||
|
@ -302,7 +304,7 @@ name will be used as the label. -->
|
|||
<#if editable>
|
||||
<#assign imageAlt = "${i18n().manage}" />
|
||||
<#assign linkTitle = "${i18n().manage_list_of_labels}">
|
||||
<#assign labelLink= "${urls.base}/editRequestDispatch?subjectUri=${individualUri}&editForm=edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.ManageLabelsGenerator&predicateUri=${labelPropertyUri}${extraParameters}">
|
||||
<#assign labelLink= "${urls.base}/editRequestDispatch?subjectUri=${individualUri}&editForm=${generators.ManageLabelsGenerator}&predicateUri=${labelPropertyUri}${extraParameters}">
|
||||
<#else>
|
||||
<#assign linkTitle = "${i18n().view_list_of_labels}">
|
||||
<#assign imageAlt = "${i18n().view}" />
|
||||
|
|
Loading…
Add table
Reference in a new issue