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,16 +22,17 @@
|
||||||
<bean id="person_grant_count"
|
<bean id="person_grant_count"
|
||||||
class="edu.cornell.mannlib.vitro.webapp.visualization.freemarker.persongrantcount.PersonGrantCountRequestHandler" />
|
class="edu.cornell.mannlib.vitro.webapp.visualization.freemarker.persongrantcount.PersonGrantCountRequestHandler" />
|
||||||
|
|
||||||
<!--
|
|
||||||
<bean id="person_level"
|
<bean id="person_level"
|
||||||
class="edu.cornell.mannlib.vitro.webapp.visualization.personlevel.PersonLevelRequestHandler" />
|
class="edu.cornell.mannlib.vitro.webapp.visualization.personlevel.PersonLevelRequestHandler" />
|
||||||
|
|
||||||
|
|
||||||
<bean id="entity_comparison"
|
|
||||||
class="edu.cornell.mannlib.vitro.webapp.visualization.entitycomparison.EntityPublicationCountRequestHandler" />
|
|
||||||
<bean id="coprincipalinvestigator"
|
<bean id="coprincipalinvestigator"
|
||||||
class="edu.cornell.mannlib.vitro.webapp.visualization.coprincipalinvestigator.CoPIGrantCountRequestHandler" />
|
class="edu.cornell.mannlib.vitro.webapp.visualization.coprincipalinvestigator.CoPIGrantCountRequestHandler" />
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
<bean id="entity_comparison"
|
||||||
|
class="edu.cornell.mannlib.vitro.webapp.visualization.entitycomparison.EntityPublicationCountRequestHandler" />
|
||||||
|
|
||||||
-->
|
-->
|
||||||
<bean id="visualizationInjector"
|
<bean id="visualizationInjector"
|
||||||
class="edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationInjector">
|
class="edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationInjector">
|
||||||
|
@ -53,18 +54,21 @@
|
||||||
<ref bean="person_grant_count"></ref>
|
<ref bean="person_grant_count"></ref>
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
<!--
|
|
||||||
<entry key="person_level">
|
<entry key="person_level">
|
||||||
<ref bean="person_level"></ref>
|
<ref bean="person_level"></ref>
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
|
<!--
|
||||||
<entry key="entity_comparison">
|
<entry key="entity_comparison">
|
||||||
<ref bean="entity_comparison"></ref>
|
<ref bean="entity_comparison"></ref>
|
||||||
</entry>
|
</entry>
|
||||||
|
-->
|
||||||
<entry key="coprincipalinvestigator">
|
<entry key="coprincipalinvestigator">
|
||||||
<ref bean="coprincipalinvestigator"></ref>
|
<ref bean="coprincipalinvestigator"></ref>
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
-->
|
|
||||||
</map>
|
</map>
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
package edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker;
|
package edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
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.VitroRequest;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerHttpServlet;
|
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.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.constants.VisConstants;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.UtilityFunctions;
|
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.VitroHttpServlet;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
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.constants.VisConstants;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.UtilityFunctions;
|
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.VitroRequest;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerHttpServlet;
|
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.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.constants.VisConstants;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.UtilityFunctions;
|
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.ApplicationContext;
|
||||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
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;
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.VisualizationRequestHandler;
|
||||||
|
|
||||||
public class VisualizationsDependencyInjector {
|
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;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.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.CoAuthorshipData;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Edge;
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Edge;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Node;
|
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.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import java.util.Map.Entry;
|
|
||||||
|
|
||||||
import org.apache.commons.lang.StringEscapeUtils;
|
import org.apache.commons.lang.StringEscapeUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
@ -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.VitroRequest;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
|
import edu.cornell.mannlib.vitro.webapp.controller.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.controller.visualization.freemarker.DataVisualizationController;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoAuthorshipData;
|
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
|
* 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.
|
* 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)) {
|
.equalsIgnoreCase(visMode)) {
|
||||||
/*
|
/*
|
||||||
* When the csv file is required - based on which sparkline visualization will
|
* When the csv file is required - based on which sparkline visualization will
|
||||||
* be rendered.
|
* 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 {
|
} else {
|
||||||
/*
|
/*
|
||||||
* When the graphML file is required - based on which coauthorship network
|
* When the graphML file is required - based on which coauthorship network
|
||||||
* visualization will be rendered.
|
* 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) {
|
private String getCoauthorsPerYearCSVContent(Map<String, Set<Node>> yearToCoauthors) {
|
||||||
|
|
||||||
StringBuilder csvFileContent = new StringBuilder();
|
StringBuilder csvFileContent = new StringBuilder();
|
||||||
|
@ -153,7 +187,7 @@ public class CoAuthorshipRequestHandler implements VisualizationRequestHandler {
|
||||||
* @param authorNodesAndEdges
|
* @param authorNodesAndEdges
|
||||||
* @param response
|
* @param response
|
||||||
*/
|
*/
|
||||||
private Map<String, String> prepareSparklineDataResponse(CoAuthorshipData authorNodesAndEdges) {
|
private Map<String, String> prepareCoauthorsCountPerYearDataResponse(CoAuthorshipData authorNodesAndEdges) {
|
||||||
|
|
||||||
String outputFileName;
|
String outputFileName;
|
||||||
Map<String, Set<Node>> yearToCoauthors = new TreeMap<String, Set<Node>>();
|
Map<String, Set<Node>> yearToCoauthors = new TreeMap<String, Set<Node>>();
|
||||||
|
@ -182,13 +216,64 @@ public class CoAuthorshipRequestHandler implements VisualizationRequestHandler {
|
||||||
return fileData;
|
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
|
* Provides a response when graphml formatted co-authorship network is requested, typically by
|
||||||
* the flash vis.
|
* the flash vis.
|
||||||
* @param authorNodesAndEdges
|
* @param authorNodesAndEdges
|
||||||
* @param response
|
* @param response
|
||||||
*/
|
*/
|
||||||
private Map<String, String> prepareNetworkDataResponse(CoAuthorshipData authorNodesAndEdges) {
|
private Map<String, String> prepareNetworkStreamDataResponse(CoAuthorshipData authorNodesAndEdges) {
|
||||||
|
|
||||||
CoAuthorshipGraphMLWriter coAuthorshipGraphMLWriter =
|
CoAuthorshipGraphMLWriter coAuthorshipGraphMLWriter =
|
||||||
new CoAuthorshipGraphMLWriter(authorNodesAndEdges);
|
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.
|
* When the page for person level visualization is requested.
|
||||||
* @param egoURI
|
* @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;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.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.VOConstants;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
|
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Node;
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Node;
|
||||||
|
@ -526,7 +526,7 @@ public class CoAuthorshipVisCodeGenerator {
|
||||||
VisualizationFrameworkConstants.VIS_TYPE_KEY,
|
VisualizationFrameworkConstants.VIS_TYPE_KEY,
|
||||||
VisualizationFrameworkConstants.COAUTHORSHIP_VIS,
|
VisualizationFrameworkConstants.COAUTHORSHIP_VIS,
|
||||||
VisualizationFrameworkConstants.VIS_MODE_KEY,
|
VisualizationFrameworkConstants.VIS_MODE_KEY,
|
||||||
VisualizationFrameworkConstants.SPARKLINE_VIS_MODE);
|
VisualizationFrameworkConstants.COAUTHORS_COUNT_PER_YEAR_VIS_MODE);
|
||||||
|
|
||||||
return UrlBuilder.getUrl(VisualizationFrameworkConstants.DATA_VISUALIZATION_SERVICE_URL_PREFIX,
|
return UrlBuilder.getUrl(VisualizationFrameworkConstants.DATA_VISUALIZATION_SERVICE_URL_PREFIX,
|
||||||
CSVDownloadURLParams);
|
CSVDownloadURLParams);
|
||||||
|
@ -548,8 +548,8 @@ public class CoAuthorshipVisCodeGenerator {
|
||||||
individualURI,
|
individualURI,
|
||||||
VisualizationFrameworkConstants.VIS_TYPE_KEY,
|
VisualizationFrameworkConstants.VIS_TYPE_KEY,
|
||||||
VisualizationFrameworkConstants.PERSON_LEVEL_VIS,
|
VisualizationFrameworkConstants.PERSON_LEVEL_VIS,
|
||||||
VisualizationFrameworkConstants.VIS_CONTAINER_KEY,
|
VisualizationFrameworkConstants.VIS_MODE_KEY,
|
||||||
"ego_sparkline");
|
VisualizationFrameworkConstants.COAUTHOR_VIS_MODE);
|
||||||
|
|
||||||
String fullTimelineNetworkURL = UrlBuilder.getUrl(
|
String fullTimelineNetworkURL = UrlBuilder.getUrl(
|
||||||
VisualizationFrameworkConstants.FREEMARKERIZED_VISUALIZATION_URL_PREFIX,
|
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.VitroRequest;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
|
import edu.cornell.mannlib.vitro.webapp.controller.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.controller.visualization.freemarker.DataVisualizationController;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoPIData;
|
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;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.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.CoPIData;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoPIEdge;
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoPIEdge;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoPINode;
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoPINode;
|
||||||
|
|
|
@ -2,25 +2,27 @@
|
||||||
|
|
||||||
package edu.cornell.mannlib.vitro.webapp.visualization.freemarker.coprincipalinvestigator;
|
package edu.cornell.mannlib.vitro.webapp.visualization.freemarker.coprincipalinvestigator;
|
||||||
|
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.util.ArrayList;
|
||||||
import java.net.URLEncoder;
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.Map.Entry;
|
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationController;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants;
|
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.VOConstants;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
|
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.freemarker.valueobjects.CoPINode;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.SparklineData;
|
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
|
* This class contains code for rendering sparklines and displaying tables for
|
||||||
|
@ -57,18 +59,14 @@ public class CoPIVisCodeGenerator {
|
||||||
|
|
||||||
private SparklineData sparklineData;
|
private SparklineData sparklineData;
|
||||||
|
|
||||||
private String contextPath;
|
|
||||||
|
|
||||||
private String individualURI;
|
private String individualURI;
|
||||||
|
|
||||||
public CoPIVisCodeGenerator(String contextPath,
|
public CoPIVisCodeGenerator(String individualURI,
|
||||||
String individualURI,
|
|
||||||
String visMode,
|
String visMode,
|
||||||
String visContainer,
|
String visContainer,
|
||||||
Map<String, Set<CoPINode>> yearToUniqueCoPIs,
|
Map<String, Set<CoPINode>> yearToUniqueCoPIs,
|
||||||
Log log){
|
Log log){
|
||||||
|
|
||||||
this.contextPath = contextPath;
|
|
||||||
this.individualURI = individualURI;
|
this.individualURI = individualURI;
|
||||||
|
|
||||||
this.yearToUniqueCoPIs = yearToUniqueCoPIs;
|
this.yearToUniqueCoPIs = yearToUniqueCoPIs;
|
||||||
|
@ -181,6 +179,7 @@ public class CoPIVisCodeGenerator {
|
||||||
int uniqueCoPICounter = 0;
|
int uniqueCoPICounter = 0;
|
||||||
int renderedFullSparks = 0;
|
int renderedFullSparks = 0;
|
||||||
Set<CoPINode> allCoPIsWithKnownGrantShipYears = new HashSet<CoPINode>();
|
Set<CoPINode> allCoPIsWithKnownGrantShipYears = new HashSet<CoPINode>();
|
||||||
|
List<YearToEntityCountDataElement> yearToUniqueInvestigatorsCountDataTable = new ArrayList<YearToEntityCountDataElement>();
|
||||||
|
|
||||||
for (int grantYear = minGrantYearConsidered; grantYear <= currentYear; grantYear++) {
|
for (int grantYear = minGrantYearConsidered; grantYear <= currentYear; grantYear++) {
|
||||||
|
|
||||||
|
@ -202,6 +201,10 @@ public class CoPIVisCodeGenerator {
|
||||||
|
|
||||||
visualizationCode.append("data.setValue(" + uniqueCoPICounter
|
visualizationCode.append("data.setValue(" + uniqueCoPICounter
|
||||||
+ ", 1, " + currentUniqueCoPIs + ");\n");
|
+ ", 1, " + currentUniqueCoPIs + ");\n");
|
||||||
|
|
||||||
|
yearToUniqueInvestigatorsCountDataTable.add(new YearToEntityCountDataElement(uniqueCoPICounter,
|
||||||
|
grantYearAsString,
|
||||||
|
currentUniqueCoPIs));
|
||||||
uniqueCoPICounter++;
|
uniqueCoPICounter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,6 +215,10 @@ public class CoPIVisCodeGenerator {
|
||||||
* associated with it. Hence.
|
* associated with it. Hence.
|
||||||
*/
|
*/
|
||||||
renderedFullSparks = allCoPIsWithKnownGrantShipYears.size();
|
renderedFullSparks = allCoPIsWithKnownGrantShipYears.size();
|
||||||
|
|
||||||
|
sparklineData.setRenderedSparks(renderedFullSparks);
|
||||||
|
|
||||||
|
sparklineData.setYearToEntityCountDataTable(yearToUniqueInvestigatorsCountDataTable);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Total grants will also consider publications that have no year
|
* Total grants will also consider publications that have no year
|
||||||
|
@ -222,6 +229,8 @@ public class CoPIVisCodeGenerator {
|
||||||
unknownYearCoPIs = yearToUniqueCoPIs.get(
|
unknownYearCoPIs = yearToUniqueCoPIs.get(
|
||||||
VOConstants.DEFAULT_GRANT_YEAR).size();
|
VOConstants.DEFAULT_GRANT_YEAR).size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sparklineData.setUnknownYearPublications(unknownYearCoPIs);
|
||||||
|
|
||||||
String sparklineDisplayOptions = "{width: 65, height: 30, showAxisLines: false, "
|
String sparklineDisplayOptions = "{width: 65, height: 30, showAxisLines: false, "
|
||||||
+ "showValueLabels: false, labelPosition: 'none'}";
|
+ "showValueLabels: false, labelPosition: 'none'}";
|
||||||
|
@ -232,11 +241,14 @@ public class CoPIVisCodeGenerator {
|
||||||
visContainerID = DEFAULT_VISCONTAINER_DIV_ID;
|
visContainerID = DEFAULT_VISCONTAINER_DIV_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sparklineData.setVisContainerDivID(visContainerID);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* By default these represents the range of the rendered sparks. Only in
|
* By default these represents the range of the rendered sparks. Only in
|
||||||
* case of "short" sparkline mode we will set the Earliest
|
* case of "short" sparkline mode we will set the Earliest
|
||||||
* RenderedGrant year to "currentYear - 10".
|
* RenderedGrant year to "currentYear - 10".
|
||||||
*/
|
*/
|
||||||
|
sparklineData.setEarliestYearConsidered(minGrantYearConsidered);
|
||||||
sparklineData.setEarliestRenderedGrantYear(minGrantYear);
|
sparklineData.setEarliestRenderedGrantYear(minGrantYear);
|
||||||
sparklineData.setLatestRenderedGrantYear(currentYear);
|
sparklineData.setLatestRenderedGrantYear(currentYear);
|
||||||
|
|
||||||
|
@ -257,10 +269,15 @@ public class CoPIVisCodeGenerator {
|
||||||
|
|
||||||
sparklineData.setEarliestRenderedGrantYear(shortSparkMinYear);
|
sparklineData.setEarliestRenderedGrantYear(shortSparkMinYear);
|
||||||
|
|
||||||
|
sparklineData.setShortVisMode(true);
|
||||||
|
|
||||||
generateShortSparklineVisualizationContent(currentYear,
|
generateShortSparklineVisualizationContent(currentYear,
|
||||||
shortSparkMinYear, visContainerID, visualizationCode,
|
shortSparkMinYear, visContainerID, visualizationCode,
|
||||||
unknownYearCoPIs, sparklineDisplayOptions);
|
unknownYearCoPIs, sparklineDisplayOptions);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
sparklineData.setShortVisMode(false);
|
||||||
|
|
||||||
generateFullSparklineVisualizationContent(currentYear,
|
generateFullSparklineVisualizationContent(currentYear,
|
||||||
minGrantYearConsidered, visContainerID, visualizationCode,
|
minGrantYearConsidered, visContainerID, visualizationCode,
|
||||||
unknownYearCoPIs, renderedFullSparks,
|
unknownYearCoPIs, renderedFullSparks,
|
||||||
|
@ -361,17 +378,12 @@ public class CoPIVisCodeGenerator {
|
||||||
|
|
||||||
String csvDownloadURLHref = "";
|
String csvDownloadURLHref = "";
|
||||||
|
|
||||||
try {
|
if (getCSVDownloadURL() != null) {
|
||||||
if (getCSVDownloadURL() != null) {
|
|
||||||
|
csvDownloadURLHref = "<a href=\"" + getCSVDownloadURL()
|
||||||
csvDownloadURLHref = "<a href=\"" + getCSVDownloadURL()
|
+ "\" class=\"inline_href\">(.CSV File)</a>";
|
||||||
+ "\" class=\"inline_href\">(.CSV File)</a>";
|
|
||||||
|
} else {
|
||||||
} else {
|
|
||||||
csvDownloadURLHref = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (UnsupportedEncodingException e) {
|
|
||||||
csvDownloadURLHref = "";
|
csvDownloadURLHref = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -479,18 +491,13 @@ public class CoPIVisCodeGenerator {
|
||||||
|
|
||||||
if (yearToUniqueCoPIs.size() > 0) {
|
if (yearToUniqueCoPIs.size() > 0) {
|
||||||
|
|
||||||
try {
|
if (getCSVDownloadURL() != null) {
|
||||||
if (getCSVDownloadURL() != null) {
|
|
||||||
|
csvDownloadURLHref = "Download data as <a href='"
|
||||||
csvDownloadURLHref = "Download data as <a href='"
|
+ getCSVDownloadURL() + "'>.csv</a> file.<br />";
|
||||||
+ getCSVDownloadURL() + "'>.csv</a> file.<br />";
|
sparklineData.setDownloadDataLink(getCSVDownloadURL());
|
||||||
sparklineData.setDownloadDataLink(getCSVDownloadURL());
|
|
||||||
|
} else {
|
||||||
} else {
|
|
||||||
csvDownloadURLHref = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (UnsupportedEncodingException e) {
|
|
||||||
csvDownloadURLHref = "";
|
csvDownloadURLHref = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -507,33 +514,20 @@ public class CoPIVisCodeGenerator {
|
||||||
return divContextCode.toString();
|
return divContextCode.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getCSVDownloadURL() throws UnsupportedEncodingException {
|
private String getCSVDownloadURL() {
|
||||||
|
|
||||||
if (yearToUniqueCoPIs.size() > 0) {
|
if (yearToUniqueCoPIs.size() > 0) {
|
||||||
|
|
||||||
String secondaryContextPath = "";
|
ParamMap CSVDownloadURLParams = new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY,
|
||||||
if (!contextPath.contains(VisualizationFrameworkConstants.VISUALIZATION_URL_PREFIX)) {
|
individualURI,
|
||||||
secondaryContextPath = VisualizationFrameworkConstants.VISUALIZATION_URL_PREFIX;
|
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 {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -542,36 +536,20 @@ public class CoPIVisCodeGenerator {
|
||||||
|
|
||||||
StringBuilder divContextCode = new StringBuilder();
|
StringBuilder divContextCode = new StringBuilder();
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
String fullTimelineLink;
|
String fullTimelineLink;
|
||||||
if (yearToUniqueCoPIs.size() > 0) {
|
if (yearToUniqueCoPIs.size() > 0) {
|
||||||
|
|
||||||
String secondaryContextPath = "";
|
ParamMap fullTimelineNetworkURLParams = new ParamMap(
|
||||||
if (!contextPath.contains(VisualizationFrameworkConstants.VISUALIZATION_URL_PREFIX)) {
|
VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY,
|
||||||
secondaryContextPath = VisualizationFrameworkConstants.VISUALIZATION_URL_PREFIX;
|
individualURI,
|
||||||
}
|
VisualizationFrameworkConstants.VIS_TYPE_KEY,
|
||||||
|
VisualizationFrameworkConstants.PERSON_LEVEL_VIS,
|
||||||
String fullTimelineNetworkURL = contextPath
|
VisualizationFrameworkConstants.VIS_MODE_KEY,
|
||||||
+ secondaryContextPath
|
VisualizationFrameworkConstants.COPI_VIS_MODE);
|
||||||
+ "?"
|
|
||||||
+ VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY
|
String fullTimelineNetworkURL = UrlBuilder.getUrl(
|
||||||
+ "=" + URLEncoder.encode(individualURI,
|
VisualizationFrameworkConstants.FREEMARKERIZED_VISUALIZATION_URL_PREFIX,
|
||||||
VisualizationController.URL_ENCODING_SCHEME).toString()
|
fullTimelineNetworkURLParams);
|
||||||
+ "&"
|
|
||||||
+ 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();
|
|
||||||
|
|
||||||
fullTimelineLink = "<a href='" + fullTimelineNetworkURL
|
fullTimelineLink = "<a href='" + fullTimelineNetworkURL
|
||||||
+ "'>View full timeline and co-pi network.</a>";
|
+ "'>View full timeline and co-pi network.</a>";
|
||||||
|
@ -584,10 +562,6 @@ public class CoPIVisCodeGenerator {
|
||||||
|
|
||||||
divContextCode.append("<p>" + fullTimelineLink + "</p>");
|
divContextCode.append("<p>" + fullTimelineLink + "</p>");
|
||||||
|
|
||||||
} catch (UnsupportedEncodingException e) {
|
|
||||||
log.error(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
return divContextCode.toString();
|
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.exceptions.MalformedQueryParametersException;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Grant;
|
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.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.VitroRequest;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
|
import edu.cornell.mannlib.vitro.webapp.controller.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.controller.visualization.freemarker.DataVisualizationController;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Grant;
|
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.valueobjects.SparklineData;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.UtilityFunctions;
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.UtilityFunctions;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.VisualizationRequestHandler;
|
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.VisualizationRequestHandler;
|
||||||
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;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.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.VOConstants;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
|
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Grant;
|
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.exceptions.MalformedQueryParametersException;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.BiboDocument;
|
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.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.VitroRequest;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
|
import edu.cornell.mannlib.vitro.webapp.controller.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.controller.visualization.freemarker.DataVisualizationController;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.BiboDocument;
|
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.UtilityFunctions;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.VisualizationRequestHandler;
|
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.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;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.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.VOConstants;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
|
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.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;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
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.filestorage.FileServingHelper;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.QueryFieldLabels;
|
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.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.VitroRequest;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
|
import edu.cornell.mannlib.vitro.webapp.controller.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.constants.VisConstants;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.BiboDocument;
|
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.CoAuthorshipData;
|
||||||
|
|
|
@ -7,9 +7,9 @@ import java.io.PrintWriter;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import java.util.Map.Entry;
|
|
||||||
|
|
||||||
import javax.servlet.RequestDispatcher;
|
import javax.servlet.RequestDispatcher;
|
||||||
import javax.servlet.ServletException;
|
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.CoAuthorshipGraphMLWriter;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.CoAuthorshipQueryRunner;
|
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.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.exceptions.MalformedQueryParametersException;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.persongrantcount.PersonGrantCountQueryRunner;
|
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.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.PersonPublicationCountQueryRunner;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.PersonPublicationCountVisCodeGenerator;
|
import edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.PersonPublicationCountVisCodeGenerator;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.BiboDocument;
|
import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.BiboDocument;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue