diff --git a/api/pom.xml b/api/pom.xml index 027e7ffe..8e3d6492 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -35,11 +35,6 @@ fluent-hc 4.5.3 - - com.google.code.gson - gson - 2.8.2 - com.itextpdf itextpdf diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/visualization/AjaxVisualizationController.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/visualization/AjaxVisualizationController.java index 1aa8f67b..cf56ac93 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/visualization/AjaxVisualizationController.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/visualization/AjaxVisualizationController.java @@ -10,6 +10,7 @@ import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.fasterxml.jackson.core.JsonProcessingException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -140,7 +141,7 @@ public class AjaxVisualizationController extends FreemarkerHttpServlet { return visRequestHandler.generateAjaxVisualization(vitroRequest, log, dataset); - } catch (MalformedQueryParametersException e) { + } catch (JsonProcessingException|MalformedQueryParametersException e) { return UtilityFunctions.handleMalformedParameters( "Ajax Visualization Query Error - Individual Publication Count", e.getMessage(), diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/visualization/DataVisualizationController.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/visualization/DataVisualizationController.java index 864da198..bd5d4d03 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/visualization/DataVisualizationController.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/visualization/DataVisualizationController.java @@ -10,6 +10,7 @@ import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.fasterxml.jackson.core.JsonProcessingException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -126,18 +127,18 @@ public class DataVisualizationController extends VitroHttpServlet { Dataset dataset = setupJENADataSource(vitroRequest); if (dataset != null && visRequestHandler != null) { - return visRequestHandler.generateDataVisualization(vitroRequest, - log, - dataset); - - } else { - - String errorMessage = "Data Model Empty &/or Inappropriate " - + "query parameters were submitted. "; - - throw new MalformedQueryParametersException(errorMessage); - + try { + return visRequestHandler.generateDataVisualization(vitroRequest, + log, + dataset); + } catch (JsonProcessingException e) { + } } + + String errorMessage = "Data Model Empty &/or Inappropriate " + + "query parameters were submitted. "; + + throw new MalformedQueryParametersException(errorMessage); } private VisualizationRequestHandler getVisualizationRequestHandler( diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapRequestHandler.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapRequestHandler.java index 0e4cfbcf..07a96f29 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapRequestHandler.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapRequestHandler.java @@ -2,7 +2,11 @@ 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.jena.query.Dataset; import org.apache.jena.query.QueryExecution; @@ -49,7 +53,7 @@ public class CapabilityMapRequestHandler implements VisualizationRequestHandler } @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()); ConceptPeopleMap conceptPeopleMap = VisualizationCaches.conceptToPeopleMap.getNoWait(vitroRequest.getRDFService()); OrganizationPeopleMap organizationPeopleMap = VisualizationCaches.organisationToPeopleMap.getNoWait(vitroRequest.getRDFService()); @@ -67,8 +71,8 @@ public class CapabilityMapRequestHandler implements VisualizationRequestHandler } } - Gson gson = new Gson(); - return gson.toJson(concepts); + ObjectMapper mapper = new ObjectMapper(); + return mapper.writeValueAsString(concepts); } return ""; } @@ -96,13 +100,13 @@ public class CapabilityMapRequestHandler implements VisualizationRequestHandler } response.results.add(result); - Gson gson = new Gson(); + ObjectMapper mapper = new ObjectMapper(); String callback = vitroRequest.getParameter("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"); @@ -150,13 +154,12 @@ public class CapabilityMapRequestHandler implements VisualizationRequestHandler response.results.add(result); } - Gson gson = new Gson(); - + ObjectMapper mapper = new ObjectMapper(); String callback = vitroRequest.getParameter("callback"); if (!StringUtils.isEmpty(callback)) { - return callback + "(" + gson.toJson(response) + ");"; + return callback + "(" + mapper.writeValueAsString(response) + ");"; } - return gson.toJson(response); + return mapper.writeValueAsString(response); } return ""; diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapResponse.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapResponse.java index aebd6614..d6a002a4 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapResponse.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapResponse.java @@ -2,9 +2,14 @@ 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.List; +@JsonInclude(JsonInclude.Include.NON_NULL) class CapabilityMapResponse { + @JsonProperty List results = new ArrayList(); } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapResult.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapResult.java index c9231ff4..acf53f3a 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapResult.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/capabilitymap/CapabilityMapResult.java @@ -2,67 +2,71 @@ 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 { + @JsonProperty String[] clusters; - @SerializedName("md_1") + @JsonProperty("md_1") String profileId; - @SerializedName("md_2") + @JsonProperty("md_2") String description; - @SerializedName("md_3") + @JsonProperty("md_3") String thumbNail; - @SerializedName("md_4") + @JsonProperty("md_4") String department; - @SerializedName("md_5") + @JsonProperty("md_5") String overview; - @SerializedName("md_6") + @JsonProperty("md_6") String geographicFocus; - @SerializedName("md_7") + @JsonProperty("md_7") String geographicLocation; - @SerializedName("md_8") + @JsonProperty("md_8") String[] grants; - @SerializedName("md_A") + @JsonProperty("md_A") String firstName; - @SerializedName("md_B") + @JsonProperty("md_B") String lastName; - @SerializedName("md_F") + @JsonProperty("md_F") String fax; - @SerializedName("md_G") + @JsonProperty("md_G") String email; - @SerializedName("md_H") + @JsonProperty("md_H") String availableForSupervision; - @SerializedName("md_I") + @JsonProperty("md_I") String homepage; - @SerializedName("md_L") + @JsonProperty("md_L") String phoneNumber; - @SerializedName("md_U") + @JsonProperty("md_U") String[] publications; - @SerializedName("md_X") + @JsonProperty("md_X") String[] researchOverview; - @SerializedName("md_Y") + @JsonProperty("md_Y") String[] subjectArea; - @SerializedName("md_Z") + @JsonProperty("md_Z") String preferredTitle; + @JsonProperty String query; } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/mapofscience/MapOfScienceVisualizationRequestHandler.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/mapofscience/MapOfScienceVisualizationRequestHandler.java index 23b46557..cdf8992b 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/mapofscience/MapOfScienceVisualizationRequestHandler.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/mapofscience/MapOfScienceVisualizationRequestHandler.java @@ -9,6 +9,11 @@ import java.util.HashSet; import java.util.Map; 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 edu.cornell.mannlib.vitro.webapp.beans.Individual; 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.logging.Log; -import com.google.gson.Gson; import org.apache.jena.query.Dataset; import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.AuthorizationRequest; @@ -164,7 +168,7 @@ public class MapOfScienceVisualizationRequestHandler implements VisualizationReq private Map getSubjectPersonEntityAndGenerateDataResponse( VitroRequest vitroRequest, String subjectEntityURI, String entityLabel, VisConstants.DataVisMode dataOuputFormat) - throws MalformedQueryParametersException { + throws MalformedQueryParametersException, JsonProcessingException { long startTime = System.currentTimeMillis(); try { @@ -191,7 +195,6 @@ public class MapOfScienceVisualizationRequestHandler implements VisualizationReq Map fileData = new HashMap(); if (VisConstants.DataVisMode.JSON.equals(dataOuputFormat)) { - Gson json = new Gson(); Set jsonContent = new HashSet(); MapOfScience entityJson = new MapOfScience(subjectEntityURI); @@ -203,8 +206,10 @@ public class MapOfScienceVisualizationRequestHandler implements VisualizationReq jsonContent.add(entityJson); + ObjectMapper mapper = new ObjectMapper(); + 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 { if (StringUtils.isBlank(entityLabel)) { entityLabel = "no-name"; @@ -239,7 +244,7 @@ public class MapOfScienceVisualizationRequestHandler implements VisualizationReq private Map getSubjectEntityAndGenerateDataResponse( VitroRequest vitroRequest, String subjectEntityURI, String entityLabel, VisConstants.DataVisMode dataOuputFormat) - throws MalformedQueryParametersException { + throws MalformedQueryParametersException, JsonProcessingException { RDFService rdfService = vitroRequest.getRDFService(); @@ -290,7 +295,6 @@ public class MapOfScienceVisualizationRequestHandler implements VisualizationReq Map fileData = new HashMap(); if (VisConstants.DataVisMode.JSON.equals(dataOuputFormat)) { - Gson json = new Gson(); Set jsonContent = new HashSet(); MapOfScience entityJson = new MapOfScience(subjectEntityURI); @@ -312,8 +316,10 @@ public class MapOfScienceVisualizationRequestHandler implements VisualizationReq jsonContent.add(entityJson); + ObjectMapper mapper = new ObjectMapper(); + 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 { if (StringUtils.isBlank(entityLabel)) { entityLabel = "no-organization"; @@ -356,26 +362,25 @@ public class MapOfScienceVisualizationRequestHandler implements VisualizationReq return fileData; } - private Map prepareStandaloneDataErrorResponse() { + private Map prepareStandaloneDataErrorResponse() throws JsonProcessingException { GenericQueryMap errorDataResponse = new GenericQueryMap(); errorDataResponse.addEntry("error", "No Publications for this Entity found in VIVO."); - Gson jsonErrorResponse = new Gson(); - Map fileData = new HashMap(); fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY, "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; } @Override public Map generateDataVisualization(VitroRequest vitroRequest, Log log, Dataset dataset) - throws MalformedQueryParametersException { + throws MalformedQueryParametersException, JsonProcessingException { String entityURI = vitroRequest.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/ModelConstructorRequestHandler.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/ModelConstructorRequestHandler.java index 2337e0d5..1cd82b18 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/ModelConstructorRequestHandler.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/ModelConstructorRequestHandler.java @@ -9,10 +9,11 @@ import java.util.List; import java.util.Map; 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 org.apache.commons.logging.Log; -import com.google.gson.Gson; import org.apache.jena.query.Dataset; import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission; @@ -35,7 +36,7 @@ public class ModelConstructorRequestHandler implements @Override public Object generateAjaxVisualization(VitroRequest vitroRequest, Log log, - Dataset dataSource) throws MalformedQueryParametersException { + Dataset dataSource) throws MalformedQueryParametersException, JsonProcessingException { return regenerateConstructedModels(vitroRequest, dataSource); } @@ -82,7 +83,7 @@ public class ModelConstructorRequestHandler implements } private Map regenerateConstructedModels(VitroRequest vitroRequest, - Dataset dataSource) { + Dataset dataSource) throws JsonProcessingException { VisualizationCaches.rebuildAll(vitroRequest.getRDFService()); @@ -112,11 +113,10 @@ public class ModelConstructorRequestHandler implements fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY, "application/octet-stream"); - - Gson json = new Gson(); - + + ObjectMapper mapper = new ObjectMapper(); fileData.put(DataVisualizationController.FILE_CONTENT_KEY, - json.toJson(refreshedModels)); + mapper.writeValueAsString(refreshedModels)); return fileData; } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/temporalgraph/TemporalGrantVisualizationRequestHandler.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/temporalgraph/TemporalGrantVisualizationRequestHandler.java index eec48eff..10986918 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/temporalgraph/TemporalGrantVisualizationRequestHandler.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/temporalgraph/TemporalGrantVisualizationRequestHandler.java @@ -10,6 +10,11 @@ import java.util.List; import java.util.Map; 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.visualization.model.OrganizationPeopleMap; 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.logging.Log; -import com.google.gson.Gson; import org.apache.jena.query.Dataset; import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.AuthorizationRequest; @@ -77,7 +81,7 @@ public class TemporalGrantVisualizationRequestHandler implements @Override public Map generateDataVisualization(VitroRequest vitroRequest, Log log, Dataset dataset) - throws MalformedQueryParametersException { + throws MalformedQueryParametersException, JsonProcessingException { String entityURI = vitroRequest.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY); @@ -137,7 +141,7 @@ public class TemporalGrantVisualizationRequestHandler implements private Map getSubjectEntityAndGenerateDataResponse( VitroRequest vitroRequest, Log log, Dataset dataset, String subjectEntityURI, VisConstants.DataVisMode visMode) - throws MalformedQueryParametersException { + throws MalformedQueryParametersException, JsonProcessingException { RDFService rdfService = vitroRequest.getRDFService(); @@ -184,7 +188,6 @@ public class TemporalGrantVisualizationRequestHandler implements Map fileData = new HashMap(); if (VisConstants.DataVisMode.JSON.equals(visMode)) { - Gson json = new Gson(); Set subEntitiesJson = new HashSet(); // For each suborganisation @@ -234,8 +237,10 @@ public class TemporalGrantVisualizationRequestHandler implements subEntitiesJson.add(subjectEntityJSON); + ObjectMapper mapper = new ObjectMapper(); + 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 { String entityLabel = orgLabelMap.get(subjectEntityURI); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/temporalgraph/TemporalPublicationVisualizationRequestHandler.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/temporalgraph/TemporalPublicationVisualizationRequestHandler.java index 724272ff..02b0a576 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/temporalgraph/TemporalPublicationVisualizationRequestHandler.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/temporalgraph/TemporalPublicationVisualizationRequestHandler.java @@ -10,6 +10,11 @@ import java.util.List; import java.util.Map; 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.visualization.model.OrganizationPeopleMap; 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.logging.Log; -import com.google.gson.Gson; import org.apache.jena.query.Dataset; import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.AuthorizationRequest; @@ -74,7 +78,7 @@ public class TemporalPublicationVisualizationRequestHandler implements private Map getSubjectEntityAndGenerateDataResponse( VitroRequest vitroRequest, Log log, Dataset dataset, String subjectEntityURI, VisConstants.DataVisMode visMode) - throws MalformedQueryParametersException { + throws MalformedQueryParametersException, JsonProcessingException { RDFService rdfService = vitroRequest.getRDFService(); @@ -121,7 +125,6 @@ public class TemporalPublicationVisualizationRequestHandler implements Map fileData = new HashMap(); if (VisConstants.DataVisMode.JSON.equals(visMode)) { - Gson json = new Gson(); Set subEntitiesJson = new HashSet(); // For each suborganisation @@ -171,8 +174,10 @@ public class TemporalPublicationVisualizationRequestHandler implements subEntitiesJson.add(subjectEntityJSON); + ObjectMapper mapper = new ObjectMapper(); + 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 { String entityLabel = orgLabelMap.get(subjectEntityURI); @@ -240,7 +245,7 @@ public class TemporalPublicationVisualizationRequestHandler implements @Override public Map generateDataVisualization(VitroRequest vitroRequest, Log log, Dataset dataset) - throws MalformedQueryParametersException { + throws MalformedQueryParametersException, JsonProcessingException { String entityURI = vitroRequest.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY); @@ -308,4 +313,4 @@ public class TemporalPublicationVisualizationRequestHandler implements // TODO Auto-generated method stub return null; } -} +} diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/utilities/UtilitiesRequestHandler.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/utilities/UtilitiesRequestHandler.java index 75df4be6..1496132e 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/utilities/UtilitiesRequestHandler.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/utilities/UtilitiesRequestHandler.java @@ -5,6 +5,11 @@ package edu.cornell.mannlib.vitro.webapp.visualization.utilities; import java.util.HashMap; 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 org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -13,7 +18,6 @@ import org.apache.jena.iri.IRIFactory; import org.apache.jena.iri.Violation; import org.vivoweb.webapp.util.ModelUtils; -import com.google.gson.Gson; import org.apache.jena.query.Dataset; import org.apache.jena.query.QuerySolution; import org.apache.jena.query.ResultSet; @@ -50,8 +54,8 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler { public Object generateAjaxVisualization(VitroRequest vitroRequest, Log log, - Dataset dataset) - throws MalformedQueryParametersException { + Dataset dataset) + throws MalformedQueryParametersException, JsonProcessingException { String individualURI = vitroRequest.getParameter( VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY); @@ -79,11 +83,11 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler { GenericQueryMap profilePropertiesToValues = profileQueryHandler.getQueryResult(); - - Gson profileInformation = new Gson(); - - return profileInformation.toJson(profilePropertiesToValues); - + + ObjectMapper mapper = new ObjectMapper(); + + return mapper.writeValueAsString(profilePropertiesToValues); + } else if (VisualizationFrameworkConstants.IMAGE_UTILS_VIS_MODE .equalsIgnoreCase(visMode)) { @@ -137,13 +141,14 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler { whereClause, groupOrderClause, dataset); - - Gson publicationsInformation = new Gson(); NumPubsForIndividualConsumer consumer = new NumPubsForIndividualConsumer(); 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 .equalsIgnoreCase(visMode)) { @@ -179,12 +184,11 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler { "", dataset); - Gson grantsInformation = new Gson(); - NumGrantsForIndividualConsumer consumer = new NumGrantsForIndividualConsumer(); 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 .equalsIgnoreCase(visMode)) { diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/json/JsonObject.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/json/JsonObject.java index 30018254..0ae885bf 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/json/JsonObject.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/json/JsonObject.java @@ -1,6 +1,9 @@ /* $This file is distributed under the terms of the license in LICENSE$ */ 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.List; import java.util.Set; @@ -11,13 +14,24 @@ import java.util.Set; * @author bkoniden * Deepak Konidena */ +@JsonInclude(JsonInclude.Include.NON_NULL) public class JsonObject { - + @JsonProperty private String label; + + @JsonProperty private String lastCachedAtDateTime; + + @JsonProperty private List> data = new ArrayList>(); + + @JsonProperty private String entityURI; + + @JsonProperty private String visMode; + + @JsonProperty private List organizationType = new ArrayList(); public List getOrganizationTypes() { diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/json/MapOfScience.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/json/MapOfScience.java index edac28e1..4904e19b 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/json/MapOfScience.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/json/MapOfScience.java @@ -1,21 +1,41 @@ /* $This file is distributed under the terms of the license in LICENSE$ */ 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.HashSet; import java.util.Map; import java.util.Set; +@JsonInclude(JsonInclude.Include.NON_NULL) public class MapOfScience { - + @JsonProperty private String uri; + + @JsonProperty private String label; + + @JsonProperty private String type; + + @JsonProperty private int pubsMapped; + + @JsonProperty private int pubsWithNoJournals; + + @JsonProperty private int pubsWithInvalidJournals; + + @JsonProperty private String lastCachedAtDateTime; + + @JsonProperty private Map subdisciplineActivity = new HashMap(); + + @JsonProperty private Set subEntities = new HashSet(); public MapOfScience(String uri) { @@ -84,11 +104,18 @@ public class MapOfScience { return subEntities; } + @JsonInclude(JsonInclude.Include.NON_NULL) private class SubEntityInfo { - + @JsonProperty private String uri; + + @JsonProperty private String label; + + @JsonProperty private String type; + + @JsonProperty private int pubs; public SubEntityInfo(String uri, String label, String type, int pubs) { @@ -129,7 +156,5 @@ public class MapOfScience { public void setPubs(int pubs) { this.pubs = pubs; } - - } } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/json/SubjectEntityJSON.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/json/SubjectEntityJSON.java index dd7a1f97..84ef1aee 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/json/SubjectEntityJSON.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/json/SubjectEntityJSON.java @@ -5,12 +5,19 @@ import java.util.HashMap; import java.util.Map; 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; +@JsonInclude(JsonInclude.Include.NON_NULL) public class SubjectEntityJSON { - + @JsonProperty private String subjectEntityLabel; + + @JsonProperty private String subjectEntityURI; + + @JsonProperty private Map parentURIToLabel = new HashMap(); public SubjectEntityJSON(String subjectEntityURI, String label, diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/visutils/UtilityFunctions.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/visutils/UtilityFunctions.java index b269197a..7afa6110 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/visutils/UtilityFunctions.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/visutils/UtilityFunctions.java @@ -12,13 +12,15 @@ import java.util.TreeMap; 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.logging.Log; import org.joda.time.DateTime; 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.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; @@ -151,10 +153,10 @@ public class UtilityFunctions { GenericQueryMap errorDataResponse = new GenericQueryMap(); errorDataResponse.addEntry("error", errorMessage); - Gson jsonErrorResponse = new Gson(); - + ObjectMapper mapper = new ObjectMapper(); + response.setContentType("application/octet-stream"); - response.getWriter().write(jsonErrorResponse.toJson(errorDataResponse)); + mapper.writeValue(response.getWriter(), errorDataResponse); } public static DateTime getValidParsedDateTimeObject(String unparsedDateTime) { diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/visutils/VisualizationRequestHandler.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/visutils/VisualizationRequestHandler.java index 7afd1237..fc95f991 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/visutils/VisualizationRequestHandler.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/visualization/visutils/VisualizationRequestHandler.java @@ -3,6 +3,7 @@ package edu.cornell.mannlib.vitro.webapp.visualization.visutils; import java.util.Map; +import com.fasterxml.jackson.core.JsonProcessingException; import org.apache.commons.logging.Log; import org.apache.jena.query.Dataset; @@ -38,10 +39,10 @@ public interface VisualizationRequestHandler { Object generateAjaxVisualization(VitroRequest vitroRequest, Log log, - Dataset dataSource) throws MalformedQueryParametersException; + Dataset dataSource) throws MalformedQueryParametersException, JsonProcessingException; Map generateDataVisualization(VitroRequest vitroRequest, Log log, - Dataset dataset) throws MalformedQueryParametersException; + Dataset dataset) throws MalformedQueryParametersException, JsonProcessingException; }