[VIVO-1317] Convert Visualizations to Jackson from Gson

This commit is contained in:
Graham Triggs 2017-10-02 21:03:04 +01:00
parent 5c1d2c1e0f
commit d93b722cd7
16 changed files with 184 additions and 107 deletions

View file

@ -35,11 +35,6 @@
<artifactId>fluent-hc</artifactId> <artifactId>fluent-hc</artifactId>
<version>4.5.3</version> <version>4.5.3</version>
</dependency> </dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
<dependency> <dependency>
<groupId>com.itextpdf</groupId> <groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId> <artifactId>itextpdf</artifactId>

View file

@ -10,6 +10,7 @@ import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
@ -140,7 +141,7 @@ public class AjaxVisualizationController extends FreemarkerHttpServlet {
return visRequestHandler.generateAjaxVisualization(vitroRequest, return visRequestHandler.generateAjaxVisualization(vitroRequest,
log, log,
dataset); dataset);
} catch (MalformedQueryParametersException e) { } catch (JsonProcessingException|MalformedQueryParametersException e) {
return UtilityFunctions.handleMalformedParameters( return UtilityFunctions.handleMalformedParameters(
"Ajax Visualization Query Error - Individual Publication Count", "Ajax Visualization Query Error - Individual Publication Count",
e.getMessage(), e.getMessage(),

View file

@ -10,6 +10,7 @@ import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
@ -126,18 +127,18 @@ public class DataVisualizationController extends VitroHttpServlet {
Dataset dataset = setupJENADataSource(vitroRequest); Dataset dataset = setupJENADataSource(vitroRequest);
if (dataset != null && visRequestHandler != null) { if (dataset != null && visRequestHandler != null) {
try {
return visRequestHandler.generateDataVisualization(vitroRequest, return visRequestHandler.generateDataVisualization(vitroRequest,
log, log,
dataset); dataset);
} catch (JsonProcessingException e) {
} else { }
}
String errorMessage = "Data Model Empty &/or Inappropriate " String errorMessage = "Data Model Empty &/or Inappropriate "
+ "query parameters were submitted. "; + "query parameters were submitted. ";
throw new MalformedQueryParametersException(errorMessage); throw new MalformedQueryParametersException(errorMessage);
}
} }
private VisualizationRequestHandler getVisualizationRequestHandler( private VisualizationRequestHandler getVisualizationRequestHandler(

View file

@ -2,7 +2,11 @@
package edu.cornell.mannlib.vitro.webapp.visualization.capabilitymap; package edu.cornell.mannlib.vitro.webapp.visualization.capabilitymap;
import com.google.gson.Gson; import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.jena.query.Dataset; import org.apache.jena.query.Dataset;
import org.apache.jena.query.QueryExecution; import org.apache.jena.query.QueryExecution;
@ -49,7 +53,7 @@ public class CapabilityMapRequestHandler implements VisualizationRequestHandler
} }
@Override @Override
public Object generateAjaxVisualization(VitroRequest vitroRequest, Log log, Dataset dataSource) throws MalformedQueryParametersException { public Object generateAjaxVisualization(VitroRequest vitroRequest, Log log, Dataset dataSource) throws MalformedQueryParametersException, JsonProcessingException {
ConceptLabelMap conceptLabelMap = VisualizationCaches.conceptToLabel.getNoWait(vitroRequest.getRDFService()); ConceptLabelMap conceptLabelMap = VisualizationCaches.conceptToLabel.getNoWait(vitroRequest.getRDFService());
ConceptPeopleMap conceptPeopleMap = VisualizationCaches.conceptToPeopleMap.getNoWait(vitroRequest.getRDFService()); ConceptPeopleMap conceptPeopleMap = VisualizationCaches.conceptToPeopleMap.getNoWait(vitroRequest.getRDFService());
OrganizationPeopleMap organizationPeopleMap = VisualizationCaches.organisationToPeopleMap.getNoWait(vitroRequest.getRDFService()); OrganizationPeopleMap organizationPeopleMap = VisualizationCaches.organisationToPeopleMap.getNoWait(vitroRequest.getRDFService());
@ -67,8 +71,8 @@ public class CapabilityMapRequestHandler implements VisualizationRequestHandler
} }
} }
Gson gson = new Gson(); ObjectMapper mapper = new ObjectMapper();
return gson.toJson(concepts); return mapper.writeValueAsString(concepts);
} }
return ""; return "";
} }
@ -96,13 +100,13 @@ public class CapabilityMapRequestHandler implements VisualizationRequestHandler
} }
response.results.add(result); response.results.add(result);
Gson gson = new Gson(); ObjectMapper mapper = new ObjectMapper();
String callback = vitroRequest.getParameter("callback"); String callback = vitroRequest.getParameter("callback");
if (!StringUtils.isEmpty(callback)) { if (!StringUtils.isEmpty(callback)) {
return callback + "(" + gson.toJson(response) + ");"; return callback + "(" + mapper.writeValueAsString(response) + ");";
} }
return gson.toJson(response); return mapper.writeValueAsString(response);
} }
String query = vitroRequest.getParameter("query"); String query = vitroRequest.getParameter("query");
@ -150,13 +154,12 @@ public class CapabilityMapRequestHandler implements VisualizationRequestHandler
response.results.add(result); response.results.add(result);
} }
Gson gson = new Gson(); ObjectMapper mapper = new ObjectMapper();
String callback = vitroRequest.getParameter("callback"); String callback = vitroRequest.getParameter("callback");
if (!StringUtils.isEmpty(callback)) { if (!StringUtils.isEmpty(callback)) {
return callback + "(" + gson.toJson(response) + ");"; return callback + "(" + mapper.writeValueAsString(response) + ");";
} }
return gson.toJson(response); return mapper.writeValueAsString(response);
} }
return ""; return "";

View file

@ -2,9 +2,14 @@
package edu.cornell.mannlib.vitro.webapp.visualization.capabilitymap; package edu.cornell.mannlib.vitro.webapp.visualization.capabilitymap;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@JsonInclude(JsonInclude.Include.NON_NULL)
class CapabilityMapResponse { class CapabilityMapResponse {
@JsonProperty
List<CapabilityMapResult> results = new ArrayList<CapabilityMapResult>(); List<CapabilityMapResult> results = new ArrayList<CapabilityMapResult>();
} }

View file

@ -2,67 +2,71 @@
package edu.cornell.mannlib.vitro.webapp.visualization.capabilitymap; package edu.cornell.mannlib.vitro.webapp.visualization.capabilitymap;
import com.google.gson.annotations.SerializedName; import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonInclude(JsonInclude.Include.NON_NULL)
class CapabilityMapResult { class CapabilityMapResult {
@JsonProperty
String[] clusters; String[] clusters;
@SerializedName("md_1") @JsonProperty("md_1")
String profileId; String profileId;
@SerializedName("md_2") @JsonProperty("md_2")
String description; String description;
@SerializedName("md_3") @JsonProperty("md_3")
String thumbNail; String thumbNail;
@SerializedName("md_4") @JsonProperty("md_4")
String department; String department;
@SerializedName("md_5") @JsonProperty("md_5")
String overview; String overview;
@SerializedName("md_6") @JsonProperty("md_6")
String geographicFocus; String geographicFocus;
@SerializedName("md_7") @JsonProperty("md_7")
String geographicLocation; String geographicLocation;
@SerializedName("md_8") @JsonProperty("md_8")
String[] grants; String[] grants;
@SerializedName("md_A") @JsonProperty("md_A")
String firstName; String firstName;
@SerializedName("md_B") @JsonProperty("md_B")
String lastName; String lastName;
@SerializedName("md_F") @JsonProperty("md_F")
String fax; String fax;
@SerializedName("md_G") @JsonProperty("md_G")
String email; String email;
@SerializedName("md_H") @JsonProperty("md_H")
String availableForSupervision; String availableForSupervision;
@SerializedName("md_I") @JsonProperty("md_I")
String homepage; String homepage;
@SerializedName("md_L") @JsonProperty("md_L")
String phoneNumber; String phoneNumber;
@SerializedName("md_U") @JsonProperty("md_U")
String[] publications; String[] publications;
@SerializedName("md_X") @JsonProperty("md_X")
String[] researchOverview; String[] researchOverview;
@SerializedName("md_Y") @JsonProperty("md_Y")
String[] subjectArea; String[] subjectArea;
@SerializedName("md_Z") @JsonProperty("md_Z")
String preferredTitle; String preferredTitle;
@JsonProperty
String query; String query;
} }

View file

@ -9,6 +9,11 @@ import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.jena.query.QuerySolution; import org.apache.jena.query.QuerySolution;
import edu.cornell.mannlib.vitro.webapp.beans.Individual; import edu.cornell.mannlib.vitro.webapp.beans.Individual;
import edu.cornell.mannlib.vitro.webapp.config.ConfigurationProperties; import edu.cornell.mannlib.vitro.webapp.config.ConfigurationProperties;
@ -26,7 +31,6 @@ import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import com.google.gson.Gson;
import org.apache.jena.query.Dataset; import org.apache.jena.query.Dataset;
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.AuthorizationRequest; import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.AuthorizationRequest;
@ -164,7 +168,7 @@ public class MapOfScienceVisualizationRequestHandler implements VisualizationReq
private Map<String, String> getSubjectPersonEntityAndGenerateDataResponse( private Map<String, String> getSubjectPersonEntityAndGenerateDataResponse(
VitroRequest vitroRequest, String subjectEntityURI, String entityLabel, VisConstants.DataVisMode dataOuputFormat) VitroRequest vitroRequest, String subjectEntityURI, String entityLabel, VisConstants.DataVisMode dataOuputFormat)
throws MalformedQueryParametersException { throws MalformedQueryParametersException, JsonProcessingException {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
try { try {
@ -191,7 +195,6 @@ public class MapOfScienceVisualizationRequestHandler implements VisualizationReq
Map<String, String> fileData = new HashMap<String, String>(); Map<String, String> fileData = new HashMap<String, String>();
if (VisConstants.DataVisMode.JSON.equals(dataOuputFormat)) { if (VisConstants.DataVisMode.JSON.equals(dataOuputFormat)) {
Gson json = new Gson();
Set jsonContent = new HashSet(); Set jsonContent = new HashSet();
MapOfScience entityJson = new MapOfScience(subjectEntityURI); MapOfScience entityJson = new MapOfScience(subjectEntityURI);
@ -203,8 +206,10 @@ public class MapOfScienceVisualizationRequestHandler implements VisualizationReq
jsonContent.add(entityJson); jsonContent.add(entityJson);
ObjectMapper mapper = new ObjectMapper();
fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY, "application/octet-stream"); fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY, "application/octet-stream");
fileData.put(DataVisualizationController.FILE_CONTENT_KEY, json.toJson(jsonContent)); fileData.put(DataVisualizationController.FILE_CONTENT_KEY, mapper.writeValueAsString(jsonContent));
} else { } else {
if (StringUtils.isBlank(entityLabel)) { if (StringUtils.isBlank(entityLabel)) {
entityLabel = "no-name"; entityLabel = "no-name";
@ -239,7 +244,7 @@ public class MapOfScienceVisualizationRequestHandler implements VisualizationReq
private Map<String, String> getSubjectEntityAndGenerateDataResponse( private Map<String, String> getSubjectEntityAndGenerateDataResponse(
VitroRequest vitroRequest, String subjectEntityURI, String entityLabel, VisConstants.DataVisMode dataOuputFormat) VitroRequest vitroRequest, String subjectEntityURI, String entityLabel, VisConstants.DataVisMode dataOuputFormat)
throws MalformedQueryParametersException { throws MalformedQueryParametersException, JsonProcessingException {
RDFService rdfService = vitroRequest.getRDFService(); RDFService rdfService = vitroRequest.getRDFService();
@ -290,7 +295,6 @@ public class MapOfScienceVisualizationRequestHandler implements VisualizationReq
Map<String, String> fileData = new HashMap<String, String>(); Map<String, String> fileData = new HashMap<String, String>();
if (VisConstants.DataVisMode.JSON.equals(dataOuputFormat)) { if (VisConstants.DataVisMode.JSON.equals(dataOuputFormat)) {
Gson json = new Gson();
Set jsonContent = new HashSet(); Set jsonContent = new HashSet();
MapOfScience entityJson = new MapOfScience(subjectEntityURI); MapOfScience entityJson = new MapOfScience(subjectEntityURI);
@ -312,8 +316,10 @@ public class MapOfScienceVisualizationRequestHandler implements VisualizationReq
jsonContent.add(entityJson); jsonContent.add(entityJson);
ObjectMapper mapper = new ObjectMapper();
fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY, "application/octet-stream"); fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY, "application/octet-stream");
fileData.put(DataVisualizationController.FILE_CONTENT_KEY, json.toJson(jsonContent)); fileData.put(DataVisualizationController.FILE_CONTENT_KEY, mapper.writeValueAsString(jsonContent));
} else { } else {
if (StringUtils.isBlank(entityLabel)) { if (StringUtils.isBlank(entityLabel)) {
entityLabel = "no-organization"; entityLabel = "no-organization";
@ -356,26 +362,25 @@ public class MapOfScienceVisualizationRequestHandler implements VisualizationReq
return fileData; return fileData;
} }
private Map<String, String> prepareStandaloneDataErrorResponse() { private Map<String, String> prepareStandaloneDataErrorResponse() throws JsonProcessingException {
GenericQueryMap errorDataResponse = new GenericQueryMap(); GenericQueryMap errorDataResponse = new GenericQueryMap();
errorDataResponse.addEntry("error", "No Publications for this Entity found in VIVO."); errorDataResponse.addEntry("error", "No Publications for this Entity found in VIVO.");
Gson jsonErrorResponse = new Gson();
Map<String, String> fileData = new HashMap<String, String>(); Map<String, String> fileData = new HashMap<String, String>();
fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY, fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY,
"application/octet-stream"); "application/octet-stream");
fileData.put(DataVisualizationController.FILE_CONTENT_KEY, jsonErrorResponse.toJson(errorDataResponse)); ObjectMapper mapper = new ObjectMapper();
fileData.put(DataVisualizationController.FILE_CONTENT_KEY, mapper.writeValueAsString(errorDataResponse));
return fileData; return fileData;
} }
@Override @Override
public Map<String, String> generateDataVisualization(VitroRequest vitroRequest, Log log, Dataset dataset) public Map<String, String> generateDataVisualization(VitroRequest vitroRequest, Log log, Dataset dataset)
throws MalformedQueryParametersException { throws MalformedQueryParametersException, JsonProcessingException {
String entityURI = vitroRequest.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY); String entityURI = vitroRequest.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY);

View file

@ -9,10 +9,11 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import edu.cornell.mannlib.vitro.webapp.visualization.utilities.VisualizationCaches; import edu.cornell.mannlib.vitro.webapp.visualization.utilities.VisualizationCaches;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import com.google.gson.Gson;
import org.apache.jena.query.Dataset; import org.apache.jena.query.Dataset;
import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission; import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission;
@ -35,7 +36,7 @@ public class ModelConstructorRequestHandler implements
@Override @Override
public Object generateAjaxVisualization(VitroRequest vitroRequest, Log log, public Object generateAjaxVisualization(VitroRequest vitroRequest, Log log,
Dataset dataSource) throws MalformedQueryParametersException { Dataset dataSource) throws MalformedQueryParametersException, JsonProcessingException {
return regenerateConstructedModels(vitroRequest, dataSource); return regenerateConstructedModels(vitroRequest, dataSource);
} }
@ -82,7 +83,7 @@ public class ModelConstructorRequestHandler implements
} }
private Map<String, String> regenerateConstructedModels(VitroRequest vitroRequest, private Map<String, String> regenerateConstructedModels(VitroRequest vitroRequest,
Dataset dataSource) { Dataset dataSource) throws JsonProcessingException {
VisualizationCaches.rebuildAll(vitroRequest.getRDFService()); VisualizationCaches.rebuildAll(vitroRequest.getRDFService());
@ -113,10 +114,9 @@ public class ModelConstructorRequestHandler implements
fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY, fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY,
"application/octet-stream"); "application/octet-stream");
Gson json = new Gson(); ObjectMapper mapper = new ObjectMapper();
fileData.put(DataVisualizationController.FILE_CONTENT_KEY, fileData.put(DataVisualizationController.FILE_CONTENT_KEY,
json.toJson(refreshedModels)); mapper.writeValueAsString(refreshedModels));
return fileData; return fileData;
} }

View file

@ -10,6 +10,11 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService; import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
import edu.cornell.mannlib.vitro.webapp.visualization.model.OrganizationPeopleMap; import edu.cornell.mannlib.vitro.webapp.visualization.model.OrganizationPeopleMap;
import edu.cornell.mannlib.vitro.webapp.visualization.utilities.CounterUtils; import edu.cornell.mannlib.vitro.webapp.visualization.utilities.CounterUtils;
@ -19,7 +24,6 @@ import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import com.google.gson.Gson;
import org.apache.jena.query.Dataset; import org.apache.jena.query.Dataset;
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.AuthorizationRequest; import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.AuthorizationRequest;
@ -77,7 +81,7 @@ public class TemporalGrantVisualizationRequestHandler implements
@Override @Override
public Map<String, String> generateDataVisualization(VitroRequest vitroRequest, Log log, Dataset dataset) public Map<String, String> generateDataVisualization(VitroRequest vitroRequest, Log log, Dataset dataset)
throws MalformedQueryParametersException { throws MalformedQueryParametersException, JsonProcessingException {
String entityURI = vitroRequest.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY); String entityURI = vitroRequest.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY);
@ -137,7 +141,7 @@ public class TemporalGrantVisualizationRequestHandler implements
private Map<String, String> getSubjectEntityAndGenerateDataResponse( private Map<String, String> getSubjectEntityAndGenerateDataResponse(
VitroRequest vitroRequest, Log log, Dataset dataset, VitroRequest vitroRequest, Log log, Dataset dataset,
String subjectEntityURI, VisConstants.DataVisMode visMode) String subjectEntityURI, VisConstants.DataVisMode visMode)
throws MalformedQueryParametersException { throws MalformedQueryParametersException, JsonProcessingException {
RDFService rdfService = vitroRequest.getRDFService(); RDFService rdfService = vitroRequest.getRDFService();
@ -184,7 +188,6 @@ public class TemporalGrantVisualizationRequestHandler implements
Map<String, String> fileData = new HashMap<String, String>(); Map<String, String> fileData = new HashMap<String, String>();
if (VisConstants.DataVisMode.JSON.equals(visMode)) { if (VisConstants.DataVisMode.JSON.equals(visMode)) {
Gson json = new Gson();
Set subEntitiesJson = new HashSet(); Set subEntitiesJson = new HashSet();
// For each suborganisation // For each suborganisation
@ -234,8 +237,10 @@ public class TemporalGrantVisualizationRequestHandler implements
subEntitiesJson.add(subjectEntityJSON); subEntitiesJson.add(subjectEntityJSON);
ObjectMapper mapper = new ObjectMapper();
fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY, "application/octet-stream"); fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY, "application/octet-stream");
fileData.put(DataVisualizationController.FILE_CONTENT_KEY, json.toJson(subEntitiesJson)); fileData.put(DataVisualizationController.FILE_CONTENT_KEY, mapper.writeValueAsString(subEntitiesJson));
} else { } else {
String entityLabel = orgLabelMap.get(subjectEntityURI); String entityLabel = orgLabelMap.get(subjectEntityURI);

View file

@ -10,6 +10,11 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService; import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
import edu.cornell.mannlib.vitro.webapp.visualization.model.OrganizationPeopleMap; import edu.cornell.mannlib.vitro.webapp.visualization.model.OrganizationPeopleMap;
import edu.cornell.mannlib.vitro.webapp.visualization.utilities.CounterUtils; import edu.cornell.mannlib.vitro.webapp.visualization.utilities.CounterUtils;
@ -19,7 +24,6 @@ import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import com.google.gson.Gson;
import org.apache.jena.query.Dataset; import org.apache.jena.query.Dataset;
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.AuthorizationRequest; import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.AuthorizationRequest;
@ -74,7 +78,7 @@ public class TemporalPublicationVisualizationRequestHandler implements
private Map<String, String> getSubjectEntityAndGenerateDataResponse( private Map<String, String> getSubjectEntityAndGenerateDataResponse(
VitroRequest vitroRequest, Log log, Dataset dataset, VitroRequest vitroRequest, Log log, Dataset dataset,
String subjectEntityURI, VisConstants.DataVisMode visMode) String subjectEntityURI, VisConstants.DataVisMode visMode)
throws MalformedQueryParametersException { throws MalformedQueryParametersException, JsonProcessingException {
RDFService rdfService = vitroRequest.getRDFService(); RDFService rdfService = vitroRequest.getRDFService();
@ -121,7 +125,6 @@ public class TemporalPublicationVisualizationRequestHandler implements
Map<String, String> fileData = new HashMap<String, String>(); Map<String, String> fileData = new HashMap<String, String>();
if (VisConstants.DataVisMode.JSON.equals(visMode)) { if (VisConstants.DataVisMode.JSON.equals(visMode)) {
Gson json = new Gson();
Set subEntitiesJson = new HashSet(); Set subEntitiesJson = new HashSet();
// For each suborganisation // For each suborganisation
@ -171,8 +174,10 @@ public class TemporalPublicationVisualizationRequestHandler implements
subEntitiesJson.add(subjectEntityJSON); subEntitiesJson.add(subjectEntityJSON);
ObjectMapper mapper = new ObjectMapper();
fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY, "application/octet-stream"); fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY, "application/octet-stream");
fileData.put(DataVisualizationController.FILE_CONTENT_KEY, json.toJson(subEntitiesJson)); fileData.put(DataVisualizationController.FILE_CONTENT_KEY, mapper.writeValueAsString(subEntitiesJson));
} else { } else {
String entityLabel = orgLabelMap.get(subjectEntityURI); String entityLabel = orgLabelMap.get(subjectEntityURI);
@ -240,7 +245,7 @@ public class TemporalPublicationVisualizationRequestHandler implements
@Override @Override
public Map<String, String> generateDataVisualization(VitroRequest vitroRequest, Log log, Dataset dataset) public Map<String, String> generateDataVisualization(VitroRequest vitroRequest, Log log, Dataset dataset)
throws MalformedQueryParametersException { throws MalformedQueryParametersException, JsonProcessingException {
String entityURI = vitroRequest.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY); String entityURI = vitroRequest.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY);

View file

@ -5,6 +5,11 @@ package edu.cornell.mannlib.vitro.webapp.visualization.utilities;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import edu.cornell.mannlib.vitro.webapp.rdfservice.ResultSetConsumer; import edu.cornell.mannlib.vitro.webapp.rdfservice.ResultSetConsumer;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
@ -13,7 +18,6 @@ import org.apache.jena.iri.IRIFactory;
import org.apache.jena.iri.Violation; import org.apache.jena.iri.Violation;
import org.vivoweb.webapp.util.ModelUtils; import org.vivoweb.webapp.util.ModelUtils;
import com.google.gson.Gson;
import org.apache.jena.query.Dataset; import org.apache.jena.query.Dataset;
import org.apache.jena.query.QuerySolution; import org.apache.jena.query.QuerySolution;
import org.apache.jena.query.ResultSet; import org.apache.jena.query.ResultSet;
@ -51,7 +55,7 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler {
public Object generateAjaxVisualization(VitroRequest vitroRequest, public Object generateAjaxVisualization(VitroRequest vitroRequest,
Log log, Log log,
Dataset dataset) Dataset dataset)
throws MalformedQueryParametersException { throws MalformedQueryParametersException, JsonProcessingException {
String individualURI = vitroRequest.getParameter( String individualURI = vitroRequest.getParameter(
VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY); VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY);
@ -80,9 +84,9 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler {
GenericQueryMap profilePropertiesToValues = GenericQueryMap profilePropertiesToValues =
profileQueryHandler.getQueryResult(); profileQueryHandler.getQueryResult();
Gson profileInformation = new Gson(); ObjectMapper mapper = new ObjectMapper();
return profileInformation.toJson(profilePropertiesToValues); return mapper.writeValueAsString(profilePropertiesToValues);
} else if (VisualizationFrameworkConstants.IMAGE_UTILS_VIS_MODE } else if (VisualizationFrameworkConstants.IMAGE_UTILS_VIS_MODE
@ -138,11 +142,12 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler {
groupOrderClause, groupOrderClause,
dataset); dataset);
Gson publicationsInformation = new Gson();
NumPubsForIndividualConsumer consumer = new NumPubsForIndividualConsumer(); NumPubsForIndividualConsumer consumer = new NumPubsForIndividualConsumer();
numberOfPublicationsQueryHandler.sparqlSelectQuery(vitroRequest.getRDFService(), consumer); numberOfPublicationsQueryHandler.sparqlSelectQuery(vitroRequest.getRDFService(), consumer);
return publicationsInformation.toJson(consumer.getMap());
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(consumer.getMap());
} else if (VisualizationFrameworkConstants.ARE_GRANTS_AVAILABLE_UTILS_VIS_MODE } else if (VisualizationFrameworkConstants.ARE_GRANTS_AVAILABLE_UTILS_VIS_MODE
.equalsIgnoreCase(visMode)) { .equalsIgnoreCase(visMode)) {
@ -179,12 +184,11 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler {
"", "",
dataset); dataset);
Gson grantsInformation = new Gson();
NumGrantsForIndividualConsumer consumer = new NumGrantsForIndividualConsumer(); NumGrantsForIndividualConsumer consumer = new NumGrantsForIndividualConsumer();
numberOfGrantsQueryHandler.sparqlSelectQuery(vitroRequest.getRDFService(), consumer); numberOfGrantsQueryHandler.sparqlSelectQuery(vitroRequest.getRDFService(), consumer);
return grantsInformation.toJson(consumer.getMap()); ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(consumer.getMap());
} else if (VisualizationFrameworkConstants.COAUTHOR_UTILS_VIS_MODE } else if (VisualizationFrameworkConstants.COAUTHOR_UTILS_VIS_MODE
.equalsIgnoreCase(visMode)) { .equalsIgnoreCase(visMode)) {

View file

@ -1,6 +1,9 @@
/* $This file is distributed under the terms of the license in LICENSE$ */ /* $This file is distributed under the terms of the license in LICENSE$ */
package edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.json; package edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.json;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -11,13 +14,24 @@ import java.util.Set;
* @author bkoniden * @author bkoniden
* Deepak Konidena * Deepak Konidena
*/ */
@JsonInclude(JsonInclude.Include.NON_NULL)
public class JsonObject { public class JsonObject {
@JsonProperty
private String label; private String label;
@JsonProperty
private String lastCachedAtDateTime; private String lastCachedAtDateTime;
@JsonProperty
private List<List<Integer>> data = new ArrayList<List<Integer>>(); private List<List<Integer>> data = new ArrayList<List<Integer>>();
@JsonProperty
private String entityURI; private String entityURI;
@JsonProperty
private String visMode; private String visMode;
@JsonProperty
private List<String> organizationType = new ArrayList<String>(); private List<String> organizationType = new ArrayList<String>();
public List<String> getOrganizationTypes() { public List<String> getOrganizationTypes() {

View file

@ -1,21 +1,41 @@
/* $This file is distributed under the terms of the license in LICENSE$ */ /* $This file is distributed under the terms of the license in LICENSE$ */
package edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.json; package edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.json;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class MapOfScience { public class MapOfScience {
@JsonProperty
private String uri; private String uri;
@JsonProperty
private String label; private String label;
@JsonProperty
private String type; private String type;
@JsonProperty
private int pubsMapped; private int pubsMapped;
@JsonProperty
private int pubsWithNoJournals; private int pubsWithNoJournals;
@JsonProperty
private int pubsWithInvalidJournals; private int pubsWithInvalidJournals;
@JsonProperty
private String lastCachedAtDateTime; private String lastCachedAtDateTime;
@JsonProperty
private Map<Integer, Float> subdisciplineActivity = new HashMap<Integer, Float>(); private Map<Integer, Float> subdisciplineActivity = new HashMap<Integer, Float>();
@JsonProperty
private Set<SubEntityInfo> subEntities = new HashSet<SubEntityInfo>(); private Set<SubEntityInfo> subEntities = new HashSet<SubEntityInfo>();
public MapOfScience(String uri) { public MapOfScience(String uri) {
@ -84,11 +104,18 @@ public class MapOfScience {
return subEntities; return subEntities;
} }
@JsonInclude(JsonInclude.Include.NON_NULL)
private class SubEntityInfo { private class SubEntityInfo {
@JsonProperty
private String uri; private String uri;
@JsonProperty
private String label; private String label;
@JsonProperty
private String type; private String type;
@JsonProperty
private int pubs; private int pubs;
public SubEntityInfo(String uri, String label, String type, int pubs) { public SubEntityInfo(String uri, String label, String type, int pubs) {
@ -129,7 +156,5 @@ public class MapOfScience {
public void setPubs(int pubs) { public void setPubs(int pubs) {
this.pubs = pubs; this.pubs = pubs;
} }
} }
} }

View file

@ -5,12 +5,19 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.Individual; import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.Individual;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SubjectEntityJSON { public class SubjectEntityJSON {
@JsonProperty
private String subjectEntityLabel; private String subjectEntityLabel;
@JsonProperty
private String subjectEntityURI; private String subjectEntityURI;
@JsonProperty
private Map<String, String> parentURIToLabel = new HashMap<String, String>(); private Map<String, String> parentURIToLabel = new HashMap<String, String>();
public SubjectEntityJSON(String subjectEntityURI, String label, public SubjectEntityJSON(String subjectEntityURI, String label,

View file

@ -12,13 +12,15 @@ import java.util.TreeMap;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.DateTimeFormatter;
import com.google.gson.Gson;
import edu.cornell.mannlib.vitro.webapp.beans.Individual; import edu.cornell.mannlib.vitro.webapp.beans.Individual;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; 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;
@ -151,10 +153,10 @@ public class UtilityFunctions {
GenericQueryMap errorDataResponse = new GenericQueryMap(); GenericQueryMap errorDataResponse = new GenericQueryMap();
errorDataResponse.addEntry("error", errorMessage); errorDataResponse.addEntry("error", errorMessage);
Gson jsonErrorResponse = new Gson(); ObjectMapper mapper = new ObjectMapper();
response.setContentType("application/octet-stream"); response.setContentType("application/octet-stream");
response.getWriter().write(jsonErrorResponse.toJson(errorDataResponse)); mapper.writeValue(response.getWriter(), errorDataResponse);
} }
public static DateTime getValidParsedDateTimeObject(String unparsedDateTime) { public static DateTime getValidParsedDateTimeObject(String unparsedDateTime) {

View file

@ -3,6 +3,7 @@ package edu.cornell.mannlib.vitro.webapp.visualization.visutils;
import java.util.Map; import java.util.Map;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.jena.query.Dataset; import org.apache.jena.query.Dataset;
@ -38,10 +39,10 @@ public interface VisualizationRequestHandler {
Object generateAjaxVisualization(VitroRequest vitroRequest, Object generateAjaxVisualization(VitroRequest vitroRequest,
Log log, Log log,
Dataset dataSource) throws MalformedQueryParametersException; Dataset dataSource) throws MalformedQueryParametersException, JsonProcessingException;
Map<String, String> generateDataVisualization(VitroRequest vitroRequest, Map<String, String> generateDataVisualization(VitroRequest vitroRequest,
Log log, Log log,
Dataset dataset) throws MalformedQueryParametersException; Dataset dataset) throws MalformedQueryParametersException, JsonProcessingException;
} }