NIHVIVO-2449 Display preferred title on individuallist page

This commit is contained in:
ryounes 2011-07-05 23:03:47 +00:00
parent 1c52d91b08
commit 0347b682c7
18 changed files with 145 additions and 177 deletions

View file

@ -12,7 +12,6 @@ import java.util.regex.Pattern;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@ -59,7 +58,7 @@ import edu.cornell.mannlib.vitro.webapp.utils.NamespaceMapperFactory;
import edu.cornell.mannlib.vitro.webapp.utils.jena.ExtendedLinkedDataUtils;
import edu.cornell.mannlib.vitro.webapp.web.ContentType;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.IndividualTemplateModel;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.ListedIndividualTemplateModel;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.ListedIndividual;
import freemarker.ext.beans.BeansWrapper;
/**
@ -227,7 +226,8 @@ public class IndividualController extends FreemarkerHttpServlet {
if (relatedSubjectInd != null) {
map = new HashMap<String, Object>();
map.put("name", relatedSubjectInd.getName());
map.put("url", (new ListedIndividualTemplateModel(relatedSubjectInd, vreq)).getProfileUrl());
map.put("url", UrlBuilder.getIndividualProfileUrl(relatedSubjectInd, vreq));
map.put("url", (new ListedIndividual(relatedSubjectInd, vreq)).getProfileUrl());
String relatingPredicateUri = vreq.getParameter("relatingPredicateUri");
if (relatingPredicateUri != null) {
ObjectProperty relatingPredicateProp = opDao.getObjectPropertyByURI(relatingPredicateUri);

View file

@ -27,9 +27,13 @@ import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.Sort;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
import edu.cornell.mannlib.vitro.webapp.beans.IndividualImpl;
import edu.cornell.mannlib.vitro.webapp.beans.VClass;
import edu.cornell.mannlib.vitro.webapp.beans.VClassGroup;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
@ -38,17 +42,13 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.Res
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
import edu.cornell.mannlib.vitro.webapp.dao.IndividualDao;
import edu.cornell.mannlib.vitro.webapp.search.lucene.Entity2LuceneDoc;
import edu.cornell.mannlib.vitro.webapp.search.lucene.LuceneIndexFactory;
import edu.cornell.mannlib.vitro.webapp.search.lucene.Entity2LuceneDoc.VitroLuceneTermNames;
import edu.cornell.mannlib.vitro.webapp.search.lucene.LuceneIndexFactory;
import edu.cornell.mannlib.vitro.webapp.search.solr.SolrSetup;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.ListedIndividualTemplateModel;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.BaseListedIndividual;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.ListedIndividual;
import freemarker.ext.beans.BeansWrapper;
import freemarker.template.TemplateModel;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
/**
* Generates a list of individuals for display in a template
@ -109,9 +109,9 @@ public class IndividualListController extends FreemarkerHttpServlet {
body.putAll(map);
List<Individual> inds = (List<Individual>)map.get("entities");
List<ListedIndividualTemplateModel> indsTm = new ArrayList<ListedIndividualTemplateModel>();
List<BaseListedIndividual> indsTm = new ArrayList<BaseListedIndividual>();
for(Individual ind : inds ){
indsTm.add(new ListedIndividualTemplateModel(ind,vreq));
indsTm.add(new ListedIndividual(ind,vreq));
}
body.put("individuals", indsTm);

View file

@ -31,7 +31,8 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.Tem
import edu.cornell.mannlib.vitro.webapp.dao.IndividualDao;
import edu.cornell.mannlib.vitro.webapp.search.VitroSearchTermNames;
import edu.cornell.mannlib.vitro.webapp.search.solr.SolrSetup;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.ListedIndividualTemplateModel;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.BaseListedIndividual;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.ListedIndividual;
import freemarker.ext.beans.BeansWrapper;
import freemarker.template.TemplateModel;
@ -95,9 +96,9 @@ public class SolrIndividualListController extends FreemarkerHttpServlet {
@SuppressWarnings("unchecked")
List<Individual> inds = (List<Individual>)map.get("entities");
List<ListedIndividualTemplateModel> indsTm = new ArrayList<ListedIndividualTemplateModel>();
List<BaseListedIndividual> indsTm = new ArrayList<BaseListedIndividual>();
for ( Individual ind : inds ) {
indsTm.add(new ListedIndividualTemplateModel(ind,vreq));
indsTm.add(new ListedIndividual(ind,vreq));
}
body.put("individuals", indsTm);

View file

@ -271,37 +271,18 @@ public class UrlBuilder {
public static String getPath(Route route, ParamMap params) {
return getPath(route.path(), params);
}
//Adding method to allow for checking for special parameters
public static String getIndividualProfileUrl(Individual individual, VitroRequest vreq) {
return getIndividualProfileUrl(individual, individual.getURI(),vreq);
}
public static String getIndividualProfileUrl(String individualUri, VitroRequest vreq) {
Individual individual = new IndividualImpl(individualUri);
return getIndividualProfileUrl(individual, individualUri, vreq);
}
}
public static String getIndividualProfileUrl(String individualUri, WebappDaoFactory wadf) {
Individual individual = new IndividualImpl(individualUri);
return getIndividualProfileUrl(individual, individualUri, wadf);
}
public static String getIndividualProfileUrl(Individual individual, WebappDaoFactory wadf) {
String individualUri = individual.getURI();
return getIndividualProfileUrl(individual, individualUri, wadf);
}
//Trying first with using a form of the method that includes the vitro request
private static String getIndividualProfileUrl(Individual individual, String individualUri, VitroRequest vreq) {
WebappDaoFactory wadf = vreq.getWebappDaoFactory();
String profileUrl = getIndividualProfileUrl(individual, individualUri, wadf);
if(profileUrl != null) {
HashMap<String, String> specialParams = getSpecialParams(vreq);
if(specialParams.size() != 0) {
profileUrl = addParams(profileUrl, new ParamMap(specialParams));
}
}
return profileUrl;
}
private static String getIndividualProfileUrl(Individual individual, String individualUri, WebappDaoFactory wadf) {
WebappDaoFactory wadf = vreq.getWebappDaoFactory();
String profileUrl = null;
try {
URI uri = new URIImpl(individualUri); // throws exception if individualUri is invalid
@ -324,10 +305,18 @@ public class UrlBuilder {
} catch (Exception e) {
log.warn(e);
return null;
}
return profileUrl;
}
if (profileUrl != null) {
HashMap<String, String> specialParams = getSpecialParams(vreq);
if(specialParams.size() != 0) {
profileUrl = addParams(profileUrl, new ParamMap(specialParams));
}
}
return profileUrl;
}
public static boolean isUriInDefaultNamespace(String individualUri, VitroRequest vreq) {
return isUriInDefaultNamespace(individualUri, vreq.getWebappDaoFactory());
}

View file

@ -68,7 +68,7 @@ import edu.cornell.mannlib.vitro.webapp.search.lucene.Entity2LuceneDoc;
import edu.cornell.mannlib.vitro.webapp.search.lucene.Entity2LuceneDoc.VitroLuceneTermNames;
import edu.cornell.mannlib.vitro.webapp.search.lucene.LuceneIndexFactory;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.LinkTemplateModel;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.ListedIndividualTemplateModel;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.BaseListedIndividual;
import freemarker.template.Configuration;
/**
@ -357,7 +357,7 @@ public class PagedSearchController extends FreemarkerHttpServlet implements Sear
}
// Convert search result individuals to template model objects
body.put("individuals", ListedIndividualTemplateModel
body.put("individuals", BaseListedIndividual
.getIndividualTemplateModels(beans, vreq));
body.put("querytext", qtxt);

View file

@ -53,7 +53,7 @@ import edu.cornell.mannlib.vitro.webapp.search.beans.VitroQueryFactory;
import edu.cornell.mannlib.vitro.webapp.search.solr.SolrSetup;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.LinkTemplateModel;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.IndividualSearchResult;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.ListedIndividualTemplateModel;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.BaseListedIndividual;
import freemarker.template.Configuration;
/**

View file

@ -27,7 +27,8 @@ import edu.cornell.mannlib.vitro.webapp.dao.jena.VClassGroupCache;
import edu.cornell.mannlib.vitro.webapp.utils.JSONtoFmModel;
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.ListedIndividualTemplateModel;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.BaseListedIndividual;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.ListedIndividual;
public class BrowseDataGetter implements PageDataGetter {
final static Log log = LogFactory.getLog(BrowseDataGetter.class);
@ -145,9 +146,9 @@ public class BrowseDataGetter implements PageDataGetter {
List<Individual> inds = vreq.getWebappDaoFactory().getIndividualDao()
.getIndividualsByVClass(vclass);
List<ListedIndividualTemplateModel> tInds = new ArrayList<ListedIndividualTemplateModel>(inds.size());
List<BaseListedIndividual> tInds = new ArrayList<BaseListedIndividual>(inds.size());
for( Individual ind : inds){
tInds.add(new ListedIndividualTemplateModel(ind, vreq));
tInds.add(new ListedIndividual(ind, vreq));
}
map.put("individualsInClass", tInds);

View file

@ -35,7 +35,7 @@ import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
import edu.cornell.mannlib.vitro.webapp.dao.jena.VClassGroupCache;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.VClassGroupTemplateModel;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.ListedIndividualTemplateModel;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.BaseListedIndividual;
import freemarker.ext.beans.BeansWrapper;
import freemarker.template.TemplateModel;
@ -239,7 +239,7 @@ public class DataGetterUtils {
jo.put("name",ind.getName());
jo.put("thumbUrl", ind.getThumbUrl());
jo.put("imageUrl", ind.getImageUrl());
jo.put("profileUrl", UrlBuilder.getIndividualProfileUrl(ind, vreq.getWebappDaoFactory()));
jo.put("profileUrl", UrlBuilder.getIndividualProfileUrl(ind, vreq));
String moniker = JSONServlet.getDataPropertyValue(ind, monikerDp, fullWdf);
jo.put("moniker", moniker);

View file

@ -33,7 +33,7 @@ import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
import edu.cornell.mannlib.vitro.webapp.dao.jena.VClassGroupCache;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.VClassGroupTemplateModel;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.ListedIndividualTemplateModel;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.BaseListedIndividual;
import edu.cornell.mannlib.vitro.webapp.controller.JSONServlet;
import freemarker.ext.beans.BeansWrapper;
import freemarker.template.TemplateModel;

View file

@ -2,11 +2,7 @@
package edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@ -74,7 +70,7 @@ public abstract class BaseIndividualTemplateModel extends BaseTemplateModel {
/* These methods perform some manipulation of the data returned by the Individual methods */
public String getProfileUrl() {
return UrlBuilder.getIndividualProfileUrl(individual, vreq.getWebappDaoFactory());
return UrlBuilder.getIndividualProfileUrl(individual, vreq);
}
// For image, we use the default list view and Individual methods to reconstruct the image

View file

@ -0,0 +1,66 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
import edu.cornell.mannlib.vitro.webapp.beans.Link;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.Route;
import edu.cornell.mannlib.vitro.webapp.web.ViewFinder;
import edu.cornell.mannlib.vitro.webapp.web.ViewFinder.ClassView;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.BaseTemplateModel;
public abstract class BaseListedIndividual extends BaseTemplateModel {
private static final Log log = LogFactory.getLog(BaseListedIndividual.class);
protected Individual individual;
protected VitroRequest vreq;
public BaseListedIndividual(Individual individual, VitroRequest vreq) {
this.individual = individual;
this.vreq = vreq;
}
public static List<ListedIndividual> getIndividualTemplateModels(List<Individual> individuals, VitroRequest vreq) {
List<ListedIndividual> models = new ArrayList<ListedIndividual>(individuals.size());
for (Individual individual : individuals) {
models.add(new ListedIndividual(individual, vreq));
}
return models;
}
/* Access methods for templates */
public String getProfileUrl() {
return UrlBuilder.getIndividualProfileUrl(individual, vreq);
}
public String getImageUrl() {
String imageUrl = individual.getImageUrl();
return imageUrl == null ? null : getUrl(imageUrl);
}
public String getThumbUrl() {
String thumbUrl = individual.getThumbUrl();
return thumbUrl == null ? null : getUrl(thumbUrl);
}
public String getName() {
return individual.getName();
}
public String getUri() {
return individual.getURI();
}
}

View file

@ -45,7 +45,7 @@ public class IndividualSearchResult extends BaseTemplateModel {
/* Access methods for templates */
public String getProfileUrl() {
return UrlBuilder.getIndividualProfileUrl(individual, vreq.getWebappDaoFactory());
return UrlBuilder.getIndividualProfileUrl(individual, vreq);
}
public String getName() {

View file

@ -0,0 +1,21 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
public class ListedIndividual extends BaseListedIndividual {
private static final Log log = LogFactory.getLog(ListedIndividual.class);
public ListedIndividual(Individual individual, VitroRequest vreq) {
super(individual, vreq);
}
/* Access methods for templates */
}

View file

@ -1,101 +0,0 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
import edu.cornell.mannlib.vitro.webapp.beans.Link;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.Route;
import edu.cornell.mannlib.vitro.webapp.web.ViewFinder;
import edu.cornell.mannlib.vitro.webapp.web.ViewFinder.ClassView;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.BaseTemplateModel;
public class ListedIndividualTemplateModel extends BaseTemplateModel {
private static final Log log = LogFactory.getLog(ListedIndividualTemplateModel.class);
protected Individual individual;
protected VitroRequest vreq;
public ListedIndividualTemplateModel(Individual individual, VitroRequest vreq) {
this.individual = individual;
this.vreq = vreq;
}
public static List<ListedIndividualTemplateModel> getIndividualTemplateModels(List<Individual> individuals, VitroRequest vreq) {
List<ListedIndividualTemplateModel> models = new ArrayList<ListedIndividualTemplateModel>(individuals.size());
for (Individual individual : individuals) {
models.add(new ListedIndividualTemplateModel(individual, vreq));
}
return models;
}
/* Access methods for templates */
public String getProfileUrl() {
return UrlBuilder.getIndividualProfileUrl(individual, vreq.getWebappDaoFactory());
}
public String getImageUrl() {
String imageUrl = individual.getImageUrl();
return imageUrl == null ? null : getUrl(imageUrl);
}
public String getThumbUrl() {
String thumbUrl = individual.getThumbUrl();
return thumbUrl == null ? null : getUrl(thumbUrl);
}
@Deprecated
public Link getPrimaryLink() {
// Link primaryLink = null;
// String anchor = individual.getAnchor();
// String url = individual.getUrl();
// if ( !(StringUtils.isEmpty(anchor)) && !(StringUtils.isEmpty(url)) ) {
// primaryLink = new Link();
// primaryLink.setAnchor(anchor);
// primaryLink.setUrl(url);
// }
// return primaryLink;
return null;
}
@Deprecated
public List<Link> getAdditionalLinks() {
// return individual.getLinksList(); // returns an empty list, but not null
return new ArrayList<Link>();
}
public List<Link> getLinks() {
List<Link> additionalLinks = getAdditionalLinks(); // returns an empty list, but not null
List<Link> links = new ArrayList<Link>(additionalLinks.size()+1);
Link primaryLink = getPrimaryLink();
if (primaryLink != null) {
links.add(primaryLink);
}
for (Link link : additionalLinks) {
// Hide malformed links from the template to make things easier
if ( !(StringUtils.isEmpty(link.getAnchor())) && !(StringUtils.isEmpty(link.getUrl())) ) {
links.add(link);
}
}
return links; // returns an empty list, but not null
}
public String getName() {
return individual.getName();
}
public String getUri() {
return individual.getURI();
}
}

View file

@ -26,7 +26,8 @@ import edu.cornell.mannlib.vitro.webapp.dao.jena.VClassGroupCache;
import edu.cornell.mannlib.vitro.webapp.utils.JSONtoFmModel;
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.ListedIndividualTemplateModel;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.BaseListedIndividual;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.ListedIndividual;
import freemarker.core.Environment;
import freemarker.template.TemplateModelException;
@ -161,9 +162,9 @@ public class BrowseWidget extends Widget {
List<Individual> inds = vreq.getWebappDaoFactory().getIndividualDao()
.getIndividualsByVClass(vclass);
List<ListedIndividualTemplateModel> tInds = new ArrayList<ListedIndividualTemplateModel>(inds.size());
List<BaseListedIndividual> tInds = new ArrayList<BaseListedIndividual>(inds.size());
for( Individual ind : inds){
tInds.add(new ListedIndividualTemplateModel(ind, vreq));
tInds.add(new ListedIndividual(ind, vreq));
}
map.put("individualsInClass", tInds);