working on menu page browse NIHVIVO-632

This commit is contained in:
bdc34 2010-12-10 21:03:30 +00:00
parent 9431d5e614
commit e9ca1f9986
7 changed files with 89 additions and 44 deletions

View file

@ -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;

View file

@ -61,4 +61,6 @@ public interface VClassGroupDao {
void updateVClassGroup(VClassGroup vcg);
void deleteVClassGroup(VClassGroup vcg);
VClassGroup getGroupByName(String vcgName);
}

View file

@ -112,4 +112,10 @@ public class VClassGroupDaoFiltering extends BaseFiltering implements VClassGrou
}
@Override
public VClassGroup getGroupByName(String vcgName) {
return innerDao.getGroupByName(vcgName);
}
}

View file

@ -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);
}
}
}

View file

@ -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;
}
}

View file

@ -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>

View file

@ -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>