1. Modified dependency injection bean to include the new freemarkerized vis.
2. Modified freemarker branch to use newly added visFramework constants. 3. Completed freemarkerization of co-pi vis code generator. 4. Modified co-autho req handler to handle all data responses (2 sparkline, 2 network) instaed of person level. 5. Adde dperson level request handler to freemarker branch.
This commit is contained in:
parent
e9feb745b1
commit
d08cdd3498
22 changed files with 606 additions and 129 deletions
|
@ -22,15 +22,16 @@
|
|||
<bean id="person_grant_count"
|
||||
class="edu.cornell.mannlib.vitro.webapp.visualization.freemarker.persongrantcount.PersonGrantCountRequestHandler" />
|
||||
|
||||
<!--
|
||||
<bean id="person_level"
|
||||
class="edu.cornell.mannlib.vitro.webapp.visualization.personlevel.PersonLevelRequestHandler" />
|
||||
|
||||
<bean id="coprincipalinvestigator"
|
||||
class="edu.cornell.mannlib.vitro.webapp.visualization.coprincipalinvestigator.CoPIGrantCountRequestHandler" />
|
||||
|
||||
<!--
|
||||
|
||||
<bean id="entity_comparison"
|
||||
class="edu.cornell.mannlib.vitro.webapp.visualization.entitycomparison.EntityPublicationCountRequestHandler" />
|
||||
<bean id="coprincipalinvestigator"
|
||||
class="edu.cornell.mannlib.vitro.webapp.visualization.coprincipalinvestigator.CoPIGrantCountRequestHandler" />
|
||||
|
||||
-->
|
||||
<bean id="visualizationInjector"
|
||||
|
@ -53,18 +54,21 @@
|
|||
<ref bean="person_grant_count"></ref>
|
||||
</entry>
|
||||
|
||||
<!--
|
||||
|
||||
<entry key="person_level">
|
||||
<ref bean="person_level"></ref>
|
||||
</entry>
|
||||
|
||||
<!--
|
||||
<entry key="entity_comparison">
|
||||
<ref bean="entity_comparison"></ref>
|
||||
</entry>
|
||||
-->
|
||||
<entry key="coprincipalinvestigator">
|
||||
<ref bean="coprincipalinvestigator"></ref>
|
||||
</entry>
|
||||
|
||||
-->
|
||||
|
||||
</map>
|
||||
</property>
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
package edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
@ -20,9 +19,7 @@ import com.hp.hpl.jena.rdf.model.ModelMaker;
|
|||
|
||||
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.controller.freemarker.responsevalues.TemplateResponseValues;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants;
|
||||
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;
|
||||
|
|
|
@ -20,7 +20,6 @@ import com.hp.hpl.jena.rdf.model.ModelMaker;
|
|||
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroHttpServlet;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants;
|
||||
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;
|
||||
|
|
|
@ -14,7 +14,6 @@ import com.hp.hpl.jena.rdf.model.ModelMaker;
|
|||
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.controller.visualization.VisualizationFrameworkConstants;
|
||||
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;
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
package edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker;
|
||||
|
||||
public class VisualizationFrameworkConstants {
|
||||
|
||||
/*
|
||||
* Contains the location of bean containing info on all the visualizations
|
||||
* available in that instance. Currently it is stored under
|
||||
* "productMods/WEB-INF..."
|
||||
*/
|
||||
public static final String RELATIVE_LOCATION_OF_VISUALIZATIONS_BEAN =
|
||||
"/WEB-INF/visualization/visualizations-beans-injection.xml";
|
||||
|
||||
/*
|
||||
* Freemarker Version
|
||||
* */
|
||||
public static final String RELATIVE_LOCATION_OF_FM_VISUALIZATIONS_BEAN =
|
||||
"/WEB-INF/visualization/visualizations-beans-injection-fm.xml";
|
||||
|
||||
public static final String ERROR_TEMPLATE = "/visualization/visualizationError.ftl";
|
||||
|
||||
/*
|
||||
* Vis URL prefix that is seen by all the users
|
||||
*/
|
||||
public static final String VISUALIZATION_URL_PREFIX = "/visualization";
|
||||
public static final String FREEMARKERIZED_VISUALIZATION_URL_PREFIX = "/visualizationfm";
|
||||
public static final String AJAX_VISUALIZATION_SERVICE_URL_PREFIX = "/visualizationAjax";
|
||||
public static final String DATA_VISUALIZATION_SERVICE_URL_PREFIX = "/visualizationData";
|
||||
|
||||
public static final String INDIVIDUAL_URL_PREFIX = "/individual";
|
||||
|
||||
/*
|
||||
* These represent possible query keys in a URI for visualization purposes.
|
||||
* Examples,
|
||||
* 1. http://vivo.indiana.edu/visualization?uri=http://vivoweb.org/ontology/core/Person10979&vis=person_level&render_mode=standalone
|
||||
* 2. http://vivo.indiana.edu/visualization?uri=http://vivoweb.org/ontology/core/Person72&vis=person_pub_count&render_mode=dynamic&container=vis_container
|
||||
* */
|
||||
public static final String VIS_TYPE_KEY = "vis";
|
||||
public static final String VIS_CONTAINER_KEY = "container";
|
||||
public static final String INDIVIDUAL_URI_KEY = "uri";
|
||||
public static final String VIS_MODE_KEY = "vis_mode";
|
||||
public static final String RENDER_MODE_KEY = "render_mode";
|
||||
|
||||
/*
|
||||
* These values represent possible render modes.
|
||||
* */
|
||||
public static final String STANDALONE_RENDER_MODE = "standalone";
|
||||
public static final String DYNAMIC_RENDER_MODE = "dynamic";
|
||||
public static final String DATA_RENDER_MODE = "data";
|
||||
public static final String PDF_RENDER_MODE = "pdf";
|
||||
|
||||
/*
|
||||
* These values represent possible sub-vis modes.
|
||||
* */
|
||||
public static final String IMAGE_VIS_MODE = "image";
|
||||
public static final String SHORT_SPARKLINE_VIS_MODE = "short";
|
||||
public static final String FULL_SPARKLINE_VIS_MODE = "full";
|
||||
public static final String COPI_VIS_MODE = "copi";
|
||||
public static final String COAUTHOR_VIS_MODE = "coauthor";
|
||||
|
||||
/*
|
||||
* Vis modes for CoauthorshipRequest Handler
|
||||
* */
|
||||
public static final String COAUTHORS_COUNT_PER_YEAR_VIS_MODE = "coauthors_count_per_year";
|
||||
public static final String COAUTHORS_LIST_VIS_MODE = "coauthors";
|
||||
public static final String COAUTHOR_NETWORK_STREAM_VIS_MODE = "coauthor_network_stream";
|
||||
public static final String COAUTHOR_NETWORK_DOWNLOAD_VIS_MODE = "coauthor_network_download";
|
||||
|
||||
/*
|
||||
* Vis modes for CoPIRequest Handler
|
||||
* */
|
||||
public static final String COPIS_COUNT_PER_YEAR_VIS_MODE = "copis_count_per_year";
|
||||
public static final String COPIS_LIST_VIS_MODE = "copis";
|
||||
public static final String COPI_NETWORK_STREAM_VIS_MODE = "copi_network_stream";
|
||||
public static final String COPI_NETWORK_DOWNLOAD_VIS_MODE = "copi_network_download";
|
||||
|
||||
/*
|
||||
* These values represent possible utilities vis modes.
|
||||
* */
|
||||
public static final String PROFILE_INFO_UTILS_VIS_MODE = "PROFILE_INFO";
|
||||
public static final String PROFILE_UTILS_VIS_MODE = "PROFILE_URL";
|
||||
public static final String COAUTHOR_UTILS_VIS_MODE = "COAUTHORSHIP_URL";
|
||||
public static final String PERSON_LEVEL_UTILS_VIS_MODE = "PERSON_LEVEL_URL";
|
||||
public static final String COPI_UTILS_VIS_MODE = "COPI_URL";
|
||||
public static final String IMAGE_UTILS_VIS_MODE = "IMAGE_URL";
|
||||
public static final String UNIVERSITY_COMPARISON_VIS_MODE = "UNIVERSITY";
|
||||
public static final String SCHOOL_COMPARISON_VIS_MODE = "SCHOOL";
|
||||
public static final String DEPARTMENT_COMPARISON_VIS_MODE = "DEPARTMENT";
|
||||
|
||||
|
||||
/*
|
||||
* These values represent possible visualizations provided as values to the "vis" url key.
|
||||
* */
|
||||
public static final String PERSON_PUBLICATION_COUNT_VIS = "person_pub_count";
|
||||
public static final String PERSON_GRANT_COUNT_VIS = "person_grant_count";
|
||||
public static final String PDF_REPORT_VIS = "pdf_report";
|
||||
public static final String COLLEGE_PUBLICATION_COUNT_VIS = "college_pub_count";
|
||||
public static final String COAUTHORSHIP_VIS = "coauthorship";
|
||||
public static final String PERSON_LEVEL_VIS = "person_level";
|
||||
public static final String UTILITIES_VIS = "utilities";
|
||||
public static final String ENTITY_COMPARISON_VIS = "entity_comparison";
|
||||
public static final String CO_PI_VIS = "coprincipalinvestigator";
|
||||
|
||||
|
||||
}
|
|
@ -9,7 +9,6 @@ import org.springframework.beans.factory.BeanFactory;
|
|||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.VisualizationRequestHandler;
|
||||
|
||||
public class VisualizationsDependencyInjector {
|
||||
|
|
|
@ -10,7 +10,7 @@ import java.util.Set;
|
|||
|
||||
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.visualization.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoAuthorshipData;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Edge;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Node;
|
||||
|
|
|
@ -4,9 +4,9 @@ package edu.cornell.mannlib.vitro.webapp.visualization.freemarker.coauthorship;
|
|||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.apache.commons.lang.StringEscapeUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
@ -18,7 +18,7 @@ import edu.cornell.mannlib.vitro.webapp.beans.Portal;
|
|||
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.TemplateResponseValues;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.DataVisualizationController;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoAuthorshipData;
|
||||
|
@ -69,19 +69,36 @@ public class CoAuthorshipRequestHandler implements VisualizationRequestHandler {
|
|||
* flash vis. We will use "VIS_MODE_KEY" as a modifier to differentiate
|
||||
* between these two. The default will be to render the coauthorship network vis.
|
||||
* */
|
||||
if (VisualizationFrameworkConstants.SPARKLINE_VIS_MODE
|
||||
if (VisualizationFrameworkConstants.COAUTHORS_COUNT_PER_YEAR_VIS_MODE
|
||||
.equalsIgnoreCase(visMode)) {
|
||||
/*
|
||||
* When the csv file is required - based on which sparkline visualization will
|
||||
* be rendered.
|
||||
* */
|
||||
return prepareSparklineDataResponse(authorNodesAndEdges);
|
||||
return prepareCoauthorsCountPerYearDataResponse(authorNodesAndEdges);
|
||||
|
||||
} else if (VisualizationFrameworkConstants.COAUTHORS_LIST_VIS_MODE
|
||||
.equalsIgnoreCase(visMode)) {
|
||||
/*
|
||||
* When the csv file is required - based on which sparkline visualization will
|
||||
* be rendered.
|
||||
* */
|
||||
return prepareCoauthorsListDataResponse(authorNodesAndEdges);
|
||||
|
||||
} else if (VisualizationFrameworkConstants.COAUTHOR_NETWORK_DOWNLOAD_VIS_MODE
|
||||
.equalsIgnoreCase(visMode)) {
|
||||
/*
|
||||
* When the csv file is required - based on which sparkline visualization will
|
||||
* be rendered.
|
||||
* */
|
||||
return prepareNetworkDownloadDataResponse(authorNodesAndEdges);
|
||||
|
||||
} else {
|
||||
/*
|
||||
* When the graphML file is required - based on which coauthorship network
|
||||
* visualization will be rendered.
|
||||
* */
|
||||
return prepareNetworkDataResponse(authorNodesAndEdges);
|
||||
return prepareNetworkStreamDataResponse(authorNodesAndEdges);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -116,6 +133,23 @@ public class CoAuthorshipRequestHandler implements VisualizationRequestHandler {
|
|||
|
||||
|
||||
|
||||
private String getCoauthorsListCSVContent(Map<String, Integer> coAuthorsToCount) {
|
||||
|
||||
StringBuilder csvFileContent = new StringBuilder();
|
||||
|
||||
csvFileContent.append("Year, Count\n");
|
||||
|
||||
for (Entry<String, Integer> currentEntry : coAuthorsToCount.entrySet()) {
|
||||
csvFileContent.append(StringEscapeUtils.escapeCsv(currentEntry.getKey()));
|
||||
csvFileContent.append(",");
|
||||
csvFileContent.append(currentEntry.getValue());
|
||||
csvFileContent.append("\n");
|
||||
}
|
||||
|
||||
return csvFileContent.toString();
|
||||
|
||||
}
|
||||
|
||||
private String getCoauthorsPerYearCSVContent(Map<String, Set<Node>> yearToCoauthors) {
|
||||
|
||||
StringBuilder csvFileContent = new StringBuilder();
|
||||
|
@ -153,7 +187,7 @@ public class CoAuthorshipRequestHandler implements VisualizationRequestHandler {
|
|||
* @param authorNodesAndEdges
|
||||
* @param response
|
||||
*/
|
||||
private Map<String, String> prepareSparklineDataResponse(CoAuthorshipData authorNodesAndEdges) {
|
||||
private Map<String, String> prepareCoauthorsCountPerYearDataResponse(CoAuthorshipData authorNodesAndEdges) {
|
||||
|
||||
String outputFileName;
|
||||
Map<String, Set<Node>> yearToCoauthors = new TreeMap<String, Set<Node>>();
|
||||
|
@ -182,13 +216,64 @@ public class CoAuthorshipRequestHandler implements VisualizationRequestHandler {
|
|||
return fileData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides response when a csv file containing number & names of unique co-authors per
|
||||
* year is requested.
|
||||
* @param authorNodesAndEdges
|
||||
* @param response
|
||||
*/
|
||||
private Map<String, String> prepareCoauthorsListDataResponse(CoAuthorshipData coAuthorshipData) {
|
||||
|
||||
String outputFileName = "";
|
||||
Map<String, Integer> coAuthorsToCount = new TreeMap<String, Integer>();
|
||||
|
||||
if (coAuthorshipData.getNodes() != null && coAuthorshipData.getNodes().size() > 0) {
|
||||
|
||||
outputFileName = UtilityFunctions.slugify(coAuthorshipData.getEgoNode().getNodeName())
|
||||
+ "_coauthors" + ".csv";
|
||||
|
||||
coAuthorsToCount = getCoAuthorsList(coAuthorshipData);
|
||||
|
||||
} else {
|
||||
outputFileName = "no_coauthors" + ".csv";
|
||||
}
|
||||
|
||||
Map<String, String> fileData = new HashMap<String, String>();
|
||||
fileData.put(DataVisualizationController.FILE_NAME_KEY,
|
||||
outputFileName);
|
||||
fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY,
|
||||
"application/octet-stream");
|
||||
fileData.put(DataVisualizationController.FILE_CONTENT_KEY,
|
||||
getCoauthorsListCSVContent(coAuthorsToCount));
|
||||
|
||||
return fileData;
|
||||
}
|
||||
|
||||
private Map<String, Integer> getCoAuthorsList(CoAuthorshipData coAuthorsipVO) {
|
||||
|
||||
Map<String, Integer> coAuthorsToCount = new TreeMap<String, Integer>();
|
||||
|
||||
for (Node currNode : coAuthorsipVO.getNodes()) {
|
||||
|
||||
/*
|
||||
* We have already printed the Ego Node info.
|
||||
* */
|
||||
if (currNode != coAuthorsipVO.getEgoNode()) {
|
||||
|
||||
coAuthorsToCount.put(currNode.getNodeName(), currNode.getNumOfAuthoredWorks());
|
||||
|
||||
}
|
||||
}
|
||||
return coAuthorsToCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides a response when graphml formatted co-authorship network is requested, typically by
|
||||
* the flash vis.
|
||||
* @param authorNodesAndEdges
|
||||
* @param response
|
||||
*/
|
||||
private Map<String, String> prepareNetworkDataResponse(CoAuthorshipData authorNodesAndEdges) {
|
||||
private Map<String, String> prepareNetworkStreamDataResponse(CoAuthorshipData authorNodesAndEdges) {
|
||||
|
||||
CoAuthorshipGraphMLWriter coAuthorshipGraphMLWriter =
|
||||
new CoAuthorshipGraphMLWriter(authorNodesAndEdges);
|
||||
|
@ -203,6 +288,34 @@ public class CoAuthorshipRequestHandler implements VisualizationRequestHandler {
|
|||
|
||||
}
|
||||
|
||||
private Map<String, String> prepareNetworkDownloadDataResponse(CoAuthorshipData authorNodesAndEdges) {
|
||||
|
||||
String outputFileName = "";
|
||||
|
||||
if (authorNodesAndEdges.getNodes() != null && authorNodesAndEdges.getNodes().size() > 0) {
|
||||
|
||||
outputFileName = UtilityFunctions.slugify(authorNodesAndEdges.getEgoNode().getNodeName())
|
||||
+ "_coauthor-network.graphml" + ".xml";
|
||||
|
||||
} else {
|
||||
outputFileName = "no_coauthor-network.graphml" + ".xml";
|
||||
}
|
||||
|
||||
CoAuthorshipGraphMLWriter coAuthorshipGraphMLWriter =
|
||||
new CoAuthorshipGraphMLWriter(authorNodesAndEdges);
|
||||
|
||||
Map<String, String> fileData = new HashMap<String, String>();
|
||||
fileData.put(DataVisualizationController.FILE_NAME_KEY,
|
||||
outputFileName);
|
||||
fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY,
|
||||
"text/xml");
|
||||
fileData.put(DataVisualizationController.FILE_CONTENT_KEY,
|
||||
coAuthorshipGraphMLWriter.getCoAuthorshipGraphMLContent().toString());
|
||||
|
||||
return fileData;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* When the page for person level visualization is requested.
|
||||
* @param egoURI
|
||||
|
|
|
@ -17,7 +17,7 @@ import org.apache.commons.logging.Log;
|
|||
|
||||
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.visualization.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Node;
|
||||
|
@ -526,7 +526,7 @@ public class CoAuthorshipVisCodeGenerator {
|
|||
VisualizationFrameworkConstants.VIS_TYPE_KEY,
|
||||
VisualizationFrameworkConstants.COAUTHORSHIP_VIS,
|
||||
VisualizationFrameworkConstants.VIS_MODE_KEY,
|
||||
VisualizationFrameworkConstants.SPARKLINE_VIS_MODE);
|
||||
VisualizationFrameworkConstants.COAUTHORS_COUNT_PER_YEAR_VIS_MODE);
|
||||
|
||||
return UrlBuilder.getUrl(VisualizationFrameworkConstants.DATA_VISUALIZATION_SERVICE_URL_PREFIX,
|
||||
CSVDownloadURLParams);
|
||||
|
@ -548,8 +548,8 @@ public class CoAuthorshipVisCodeGenerator {
|
|||
individualURI,
|
||||
VisualizationFrameworkConstants.VIS_TYPE_KEY,
|
||||
VisualizationFrameworkConstants.PERSON_LEVEL_VIS,
|
||||
VisualizationFrameworkConstants.VIS_CONTAINER_KEY,
|
||||
"ego_sparkline");
|
||||
VisualizationFrameworkConstants.VIS_MODE_KEY,
|
||||
VisualizationFrameworkConstants.COAUTHOR_VIS_MODE);
|
||||
|
||||
String fullTimelineNetworkURL = UrlBuilder.getUrl(
|
||||
VisualizationFrameworkConstants.FREEMARKERIZED_VISUALIZATION_URL_PREFIX,
|
||||
|
|
|
@ -16,7 +16,7 @@ import edu.cornell.mannlib.vitro.webapp.beans.Portal;
|
|||
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.TemplateResponseValues;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.DataVisualizationController;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoPIData;
|
||||
|
|
|
@ -10,7 +10,7 @@ import java.util.Set;
|
|||
|
||||
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.visualization.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoPIData;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoPIEdge;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoPINode;
|
||||
|
|
|
@ -2,25 +2,27 @@
|
|||
|
||||
package edu.cornell.mannlib.vitro.webapp.visualization.freemarker.coprincipalinvestigator;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Set;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationController;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants;
|
||||
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.visualization.freemarker.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.CoPINode;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.SparklineData;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoPINode;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.SparklineData;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.YearToEntityCountDataElement;
|
||||
|
||||
/**
|
||||
* This class contains code for rendering sparklines and displaying tables for
|
||||
|
@ -57,18 +59,14 @@ public class CoPIVisCodeGenerator {
|
|||
|
||||
private SparklineData sparklineData;
|
||||
|
||||
private String contextPath;
|
||||
|
||||
private String individualURI;
|
||||
|
||||
public CoPIVisCodeGenerator(String contextPath,
|
||||
String individualURI,
|
||||
public CoPIVisCodeGenerator(String individualURI,
|
||||
String visMode,
|
||||
String visContainer,
|
||||
Map<String, Set<CoPINode>> yearToUniqueCoPIs,
|
||||
Log log){
|
||||
|
||||
this.contextPath = contextPath;
|
||||
this.individualURI = individualURI;
|
||||
|
||||
this.yearToUniqueCoPIs = yearToUniqueCoPIs;
|
||||
|
@ -181,6 +179,7 @@ public class CoPIVisCodeGenerator {
|
|||
int uniqueCoPICounter = 0;
|
||||
int renderedFullSparks = 0;
|
||||
Set<CoPINode> allCoPIsWithKnownGrantShipYears = new HashSet<CoPINode>();
|
||||
List<YearToEntityCountDataElement> yearToUniqueInvestigatorsCountDataTable = new ArrayList<YearToEntityCountDataElement>();
|
||||
|
||||
for (int grantYear = minGrantYearConsidered; grantYear <= currentYear; grantYear++) {
|
||||
|
||||
|
@ -202,6 +201,10 @@ public class CoPIVisCodeGenerator {
|
|||
|
||||
visualizationCode.append("data.setValue(" + uniqueCoPICounter
|
||||
+ ", 1, " + currentUniqueCoPIs + ");\n");
|
||||
|
||||
yearToUniqueInvestigatorsCountDataTable.add(new YearToEntityCountDataElement(uniqueCoPICounter,
|
||||
grantYearAsString,
|
||||
currentUniqueCoPIs));
|
||||
uniqueCoPICounter++;
|
||||
}
|
||||
|
||||
|
@ -213,6 +216,10 @@ public class CoPIVisCodeGenerator {
|
|||
*/
|
||||
renderedFullSparks = allCoPIsWithKnownGrantShipYears.size();
|
||||
|
||||
sparklineData.setRenderedSparks(renderedFullSparks);
|
||||
|
||||
sparklineData.setYearToEntityCountDataTable(yearToUniqueInvestigatorsCountDataTable);
|
||||
|
||||
/*
|
||||
* Total grants will also consider publications that have no year
|
||||
* associated with them. Hence.
|
||||
|
@ -223,6 +230,8 @@ public class CoPIVisCodeGenerator {
|
|||
VOConstants.DEFAULT_GRANT_YEAR).size();
|
||||
}
|
||||
|
||||
sparklineData.setUnknownYearPublications(unknownYearCoPIs);
|
||||
|
||||
String sparklineDisplayOptions = "{width: 65, height: 30, showAxisLines: false, "
|
||||
+ "showValueLabels: false, labelPosition: 'none'}";
|
||||
|
||||
|
@ -232,11 +241,14 @@ public class CoPIVisCodeGenerator {
|
|||
visContainerID = DEFAULT_VISCONTAINER_DIV_ID;
|
||||
}
|
||||
|
||||
sparklineData.setVisContainerDivID(visContainerID);
|
||||
|
||||
/*
|
||||
* By default these represents the range of the rendered sparks. Only in
|
||||
* case of "short" sparkline mode we will set the Earliest
|
||||
* RenderedGrant year to "currentYear - 10".
|
||||
*/
|
||||
sparklineData.setEarliestYearConsidered(minGrantYearConsidered);
|
||||
sparklineData.setEarliestRenderedGrantYear(minGrantYear);
|
||||
sparklineData.setLatestRenderedGrantYear(currentYear);
|
||||
|
||||
|
@ -257,10 +269,15 @@ public class CoPIVisCodeGenerator {
|
|||
|
||||
sparklineData.setEarliestRenderedGrantYear(shortSparkMinYear);
|
||||
|
||||
sparklineData.setShortVisMode(true);
|
||||
|
||||
generateShortSparklineVisualizationContent(currentYear,
|
||||
shortSparkMinYear, visContainerID, visualizationCode,
|
||||
unknownYearCoPIs, sparklineDisplayOptions);
|
||||
} else {
|
||||
|
||||
sparklineData.setShortVisMode(false);
|
||||
|
||||
generateFullSparklineVisualizationContent(currentYear,
|
||||
minGrantYearConsidered, visContainerID, visualizationCode,
|
||||
unknownYearCoPIs, renderedFullSparks,
|
||||
|
@ -361,17 +378,12 @@ public class CoPIVisCodeGenerator {
|
|||
|
||||
String csvDownloadURLHref = "";
|
||||
|
||||
try {
|
||||
if (getCSVDownloadURL() != null) {
|
||||
if (getCSVDownloadURL() != null) {
|
||||
|
||||
csvDownloadURLHref = "<a href=\"" + getCSVDownloadURL()
|
||||
+ "\" class=\"inline_href\">(.CSV File)</a>";
|
||||
csvDownloadURLHref = "<a href=\"" + getCSVDownloadURL()
|
||||
+ "\" class=\"inline_href\">(.CSV File)</a>";
|
||||
|
||||
} else {
|
||||
csvDownloadURLHref = "";
|
||||
}
|
||||
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
} else {
|
||||
csvDownloadURLHref = "";
|
||||
}
|
||||
|
||||
|
@ -479,18 +491,13 @@ public class CoPIVisCodeGenerator {
|
|||
|
||||
if (yearToUniqueCoPIs.size() > 0) {
|
||||
|
||||
try {
|
||||
if (getCSVDownloadURL() != null) {
|
||||
if (getCSVDownloadURL() != null) {
|
||||
|
||||
csvDownloadURLHref = "Download data as <a href='"
|
||||
+ getCSVDownloadURL() + "'>.csv</a> file.<br />";
|
||||
sparklineData.setDownloadDataLink(getCSVDownloadURL());
|
||||
csvDownloadURLHref = "Download data as <a href='"
|
||||
+ getCSVDownloadURL() + "'>.csv</a> file.<br />";
|
||||
sparklineData.setDownloadDataLink(getCSVDownloadURL());
|
||||
|
||||
} else {
|
||||
csvDownloadURLHref = "";
|
||||
}
|
||||
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
} else {
|
||||
csvDownloadURLHref = "";
|
||||
}
|
||||
|
||||
|
@ -507,33 +514,20 @@ public class CoPIVisCodeGenerator {
|
|||
return divContextCode.toString();
|
||||
}
|
||||
|
||||
private String getCSVDownloadURL() throws UnsupportedEncodingException {
|
||||
private String getCSVDownloadURL() {
|
||||
|
||||
if (yearToUniqueCoPIs.size() > 0) {
|
||||
|
||||
String secondaryContextPath = "";
|
||||
if (!contextPath.contains(VisualizationFrameworkConstants.VISUALIZATION_URL_PREFIX)) {
|
||||
secondaryContextPath = VisualizationFrameworkConstants.VISUALIZATION_URL_PREFIX;
|
||||
}
|
||||
ParamMap CSVDownloadURLParams = new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY,
|
||||
individualURI,
|
||||
VisualizationFrameworkConstants.VIS_TYPE_KEY,
|
||||
VisualizationFrameworkConstants.CO_PI_VIS,
|
||||
VisualizationFrameworkConstants.VIS_MODE_KEY,
|
||||
VisualizationFrameworkConstants.COPIS_COUNT_PER_YEAR_VIS_MODE);
|
||||
|
||||
return UrlBuilder.getUrl(VisualizationFrameworkConstants.DATA_VISUALIZATION_SERVICE_URL_PREFIX,
|
||||
CSVDownloadURLParams);
|
||||
|
||||
String downloadURL = contextPath
|
||||
+ secondaryContextPath
|
||||
+ "?" + VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY
|
||||
+ "=" + URLEncoder.encode(individualURI,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString()
|
||||
+ "&" + VisualizationFrameworkConstants.VIS_TYPE_KEY
|
||||
+ "=" + URLEncoder.encode(VisualizationFrameworkConstants
|
||||
.CO_PI_VIS,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString()
|
||||
+ "&" + VisualizationFrameworkConstants.VIS_MODE_KEY
|
||||
+ "=" + URLEncoder.encode("sparkline",
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString()
|
||||
+ "&" + VisualizationFrameworkConstants.RENDER_MODE_KEY
|
||||
+ "=" + URLEncoder.encode(VisualizationFrameworkConstants.DATA_RENDER_MODE,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString();
|
||||
|
||||
return downloadURL;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
@ -542,36 +536,20 @@ public class CoPIVisCodeGenerator {
|
|||
|
||||
StringBuilder divContextCode = new StringBuilder();
|
||||
|
||||
try {
|
||||
|
||||
String fullTimelineLink;
|
||||
if (yearToUniqueCoPIs.size() > 0) {
|
||||
|
||||
String secondaryContextPath = "";
|
||||
if (!contextPath.contains(VisualizationFrameworkConstants.VISUALIZATION_URL_PREFIX)) {
|
||||
secondaryContextPath = VisualizationFrameworkConstants.VISUALIZATION_URL_PREFIX;
|
||||
}
|
||||
ParamMap fullTimelineNetworkURLParams = new ParamMap(
|
||||
VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY,
|
||||
individualURI,
|
||||
VisualizationFrameworkConstants.VIS_TYPE_KEY,
|
||||
VisualizationFrameworkConstants.PERSON_LEVEL_VIS,
|
||||
VisualizationFrameworkConstants.VIS_MODE_KEY,
|
||||
VisualizationFrameworkConstants.COPI_VIS_MODE);
|
||||
|
||||
String fullTimelineNetworkURL = contextPath
|
||||
+ secondaryContextPath
|
||||
+ "?"
|
||||
+ VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY
|
||||
+ "=" + URLEncoder.encode(individualURI,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString()
|
||||
+ "&"
|
||||
+ VisualizationFrameworkConstants.VIS_TYPE_KEY
|
||||
+ "=" + URLEncoder.encode("person_level",
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString()
|
||||
+ "&"
|
||||
+ VisualizationFrameworkConstants.VIS_CONTAINER_KEY
|
||||
+ "=" + URLEncoder.encode("ego_sparkline",
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString()
|
||||
+ "&"
|
||||
+ VisualizationFrameworkConstants.RENDER_MODE_KEY
|
||||
+ "=" + URLEncoder.encode(
|
||||
VisualizationFrameworkConstants
|
||||
.STANDALONE_RENDER_MODE,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString();
|
||||
String fullTimelineNetworkURL = UrlBuilder.getUrl(
|
||||
VisualizationFrameworkConstants.FREEMARKERIZED_VISUALIZATION_URL_PREFIX,
|
||||
fullTimelineNetworkURLParams);
|
||||
|
||||
fullTimelineLink = "<a href='" + fullTimelineNetworkURL
|
||||
+ "'>View full timeline and co-pi network.</a>";
|
||||
|
@ -584,10 +562,6 @@ public class CoPIVisCodeGenerator {
|
|||
|
||||
divContextCode.append("<p>" + fullTimelineLink + "</p>");
|
||||
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
log.error(e);
|
||||
}
|
||||
|
||||
return divContextCode.toString();
|
||||
}
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ import edu.cornell.mannlib.vitro.webapp.visualization.constants.QueryFieldLabels
|
|||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Grant;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Individual;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.QueryRunner;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.QueryRunner;
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -17,7 +17,7 @@ import edu.cornell.mannlib.vitro.webapp.beans.Portal;
|
|||
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.TemplateResponseValues;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.DataVisualizationController;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Grant;
|
||||
|
@ -25,7 +25,7 @@ import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.In
|
|||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.SparklineData;
|
||||
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.visutils.QueryRunner;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.QueryRunner;
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -17,7 +17,7 @@ import org.apache.commons.logging.Log;
|
|||
|
||||
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.visualization.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Grant;
|
||||
|
|
|
@ -0,0 +1,286 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
package edu.cornell.mannlib.vitro.webapp.visualization.freemarker.personlevel;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
import com.hp.hpl.jena.query.DataSource;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.beans.Portal;
|
||||
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.TemplateResponseValues;
|
||||
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.freemarker.coauthorship.CoAuthorshipQueryRunner;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.coauthorship.CoAuthorshipVisCodeGenerator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.coprincipalinvestigator.CoPIGrantCountQueryRunner;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.coprincipalinvestigator.CoPIVisCodeGenerator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.persongrantcount.PersonGrantCountQueryRunner;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.persongrantcount.PersonGrantCountVisCodeGenerator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.personpubcount.PersonPublicationCountQueryRunner;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.personpubcount.PersonPublicationCountVisCodeGenerator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.BiboDocument;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoAuthorshipData;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoPIData;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Grant;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.SparklineData;
|
||||
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.VisualizationRequestHandler;
|
||||
|
||||
/**
|
||||
* This request handler is used to serve content rendered on the person level vis page
|
||||
* like,
|
||||
* 1. Front end of the vis including the co-author & publication sparkline.
|
||||
* 2. Downloadable file having the co-author network in graphml format.
|
||||
* 3. Downloadable file having the list of co-authors that the individual has
|
||||
* worked with & count of such co-authorships.
|
||||
*
|
||||
* @author cdtank
|
||||
*/
|
||||
public class PersonLevelRequestHandler implements VisualizationRequestHandler {
|
||||
|
||||
private static final String EGO_PUB_SPARKLINE_VIS_CONTAINER_ID = "ego_pub_sparkline";
|
||||
private static final String UNIQUE_COAUTHORS_SPARKLINE_VIS_CONTAINER_ID =
|
||||
"unique_coauthors_sparkline";
|
||||
private static final String EGO_GRANT_SPARKLINE_VIS_CONTAINER_ID = "ego_grant_sparkline";
|
||||
private static final String UNIQUE_COPIS_SPARKLINE_VIS_CONTAINER_ID =
|
||||
"unique_copis_sparkline";
|
||||
|
||||
@Override
|
||||
public Object generateAjaxVisualization(VitroRequest vitroRequest, Log log,
|
||||
DataSource dataSource) throws MalformedQueryParametersException {
|
||||
throw new UnsupportedOperationException("Person Level does not provide Ajax Response.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> generateDataVisualization(
|
||||
VitroRequest vitroRequest, Log log, DataSource dataSource)
|
||||
throws MalformedQueryParametersException {
|
||||
throw new UnsupportedOperationException("Person Level does not provide Data Response.");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ResponseValues generateStandardVisualization(
|
||||
VitroRequest vitroRequest, Log log, DataSource dataSource)
|
||||
throws MalformedQueryParametersException {
|
||||
|
||||
String egoURI = vitroRequest.getParameter(
|
||||
VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY);
|
||||
|
||||
String renderMode = vitroRequest.getParameter(
|
||||
VisualizationFrameworkConstants.RENDER_MODE_KEY);
|
||||
|
||||
String visMode = vitroRequest.getParameter(
|
||||
VisualizationFrameworkConstants.VIS_MODE_KEY);
|
||||
|
||||
|
||||
if (VisualizationFrameworkConstants.CO_PI_VIS.equalsIgnoreCase(visMode)) {
|
||||
|
||||
QueryRunner<CoPIData> coPIQueryManager = new CoPIGrantCountQueryRunner(egoURI, dataSource, log);
|
||||
|
||||
QueryRunner<Set<Grant>> grantQueryManager = new PersonGrantCountQueryRunner(egoURI, dataSource, log);
|
||||
|
||||
CoPIData coPIData = coPIQueryManager.getQueryResult();
|
||||
|
||||
/*
|
||||
* grants over time sparkline
|
||||
*/
|
||||
|
||||
Set<Grant> piGrants = grantQueryManager.getQueryResult();
|
||||
|
||||
/*
|
||||
* Create a map from the year to number of grants. Use the Grant's
|
||||
* parsedGrantYear to populate the data.
|
||||
* */
|
||||
Map<String, Integer> yearToGrantCount =
|
||||
UtilityFunctions.getYearToGrantCount(piGrants);
|
||||
|
||||
PersonGrantCountVisCodeGenerator personGrantCountVisCodeGenerator =
|
||||
new PersonGrantCountVisCodeGenerator(
|
||||
egoURI,
|
||||
VisualizationFrameworkConstants.FULL_SPARKLINE_VIS_MODE,
|
||||
EGO_GRANT_SPARKLINE_VIS_CONTAINER_ID,
|
||||
piGrants,
|
||||
yearToGrantCount,
|
||||
log);
|
||||
|
||||
SparklineData grantSparklineVO = personGrantCountVisCodeGenerator
|
||||
.getValueObjectContainer();
|
||||
|
||||
|
||||
/*
|
||||
* Co-PI's over time sparkline
|
||||
*/
|
||||
CoPIVisCodeGenerator uniqueCopisVisCodeGenerator =
|
||||
new CoPIVisCodeGenerator(
|
||||
egoURI,
|
||||
VisualizationFrameworkConstants.FULL_SPARKLINE_VIS_MODE,
|
||||
UNIQUE_COPIS_SPARKLINE_VIS_CONTAINER_ID,
|
||||
UtilityFunctions.getGrantYearToCoPI(coPIData),
|
||||
log);
|
||||
|
||||
SparklineData uniqueCopisSparklineVO = uniqueCopisVisCodeGenerator
|
||||
.getValueObjectContainer();
|
||||
|
||||
|
||||
return prepareCoPIStandaloneResponse(
|
||||
egoURI,
|
||||
grantSparklineVO,
|
||||
uniqueCopisSparklineVO,
|
||||
coPIData,
|
||||
vitroRequest);
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
QueryRunner<CoAuthorshipData> coAuthorshipQueryManager = new CoAuthorshipQueryRunner(egoURI, dataSource, log);
|
||||
|
||||
QueryRunner<Set<BiboDocument>> publicationQueryManager = new PersonPublicationCountQueryRunner(egoURI, dataSource, log);
|
||||
|
||||
CoAuthorshipData coAuthorshipData = coAuthorshipQueryManager.getQueryResult();
|
||||
|
||||
/*
|
||||
* When the front-end for the person level vis has to be displayed we render couple of
|
||||
* sparklines. This will prepare all the data for the sparklines & other requested
|
||||
* files.
|
||||
* */
|
||||
Set<BiboDocument> authorDocuments = publicationQueryManager.getQueryResult();
|
||||
|
||||
/*
|
||||
* Create a map from the year to number of publications. Use the BiboDocument's
|
||||
* parsedPublicationYear to populate the data.
|
||||
* */
|
||||
Map<String, Integer> yearToPublicationCount =
|
||||
UtilityFunctions.getYearToPublicationCount(authorDocuments);
|
||||
|
||||
/*
|
||||
* Computations required to generate HTML for the sparklines & related context.
|
||||
* */
|
||||
PersonPublicationCountVisCodeGenerator personPubCountVisCodeGenerator =
|
||||
new PersonPublicationCountVisCodeGenerator(
|
||||
egoURI,
|
||||
VisualizationFrameworkConstants.FULL_SPARKLINE_VIS_MODE,
|
||||
EGO_PUB_SPARKLINE_VIS_CONTAINER_ID,
|
||||
authorDocuments,
|
||||
yearToPublicationCount,
|
||||
log);
|
||||
|
||||
SparklineData publicationSparklineVO = personPubCountVisCodeGenerator
|
||||
.getValueObjectContainer();
|
||||
|
||||
CoAuthorshipVisCodeGenerator uniqueCoauthorsVisCodeGenerator =
|
||||
new CoAuthorshipVisCodeGenerator(
|
||||
egoURI,
|
||||
VisualizationFrameworkConstants.FULL_SPARKLINE_VIS_MODE,
|
||||
UNIQUE_COAUTHORS_SPARKLINE_VIS_CONTAINER_ID,
|
||||
UtilityFunctions.getPublicationYearToCoAuthors(coAuthorshipData),
|
||||
log);
|
||||
|
||||
SparklineData uniqueCoauthorsSparklineVO = uniqueCoauthorsVisCodeGenerator
|
||||
.getValueObjectContainer();
|
||||
|
||||
return prepareCoAuthorStandaloneResponse(
|
||||
egoURI,
|
||||
publicationSparklineVO,
|
||||
uniqueCoauthorsSparklineVO,
|
||||
coAuthorshipData,
|
||||
vitroRequest);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private TemplateResponseValues prepareCoAuthorStandaloneResponse (
|
||||
String egoURI,
|
||||
SparklineData egoPubSparklineVO,
|
||||
SparklineData uniqueCoauthorsSparklineVO,
|
||||
CoAuthorshipData coAuthorshipVO,
|
||||
VitroRequest vitroRequest) {
|
||||
|
||||
Map<String, Object> body = new HashMap<String, Object>();
|
||||
|
||||
Portal portal = vitroRequest.getPortal();
|
||||
|
||||
body.put("egoURIParam", egoURI);
|
||||
|
||||
String title = "";
|
||||
|
||||
if (coAuthorshipVO.getNodes() != null && coAuthorshipVO.getNodes().size() > 0) {
|
||||
body.put("numOfAuthors", coAuthorshipVO.getNodes().size());
|
||||
title = coAuthorshipVO.getEgoNode().getNodeName() + " - ";
|
||||
}
|
||||
|
||||
if (coAuthorshipVO.getEdges() != null && coAuthorshipVO.getEdges().size() > 0) {
|
||||
body.put("numOfCoAuthorShips", coAuthorshipVO.getEdges().size());
|
||||
}
|
||||
|
||||
String standaloneTemplate = "coAuthorPersonLevel.ftl";
|
||||
|
||||
|
||||
body.put("portalBean", portal);
|
||||
body.put("title", title + "Person Level Visualization");
|
||||
|
||||
return new TemplateResponseValues(standaloneTemplate, body);
|
||||
|
||||
}
|
||||
|
||||
private TemplateResponseValues prepareCoPIStandaloneResponse (
|
||||
String egoURI,
|
||||
SparklineData egoGrantSparklineVO,
|
||||
SparklineData uniqueCopisSparklineVO,
|
||||
CoPIData coPIVO,
|
||||
VitroRequest vitroRequest) {
|
||||
|
||||
Map<String, Object> body = new HashMap<String, Object>();
|
||||
|
||||
Portal portal = vitroRequest.getPortal();
|
||||
|
||||
body.put("egoURIParam", egoURI);
|
||||
|
||||
String title = "";
|
||||
|
||||
if (coPIVO.getNodes() != null && coPIVO.getNodes().size() > 0) {
|
||||
body.put("numOfInvestigators", coPIVO.getNodes().size());
|
||||
title = coPIVO.getEgoNode().getNodeName() + " - ";
|
||||
}
|
||||
|
||||
if (coPIVO.getEdges() != null && coPIVO.getEdges().size() > 0) {
|
||||
body.put("numOfCoPIs", coPIVO.getEdges().size());
|
||||
}
|
||||
|
||||
String standaloneTemplate = "coPIPersonLevel.ftl";
|
||||
|
||||
|
||||
body.put("portalBean", portal);
|
||||
body.put("title", title + "Person Level Visualization");
|
||||
|
||||
return new TemplateResponseValues(standaloneTemplate, body);
|
||||
|
||||
}
|
||||
|
||||
private String getCompleteURL(HttpServletRequest request) throws MalformedURLException {
|
||||
|
||||
String file = request.getRequestURI();
|
||||
// System.out.println("\ngetRequestURI() --> "+ file + "\ngetQueryString() --> "+request.getQueryString()+ "\ngetScheme() --> "+ request.getScheme());
|
||||
// System.out.println("\ngetServerName() --> "+ request.getServerName() + "\ngetServerPort() --> "+request.getServerPort());
|
||||
|
||||
URL reconstructedURL = new URL(request.getScheme(), request.getServerName(), request.getServerPort(), file);
|
||||
|
||||
// System.out.println("\nReconstructed URL is --> " + reconstructedURL);
|
||||
|
||||
return reconstructedURL.toString();
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -26,7 +26,7 @@ import edu.cornell.mannlib.vitro.webapp.visualization.constants.QueryFieldLabels
|
|||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.BiboDocument;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Individual;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.QueryRunner;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.QueryRunner;
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ import edu.cornell.mannlib.vitro.webapp.beans.Portal;
|
|||
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.TemplateResponseValues;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.DataVisualizationController;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.BiboDocument;
|
||||
|
@ -34,7 +34,7 @@ import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Sp
|
|||
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.visutils.PDFDocument;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.QueryRunner;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.QueryRunner;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
|
@ -17,7 +17,7 @@ import org.apache.commons.logging.Log;
|
|||
|
||||
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.visualization.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.BiboDocument;
|
||||
|
|
|
@ -17,7 +17,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.ParamMap;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.filestorage.FileServingHelper;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.QueryFieldLabels;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||
|
|
|
@ -22,7 +22,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
|
|||
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.TemplateResponseValues;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.BiboDocument;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoAuthorshipData;
|
||||
|
|
|
@ -7,9 +7,9 @@ import java.io.PrintWriter;
|
|||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import javax.servlet.RequestDispatcher;
|
||||
import javax.servlet.ServletException;
|
||||
|
@ -27,11 +27,11 @@ import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFr
|
|||
import edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.CoAuthorshipGraphMLWriter;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.CoAuthorshipQueryRunner;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.CoAuthorshipVisCodeGenerator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.coprincipalinvestigator.CoPIGrantCountQueryRunner;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.coprincipalinvestigator.CoPIVisCodeGenerator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.persongrantcount.PersonGrantCountQueryRunner;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.persongrantcount.PersonGrantCountVisCodeGenerator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.coprincipalinvestigator.CoPIGrantCountQueryRunner;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.coprincipalinvestigator.CoPIVisCodeGenerator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.PersonPublicationCountQueryRunner;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.PersonPublicationCountVisCodeGenerator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.BiboDocument;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue