1. added a VO for the person pub count data. The goal is to be able to get specific parts of the visualization like download data link, table etc.
2. modified peson pub count to make use of the VO. 3. Made changes to the front-end code for the co-authorship to include all the person-level objects. 4. cleaned & refactored the code.
This commit is contained in:
parent
94755a7f73
commit
7564c9b24e
5 changed files with 495 additions and 112 deletions
|
@ -0,0 +1,84 @@
|
|||
package edu.cornell.mannlib.vitro.webapp.visualization.personpubcount;
|
||||
|
||||
public class VisVOContainer {
|
||||
|
||||
/*
|
||||
* For now sparklineNumPublicationsText & sparklinePublicationRangeText is left
|
||||
* as empty but later on we would want to leverage the granularity that this
|
||||
* provides.
|
||||
* */
|
||||
private String sparklineNumPublicationsText = "";
|
||||
private String sparklinePublicationRangeText = "";
|
||||
|
||||
private Integer earliestRenderedPublicationYear;
|
||||
private Integer latestRenderedPublicationYear;
|
||||
|
||||
private String table = "";
|
||||
|
||||
private String downloadDataLink = "";
|
||||
private String fullTimelineNetworkLink = "";
|
||||
|
||||
private String sparklineContent;
|
||||
private String sparklineContext;
|
||||
|
||||
public String getSparklineNumPublicationsText() {
|
||||
return sparklineNumPublicationsText;
|
||||
}
|
||||
public void setSparklineNumPublicationsText(String sparklineNumPublicationsText) {
|
||||
this.sparklineNumPublicationsText = sparklineNumPublicationsText;
|
||||
}
|
||||
public String getSparklinePublicationRangeText() {
|
||||
return sparklinePublicationRangeText;
|
||||
}
|
||||
public void setSparklinePublicationRangeText(
|
||||
String sparklinePublicationRangeText) {
|
||||
this.sparklinePublicationRangeText = sparklinePublicationRangeText;
|
||||
}
|
||||
public Integer getEarliestRenderedPublicationYear() {
|
||||
return earliestRenderedPublicationYear;
|
||||
}
|
||||
public void setEarliestRenderedPublicationYear(
|
||||
Integer earliestRenderedPublicationYear) {
|
||||
this.earliestRenderedPublicationYear = earliestRenderedPublicationYear;
|
||||
}
|
||||
public Integer getLatestRenderedPublicationYear() {
|
||||
return latestRenderedPublicationYear;
|
||||
}
|
||||
public void setLatestRenderedPublicationYear(
|
||||
Integer latestRenderedPublicationYear) {
|
||||
this.latestRenderedPublicationYear = latestRenderedPublicationYear;
|
||||
}
|
||||
public String getTable() {
|
||||
return table;
|
||||
}
|
||||
public void setTable(String table) {
|
||||
this.table = table;
|
||||
}
|
||||
public String getDownloadDataLink() {
|
||||
return downloadDataLink;
|
||||
}
|
||||
public void setDownloadDataLink(String downloadDataLink) {
|
||||
this.downloadDataLink = downloadDataLink;
|
||||
}
|
||||
public String getFullTimelineNetworkLink() {
|
||||
return fullTimelineNetworkLink;
|
||||
}
|
||||
public void setFullTimelineNetworkLink(String fullTimelineNetworkLink) {
|
||||
this.fullTimelineNetworkLink = fullTimelineNetworkLink;
|
||||
}
|
||||
|
||||
public String getSparklineContent() {
|
||||
return sparklineContent;
|
||||
}
|
||||
public void setSparklineContent(String shortSparklineContent) {
|
||||
this.sparklineContent = shortSparklineContent;
|
||||
}
|
||||
|
||||
public String getSparklineContext() {
|
||||
return sparklineContext;
|
||||
}
|
||||
public void setSparklineContext(String shortSparklineContext) {
|
||||
this.sparklineContext = shortSparklineContext;
|
||||
}
|
||||
|
||||
}
|
|
@ -5,6 +5,7 @@ import java.net.URLEncoder;
|
|||
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.NoSuchElementException;
|
||||
|
@ -35,24 +36,74 @@ public class VisualizationCodeGenerator {
|
|||
private static final String SHORT_SPARKLINE_MODE_URL_HANDLE = "short";
|
||||
|
||||
private static final String FULL_SPARKLINE_MODE_URL_HANDLE = "full";
|
||||
|
||||
|
||||
private Map<String, Integer> yearToPublicationCount;
|
||||
|
||||
private Log log;
|
||||
|
||||
public VisualizationCodeGenerator(Map<String, Integer> yearToPublicationCount, Log log) {
|
||||
private VisVOContainer valueObjectContainer;
|
||||
|
||||
public VisualizationCodeGenerator(String requestURI,
|
||||
String individualURIParam,
|
||||
String visMode,
|
||||
String visContainer,
|
||||
List<BiboDocument> authorDocuments,
|
||||
Map<String, Integer> yearToPublicationCount,
|
||||
VisVOContainer valueObjectContainer,
|
||||
Log log) {
|
||||
|
||||
this.yearToPublicationCount = yearToPublicationCount;
|
||||
this.valueObjectContainer = valueObjectContainer;
|
||||
this.log = log;
|
||||
|
||||
generateVisualizationCode(requestURI,
|
||||
individualURIParam,
|
||||
visMode,
|
||||
visContainer,
|
||||
authorDocuments);
|
||||
|
||||
|
||||
}
|
||||
public String getMainVisualizationCode(List<BiboDocument> authorDocuments,
|
||||
Set<String> publishedYears,
|
||||
|
||||
private void generateVisualizationCode(String requestURI,
|
||||
String individualURIParam,
|
||||
String visMode,
|
||||
String providedVisContainerID) {
|
||||
String visContainer,
|
||||
List<BiboDocument> authorDocuments) {
|
||||
|
||||
valueObjectContainer.setSparklineContent(getMainVisualizationCode(authorDocuments,
|
||||
visMode,
|
||||
visContainer));
|
||||
|
||||
|
||||
valueObjectContainer.setSparklineContext(getVisualizationContextCode(requestURI,
|
||||
individualURIParam,
|
||||
visMode));
|
||||
|
||||
}
|
||||
|
||||
// public VisVOContainer getValueObjectContainer() {
|
||||
//
|
||||
//
|
||||
//
|
||||
// return valueObjectContainer;
|
||||
// }
|
||||
|
||||
private String getMainVisualizationCode(List<BiboDocument> authorDocuments,
|
||||
String visMode,
|
||||
String providedVisContainerID) {
|
||||
|
||||
int numOfYearsToBeRendered = 0;
|
||||
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
|
||||
int shortSparkMinYear = currentYear - 10 + 1;
|
||||
|
||||
/*
|
||||
* This is required because when deciding the range of years over which the vis
|
||||
* was rendered we dont want to be influenced by the "DEFAULT_PUBLICATION_YEAR".
|
||||
* */
|
||||
Set<String> publishedYears = new HashSet(yearToPublicationCount.keySet());
|
||||
publishedYears.remove(VOConstants.DEFAULT_PUBLICATION_YEAR);
|
||||
|
||||
/*
|
||||
* We are setting the default value of minPublishedYear to be 10 years before
|
||||
* the current year (which is suitably represented by the shortSparkMinYear),
|
||||
|
@ -157,6 +208,14 @@ public class VisualizationCodeGenerator {
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* By default these represents the range of the rendered sparks. Only in case of
|
||||
* "short" sparkline mode we will set the Earliest RenderedPublication year to
|
||||
* "currentYear - 10".
|
||||
* */
|
||||
valueObjectContainer.setEarliestRenderedPublicationYear(minPublishedYear);
|
||||
valueObjectContainer.setLatestRenderedPublicationYear(currentYear);
|
||||
|
||||
/*
|
||||
* The Full Sparkline will be rendered by default. Only if the url has specific mention of
|
||||
* SHORT_SPARKLINE_MODE_URL_HANDLE then we render the short sparkline and not otherwise.
|
||||
|
@ -169,6 +228,8 @@ public class VisualizationCodeGenerator {
|
|||
* They both side-effect "visualizationCode"
|
||||
* */
|
||||
if (SHORT_SPARKLINE_MODE_URL_HANDLE.equalsIgnoreCase(visMode)) {
|
||||
|
||||
valueObjectContainer.setEarliestRenderedPublicationYear(shortSparkMinYear);
|
||||
generateShortSparklineVisualizationContent(currentYear,
|
||||
shortSparkMinYear,
|
||||
visContainerID,
|
||||
|
@ -184,6 +245,9 @@ public class VisualizationCodeGenerator {
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
|
||||
log.debug(visualizationCode);
|
||||
|
@ -231,6 +295,8 @@ public class VisualizationCodeGenerator {
|
|||
"renderedShortSparks += data.getValue(value, 1);" +
|
||||
"});\n");
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Generate the text introducing the vis.
|
||||
* */
|
||||
|
@ -303,7 +369,7 @@ public class VisualizationCodeGenerator {
|
|||
"</script>\n";
|
||||
}
|
||||
|
||||
public String getVisualizationContextCode(String uri, String individualURI, String visMode) {
|
||||
private String getVisualizationContextCode(String uri, String individualURI, String visMode) {
|
||||
|
||||
String visualizationContextCode = "";
|
||||
if (SHORT_SPARKLINE_MODE_URL_HANDLE.equalsIgnoreCase(visMode)) {
|
||||
|
@ -333,27 +399,33 @@ public class VisualizationCodeGenerator {
|
|||
|
||||
String downloadFileCode;
|
||||
if (yearToPublicationCount.size() > 0) {
|
||||
downloadFileCode = "Download data as <a href='" + uri.toString() + "?" +
|
||||
VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE +
|
||||
"=" + URLEncoder.encode(individualURI,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString() +
|
||||
"&" +
|
||||
VisualizationFrameworkConstants.VIS_TYPE_URL_HANDLE +
|
||||
"=" + URLEncoder.encode(VisualizationController
|
||||
.PERSON_PUBLICATION_COUNT_VIS_URL_VALUE,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString() +
|
||||
"&" +
|
||||
VisualizationFrameworkConstants.RENDER_MODE_URL_HANDLE +
|
||||
"=" + URLEncoder.encode(VisualizationFrameworkConstants.DATA_RENDER_MODE_URL_VALUE,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString() +
|
||||
"'>.csv</a> file.<br />";
|
||||
|
||||
|
||||
String downloadURL = uri.toString()
|
||||
+ "?" + VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE
|
||||
+ "=" + URLEncoder.encode(individualURI,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString()
|
||||
+ "&" + VisualizationFrameworkConstants.VIS_TYPE_URL_HANDLE
|
||||
+ "=" + URLEncoder.encode(VisualizationController
|
||||
.PERSON_PUBLICATION_COUNT_VIS_URL_VALUE,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString()
|
||||
+ "&" + VisualizationFrameworkConstants.RENDER_MODE_URL_HANDLE
|
||||
+ "=" + URLEncoder.encode(VisualizationFrameworkConstants.DATA_RENDER_MODE_URL_VALUE,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString();
|
||||
downloadFileCode = "Download data as <a href='" + downloadURL + "'>.csv</a> file.<br />";
|
||||
|
||||
valueObjectContainer.setDownloadDataLink(downloadURL);
|
||||
} else {
|
||||
downloadFileCode = "No data available to export.<br />";
|
||||
|
||||
valueObjectContainer.setDownloadDataLink("#");
|
||||
}
|
||||
|
||||
divContextCode.append("<p>" + generateDataTable() +
|
||||
String tableCode = generateDataTable();
|
||||
|
||||
divContextCode.append("<p>" + tableCode +
|
||||
downloadFileCode + "</p>");
|
||||
|
||||
valueObjectContainer.setTable(tableCode);
|
||||
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -373,22 +445,27 @@ public class VisualizationCodeGenerator {
|
|||
|
||||
String fullTimelineLink;
|
||||
if (yearToPublicationCount.size() > 0) {
|
||||
fullTimelineLink = "<a href='" + uri.toString() + "?" +
|
||||
VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE +
|
||||
"=" + URLEncoder.encode(individualURI,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString() +
|
||||
"&" +
|
||||
"vis" +
|
||||
"=" + URLEncoder.encode(VisualizationController
|
||||
.PERSON_PUBLICATION_COUNT_VIS_URL_VALUE,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString() +
|
||||
"&" +
|
||||
VisualizationFrameworkConstants.RENDER_MODE_URL_HANDLE +
|
||||
"=" + URLEncoder.encode(VisualizationFrameworkConstants.STANDALONE_RENDER_MODE_URL_VALUE,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString() +
|
||||
"'>View full timeline and network.</a><br />";
|
||||
String fullTimelineNetworkURL = uri.toString() + "?" +
|
||||
VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE +
|
||||
"=" + URLEncoder.encode(individualURI,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString() +
|
||||
"&" +
|
||||
"vis" +
|
||||
"=" + URLEncoder.encode(VisualizationController
|
||||
.PERSON_PUBLICATION_COUNT_VIS_URL_VALUE,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString() +
|
||||
"&" +
|
||||
VisualizationFrameworkConstants.RENDER_MODE_URL_HANDLE +
|
||||
"=" + URLEncoder.encode(VisualizationFrameworkConstants.STANDALONE_RENDER_MODE_URL_VALUE,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString();
|
||||
fullTimelineLink = "<a href='" + fullTimelineNetworkURL + "'>View full timeline and network.</a><br />";
|
||||
|
||||
valueObjectContainer.setFullTimelineNetworkLink(fullTimelineNetworkURL);
|
||||
|
||||
} else {
|
||||
|
||||
fullTimelineLink = "No data available to render full timeline.<br />";
|
||||
valueObjectContainer.setFullTimelineNetworkLink("#");
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -109,26 +109,28 @@ public class VisualizationRequestHandler {
|
|||
* Computations required to generate HTML for the sparklines & related context.
|
||||
* */
|
||||
|
||||
/*
|
||||
* This is required because when deciding the range of years over which the vis
|
||||
* was rendered we dont want to be influenced by the "DEFAULT_PUBLICATION_YEAR".
|
||||
* */
|
||||
Set<String> publishedYears = new HashSet(yearToPublicationCount.keySet());
|
||||
publishedYears.remove(VOConstants.DEFAULT_PUBLICATION_YEAR);
|
||||
VisVOContainer valueObjectContainer = new VisVOContainer();
|
||||
|
||||
VisualizationCodeGenerator visualizationCodeGenerator =
|
||||
new VisualizationCodeGenerator(yearToPublicationCount, log);
|
||||
new VisualizationCodeGenerator(vitroRequest.getRequestURI(),
|
||||
individualURIParam,
|
||||
visMode,
|
||||
visContainer,
|
||||
authorDocuments,
|
||||
yearToPublicationCount,
|
||||
valueObjectContainer,
|
||||
log);
|
||||
|
||||
String visContentCode = visualizationCodeGenerator
|
||||
.getMainVisualizationCode(authorDocuments,
|
||||
publishedYears,
|
||||
visMode,
|
||||
visContainer);
|
||||
|
||||
String visContentCode = valueObjectContainer.getSparklineContent();
|
||||
|
||||
String visContextCode = visualizationCodeGenerator
|
||||
.getVisualizationContextCode(vitroRequest.getRequestURI(),
|
||||
individualURIParam,
|
||||
visMode);
|
||||
String visContextCode = valueObjectContainer.getSparklineContext();
|
||||
|
||||
System.out.println("ft url - " + valueObjectContainer.getFullTimelineNetworkLink());
|
||||
System.out.println("dnld fl - " + valueObjectContainer.getDownloadDataLink());
|
||||
System.out.println("table - " + valueObjectContainer.getTable());
|
||||
System.out.println("min - " + valueObjectContainer.getEarliestRenderedPublicationYear());
|
||||
System.out.println("max - " + valueObjectContainer.getLatestRenderedPublicationYear());
|
||||
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue