[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>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>

View file

@ -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(),

View file

@ -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) {
try {
return visRequestHandler.generateDataVisualization(vitroRequest,
log,
dataset);
} else {
String errorMessage = "Data Model Empty &/or Inappropriate "
+ "query parameters were submitted. ";
throw new MalformedQueryParametersException(errorMessage);
log,
dataset);
} catch (JsonProcessingException e) {
}
}
String errorMessage = "Data Model Empty &/or Inappropriate "
+ "query parameters were submitted. ";
throw new MalformedQueryParametersException(errorMessage);
}
private VisualizationRequestHandler getVisualizationRequestHandler(

View file

@ -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 "";

View file

@ -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<CapabilityMapResult> results = new ArrayList<CapabilityMapResult>();
}

View file

@ -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;
}

View file

@ -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<String, String> 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<String, String> fileData = new HashMap<String, String>();
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<String, String> 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<String, String> fileData = new HashMap<String, String>();
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<String, String> prepareStandaloneDataErrorResponse() {
private Map<String, String> prepareStandaloneDataErrorResponse() throws JsonProcessingException {
GenericQueryMap errorDataResponse = new GenericQueryMap();
errorDataResponse.addEntry("error", "No Publications for this Entity found in VIVO.");
Gson jsonErrorResponse = new Gson();
Map<String, String> fileData = new HashMap<String, String>();
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<String, String> generateDataVisualization(VitroRequest vitroRequest, Log log, Dataset dataset)
throws MalformedQueryParametersException {
throws MalformedQueryParametersException, JsonProcessingException {
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.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<String, String> regenerateConstructedModels(VitroRequest vitroRequest,
Dataset dataSource) {
Dataset dataSource) throws JsonProcessingException {
VisualizationCaches.rebuildAll(vitroRequest.getRDFService());
@ -113,10 +114,9 @@ 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;
}

View file

@ -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<String, String> 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<String, String> 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<String, String> fileData = new HashMap<String, String>();
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);

View file

@ -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<String, String> 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<String, String> fileData = new HashMap<String, String>();
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<String, String> generateDataVisualization(VitroRequest vitroRequest, Log log, Dataset dataset)
throws MalformedQueryParametersException {
throws MalformedQueryParametersException, JsonProcessingException {
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.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;
@ -51,7 +55,7 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler {
public Object generateAjaxVisualization(VitroRequest vitroRequest,
Log log,
Dataset dataset)
throws MalformedQueryParametersException {
throws MalformedQueryParametersException, JsonProcessingException {
String individualURI = vitroRequest.getParameter(
VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY);
@ -80,9 +84,9 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler {
GenericQueryMap profilePropertiesToValues =
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
@ -138,11 +142,12 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler {
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)) {

View file

@ -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<List<Integer>> data = new ArrayList<List<Integer>>();
@JsonProperty
private String entityURI;
@JsonProperty
private String visMode;
@JsonProperty
private List<String> organizationType = new ArrayList<String>();
public List<String> getOrganizationTypes() {

View file

@ -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<Integer, Float> subdisciplineActivity = new HashMap<Integer, Float>();
@JsonProperty
private Set<SubEntityInfo> subEntities = new HashSet<SubEntityInfo>();
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;
}
}
}

View file

@ -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<String, String> parentURIToLabel = new HashMap<String, String>();
public SubjectEntityJSON(String subjectEntityURI, String label,

View file

@ -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) {

View file

@ -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<String, String> generateDataVisualization(VitroRequest vitroRequest,
Log log,
Dataset dataset) throws MalformedQueryParametersException;
Dataset dataset) throws MalformedQueryParametersException, JsonProcessingException;
}