working on menu page browse NIHVIVO-632
This commit is contained in:
parent
9431d5e614
commit
e9ca1f9986
7 changed files with 89 additions and 44 deletions
|
@ -2,7 +2,22 @@
|
||||||
|
|
||||||
package edu.cornell.mannlib.vitro.webapp.controller.freemarker;
|
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.listeners.StatementListener;
|
||||||
import com.hp.hpl.jena.rdf.model.Statement;
|
import com.hp.hpl.jena.rdf.model.Statement;
|
||||||
import com.hp.hpl.jena.vocabulary.RDF;
|
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.filtering.filters.VitroFilters;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.ModelContext;
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.ModelContext;
|
||||||
import edu.cornell.mannlib.vitro.webapp.flags.PortalFlag;
|
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 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 {
|
public class BrowseController extends FreemarkerHttpServlet {
|
||||||
static final long serialVersionUID=2006030721126L;
|
static final long serialVersionUID=2006030721126L;
|
||||||
|
|
|
@ -61,4 +61,6 @@ public interface VClassGroupDao {
|
||||||
void updateVClassGroup(VClassGroup vcg);
|
void updateVClassGroup(VClassGroup vcg);
|
||||||
|
|
||||||
void deleteVClassGroup(VClassGroup vcg);
|
void deleteVClassGroup(VClassGroup vcg);
|
||||||
|
|
||||||
|
VClassGroup getGroupByName(String vcgName);
|
||||||
}
|
}
|
|
@ -112,4 +112,10 @@ public class VClassGroupDaoFiltering extends BaseFiltering implements VClassGrou
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public VClassGroup getGroupByName(String vcgName) {
|
||||||
|
return innerDao.getGroupByName(vcgName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,11 +11,13 @@ import java.util.Map;
|
||||||
import javax.servlet.ServletContext;
|
import javax.servlet.ServletContext;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
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.VClass;
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.VClassGroup;
|
import edu.cornell.mannlib.vitro.webapp.beans.VClassGroup;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
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.VClassGroupTemplateModel;
|
||||||
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.VClassTemplateModel;
|
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.core.Environment;
|
||||||
import freemarker.template.TemplateModelException;
|
import freemarker.template.TemplateModelException;
|
||||||
|
|
||||||
|
@ -55,7 +57,7 @@ public class BrowseWidget extends Widget {
|
||||||
|
|
||||||
protected WidgetTemplateValues doAllClassGroupsDisplay(Environment env, Map params,
|
protected WidgetTemplateValues doAllClassGroupsDisplay(Environment env, Map params,
|
||||||
HttpServletRequest request, ServletContext context) {
|
HttpServletRequest request, ServletContext context) {
|
||||||
Map<String,Object> body = getAllClassGroupData(request);
|
Map<String,Object> body = getAllClassGroupData(request, params);
|
||||||
try {
|
try {
|
||||||
body.put("urls",env.getDataModel().get("urls"));
|
body.put("urls",env.getDataModel().get("urls"));
|
||||||
body.put("urlMapping",env.getDataModel().get("urlMapping"));
|
body.put("urlMapping",env.getDataModel().get("urlMapping"));
|
||||||
|
@ -67,7 +69,7 @@ public class BrowseWidget extends Widget {
|
||||||
return new WidgetTemplateValues(macroName, body);
|
return new WidgetTemplateValues(macroName, body);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Map<String,Object> getAllClassGroupData(HttpServletRequest request){
|
protected Map<String,Object> getAllClassGroupData(HttpServletRequest request, Map params){
|
||||||
Map<String,Object> map = new HashMap<String,Object>();
|
Map<String,Object> map = new HashMap<String,Object>();
|
||||||
|
|
||||||
VitroRequest vreq = new VitroRequest(request);
|
VitroRequest vreq = new VitroRequest(request);
|
||||||
|
@ -84,7 +86,9 @@ public class BrowseWidget extends Widget {
|
||||||
|
|
||||||
protected WidgetTemplateValues doClassDisplay(Environment env, Map params,
|
protected WidgetTemplateValues doClassDisplay(Environment env, Map params,
|
||||||
HttpServletRequest request, ServletContext context) {
|
HttpServletRequest request, ServletContext context) {
|
||||||
Map<String,Object> body = getClassData(request);
|
|
||||||
|
Map<String,Object> body = getClassData(request,params);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
body.put("urls",env.getDataModel().get("urls"));
|
body.put("urls",env.getDataModel().get("urls"));
|
||||||
body.put("urlMapping",env.getDataModel().get("urlMapping"));
|
body.put("urlMapping",env.getDataModel().get("urlMapping"));
|
||||||
|
@ -96,22 +100,33 @@ public class BrowseWidget extends Widget {
|
||||||
return new WidgetTemplateValues(macroName, body);
|
return new WidgetTemplateValues(macroName, body);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, Object> getClassData(HttpServletRequest request) {
|
private Map<String, Object> getClassData(HttpServletRequest request, Map params) {
|
||||||
Map<String,Object> map = new HashMap<String,Object>();
|
Map<String,Object> map = new HashMap<String,Object>();
|
||||||
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);
|
VitroRequest vreq = new VitroRequest(request);
|
||||||
VClass vclass = vreq.getWebappDaoFactory().getVClassDao().getVClassByURI(classUri);
|
VClass vclass = vreq.getWebappDaoFactory().getVClassDao().getVClassByURI(classUri);
|
||||||
map.put("class", new VClassTemplateModel(vclass));
|
map.put("class", new VClassTemplateModel(vclass));
|
||||||
|
|
||||||
//TODO: add list of individuals for class?
|
List<Individual> inds = vreq.getWebappDaoFactory().getIndividualDao()
|
||||||
|
.getIndividualsByVClass(vclass);
|
||||||
|
|
||||||
|
List<IndividualTemplateModel> tInds = new ArrayList<IndividualTemplateModel>(inds.size());
|
||||||
|
for( Individual ind : inds){
|
||||||
|
tInds.add(new IndividualTemplateModel(ind, vreq));
|
||||||
|
}
|
||||||
|
map.put("individualsInClass", tInds);
|
||||||
|
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected WidgetTemplateValues doClassGroupDisplay(Environment env,
|
protected WidgetTemplateValues doClassGroupDisplay(Environment env,
|
||||||
Map params, HttpServletRequest request, ServletContext context) {
|
Map params, HttpServletRequest request, ServletContext context) {
|
||||||
|
|
||||||
Map<String,Object> body = getClassGroupData(request);
|
Map<String,Object> body = getClassGroupData(request,params);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
body.put("urls",env.getDataModel().get("urls"));
|
body.put("urls",env.getDataModel().get("urls"));
|
||||||
body.put("urlMapping",env.getDataModel().get("urlMapping"));
|
body.put("urlMapping",env.getDataModel().get("urlMapping"));
|
||||||
|
@ -123,12 +138,13 @@ public class BrowseWidget extends Widget {
|
||||||
return new WidgetTemplateValues(macroName, body);
|
return new WidgetTemplateValues(macroName, body);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Map<String, Object> getClassGroupData(HttpServletRequest request) {
|
protected Map<String, Object> getClassGroupData(HttpServletRequest request, Map params) {
|
||||||
Map<String,Object> map = new HashMap<String,Object>();
|
Map<String,Object> map = new HashMap<String,Object>();
|
||||||
|
|
||||||
String vcgUri = request.getParameter(Mode.CLASS_GROUP.param);
|
String vcgName = getParam(Mode.CLASS_GROUP, request, params);
|
||||||
VitroRequest vreq = new VitroRequest(request);
|
VitroRequest vreq = new VitroRequest(request);
|
||||||
VClassGroup vcg = vreq.getWebappDaoFactory().getVClassGroupDao().getGroupByURI(vcgUri);
|
VClassGroup vcg = vreq.getWebappDaoFactory().getVClassGroupDao().getGroupByName(vcgName);
|
||||||
|
|
||||||
vreq.getWebappDaoFactory().getVClassDao().addVClassesToGroup(vcg, false, true);
|
vreq.getWebappDaoFactory().getVClassDao().addVClassesToGroup(vcg, false, true);
|
||||||
ArrayList<VClassTemplateModel> classes = new ArrayList<VClassTemplateModel>(vcg.size());
|
ArrayList<VClassTemplateModel> classes = new ArrayList<VClassTemplateModel>(vcg.size());
|
||||||
for( VClass vc : vcg){
|
for( VClass vc : vcg){
|
||||||
|
@ -137,7 +153,8 @@ public class BrowseWidget extends Widget {
|
||||||
map.put("classes", classes);
|
map.put("classes", classes);
|
||||||
|
|
||||||
map.put("classGroup", new VClassGroupTemplateModel(vcg));
|
map.put("classGroup", new VClassGroupTemplateModel(vcg));
|
||||||
map.put(Mode.CLASS_GROUP.param, vcgUri);
|
map.put("classGroupName", vcgName);
|
||||||
|
map.put("classGroupUri", vcg.getURI());
|
||||||
|
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
@ -145,7 +162,7 @@ public class BrowseWidget extends Widget {
|
||||||
enum Mode{
|
enum Mode{
|
||||||
VCLASS_ALPHA("vclassAlpha","vclassAlpha"),
|
VCLASS_ALPHA("vclassAlpha","vclassAlpha"),
|
||||||
VCLASS("vclass","vclassUri"),
|
VCLASS("vclass","vclassUri"),
|
||||||
CLASS_GROUP("classGroup","classgroupUri"),
|
CLASS_GROUP("classGroup","classGroup"),
|
||||||
ALL_CLASS_GROUPS("allClassGroups","all");
|
ALL_CLASS_GROUPS("allClassGroups","all");
|
||||||
|
|
||||||
String macroName;
|
String macroName;
|
||||||
|
@ -160,19 +177,25 @@ public class BrowseWidget extends Widget {
|
||||||
|
|
||||||
protected Mode getMode(HttpServletRequest request, Map params){
|
protected Mode getMode(HttpServletRequest request, Map params){
|
||||||
for( Mode mode : Mode.values()){
|
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() ){
|
if( param != null && !param.isEmpty() ){
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for( Mode mode : Mode.values()){
|
|
||||||
String param = (String)params.get( mode.param );
|
|
||||||
if( param != null && !param.isEmpty() ){
|
|
||||||
return mode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return DEFAULT_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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<section id="#intro-menupage" role="region">
|
<section id="#intro-menupage" role="region">
|
||||||
<h3>People</h3>
|
<h3>People</h3>
|
||||||
|
|
||||||
<@widget name="browse" />
|
<@widget name="browse" classGroup="people"/>
|
||||||
|
|
||||||
<section id="content-foaf-person" role="region">
|
<section id="content-foaf-person" role="region">
|
||||||
<h4>Visual Graph</h4>
|
<h4>Visual Graph</h4>
|
||||||
|
@ -142,7 +142,6 @@
|
||||||
<article class="vcard individual-foaf-person" role="navigation"> <img src="${urls.images}/menupage/person-thumbnail.jpg" width="90" height="90" alt="foaf:lastName, foaf:firstName"/>
|
<article class="vcard individual-foaf-person" role="navigation"> <img src="${urls.images}/menupage/person-thumbnail.jpg" width="90" height="90" alt="foaf:lastName, foaf:firstName"/>
|
||||||
<h1 class="fn"><strong>foaf:lastName, foaf:fisrtName</strong><br>core:preferredTitle <br><span class="org">Albert Mann Library</span></h1>
|
<h1 class="fn"><strong>foaf:lastName, foaf:fisrtName</strong><br>core:preferredTitle <br><span class="org">Albert Mann Library</span></h1>
|
||||||
</article>
|
</article>
|
||||||
</section>
|
</section>
|
||||||
<@dumpAll/>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
<h2>Macro allClassGroups from widget-browse.ftl</h2>
|
<h2>Macro allClassGroups from widget-browse.ftl</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<#list vclassGroupList as group>
|
<#list vclassGroupList as group>
|
||||||
<li><a href="${urls.base}${urlMapping}?classgroupUri=${group.uri?url}">${group.publicName}</a></li>
|
<li><a href="${urls.base}${urlMapping}?classgroupUri=${group.publicName?url}">${group.publicName}</a></li>
|
||||||
</#list>
|
</#list>
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
</div>
|
</div>
|
||||||
<ul>
|
<ul>
|
||||||
<#list classes as class>
|
<#list classes as class>
|
||||||
<li><a href="${urls.base}${urlMapping}?classgroupUri=${classGroup.uri?url}&vclassUri=${class.uri?url}">${class.name}</a></li>
|
<li><a href="${urls.base}${urlMapping}?classgroupUri=${classGroup.publicName?url}&vclassUri=${class.uri?url}">${class.name}</a> ${class.individualCount}</li>
|
||||||
</#list>
|
</#list>
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
@ -41,7 +41,11 @@
|
||||||
<#macro vclass>
|
<#macro vclass>
|
||||||
<section>
|
<section>
|
||||||
<h2>vclass ${class.name} from ${classGroup.publicName}</h2>
|
<h2>vclass ${class.name} from ${classGroup.publicName}</h2>
|
||||||
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.
|
||||||
|
<ul>
|
||||||
|
<#list individualsInClass as ind>
|
||||||
|
<li><a href="${urls.base}/individual?uri=${ind.uri?url}">${ind.name}</a></li>
|
||||||
|
</#list>
|
||||||
</section>
|
</section>
|
||||||
</#macro>
|
</#macro>
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue