diff --git a/productMods/WEB-INF/visualization/visualizations-beans-injection-fm.xml b/productMods/WEB-INF/visualization/visualizations-beans-injection-fm.xml
index d64c994f..e7c6f492 100644
--- a/productMods/WEB-INF/visualization/visualizations-beans-injection-fm.xml
+++ b/productMods/WEB-INF/visualization/visualizations-beans-injection-fm.xml
@@ -22,16 +22,17 @@
-
@@ -53,18 +54,21 @@
-
- -->
+
diff --git a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/AjaxVisualizationController.java b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/AjaxVisualizationController.java
index 07f748d5..90b0c57b 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/AjaxVisualizationController.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/AjaxVisualizationController.java
@@ -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;
diff --git a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/DataVisualizationController.java b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/DataVisualizationController.java
index a02bb4b2..82ea47a2 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/DataVisualizationController.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/DataVisualizationController.java
@@ -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;
diff --git a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/StandardVisualizationController.java b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/StandardVisualizationController.java
index efdbaf3a..59e18ab1 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/StandardVisualizationController.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/StandardVisualizationController.java
@@ -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;
diff --git a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/VisualizationFrameworkConstants.java b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/VisualizationFrameworkConstants.java
new file mode 100644
index 00000000..26fce924
--- /dev/null
+++ b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/VisualizationFrameworkConstants.java
@@ -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";
+
+
+}
diff --git a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/VisualizationsDependencyInjector.java b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/VisualizationsDependencyInjector.java
index 03ab3b50..e06afff0 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/VisualizationsDependencyInjector.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/freemarker/VisualizationsDependencyInjector.java
@@ -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 {
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipGraphMLWriter.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipGraphMLWriter.java
index a7f7b5d7..87ca94f2 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipGraphMLWriter.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipGraphMLWriter.java
@@ -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;
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipRequestHandler.java
index 30eb7b10..95f7f6de 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipRequestHandler.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipRequestHandler.java
@@ -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 coAuthorsToCount) {
+
+ StringBuilder csvFileContent = new StringBuilder();
+
+ csvFileContent.append("Year, Count\n");
+
+ for (Entry 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> yearToCoauthors) {
StringBuilder csvFileContent = new StringBuilder();
@@ -153,7 +187,7 @@ public class CoAuthorshipRequestHandler implements VisualizationRequestHandler {
* @param authorNodesAndEdges
* @param response
*/
- private Map prepareSparklineDataResponse(CoAuthorshipData authorNodesAndEdges) {
+ private Map prepareCoauthorsCountPerYearDataResponse(CoAuthorshipData authorNodesAndEdges) {
String outputFileName;
Map> yearToCoauthors = new TreeMap>();
@@ -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 prepareCoauthorsListDataResponse(CoAuthorshipData coAuthorshipData) {
+
+ String outputFileName = "";
+ Map coAuthorsToCount = new TreeMap();
+
+ 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 fileData = new HashMap();
+ 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 getCoAuthorsList(CoAuthorshipData coAuthorsipVO) {
+
+ Map coAuthorsToCount = new TreeMap();
+
+ 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 prepareNetworkDataResponse(CoAuthorshipData authorNodesAndEdges) {
+ private Map prepareNetworkStreamDataResponse(CoAuthorshipData authorNodesAndEdges) {
CoAuthorshipGraphMLWriter coAuthorshipGraphMLWriter =
new CoAuthorshipGraphMLWriter(authorNodesAndEdges);
@@ -203,6 +288,34 @@ public class CoAuthorshipRequestHandler implements VisualizationRequestHandler {
}
+ private Map 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 fileData = new HashMap();
+ 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
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipVisCodeGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipVisCodeGenerator.java
index 6a112d56..4cc9fe77 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipVisCodeGenerator.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipVisCodeGenerator.java
@@ -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,
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIGrantCountRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIGrantCountRequestHandler.java
index 976c2330..f24953aa 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIGrantCountRequestHandler.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIGrantCountRequestHandler.java
@@ -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;
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIGraphMLWriter.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIGraphMLWriter.java
index 31d6dd56..9c0ee7fe 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIGraphMLWriter.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIGraphMLWriter.java
@@ -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;
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIVisCodeGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIVisCodeGenerator.java
index c6c77fa8..4b51b59e 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIVisCodeGenerator.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIVisCodeGenerator.java
@@ -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> 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 allCoPIsWithKnownGrantShipYears = new HashSet();
+ List yearToUniqueInvestigatorsCountDataTable = new ArrayList();
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++;
}
@@ -212,6 +215,10 @@ public class CoPIVisCodeGenerator {
* associated with it. Hence.
*/
renderedFullSparks = allCoPIsWithKnownGrantShipYears.size();
+
+ sparklineData.setRenderedSparks(renderedFullSparks);
+
+ sparklineData.setYearToEntityCountDataTable(yearToUniqueInvestigatorsCountDataTable);
/*
* Total grants will also consider publications that have no year
@@ -222,6 +229,8 @@ public class CoPIVisCodeGenerator {
unknownYearCoPIs = yearToUniqueCoPIs.get(
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) {
-
- csvDownloadURLHref = "(.CSV File)";
-
- } else {
- csvDownloadURLHref = "";
- }
-
- } catch (UnsupportedEncodingException e) {
+ if (getCSVDownloadURL() != null) {
+
+ csvDownloadURLHref = "(.CSV File)";
+
+ } else {
csvDownloadURLHref = "";
}
@@ -479,18 +491,13 @@ public class CoPIVisCodeGenerator {
if (yearToUniqueCoPIs.size() > 0) {
- try {
- if (getCSVDownloadURL() != null) {
-
- csvDownloadURLHref = "Download data as .csv file.
";
- sparklineData.setDownloadDataLink(getCSVDownloadURL());
-
- } else {
- csvDownloadURLHref = "";
- }
-
- } catch (UnsupportedEncodingException e) {
+ if (getCSVDownloadURL() != null) {
+
+ csvDownloadURLHref = "Download data as .csv file.
";
+ sparklineData.setDownloadDataLink(getCSVDownloadURL());
+
+ } 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;
- }
-
- 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();
+ 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 = UrlBuilder.getUrl(
+ VisualizationFrameworkConstants.FREEMARKERIZED_VISUALIZATION_URL_PREFIX,
+ fullTimelineNetworkURLParams);
fullTimelineLink = "View full timeline and co-pi network.";
@@ -584,10 +562,6 @@ public class CoPIVisCodeGenerator {
divContextCode.append("" + fullTimelineLink + "
");
- } catch (UnsupportedEncodingException e) {
- log.error(e);
- }
-
return divContextCode.toString();
}
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountQueryRunner.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountQueryRunner.java
index 1516bc1a..31e7f382 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountQueryRunner.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountQueryRunner.java
@@ -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;
/**
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountRequestHandler.java
index f2f9687e..21d06df4 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountRequestHandler.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountRequestHandler.java
@@ -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;
/**
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountVisCodeGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountVisCodeGenerator.java
index dc51b79b..d5bf2c46 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountVisCodeGenerator.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountVisCodeGenerator.java
@@ -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;
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personlevel/PersonLevelRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personlevel/PersonLevelRequestHandler.java
new file mode 100644
index 00000000..fb3cadd1
--- /dev/null
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personlevel/PersonLevelRequestHandler.java
@@ -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 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 coPIQueryManager = new CoPIGrantCountQueryRunner(egoURI, dataSource, log);
+
+ QueryRunner> grantQueryManager = new PersonGrantCountQueryRunner(egoURI, dataSource, log);
+
+ CoPIData coPIData = coPIQueryManager.getQueryResult();
+
+ /*
+ * grants over time sparkline
+ */
+
+ Set piGrants = grantQueryManager.getQueryResult();
+
+ /*
+ * Create a map from the year to number of grants. Use the Grant's
+ * parsedGrantYear to populate the data.
+ * */
+ Map 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 coAuthorshipQueryManager = new CoAuthorshipQueryRunner(egoURI, dataSource, log);
+
+ QueryRunner> 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 authorDocuments = publicationQueryManager.getQueryResult();
+
+ /*
+ * Create a map from the year to number of publications. Use the BiboDocument's
+ * parsedPublicationYear to populate the data.
+ * */
+ Map 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 body = new HashMap();
+
+ 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 body = new HashMap();
+
+ 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();
+ }
+
+
+}
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountQueryRunner.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountQueryRunner.java
index ca25837f..f370a811 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountQueryRunner.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountQueryRunner.java
@@ -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;
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountRequestHandler.java
index 7eda263f..f89f5e71 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountRequestHandler.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountRequestHandler.java
@@ -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;
/**
*
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountVisCodeGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountVisCodeGenerator.java
index 62c43d4b..86699cd0 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountVisCodeGenerator.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountVisCodeGenerator.java
@@ -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;
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/utilities/UtilitiesRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/utilities/UtilitiesRequestHandler.java
index 1e106b7b..d5a3467f 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/utilities/UtilitiesRequestHandler.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/utilities/UtilitiesRequestHandler.java
@@ -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;
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/visutils/UtilityFunctions.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/visutils/UtilityFunctions.java
index d5639967..55851059 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/visutils/UtilityFunctions.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/visutils/UtilityFunctions.java
@@ -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;
diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/PersonLevelRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/PersonLevelRequestHandler.java
index 49f9c7d2..59eca552 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/PersonLevelRequestHandler.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/PersonLevelRequestHandler.java
@@ -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;