From e9ca1f998690955fa25c18d756f98b015d50e6b5 Mon Sep 17 00:00:00 2001 From: bdc34 Date: Fri, 10 Dec 2010 21:03:30 +0000 Subject: [PATCH] working on menu page browse NIHVIVO-632 --- .../freemarker/BrowseController.java | 30 ++++---- .../vitro/webapp/dao/VClassGroupDao.java | 2 + .../filtering/VClassGroupDaoFiltering.java | 6 ++ .../webapp/dao/jena/VClassGroupDaoJena.java | 9 +++ .../webapp/web/widgets/BrowseWidget.java | 71 ++++++++++++------- .../menupage/menupage--classgroup-people.ftl | 5 +- .../freemarker/widgets/widget-browse.ftl | 10 ++- 7 files changed, 89 insertions(+), 44 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/BrowseController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/BrowseController.java index eaeaf7d15..29008805b 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/BrowseController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/BrowseController.java @@ -2,7 +2,22 @@ package edu.cornell.mannlib.vitro.webapp.controller.freemarker; -import com.hp.hpl.jena.ontology.OntModel; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentLinkedQueue; + +import javax.servlet.ServletContext; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import com.hp.hpl.jena.rdf.listeners.StatementListener; import com.hp.hpl.jena.rdf.model.Statement; import com.hp.hpl.jena.vocabulary.RDF; @@ -23,20 +38,7 @@ import edu.cornell.mannlib.vitro.webapp.dao.filtering.filters.VitroFilterUtils; import edu.cornell.mannlib.vitro.webapp.dao.filtering.filters.VitroFilters; import edu.cornell.mannlib.vitro.webapp.dao.jena.ModelContext; import edu.cornell.mannlib.vitro.webapp.flags.PortalFlag; -import edu.cornell.mannlib.vitro.webapp.search.beans.ProhibitedFromSearch; -import edu.cornell.mannlib.vitro.webapp.web.DisplayVocabulary; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.VClassGroupTemplateModel; -import freemarker.template.Configuration; -import freemarker.template.SimpleSequence; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import javax.servlet.ServletContext; - -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedQueue; public class BrowseController extends FreemarkerHttpServlet { static final long serialVersionUID=2006030721126L; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VClassGroupDao.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VClassGroupDao.java index ecfbea7ab..6c1f5dbfd 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VClassGroupDao.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VClassGroupDao.java @@ -61,4 +61,6 @@ public interface VClassGroupDao { void updateVClassGroup(VClassGroup vcg); void deleteVClassGroup(VClassGroup vcg); + + VClassGroup getGroupByName(String vcgName); } \ No newline at end of file diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/VClassGroupDaoFiltering.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/VClassGroupDaoFiltering.java index e96a61b0b..4e1420ad3 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/VClassGroupDaoFiltering.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/VClassGroupDaoFiltering.java @@ -112,4 +112,10 @@ public class VClassGroupDaoFiltering extends BaseFiltering implements VClassGrou } + @Override + public VClassGroup getGroupByName(String vcgName) { + return innerDao.getGroupByName(vcgName); + } + + } \ No newline at end of file diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/VClassGroupDaoJena.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/VClassGroupDaoJena.java index 8edeb4d25..0f66177d3 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/VClassGroupDaoJena.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/VClassGroupDaoJena.java @@ -304,4 +304,13 @@ public class VClassGroupDaoJena extends JenaBaseDao implements VClassGroupDao { } } + @Override + public VClassGroup getGroupByName(String vcgName) { + if( vcgName == null ) + return null; + else{ + return getClassGroupMap().get(vcgName); + } + } + } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/widgets/BrowseWidget.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/widgets/BrowseWidget.java index bbea09101..509148a31 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/widgets/BrowseWidget.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/widgets/BrowseWidget.java @@ -11,11 +11,13 @@ import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; +import edu.cornell.mannlib.vitro.webapp.beans.Individual; import edu.cornell.mannlib.vitro.webapp.beans.VClass; import edu.cornell.mannlib.vitro.webapp.beans.VClassGroup; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.VClassGroupTemplateModel; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.VClassTemplateModel; +import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.IndividualTemplateModel; import freemarker.core.Environment; import freemarker.template.TemplateModelException; @@ -55,7 +57,7 @@ public class BrowseWidget extends Widget { protected WidgetTemplateValues doAllClassGroupsDisplay(Environment env, Map params, HttpServletRequest request, ServletContext context) { - Map body = getAllClassGroupData(request); + Map body = getAllClassGroupData(request, params); try { body.put("urls",env.getDataModel().get("urls")); body.put("urlMapping",env.getDataModel().get("urlMapping")); @@ -67,7 +69,7 @@ public class BrowseWidget extends Widget { return new WidgetTemplateValues(macroName, body); } - protected Map getAllClassGroupData(HttpServletRequest request){ + protected Map getAllClassGroupData(HttpServletRequest request, Map params){ Map map = new HashMap(); VitroRequest vreq = new VitroRequest(request); @@ -84,7 +86,9 @@ public class BrowseWidget extends Widget { protected WidgetTemplateValues doClassDisplay(Environment env, Map params, HttpServletRequest request, ServletContext context) { - Map body = getClassData(request); + + Map body = getClassData(request,params); + try { body.put("urls",env.getDataModel().get("urls")); body.put("urlMapping",env.getDataModel().get("urlMapping")); @@ -96,22 +100,33 @@ public class BrowseWidget extends Widget { return new WidgetTemplateValues(macroName, body); } - private Map getClassData(HttpServletRequest request) { + private Map getClassData(HttpServletRequest request, Map params) { Map map = new HashMap(); - map.putAll(getClassGroupData(request)); - String classUri = request.getParameter(Mode.VCLASS.param); + + map.putAll(getClassGroupData(request, params)); + + String classUri = getParam(Mode.VCLASS, request, params); VitroRequest vreq = new VitroRequest(request); VClass vclass = vreq.getWebappDaoFactory().getVClassDao().getVClassByURI(classUri); map.put("class", new VClassTemplateModel(vclass)); - //TODO: add list of individuals for class? + List inds = vreq.getWebappDaoFactory().getIndividualDao() + .getIndividualsByVClass(vclass); + + List tInds = new ArrayList(inds.size()); + for( Individual ind : inds){ + tInds.add(new IndividualTemplateModel(ind, vreq)); + } + map.put("individualsInClass", tInds); + return map; } protected WidgetTemplateValues doClassGroupDisplay(Environment env, Map params, HttpServletRequest request, ServletContext context) { - Map body = getClassGroupData(request); + Map body = getClassGroupData(request,params); + try { body.put("urls",env.getDataModel().get("urls")); body.put("urlMapping",env.getDataModel().get("urlMapping")); @@ -123,12 +138,13 @@ public class BrowseWidget extends Widget { return new WidgetTemplateValues(macroName, body); } - protected Map getClassGroupData(HttpServletRequest request) { + protected Map getClassGroupData(HttpServletRequest request, Map params) { Map map = new HashMap(); - String vcgUri = request.getParameter(Mode.CLASS_GROUP.param); - VitroRequest vreq = new VitroRequest(request); - VClassGroup vcg = vreq.getWebappDaoFactory().getVClassGroupDao().getGroupByURI(vcgUri); + String vcgName = getParam(Mode.CLASS_GROUP, request, params); + VitroRequest vreq = new VitroRequest(request); + VClassGroup vcg = vreq.getWebappDaoFactory().getVClassGroupDao().getGroupByName(vcgName); + vreq.getWebappDaoFactory().getVClassDao().addVClassesToGroup(vcg, false, true); ArrayList classes = new ArrayList(vcg.size()); for( VClass vc : vcg){ @@ -137,7 +153,8 @@ public class BrowseWidget extends Widget { map.put("classes", classes); map.put("classGroup", new VClassGroupTemplateModel(vcg)); - map.put(Mode.CLASS_GROUP.param, vcgUri); + map.put("classGroupName", vcgName); + map.put("classGroupUri", vcg.getURI()); return map; } @@ -145,7 +162,7 @@ public class BrowseWidget extends Widget { enum Mode{ VCLASS_ALPHA("vclassAlpha","vclassAlpha"), VCLASS("vclass","vclassUri"), - CLASS_GROUP("classGroup","classgroupUri"), + CLASS_GROUP("classGroup","classGroup"), ALL_CLASS_GROUPS("allClassGroups","all"); String macroName; @@ -160,19 +177,25 @@ public class BrowseWidget extends Widget { protected Mode getMode(HttpServletRequest request, Map params){ for( Mode mode : Mode.values()){ - String param = request.getParameter( mode.param ); + String queryParam = request.getParameter( mode.param ); + if( queryParam != null && !queryParam.isEmpty() ){ + return mode; + } + Object obj = params.get( mode.param ); + String param = obj != null ? obj.toString():null; if( param != null && !param.isEmpty() ){ return mode; } - } - - for( Mode mode : Mode.values()){ - String param = (String)params.get( mode.param ); - if( param != null && !param.isEmpty() ){ - return mode; - } - } - + } return DEFAULT_MODE; } + + protected String getParam(Mode mode, HttpServletRequest request, Map params){ + if( request.getParameter(mode.param) != null ) + return request.getParameter(mode.param); + if( params.get(mode.param) != null ) + return params.get(mode.param).toString(); + else + return null; + } } diff --git a/webapp/web/templates/freemarker/body/menupage/menupage--classgroup-people.ftl b/webapp/web/templates/freemarker/body/menupage/menupage--classgroup-people.ftl index a7ec63e54..e7b2d0f79 100644 --- a/webapp/web/templates/freemarker/body/menupage/menupage--classgroup-people.ftl +++ b/webapp/web/templates/freemarker/body/menupage/menupage--classgroup-people.ftl @@ -2,7 +2,7 @@

People

- <@widget name="browse" /> + <@widget name="browse" classGroup="people"/>

Visual Graph

@@ -142,7 +142,6 @@ -
- <@dumpAll/> +
diff --git a/webapp/web/templates/freemarker/widgets/widget-browse.ftl b/webapp/web/templates/freemarker/widgets/widget-browse.ftl index a9e4b72e9..99eea0bfd 100644 --- a/webapp/web/templates/freemarker/widgets/widget-browse.ftl +++ b/webapp/web/templates/freemarker/widgets/widget-browse.ftl @@ -15,7 +15,7 @@

Macro allClassGroups from widget-browse.ftl

@@ -31,7 +31,7 @@ @@ -41,7 +41,11 @@ <#macro vclass>

vclass ${class.name} from ${classGroup.publicName}

- This has classGroup, classes, and class. It doesn't yet have a list of individuals in the class. + This has classGroup, classes, individualsInClass and class. +