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;
|
||||
|
||||
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;
|
||||
|
|
|
@ -61,4 +61,6 @@ public interface VClassGroupDao {
|
|||
void updateVClassGroup(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.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<String,Object> body = getAllClassGroupData(request);
|
||||
Map<String,Object> 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<String,Object> getAllClassGroupData(HttpServletRequest request){
|
||||
protected Map<String,Object> getAllClassGroupData(HttpServletRequest request, Map params){
|
||||
Map<String,Object> map = new HashMap<String,Object>();
|
||||
|
||||
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<String,Object> body = getClassData(request);
|
||||
|
||||
Map<String,Object> 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<String, Object> getClassData(HttpServletRequest request) {
|
||||
private Map<String, Object> getClassData(HttpServletRequest request, Map params) {
|
||||
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);
|
||||
VClass vclass = vreq.getWebappDaoFactory().getVClassDao().getVClassByURI(classUri);
|
||||
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;
|
||||
}
|
||||
|
||||
protected WidgetTemplateValues doClassGroupDisplay(Environment env,
|
||||
Map params, HttpServletRequest request, ServletContext context) {
|
||||
|
||||
Map<String,Object> body = getClassGroupData(request);
|
||||
Map<String,Object> 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<String, Object> getClassGroupData(HttpServletRequest request) {
|
||||
protected Map<String, Object> getClassGroupData(HttpServletRequest request, Map params) {
|
||||
Map<String,Object> map = new HashMap<String,Object>();
|
||||
|
||||
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<VClassTemplateModel> classes = new ArrayList<VClassTemplateModel>(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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<section id="#intro-menupage" role="region">
|
||||
<h3>People</h3>
|
||||
|
||||
<@widget name="browse" />
|
||||
<@widget name="browse" classGroup="people"/>
|
||||
|
||||
<section id="content-foaf-person" role="region">
|
||||
<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"/>
|
||||
<h1 class="fn"><strong>foaf:lastName, foaf:fisrtName</strong><br>core:preferredTitle <br><span class="org">Albert Mann Library</span></h1>
|
||||
</article>
|
||||
</section>
|
||||
<@dumpAll/>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<h2>Macro allClassGroups from widget-browse.ftl</h2>
|
||||
<ul>
|
||||
<#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>
|
||||
</ul>
|
||||
</section>
|
||||
|
@ -31,7 +31,7 @@
|
|||
</div>
|
||||
<ul>
|
||||
<#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>
|
||||
</ul>
|
||||
</section>
|
||||
|
@ -41,7 +41,11 @@
|
|||
<#macro vclass>
|
||||
<section>
|
||||
<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>
|
||||
</#macro>
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue