1. Implemented the backend for accepting shorter urls for visualizations. This partially implements the feature described here http://issues.library.cornell.edu/browse/NIHVIVO-1097
2. Changed the IndividualTemplateModel to render shorter vis urls for temporal graph & ego-centric networks. 3. changed main toggle visualization links in ego-centric networks to use shorter vis urls.
This commit is contained in:
parent
4bd69801ce
commit
29ca04f648
18 changed files with 488 additions and 45 deletions
|
@ -63,6 +63,14 @@
|
||||||
<entry key="person_level">
|
<entry key="person_level">
|
||||||
<ref bean="person_level"></ref>
|
<ref bean="person_level"></ref>
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
|
<entry key="author-network">
|
||||||
|
<ref bean="person_level"></ref>
|
||||||
|
</entry>
|
||||||
|
|
||||||
|
<entry key="investigator-network">
|
||||||
|
<ref bean="person_level"></ref>
|
||||||
|
</entry>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<entry key="entity_comparison">
|
<entry key="entity_comparison">
|
||||||
|
@ -73,11 +81,14 @@
|
||||||
<entry key="entity_comparison">
|
<entry key="entity_comparison">
|
||||||
<ref bean="entity_comparison"></ref>
|
<ref bean="entity_comparison"></ref>
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
|
|
||||||
<entry key="pub_temporal">
|
<entry key="pub_temporal">
|
||||||
<ref bean="pub_temporal"></ref>
|
<ref bean="pub_temporal"></ref>
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
|
<entry key="publication-graph">
|
||||||
|
<ref bean="entity_comparison"></ref>
|
||||||
|
</entry>
|
||||||
|
|
||||||
<entry key="coprincipalinvestigator">
|
<entry key="coprincipalinvestigator">
|
||||||
<ref bean="coprincipalinvestigator"></ref>
|
<ref bean="coprincipalinvestigator"></ref>
|
||||||
|
@ -89,7 +100,11 @@
|
||||||
|
|
||||||
<entry key="grant_temporal">
|
<entry key="grant_temporal">
|
||||||
<ref bean="grant_temporal"></ref>
|
<ref bean="grant_temporal"></ref>
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
|
<entry key="grant-graph">
|
||||||
|
<ref bean="entity_grant_count"></ref>
|
||||||
|
</entry>
|
||||||
|
|
||||||
</map>
|
</map>
|
||||||
</property>
|
</property>
|
||||||
|
|
|
@ -1310,7 +1310,12 @@
|
||||||
<servlet>
|
<servlet>
|
||||||
<servlet-name>StandardVisualizationController</servlet-name>
|
<servlet-name>StandardVisualizationController</servlet-name>
|
||||||
<servlet-class>edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.StandardVisualizationController</servlet-class>
|
<servlet-class>edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.StandardVisualizationController</servlet-class>
|
||||||
</servlet>
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>ShortURLVisualizationController</servlet-name>
|
||||||
|
<servlet-class>edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.ShortURLVisualizationController</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
<servlet-mapping>
|
<servlet-mapping>
|
||||||
<servlet-name>StandardVisualizationController</servlet-name>
|
<servlet-name>StandardVisualizationController</servlet-name>
|
||||||
|
@ -1321,6 +1326,14 @@
|
||||||
<servlet-name>StandardVisualizationController</servlet-name>
|
<servlet-name>StandardVisualizationController</servlet-name>
|
||||||
<url-pattern>/visualization</url-pattern>
|
<url-pattern>/visualization</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
This mapping is done to facilitate shorter vis urls.
|
||||||
|
-->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>ShortURLVisualizationController</servlet-name>
|
||||||
|
<url-pattern>/vis/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
<servlet>
|
<servlet>
|
||||||
<servlet-name>AjaxVisualizationController</servlet-name>
|
<servlet-name>AjaxVisualizationController</servlet-name>
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
<#assign standardVisualizationURLRoot ="/visualization">
|
<#assign standardVisualizationURLRoot ="/visualization">
|
||||||
|
<#assign shortVisualizationURLRoot ="/vis">
|
||||||
<#assign ajaxVisualizationURLRoot ="/visualizationAjax">
|
<#assign ajaxVisualizationURLRoot ="/visualizationAjax">
|
||||||
<#assign dataVisualizationURLRoot ="/visualizationData">
|
<#assign dataVisualizationURLRoot ="/visualizationData">
|
||||||
|
|
||||||
<#assign egoURI ="${egoURIParam?url}">
|
<#assign egoURI ="${egoURIParam?url}">
|
||||||
<#assign egoCoAuthorshipDataFeederURL = '${urls.base}${dataVisualizationURLRoot}?vis=coauthorship&uri=${egoURI}&vis_mode=coauthor_network_stream&labelField=label'>
|
<#assign egoCoAuthorshipDataFeederURL = '${urls.base}${dataVisualizationURLRoot}?vis=coauthorship&uri=${egoURI}&vis_mode=coauthor_network_stream&labelField=label'>
|
||||||
|
|
||||||
<#assign coprincipalinvestigatorURL = '${urls.base}${standardVisualizationURLRoot}?vis=person_level&uri=${egoURI}&vis_mode=copi'>
|
<#assign coprincipalinvestigatorURL = '${urls.base}${shortVisualizationURLRoot}/investigator-network/?uri=${egoURI}'>
|
||||||
|
|
||||||
<#assign egoCoAuthorsListDataFileURL = '${urls.base}${dataVisualizationURLRoot}?vis=coauthorship&uri=${egoURI}&vis_mode=coauthors'>
|
<#assign egoCoAuthorsListDataFileURL = '${urls.base}${dataVisualizationURLRoot}?vis=coauthorship&uri=${egoURI}&vis_mode=coauthors'>
|
||||||
<#assign egoCoAuthorshipNetworkDataFileURL = '${urls.base}${dataVisualizationURLRoot}?vis=coauthorship&uri=${egoURI}&vis_mode=coauthor_network_download'>
|
<#assign egoCoAuthorshipNetworkDataFileURL = '${urls.base}${dataVisualizationURLRoot}?vis=coauthorship&uri=${egoURI}&vis_mode=coauthor_network_download'>
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
<#assign standardVisualizationURLRoot ="/visualization">
|
<#assign standardVisualizationURLRoot ="/visualization">
|
||||||
|
<#assign shortVisualizationURLRoot ="/vis">
|
||||||
<#assign ajaxVisualizationURLRoot ="/visualizationAjax">
|
<#assign ajaxVisualizationURLRoot ="/visualizationAjax">
|
||||||
<#assign dataVisualizationURLRoot ="/visualizationData">
|
<#assign dataVisualizationURLRoot ="/visualizationData">
|
||||||
|
|
||||||
<#assign egoURI ="${egoURIParam?url}">
|
<#assign egoURI ="${egoURIParam?url}">
|
||||||
<#assign egoCoInvestigationDataFeederURL = '${urls.base}${dataVisualizationURLRoot}?vis=coprincipalinvestigator&uri=${egoURI}&vis_mode=copi_network_stream&labelField=label'>
|
<#assign egoCoInvestigationDataFeederURL = '${urls.base}${dataVisualizationURLRoot}?vis=coprincipalinvestigator&uri=${egoURI}&vis_mode=copi_network_stream&labelField=label'>
|
||||||
|
|
||||||
<#assign coauthorshipURL = '${urls.base}${standardVisualizationURLRoot}?vis=person_level&uri=${egoURI}&vis_mode=coauthor'>
|
<#assign coauthorshipURL = '${urls.base}${shortVisualizationURLRoot}/author-network/?uri=${egoURI}'>
|
||||||
|
|
||||||
<#assign egoCoInvestigatorsListDataFileURL = '${urls.base}${dataVisualizationURLRoot}?vis=coprincipalinvestigator&uri=${egoURI}&vis_mode=copis'>
|
<#assign egoCoInvestigatorsListDataFileURL = '${urls.base}${dataVisualizationURLRoot}?vis=coprincipalinvestigator&uri=${egoURI}&vis_mode=copis'>
|
||||||
<#assign egoCoInvestigationNetworkDataFileURL = '${urls.base}${dataVisualizationURLRoot}?vis=coprincipalinvestigator&uri=${egoURI}&vis_mode=copi_network_download'>
|
<#assign egoCoInvestigationNetworkDataFileURL = '${urls.base}${dataVisualizationURLRoot}?vis=coprincipalinvestigator&uri=${egoURI}&vis_mode=copi_network_download'>
|
||||||
|
|
|
@ -0,0 +1,256 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
|
||||||
|
package edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
|
||||||
|
import javax.servlet.ServletContext;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
|
import com.hp.hpl.jena.query.Dataset;
|
||||||
|
import com.hp.hpl.jena.query.Syntax;
|
||||||
|
import com.hp.hpl.jena.rdf.model.Model;
|
||||||
|
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerHttpServlet;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.UtilityFunctions;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.VisualizationRequestHandler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Services a standard visualization request, which involves templates. This will return a simple
|
||||||
|
* error message and a 501 if there is no jena Model.
|
||||||
|
*
|
||||||
|
* @author cdtank
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
public class ShortURLVisualizationController extends FreemarkerHttpServlet {
|
||||||
|
|
||||||
|
public static final String URL_ENCODING_SCHEME = "UTF-8";
|
||||||
|
|
||||||
|
private static final Log log = LogFactory.getLog(ShortURLVisualizationController.class.getName());
|
||||||
|
|
||||||
|
protected static final Syntax SYNTAX = Syntax.syntaxARQ;
|
||||||
|
|
||||||
|
public static ServletContext servletContext;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ResponseValues processRequest(VitroRequest vreq) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Based on the query parameters passed via URI get the appropriate visualization
|
||||||
|
* request handler.
|
||||||
|
* */
|
||||||
|
VisualizationRequestHandler visRequestHandler =
|
||||||
|
getVisualizationRequestHandler(vreq);
|
||||||
|
|
||||||
|
servletContext = getServletContext();
|
||||||
|
|
||||||
|
if (visRequestHandler != null) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pass the query to the selected visualization request handler & render the vis.
|
||||||
|
* Since the visualization content is directly added to the response object we are side-
|
||||||
|
* effecting this method.
|
||||||
|
* */
|
||||||
|
return renderVisualization(vreq, visRequestHandler);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return UtilityFunctions.handleMalformedParameters(
|
||||||
|
"Visualization Query Error",
|
||||||
|
"Inappropriate query parameters were submitted.",
|
||||||
|
vreq);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private ResponseValues renderVisualization(VitroRequest vitroRequest,
|
||||||
|
VisualizationRequestHandler visRequestHandler) {
|
||||||
|
|
||||||
|
Model model = vitroRequest.getJenaOntModel(); // getModel()
|
||||||
|
if (model == null) {
|
||||||
|
|
||||||
|
String errorMessage = "This service is not supporeted by the current "
|
||||||
|
+ "webapp configuration. A jena model is required in the "
|
||||||
|
+ "servlet context.";
|
||||||
|
|
||||||
|
log.error(errorMessage);
|
||||||
|
|
||||||
|
return UtilityFunctions.handleMalformedParameters("Visualization Query Error",
|
||||||
|
errorMessage,
|
||||||
|
vitroRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
Dataset dataset = setupJENADataSource(vitroRequest);
|
||||||
|
|
||||||
|
if (dataset != null && visRequestHandler != null) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
|
||||||
|
List<String> matchedPatternGroups = extractShortURLParameters(vitroRequest);
|
||||||
|
|
||||||
|
|
||||||
|
Map<String, String> parametersForVis = getParamatersForVis(matchedPatternGroups, vitroRequest);
|
||||||
|
|
||||||
|
|
||||||
|
return visRequestHandler.generateVisualizationForShortURLRequests(
|
||||||
|
parametersForVis,
|
||||||
|
vitroRequest,
|
||||||
|
log,
|
||||||
|
dataset);
|
||||||
|
|
||||||
|
} catch (MalformedQueryParametersException e) {
|
||||||
|
return UtilityFunctions.handleMalformedParameters(
|
||||||
|
"Standard Visualization Query Error - Individual Publication Count",
|
||||||
|
e.getMessage(),
|
||||||
|
vitroRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
String errorMessage = "Data Model Empty &/or Inappropriate "
|
||||||
|
+ "query parameters were submitted. ";
|
||||||
|
|
||||||
|
log.error(errorMessage);
|
||||||
|
|
||||||
|
return UtilityFunctions.handleMalformedParameters("Visualization Query Error",
|
||||||
|
errorMessage,
|
||||||
|
vitroRequest);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, String> getParamatersForVis(List<String> matchedPatternGroups,
|
||||||
|
VitroRequest vitroRequest) {
|
||||||
|
|
||||||
|
Map<String, String> parameters = new HashMap<String, String>();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We need to convert the short-form URI into a long form. So we use the
|
||||||
|
* default namespace to construct one.
|
||||||
|
* Since VIVO allows non-default namespaces, there are chances that short URLs
|
||||||
|
* will have a "uri" parameter instead of individual uri being part of the formal
|
||||||
|
* url.
|
||||||
|
* */
|
||||||
|
String subjectURI = null;
|
||||||
|
if (StringUtils.isBlank(matchedPatternGroups.get(1))) {
|
||||||
|
|
||||||
|
subjectURI = vitroRequest.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
subjectURI = vitroRequest.getWebappDaoFactory().getDefaultNamespace()
|
||||||
|
+ matchedPatternGroups.get(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
parameters.put(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY, subjectURI);
|
||||||
|
|
||||||
|
if (VisualizationFrameworkConstants.COAUTHORSHIP_VIS_SHORT_URL
|
||||||
|
.equalsIgnoreCase(matchedPatternGroups.get(0))) {
|
||||||
|
|
||||||
|
parameters.put(VisualizationFrameworkConstants.VIS_MODE_KEY,
|
||||||
|
VisualizationFrameworkConstants.COAUTHOR_VIS_MODE);
|
||||||
|
|
||||||
|
} else if (VisualizationFrameworkConstants.COINVESTIGATOR_VIS_SHORT_URL
|
||||||
|
.equalsIgnoreCase(matchedPatternGroups.get(0))) {
|
||||||
|
|
||||||
|
parameters.put(VisualizationFrameworkConstants.VIS_MODE_KEY,
|
||||||
|
VisualizationFrameworkConstants.COPI_VIS_MODE);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Currently temporal vis for both grants & publications do not require use of
|
||||||
|
* vis_modes in their request handlers, so no need to provide anything other than
|
||||||
|
* the URI.
|
||||||
|
* */
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return parameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private VisualizationRequestHandler getVisualizationRequestHandler(
|
||||||
|
VitroRequest vitroRequest) {
|
||||||
|
|
||||||
|
String visType = null;
|
||||||
|
|
||||||
|
VisualizationRequestHandler visRequestHandler = null;
|
||||||
|
|
||||||
|
List<String> matchedPatternGroups = extractShortURLParameters(vitroRequest);
|
||||||
|
|
||||||
|
if (matchedPatternGroups.size() > 0) {
|
||||||
|
|
||||||
|
// System.out.println(matchedPatternGroups.get(0) + " --> " + matchedPatternGroups.get(1));
|
||||||
|
//
|
||||||
|
// System.out.println(vitroRequest.getRequestURI()
|
||||||
|
// + " -- " + vitroRequest.getContextPath()
|
||||||
|
// + " -- " + vitroRequest.getContextPath().length()
|
||||||
|
// + " -- " + vitroRequest.getRequestURI().substring(vitroRequest.getContextPath().length()));
|
||||||
|
|
||||||
|
visType = matchedPatternGroups.get(0);
|
||||||
|
|
||||||
|
try {
|
||||||
|
visRequestHandler = VisualizationsDependencyInjector
|
||||||
|
.getVisualizationIDsToClassMap(getServletContext())
|
||||||
|
.get(visType);
|
||||||
|
} catch (NullPointerException nullKeyException) {
|
||||||
|
/*
|
||||||
|
* Let the default flow take care of returning a null.
|
||||||
|
* */
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return visRequestHandler;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An ideal short url request would mimic,
|
||||||
|
* vivo.com/vis/author-network/shortURI
|
||||||
|
* vivo.com/vis/grant-graph/shortURI
|
||||||
|
* etc. So first we obtain the request url which can be used to extract the requested visualization
|
||||||
|
* and the subject of the visualization. So the below pattern matcher will take "/vis/<vis-name>/<shortURI>"
|
||||||
|
* as an input.
|
||||||
|
*/
|
||||||
|
private List<String> extractShortURLParameters(VitroRequest vitroRequest) {
|
||||||
|
|
||||||
|
Matcher requestPatternMatcher = VisualizationFrameworkConstants
|
||||||
|
.SHORT_URL_REQUEST_PATTERN
|
||||||
|
.matcher(vitroRequest.getRequestURI()
|
||||||
|
.substring(vitroRequest.getContextPath().length()));
|
||||||
|
|
||||||
|
List<String> matchedGroups = new ArrayList<String>();
|
||||||
|
|
||||||
|
if(requestPatternMatcher.matches() && requestPatternMatcher.groupCount() >= 1) {
|
||||||
|
|
||||||
|
for (int ii=1; ii<=requestPatternMatcher.groupCount(); ii++) {
|
||||||
|
matchedGroups.add(requestPatternMatcher.group(ii));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return matchedGroups;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dataset setupJENADataSource(VitroRequest vreq) {
|
||||||
|
|
||||||
|
log.debug("rdfResultFormat was: " + VisConstants.RDF_RESULT_FORMAT_PARAM);
|
||||||
|
|
||||||
|
return vreq.getDataset();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
package edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker;
|
package edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker;
|
||||||
|
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class VisualizationFrameworkConstants {
|
public class VisualizationFrameworkConstants {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -24,11 +26,20 @@ public class VisualizationFrameworkConstants {
|
||||||
* Vis URL prefix that is seen by all the users
|
* Vis URL prefix that is seen by all the users
|
||||||
*/
|
*/
|
||||||
public static final String VISUALIZATION_URL_PREFIX = "/visualization";
|
public static final String VISUALIZATION_URL_PREFIX = "/visualization";
|
||||||
|
public static final String SHORT_URL_VISUALIZATION_REQUEST_PREFIX = "/vis";
|
||||||
|
|
||||||
public static final String FREEMARKERIZED_VISUALIZATION_URL_PREFIX = "/visualization";
|
public static final String FREEMARKERIZED_VISUALIZATION_URL_PREFIX = "/visualization";
|
||||||
public static final String AJAX_VISUALIZATION_SERVICE_URL_PREFIX = "/visualizationAjax";
|
public static final String AJAX_VISUALIZATION_SERVICE_URL_PREFIX = "/visualizationAjax";
|
||||||
public static final String DATA_VISUALIZATION_SERVICE_URL_PREFIX = "/visualizationData";
|
public static final String DATA_VISUALIZATION_SERVICE_URL_PREFIX = "/visualizationData";
|
||||||
|
|
||||||
public static final String INDIVIDUAL_URL_PREFIX = "/individual";
|
public static final String INDIVIDUAL_URL_PREFIX = "/individual";
|
||||||
|
|
||||||
|
|
||||||
|
public static final Pattern SHORT_URL_REQUEST_PATTERN = Pattern
|
||||||
|
.compile("^"
|
||||||
|
+ SHORT_URL_VISUALIZATION_REQUEST_PREFIX
|
||||||
|
+ "/([\\w-]+)/([^/]*)$");
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These represent possible query keys in a URI for visualization purposes.
|
* These represent possible query keys in a URI for visualization purposes.
|
||||||
|
@ -100,8 +111,12 @@ public class VisualizationFrameworkConstants {
|
||||||
public static final String COLLEGE_PUBLICATION_COUNT_VIS = "college_pub_count";
|
public static final String COLLEGE_PUBLICATION_COUNT_VIS = "college_pub_count";
|
||||||
public static final String COAUTHORSHIP_VIS = "coauthorship";
|
public static final String COAUTHORSHIP_VIS = "coauthorship";
|
||||||
public static final String PERSON_LEVEL_VIS = "person_level";
|
public static final String PERSON_LEVEL_VIS = "person_level";
|
||||||
|
public static final String COAUTHORSHIP_VIS_SHORT_URL = "author-network";
|
||||||
|
public static final String COINVESTIGATOR_VIS_SHORT_URL = "investigator-network";
|
||||||
public static final String UTILITIES_VIS = "utilities";
|
public static final String UTILITIES_VIS = "utilities";
|
||||||
public static final String ENTITY_COMPARISON_VIS = "entity_comparison";
|
public static final String ENTITY_COMPARISON_VIS = "entity_comparison";
|
||||||
|
public static final String PUBLICATION_TEMPORAL_VIS_SHORT_URL = "publication-graph";
|
||||||
|
public static final String GRANT_TEMPORAL_VIS_SHORT_URL = "grant-graph";
|
||||||
public static final String CO_PI_VIS = "coprincipalinvestigator";
|
public static final String CO_PI_VIS = "coprincipalinvestigator";
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,9 @@ package edu.cornell.mannlib.vitro.webapp.visualization.freemarker.coauthorship;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringEscapeUtils;
|
import org.apache.commons.lang.StringEscapeUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
@ -14,10 +14,8 @@ import org.apache.commons.logging.Log;
|
||||||
|
|
||||||
import com.hp.hpl.jena.query.Dataset;
|
import com.hp.hpl.jena.query.Dataset;
|
||||||
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.Portal;
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.DataVisualizationController;
|
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.DataVisualizationController;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||||
|
@ -44,6 +42,13 @@ public class CoAuthorshipRequestHandler implements VisualizationRequestHandler {
|
||||||
throw new UnsupportedOperationException("CoAuthorship does not provide Ajax Response.");
|
throw new UnsupportedOperationException("CoAuthorship does not provide Ajax Response.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseValues generateVisualizationForShortURLRequests(
|
||||||
|
Map<String, String> parameters, VitroRequest vitroRequest, Log log,
|
||||||
|
Dataset dataSource) throws MalformedQueryParametersException {
|
||||||
|
throw new UnsupportedOperationException("CoAuthorship does not provide Short URL Response.");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, String> generateDataVisualization(
|
public Map<String, String> generateDataVisualization(
|
||||||
VitroRequest vitroRequest, Log log, Dataset dataset)
|
VitroRequest vitroRequest, Log log, Dataset dataset)
|
||||||
|
@ -288,4 +293,5 @@ public class CoAuthorshipRequestHandler implements VisualizationRequestHandler {
|
||||||
|
|
||||||
return fileData;
|
return fileData;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,10 +24,7 @@ import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.ModelC
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.QueryRunner;
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.QueryRunner;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.UtilityFunctions;
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.UtilityFunctions;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.VisualizationRequestHandler;
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.VisualizationRequestHandler;
|
||||||
/**
|
|
||||||
* @author bkoniden
|
|
||||||
* Deepak Konidena
|
|
||||||
*/
|
|
||||||
public class CoPIGrantCountRequestHandler implements VisualizationRequestHandler {
|
public class CoPIGrantCountRequestHandler implements VisualizationRequestHandler {
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,6 +35,14 @@ public class CoPIGrantCountRequestHandler implements VisualizationRequestHandler
|
||||||
+ " does not provide Ajax response.");
|
+ " does not provide Ajax response.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseValues generateVisualizationForShortURLRequests(
|
||||||
|
Map<String, String> parameters, VitroRequest vitroRequest, Log log,
|
||||||
|
Dataset dataSource) throws MalformedQueryParametersException {
|
||||||
|
throw new UnsupportedOperationException("Co-PI Grant Count"
|
||||||
|
+ " does not provide Short URL response.");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, String> generateDataVisualization(
|
public Map<String, String> generateDataVisualization(
|
||||||
VitroRequest vitroRequest, Log log, Dataset dataset)
|
VitroRequest vitroRequest, Log log, Dataset dataset)
|
||||||
|
@ -282,4 +287,5 @@ public class CoPIGrantCountRequestHandler implements VisualizationRequestHandler
|
||||||
return fileData;
|
return fileData;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -57,6 +57,14 @@ public class EntityPublicationCountRequestHandler implements
|
||||||
return prepareStandaloneMarkupResponse(vitroRequest, entityURI);
|
return prepareStandaloneMarkupResponse(vitroRequest, entityURI);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseValues generateVisualizationForShortURLRequests(
|
||||||
|
Map<String, String> parameters, VitroRequest vitroRequest, Log log,
|
||||||
|
Dataset dataSource) throws MalformedQueryParametersException {
|
||||||
|
throw new UnsupportedOperationException("Uncached implementation for Publication Temporal "
|
||||||
|
+ "Visualization does not provide Short URL Response.");
|
||||||
|
}
|
||||||
|
|
||||||
private Map<String, String> getSubjectEntityAndGenerateDataResponse(
|
private Map<String, String> getSubjectEntityAndGenerateDataResponse(
|
||||||
VitroRequest vitroRequest, Log log, Dataset dataset,
|
VitroRequest vitroRequest, Log log, Dataset dataset,
|
||||||
String subjectEntityURI)
|
String subjectEntityURI)
|
||||||
|
@ -327,4 +335,5 @@ public class EntityPublicationCountRequestHandler implements
|
||||||
}
|
}
|
||||||
return csvFileContent.toString();
|
return csvFileContent.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -15,7 +15,6 @@ import org.apache.commons.logging.Log;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.hp.hpl.jena.query.Dataset;
|
import com.hp.hpl.jena.query.Dataset;
|
||||||
import com.hp.hpl.jena.rdf.model.Model;
|
|
||||||
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.Portal;
|
import edu.cornell.mannlib.vitro.webapp.beans.Portal;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||||
|
@ -27,7 +26,6 @@ import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.entitycomparison.EntityComparisonUtilityFunctions;
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.entitycomparison.EntityComparisonUtilityFunctions;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Activity;
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Activity;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.ConstructedModelTracker;
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Entity;
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Entity;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.JsonObject;
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.JsonObject;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.SubEntity;
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.SubEntity;
|
||||||
|
@ -48,6 +46,14 @@ public class TemporalGrantVisualizationRequestHandler implements
|
||||||
String entityURI = vitroRequest
|
String entityURI = vitroRequest
|
||||||
.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY);
|
.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY);
|
||||||
|
|
||||||
|
return generateStandardVisualizationForGrantTemporalVis(vitroRequest,
|
||||||
|
log, dataset, entityURI);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private ResponseValues generateStandardVisualizationForGrantTemporalVis(
|
||||||
|
VitroRequest vitroRequest, Log log, Dataset dataset,
|
||||||
|
String entityURI) throws MalformedQueryParametersException {
|
||||||
if (StringUtils.isBlank(entityURI)) {
|
if (StringUtils.isBlank(entityURI)) {
|
||||||
|
|
||||||
entityURI = EntityComparisonUtilityFunctions
|
entityURI = EntityComparisonUtilityFunctions
|
||||||
|
@ -58,13 +64,25 @@ public class TemporalGrantVisualizationRequestHandler implements
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.println("current models in the system are");
|
/* System.out.println("current models in the system are");
|
||||||
for (Map.Entry<String, Model> entry : ConstructedModelTracker.getAllModels().entrySet()) {
|
for (Map.Entry<String, Model> entry : ConstructedModelTracker.getAllModels().entrySet()) {
|
||||||
System.out.println(entry.getKey() + " -> " + entry.getValue().size());
|
System.out.println(entry.getKey() + " -> " + entry.getValue().size());
|
||||||
}
|
}
|
||||||
//
|
*/
|
||||||
return prepareStandaloneMarkupResponse(vitroRequest, entityURI);
|
return prepareStandaloneMarkupResponse(vitroRequest, entityURI);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseValues generateVisualizationForShortURLRequests(
|
||||||
|
Map<String, String> parameters, VitroRequest vitroRequest, Log log,
|
||||||
|
Dataset dataset) throws MalformedQueryParametersException {
|
||||||
|
|
||||||
|
|
||||||
|
return generateStandardVisualizationForGrantTemporalVis(
|
||||||
|
vitroRequest, log, dataset, parameters.get(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, String> generateDataVisualization(
|
public Map<String, String> generateDataVisualization(
|
||||||
|
|
|
@ -46,6 +46,25 @@ public class TemporalPublicationVisualizationRequestHandler implements
|
||||||
String entityURI = vitroRequest
|
String entityURI = vitroRequest
|
||||||
.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY);
|
.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY);
|
||||||
|
|
||||||
|
return generateStandardVisualizationForPublicationTemporalVis(
|
||||||
|
vitroRequest, log, dataset, entityURI);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseValues generateVisualizationForShortURLRequests(
|
||||||
|
Map<String, String> parameters, VitroRequest vitroRequest, Log log,
|
||||||
|
Dataset dataset) throws MalformedQueryParametersException {
|
||||||
|
|
||||||
|
|
||||||
|
return generateStandardVisualizationForPublicationTemporalVis(
|
||||||
|
vitroRequest, log, dataset, parameters.get(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private ResponseValues generateStandardVisualizationForPublicationTemporalVis(
|
||||||
|
VitroRequest vitroRequest, Log log, Dataset dataset,
|
||||||
|
String entityURI) throws MalformedQueryParametersException {
|
||||||
|
|
||||||
if (StringUtils.isBlank(entityURI)) {
|
if (StringUtils.isBlank(entityURI)) {
|
||||||
|
|
||||||
entityURI = EntityComparisonUtilityFunctions
|
entityURI = EntityComparisonUtilityFunctions
|
||||||
|
@ -350,4 +369,5 @@ public class TemporalPublicationVisualizationRequestHandler implements
|
||||||
}
|
}
|
||||||
return csvFileContent.toString();
|
return csvFileContent.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -58,6 +58,14 @@ public class EntityGrantCountRequestHandler implements
|
||||||
return prepareStandaloneMarkupResponse(vitroRequest, entityURI);
|
return prepareStandaloneMarkupResponse(vitroRequest, entityURI);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseValues generateVisualizationForShortURLRequests(
|
||||||
|
Map<String, String> parameters, VitroRequest vitroRequest, Log log,
|
||||||
|
Dataset dataSource) throws MalformedQueryParametersException {
|
||||||
|
throw new UnsupportedOperationException("Uncached implementation for Grant Temporal "
|
||||||
|
+ "Visualization does not provide Short URL Response.");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, String> generateDataVisualization(
|
public Map<String, String> generateDataVisualization(
|
||||||
VitroRequest vitroRequest, Log log, Dataset dataset)
|
VitroRequest vitroRequest, Log log, Dataset dataset)
|
||||||
|
@ -328,5 +336,6 @@ public class EntityGrantCountRequestHandler implements
|
||||||
}
|
}
|
||||||
|
|
||||||
return csvFileContent.toString();
|
return csvFileContent.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,6 +75,13 @@ public class PersonGrantCountRequestHandler implements VisualizationRequestHandl
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseValues generateVisualizationForShortURLRequests(
|
||||||
|
Map<String, String> parameters, VitroRequest vitroRequest, Log log,
|
||||||
|
Dataset dataSource) throws MalformedQueryParametersException {
|
||||||
|
throw new UnsupportedOperationException("Person Grant Count Visualization does not provide "
|
||||||
|
+ "Short URL Response.");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object generateAjaxVisualization(VitroRequest vitroRequest, Log log,
|
public Object generateAjaxVisualization(VitroRequest vitroRequest, Log log,
|
||||||
|
|
|
@ -71,15 +71,36 @@ public class PersonLevelRequestHandler implements VisualizationRequestHandler {
|
||||||
public ResponseValues generateStandardVisualization(
|
public ResponseValues generateStandardVisualization(
|
||||||
VitroRequest vitroRequest, Log log, Dataset dataset)
|
VitroRequest vitroRequest, Log log, Dataset dataset)
|
||||||
throws MalformedQueryParametersException {
|
throws MalformedQueryParametersException {
|
||||||
|
|
||||||
String egoURI = vitroRequest.getParameter(
|
String egoURI = vitroRequest.getParameter(
|
||||||
VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY);
|
VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY);
|
||||||
|
|
||||||
String visMode = vitroRequest.getParameter(
|
String visMode = vitroRequest.getParameter(
|
||||||
VisualizationFrameworkConstants.VIS_MODE_KEY);
|
VisualizationFrameworkConstants.VIS_MODE_KEY);
|
||||||
|
|
||||||
|
return generateStandardVisualizationForPersonLevelVis(vitroRequest,
|
||||||
|
log, dataset, egoURI, visMode);
|
||||||
|
|
||||||
if (VisualizationFrameworkConstants.COPI_VIS_MODE.equalsIgnoreCase(visMode)) {
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseValues generateVisualizationForShortURLRequests(
|
||||||
|
Map<String, String> parameters, VitroRequest vitroRequest, Log log,
|
||||||
|
Dataset dataset) throws MalformedQueryParametersException {
|
||||||
|
|
||||||
|
return generateStandardVisualizationForPersonLevelVis(
|
||||||
|
vitroRequest,
|
||||||
|
log,
|
||||||
|
dataset,
|
||||||
|
parameters.get(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY),
|
||||||
|
parameters.get(VisualizationFrameworkConstants.VIS_MODE_KEY));
|
||||||
|
}
|
||||||
|
|
||||||
|
private ResponseValues generateStandardVisualizationForPersonLevelVis(
|
||||||
|
VitroRequest vitroRequest, Log log, Dataset dataset, String egoURI,
|
||||||
|
String visMode) throws MalformedQueryParametersException {
|
||||||
|
|
||||||
|
if (VisualizationFrameworkConstants.COPI_VIS_MODE.equalsIgnoreCase(visMode)) {
|
||||||
|
|
||||||
ModelConstructor constructQueryRunner =
|
ModelConstructor constructQueryRunner =
|
||||||
new CoPIGrantCountConstructQueryRunner(egoURI, dataset, log);
|
new CoPIGrantCountConstructQueryRunner(egoURI, dataset, log);
|
||||||
|
@ -140,7 +161,6 @@ public class PersonLevelRequestHandler implements VisualizationRequestHandler {
|
||||||
coPIData,
|
coPIData,
|
||||||
vitroRequest);
|
vitroRequest);
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
QueryRunner<CollaborationData> coAuthorshipQueryManager =
|
QueryRunner<CollaborationData> coAuthorshipQueryManager =
|
||||||
|
@ -198,7 +218,6 @@ public class PersonLevelRequestHandler implements VisualizationRequestHandler {
|
||||||
vitroRequest);
|
vitroRequest);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private TemplateResponseValues prepareCoAuthorStandaloneResponse(
|
private TemplateResponseValues prepareCoAuthorStandaloneResponse(
|
||||||
|
@ -273,5 +292,4 @@ public class PersonLevelRequestHandler implements VisualizationRequestHandler {
|
||||||
return new TemplateResponseValues(standaloneTemplate, body);
|
return new TemplateResponseValues(standaloneTemplate, body);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,6 +94,14 @@ VisualizationRequestHandler {
|
||||||
shouldVIVOrenderVis);
|
shouldVIVOrenderVis);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseValues generateVisualizationForShortURLRequests(
|
||||||
|
Map<String, String> parameters, VitroRequest vitroRequest, Log log,
|
||||||
|
Dataset dataSource) throws MalformedQueryParametersException {
|
||||||
|
throw new UnsupportedOperationException("Person Publication Count Visualization does not provide "
|
||||||
|
+ "Short URL Response.");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, String> generateDataVisualization(VitroRequest vitroRequest, Log log,
|
public Map<String, String> generateDataVisualization(VitroRequest vitroRequest, Log log,
|
||||||
|
|
|
@ -434,5 +434,13 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler {
|
||||||
throws MalformedQueryParametersException {
|
throws MalformedQueryParametersException {
|
||||||
throw new UnsupportedOperationException("Utilities does not provide Standard Response.");
|
throw new UnsupportedOperationException("Utilities does not provide Standard Response.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseValues generateVisualizationForShortURLRequests(
|
||||||
|
Map<String, String> parameters, VitroRequest vitroRequest, Log log,
|
||||||
|
Dataset dataSource) throws MalformedQueryParametersException {
|
||||||
|
throw new UnsupportedOperationException("Utilities Visualization does not provide "
|
||||||
|
+ "Short URL Response.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,12 @@ public interface VisualizationRequestHandler {
|
||||||
Log log,
|
Log log,
|
||||||
Dataset dataSource) throws MalformedQueryParametersException;
|
Dataset dataSource) throws MalformedQueryParametersException;
|
||||||
|
|
||||||
|
ResponseValues generateVisualizationForShortURLRequests(
|
||||||
|
Map<String, String> parameters,
|
||||||
|
VitroRequest vitroRequest,
|
||||||
|
Log log,
|
||||||
|
Dataset dataSource) throws MalformedQueryParametersException;
|
||||||
|
|
||||||
Object generateAjaxVisualization(VitroRequest vitroRequest,
|
Object generateAjaxVisualization(VitroRequest vitroRequest,
|
||||||
Log log,
|
Log log,
|
||||||
Dataset dataSource) throws MalformedQueryParametersException;
|
Dataset dataSource) throws MalformedQueryParametersException;
|
||||||
|
|
|
@ -9,6 +9,8 @@ import java.util.Map;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.openrdf.model.URI;
|
||||||
|
import org.openrdf.model.impl.URIImpl;
|
||||||
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement;
|
import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement;
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
||||||
|
@ -17,6 +19,7 @@ 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;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.Route;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.Route;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
||||||
|
|
||||||
public class IndividualTemplateModel extends BaseIndividualTemplateModel {
|
public class IndividualTemplateModel extends BaseIndividualTemplateModel {
|
||||||
|
@ -29,28 +32,9 @@ public class IndividualTemplateModel extends BaseIndividualTemplateModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getBaseVisUrl() {
|
private String getBaseVisUrl() {
|
||||||
return getUrl(Route.VISUALIZATION.path(), "uri", getUri());
|
return getUrl(Route.VISUALIZATION_SHORT.path());
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getVisUrl(ParamMap params) {
|
|
||||||
String baseVisUrl = getBaseVisUrl();
|
|
||||||
return UrlBuilder.addParams(baseVisUrl, params);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getVisUrl(String...params) {
|
|
||||||
return getVisUrl(new ParamMap(params));
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getPersonVisUrl(ParamMap params) {
|
|
||||||
if (!isPerson()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
ParamMap paramMap = new ParamMap("vis", "person_level");
|
|
||||||
paramMap.put(params);
|
|
||||||
return getVisUrl(paramMap);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Access methods for templates */
|
/* Access methods for templates */
|
||||||
|
|
||||||
public boolean isPerson() {
|
public boolean isPerson() {
|
||||||
|
@ -62,18 +46,61 @@ public class IndividualTemplateModel extends BaseIndividualTemplateModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCoAuthorVisUrl() {
|
public String getCoAuthorVisUrl() {
|
||||||
return getPersonVisUrl(new ParamMap("vis_mode", "coauthor"));
|
|
||||||
|
String coauthorVisURL = getBaseVisUrl() + "/" + VisualizationFrameworkConstants.COAUTHORSHIP_VIS_SHORT_URL + "/";
|
||||||
|
|
||||||
|
return getVisUrl(coauthorVisURL);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO: Remove this method once Rebecca creates one. Right now it is the exact copy of the method found in
|
||||||
|
* BaseIndividualTemplateModel.getRdfUrl
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private boolean isIndividualURIBasedOnDefaultNamespace() {
|
||||||
|
URI uri = new URIImpl(getUri());
|
||||||
|
String namespace = uri.getNamespace();
|
||||||
|
|
||||||
|
// Individuals in the default namespace
|
||||||
|
// e.g., http://vivo.cornell.edu/individual/n2345/n2345.rdf
|
||||||
|
// where default namespace = http://vivo.cornell.edu/individual/
|
||||||
|
// Other individuals: http://some.other.namespace/n2345?format=rdfxml
|
||||||
|
String defaultNamespace = vreq.getWebappDaoFactory().getDefaultNamespace();
|
||||||
|
return (defaultNamespace.equals(namespace)) ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
public String getCoInvestigatorVisUrl() {
|
public String getCoInvestigatorVisUrl() {
|
||||||
return getPersonVisUrl(new ParamMap("vis_mode", "copi"));
|
|
||||||
|
String coinvestigatorVisURL = getBaseVisUrl() + "/" + VisualizationFrameworkConstants.COINVESTIGATOR_VIS_SHORT_URL + "/";
|
||||||
|
|
||||||
|
return getVisUrl(coinvestigatorVisURL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getVisUrl(String coinvestigatorVisURL) {
|
||||||
|
boolean isUsingDefaultNameSpace = isIndividualURIBasedOnDefaultNamespace();
|
||||||
|
|
||||||
|
if (isUsingDefaultNameSpace) {
|
||||||
|
|
||||||
|
return coinvestigatorVisURL + getLocalName();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
return UrlBuilder.addParams(
|
||||||
|
coinvestigatorVisURL,
|
||||||
|
new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY, getUri()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public String getTemporalGraphUrl() {
|
public String getTemporalGraphUrl() {
|
||||||
if (!isOrganization()) {
|
if (!isOrganization()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return getVisUrl("vis", "entity_comparison");
|
|
||||||
|
String temporalVisURL = getBaseVisUrl() + "/" + VisualizationFrameworkConstants.PUBLICATION_TEMPORAL_VIS_SHORT_URL + "/";
|
||||||
|
|
||||||
|
return getVisUrl(temporalVisURL);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getSelfEditingId() {
|
public String getSelfEditingId() {
|
||||||
|
|
Loading…
Add table
Reference in a new issue