From f3b66a9d428032cc97ceea5a8342bd612d37c4cd Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Wed, 25 May 2016 19:47:34 +0100 Subject: [PATCH] [VIVO-1245] Cleanup Template Model classes --- .../freemarker/IndividualListController.java | 3 ++- .../individual/IndividualResponseBuilder.java | 3 ++- .../GetRandomSearchIndividualsByVClass.java | 3 ++- .../GetRenderedSearchIndividualsByVClass.java | 3 ++- .../utils/dataGetter/BrowseDataGetter.java | 3 ++- .../SearchIndividualsDataGetter.java | 3 ++- .../individual/IndividualTemplateModel.java | 3 +-- .../IndividualTemplateModelBuilder.java | 25 +++++++++++++++++++ .../individuallist/BaseListedIndividual.java | 2 +- .../individuallist/ListedIndividual.java | 3 +-- .../ListedIndividualBuilder.java | 24 ++++++++++++++++++ .../webapp/web/widgets/BrowseWidget.java | 3 ++- 12 files changed, 66 insertions(+), 12 deletions(-) create mode 100644 api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModelBuilder.java create mode 100644 api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individuallist/ListedIndividualBuilder.java diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java index f03d5d3c9..728a4c77c 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java @@ -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 indsTm = new ArrayList(); if (inds != null) { for ( Individual ind : inds ) { - indsTm.add(new ListedIndividual(ind,vreq)); + indsTm.add(ListedIndividualBuilder.build(ind,vreq)); } } body.put("individuals", indsTm); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/individual/IndividualResponseBuilder.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/individual/IndividualResponseBuilder.java index d52b48281..659936d8f 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/individual/IndividualResponseBuilder.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/individual/IndividualResponseBuilder.java @@ -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 { diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/json/GetRandomSearchIndividualsByVClass.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/json/GetRandomSearchIndividualsByVClass.java index 7a15f8428..fb76f365d 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/json/GetRandomSearchIndividualsByVClass.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/json/GetRandomSearchIndividualsByVClass.java @@ -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 modelMap = new HashMap(); modelMap.put("individual", - new IndividualTemplateModel(individual, vreq)); + IndividualTemplateModelBuilder.build(individual, vreq)); modelMap.put("vclass", vclassName); ShortViewService svs = ShortViewServiceSetup.getService(ctx); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/json/GetRenderedSearchIndividualsByVClass.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/json/GetRenderedSearchIndividualsByVClass.java index ba95c69f4..d98cf5e6c 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/json/GetRenderedSearchIndividualsByVClass.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/json/GetRenderedSearchIndividualsByVClass.java @@ -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 modelMap = new HashMap(); modelMap.put("individual", - new IndividualTemplateModel(individual, vreq)); + IndividualTemplateModelBuilder.build(individual, vreq)); modelMap.put("vclass", vclassName); ShortViewService svs = ShortViewServiceSetup.getService(ctx); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/BrowseDataGetter.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/BrowseDataGetter.java index 5873d7e4f..e1c9542f8 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/BrowseDataGetter.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/BrowseDataGetter.java @@ -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 tInds = new ArrayList(inds.size()); for( Individual ind : inds){ - tInds.add(new ListedIndividual(ind, vreq)); + tInds.add(ListedIndividualBuilder.build(ind, vreq)); } map.put("individualsInClass", tInds); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SearchIndividualsDataGetter.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SearchIndividualsDataGetter.java index 753f1c56c..6b731d147 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SearchIndividualsDataGetter.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SearchIndividualsDataGetter.java @@ -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 indsTm = new ArrayList(); if (inds != null) { for ( Individual ind : inds ) { - indsTm.add(new ListedIndividual(ind,vreq)); + indsTm.add(ListedIndividualBuilder.build(ind,vreq)); } } body.put("individuals", indsTm); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java index a00129d10..c45020b47 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java @@ -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); } - } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModelBuilder.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModelBuilder.java new file mode 100644 index 000000000..c8e2e6eb6 --- /dev/null +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModelBuilder.java @@ -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); + } +} diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individuallist/BaseListedIndividual.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individuallist/BaseListedIndividual.java index 3b93429ae..1d0a6426e 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individuallist/BaseListedIndividual.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individuallist/BaseListedIndividual.java @@ -30,7 +30,7 @@ public abstract class BaseListedIndividual extends BaseTemplateModel { public static List getIndividualTemplateModels(List individuals, VitroRequest vreq) { List models = new ArrayList(individuals.size()); for (Individual individual : individuals) { - models.add(new ListedIndividual(individual, vreq)); + models.add(ListedIndividualBuilder.build(individual, vreq)); } return models; } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individuallist/ListedIndividual.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individuallist/ListedIndividual.java index 328b4bfd8..1e10f5752 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individuallist/ListedIndividual.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individuallist/ListedIndividual.java @@ -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); } - } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individuallist/ListedIndividualBuilder.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individuallist/ListedIndividualBuilder.java new file mode 100644 index 000000000..0970f7fa6 --- /dev/null +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individuallist/ListedIndividualBuilder.java @@ -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); + } +} diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/widgets/BrowseWidget.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/widgets/BrowseWidget.java index 5f2d05c11..e4ee39874 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/widgets/BrowseWidget.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/widgets/BrowseWidget.java @@ -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 tInds = new ArrayList(inds.size()); for( Individual ind : inds){ - tInds.add(new ListedIndividual(ind, vreq)); + tInds.add(ListedIndividualBuilder.build(ind, vreq)); } map.put("individualsInClass", tInds);