1. Fix for incorrect error response in case of DataVisualization request. see http://issues.library.cornell.edu/browse/NIHVIVO-2200
2. Also fix for incorrect logic flow in resolving the highest level org.
This commit is contained in:
parent
d00685eee0
commit
e14b399147
4 changed files with 279 additions and 294 deletions
|
@ -79,13 +79,9 @@ public class DataVisualizationController extends VitroHttpServlet {
|
|||
|
||||
} catch (MalformedQueryParametersException e) {
|
||||
|
||||
UtilityFunctions.handleMalformedParameters("Visualization Query Error",
|
||||
e.getMessage(),
|
||||
vreq,
|
||||
request,
|
||||
UtilityFunctions.handleMalformedParameters(e.getMessage(),
|
||||
response,
|
||||
log);
|
||||
|
||||
}
|
||||
|
||||
return;
|
||||
|
@ -93,10 +89,7 @@ public class DataVisualizationController extends VitroHttpServlet {
|
|||
} else {
|
||||
|
||||
UtilityFunctions.handleMalformedParameters(
|
||||
"Visualization Query Error",
|
||||
"Inappropriate query parameters were submitted.",
|
||||
vreq,
|
||||
request,
|
||||
response,
|
||||
log);
|
||||
|
||||
|
|
|
@ -140,8 +140,6 @@ public class EntityComparisonUtilityFunctions {
|
|||
Dataset dataset, VitroRequest vitroRequest)
|
||||
throws MalformedQueryParametersException {
|
||||
|
||||
String finalHighestLevelOrganizationURI = "";
|
||||
|
||||
String staffProvidedHighestLevelOrganization = ConfigurationProperties.getBean(vitroRequest)
|
||||
.getProperty("visualization.topLevelOrg");
|
||||
|
||||
|
@ -157,13 +155,15 @@ public class EntityComparisonUtilityFunctions {
|
|||
IRIFactory iRIFactory = IRIFactory.jenaImplementation();
|
||||
IRI iri = iRIFactory.create(staffProvidedHighestLevelOrganization);
|
||||
|
||||
if (iri.hasViolation(false)) {
|
||||
finalHighestLevelOrganizationURI = EntityComparisonUtilityFunctions
|
||||
.getHighestLevelOrganizationURI(log, dataset);
|
||||
} else {
|
||||
finalHighestLevelOrganizationURI = staffProvidedHighestLevelOrganization;
|
||||
|
||||
if (!iri.hasViolation(false)) {
|
||||
return staffProvidedHighestLevelOrganization;
|
||||
}
|
||||
}
|
||||
return finalHighestLevelOrganizationURI;
|
||||
}
|
||||
|
||||
/*
|
||||
* If the provided value was not proper compute it yourself.
|
||||
* */
|
||||
return EntityComparisonUtilityFunctions.getHighestLevelOrganizationURI(log, dataset);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,6 +51,7 @@ public class EntityPublicationCountRequestHandler implements
|
|||
log,
|
||||
dataset,
|
||||
vitroRequest);
|
||||
|
||||
}
|
||||
return prepareStandaloneMarkupResponse(vitroRequest, entityURI);
|
||||
}
|
||||
|
|
|
@ -1,277 +1,268 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
package edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import javax.servlet.RequestDispatcher;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.format.DateTimeFormatter;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.beans.Portal;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
|
||||
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.ParamMap;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.collaborationutils.CollaborationData;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Activity;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Collaborator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.SubEntity;
|
||||
|
||||
public class UtilityFunctions {
|
||||
|
||||
public static Map<String, Integer> getYearToActivityCount(
|
||||
Set<Activity> activities) {
|
||||
|
||||
/*
|
||||
* Create a map from the year to number of publications. Use the BiboDocument's
|
||||
* or Grant's parsedPublicationYear or parsedGrantYear to populate the data passed
|
||||
* via Activity's getParsedActivityYear.
|
||||
* */
|
||||
Map<String, Integer> yearToActivityCount = new TreeMap<String, Integer>();
|
||||
|
||||
for (Activity currentActivity : activities) {
|
||||
|
||||
/*
|
||||
* Increment the count because there is an entry already available for
|
||||
* that particular year.
|
||||
* */
|
||||
String activityYear = currentActivity.getParsedActivityYear();
|
||||
|
||||
if (yearToActivityCount.containsKey(activityYear)) {
|
||||
yearToActivityCount.put(activityYear,
|
||||
yearToActivityCount
|
||||
.get(activityYear) + 1);
|
||||
|
||||
} else {
|
||||
yearToActivityCount.put(activityYear, 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return yearToActivityCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is used to return a mapping between activity year & all the collaborators
|
||||
* that published with ego in that year.
|
||||
* @param collaborationData
|
||||
* @return
|
||||
*/
|
||||
public static Map<String, Set<Collaborator>> getActivityYearToCollaborators(
|
||||
CollaborationData collaborationData) {
|
||||
|
||||
Map<String, Set<Collaborator>> yearToCollaborators = new TreeMap<String,
|
||||
Set<Collaborator>>();
|
||||
|
||||
Collaborator egoCollaborator = collaborationData.getEgoCollaborator();
|
||||
|
||||
for (Collaborator currNode : collaborationData.getCollaborators()) {
|
||||
|
||||
/*
|
||||
* We have already printed the Ego Node info.
|
||||
* */
|
||||
if (currNode != egoCollaborator) {
|
||||
|
||||
for (String year : currNode.getYearToActivityCount().keySet()) {
|
||||
|
||||
Set<Collaborator> collaboratorNodes;
|
||||
|
||||
if (yearToCollaborators.containsKey(year)) {
|
||||
|
||||
collaboratorNodes = yearToCollaborators.get(year);
|
||||
collaboratorNodes.add(currNode);
|
||||
|
||||
} else {
|
||||
|
||||
collaboratorNodes = new HashSet<Collaborator>();
|
||||
collaboratorNodes.add(currNode);
|
||||
yearToCollaborators.put(year, collaboratorNodes);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return yearToCollaborators;
|
||||
}
|
||||
|
||||
/**
|
||||
* Currently the approach for slugifying filenames is naive. In future if there is need,
|
||||
* we can write more sophisticated method.
|
||||
* @param textToBeSlugified
|
||||
* @return
|
||||
*/
|
||||
public static String slugify(String textToBeSlugified) {
|
||||
String textBlockSeparator = "-";
|
||||
return StringUtils.removeEnd(StringUtils.substring(textToBeSlugified.toLowerCase().trim()
|
||||
.replaceAll("[^a-zA-Z0-9-]+", textBlockSeparator),
|
||||
0,
|
||||
VisConstants.MAX_NAME_TEXT_LENGTH),
|
||||
textBlockSeparator);
|
||||
}
|
||||
|
||||
|
||||
public static ResponseValues handleMalformedParameters(String errorPageTitle,
|
||||
String errorMessage,
|
||||
VitroRequest vitroRequest) {
|
||||
|
||||
Portal portal = vitroRequest.getPortal();
|
||||
|
||||
Map<String, Object> body = new HashMap<String, Object>();
|
||||
body.put("portalBean", portal);
|
||||
body.put("error", errorMessage);
|
||||
body.put("title", errorPageTitle);
|
||||
|
||||
return new TemplateResponseValues(VisualizationFrameworkConstants.ERROR_TEMPLATE, body);
|
||||
}
|
||||
|
||||
public static void handleMalformedParameters(String errorPageTitle,
|
||||
String errorMessage,
|
||||
VitroRequest vitroRequest,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response,
|
||||
Log log)
|
||||
throws ServletException, IOException {
|
||||
|
||||
Portal portal = vitroRequest.getPortal();
|
||||
|
||||
request.setAttribute("error", errorMessage);
|
||||
|
||||
RequestDispatcher requestDispatcher = request.getRequestDispatcher(Controllers.BASIC_JSP);
|
||||
request.setAttribute("bodyJsp", "/templates/visualization/visualization_error.jsp");
|
||||
request.setAttribute("portalBean", portal);
|
||||
request.setAttribute("title", errorPageTitle);
|
||||
|
||||
try {
|
||||
requestDispatcher.forward(request, response);
|
||||
} catch (Exception e) {
|
||||
log.error("EntityEditController could not forward to view.");
|
||||
log.error(e.getMessage());
|
||||
log.error(e.getStackTrace());
|
||||
}
|
||||
}
|
||||
|
||||
public static DateTime getValidParsedDateTimeObject(String unparsedDateTime) {
|
||||
|
||||
for (DateTimeFormatter currentFormatter : VOConstants.POSSIBLE_DATE_TIME_FORMATTERS) {
|
||||
|
||||
try {
|
||||
|
||||
DateTime dateTime = currentFormatter.parseDateTime(unparsedDateTime);
|
||||
return dateTime;
|
||||
|
||||
} catch (Exception e2) {
|
||||
/*
|
||||
* The current date-time formatter did not pass the muster.
|
||||
* */
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* This means that none of the date time formatters worked.
|
||||
* */
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will be called to get the inferred end year for the entity.
|
||||
* The 2 choices, in order, are,
|
||||
* 1. parsed year from core:DateTime object saved in core:dateTimeValue
|
||||
* 2. Default Entity Year
|
||||
* @return
|
||||
*/
|
||||
public static String getValidYearFromCoreDateTimeString(String inputDate,
|
||||
String defaultYearInCaseOfError) {
|
||||
/*
|
||||
* Always return default year identifier in case of an illegal parsed year.
|
||||
* */
|
||||
String parsedGrantYear = defaultYearInCaseOfError;
|
||||
|
||||
if (inputDate != null) {
|
||||
|
||||
DateTime validParsedDateTimeObject = UtilityFunctions
|
||||
.getValidParsedDateTimeObject(inputDate);
|
||||
|
||||
if (validParsedDateTimeObject != null) {
|
||||
return String.valueOf(validParsedDateTimeObject.getYear());
|
||||
}
|
||||
}
|
||||
|
||||
return parsedGrantYear;
|
||||
}
|
||||
|
||||
public static String getCSVDownloadURL(String individualURI, String visType, String visMode) {
|
||||
|
||||
ParamMap csvDownloadURLParams = null;
|
||||
|
||||
if (StringUtils.isBlank(visMode)) {
|
||||
|
||||
csvDownloadURLParams = new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY,
|
||||
individualURI,
|
||||
VisualizationFrameworkConstants.VIS_TYPE_KEY,
|
||||
visType);
|
||||
|
||||
} else {
|
||||
|
||||
csvDownloadURLParams = new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY,
|
||||
individualURI,
|
||||
VisualizationFrameworkConstants.VIS_TYPE_KEY,
|
||||
visType,
|
||||
VisualizationFrameworkConstants.VIS_MODE_KEY,
|
||||
visMode);
|
||||
|
||||
}
|
||||
|
||||
String csvDownloadLink = UrlBuilder.getUrl(
|
||||
VisualizationFrameworkConstants
|
||||
.DATA_VISUALIZATION_SERVICE_URL_PREFIX,
|
||||
csvDownloadURLParams);
|
||||
|
||||
return csvDownloadLink != null ? csvDownloadLink : "" ;
|
||||
|
||||
}
|
||||
|
||||
public static String getCollaboratorshipNetworkLink(String individualURI,
|
||||
String visType,
|
||||
String visMode) {
|
||||
|
||||
ParamMap collaboratorshipNetworkURLParams = new ParamMap(
|
||||
VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY,
|
||||
individualURI,
|
||||
VisualizationFrameworkConstants.VIS_TYPE_KEY,
|
||||
visType,
|
||||
VisualizationFrameworkConstants.VIS_MODE_KEY,
|
||||
visMode);
|
||||
|
||||
String collaboratorshipNetworkURL = UrlBuilder.getUrl(
|
||||
VisualizationFrameworkConstants.FREEMARKERIZED_VISUALIZATION_URL_PREFIX,
|
||||
collaboratorshipNetworkURLParams);
|
||||
|
||||
return collaboratorshipNetworkURL != null ? collaboratorshipNetworkURL : "" ;
|
||||
}
|
||||
|
||||
public static boolean isEntityAPerson(VitroRequest vreq, SubEntity subentity) {
|
||||
return vreq.getWebappDaoFactory()
|
||||
.getIndividualDao()
|
||||
.getIndividualByURI(subentity.getIndividualURI())
|
||||
.isVClass("http://xmlns.com/foaf/0.1/Person");
|
||||
}
|
||||
|
||||
}
|
||||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
package edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import javax.servlet.RequestDispatcher;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.commons.lang.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.Portal;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
|
||||
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.ParamMap;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.DataVisualizationController;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.collaborationutils.CollaborationData;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Activity;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Collaborator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.GenericQueryMap;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.SubEntity;
|
||||
|
||||
public class UtilityFunctions {
|
||||
|
||||
public static Map<String, Integer> getYearToActivityCount(
|
||||
Set<Activity> activities) {
|
||||
|
||||
/*
|
||||
* Create a map from the year to number of publications. Use the BiboDocument's
|
||||
* or Grant's parsedPublicationYear or parsedGrantYear to populate the data passed
|
||||
* via Activity's getParsedActivityYear.
|
||||
* */
|
||||
Map<String, Integer> yearToActivityCount = new TreeMap<String, Integer>();
|
||||
|
||||
for (Activity currentActivity : activities) {
|
||||
|
||||
/*
|
||||
* Increment the count because there is an entry already available for
|
||||
* that particular year.
|
||||
* */
|
||||
String activityYear = currentActivity.getParsedActivityYear();
|
||||
|
||||
if (yearToActivityCount.containsKey(activityYear)) {
|
||||
yearToActivityCount.put(activityYear,
|
||||
yearToActivityCount
|
||||
.get(activityYear) + 1);
|
||||
|
||||
} else {
|
||||
yearToActivityCount.put(activityYear, 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return yearToActivityCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is used to return a mapping between activity year & all the collaborators
|
||||
* that published with ego in that year.
|
||||
* @param collaborationData
|
||||
* @return
|
||||
*/
|
||||
public static Map<String, Set<Collaborator>> getActivityYearToCollaborators(
|
||||
CollaborationData collaborationData) {
|
||||
|
||||
Map<String, Set<Collaborator>> yearToCollaborators = new TreeMap<String,
|
||||
Set<Collaborator>>();
|
||||
|
||||
Collaborator egoCollaborator = collaborationData.getEgoCollaborator();
|
||||
|
||||
for (Collaborator currNode : collaborationData.getCollaborators()) {
|
||||
|
||||
/*
|
||||
* We have already printed the Ego Node info.
|
||||
* */
|
||||
if (currNode != egoCollaborator) {
|
||||
|
||||
for (String year : currNode.getYearToActivityCount().keySet()) {
|
||||
|
||||
Set<Collaborator> collaboratorNodes;
|
||||
|
||||
if (yearToCollaborators.containsKey(year)) {
|
||||
|
||||
collaboratorNodes = yearToCollaborators.get(year);
|
||||
collaboratorNodes.add(currNode);
|
||||
|
||||
} else {
|
||||
|
||||
collaboratorNodes = new HashSet<Collaborator>();
|
||||
collaboratorNodes.add(currNode);
|
||||
yearToCollaborators.put(year, collaboratorNodes);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return yearToCollaborators;
|
||||
}
|
||||
|
||||
/**
|
||||
* Currently the approach for slugifying filenames is naive. In future if there is need,
|
||||
* we can write more sophisticated method.
|
||||
* @param textToBeSlugified
|
||||
* @return
|
||||
*/
|
||||
public static String slugify(String textToBeSlugified) {
|
||||
String textBlockSeparator = "-";
|
||||
return StringUtils.removeEnd(StringUtils.substring(textToBeSlugified.toLowerCase().trim()
|
||||
.replaceAll("[^a-zA-Z0-9-]+", textBlockSeparator),
|
||||
0,
|
||||
VisConstants.MAX_NAME_TEXT_LENGTH),
|
||||
textBlockSeparator);
|
||||
}
|
||||
|
||||
|
||||
public static ResponseValues handleMalformedParameters(String errorPageTitle,
|
||||
String errorMessage,
|
||||
VitroRequest vitroRequest) {
|
||||
|
||||
Portal portal = vitroRequest.getPortal();
|
||||
|
||||
Map<String, Object> body = new HashMap<String, Object>();
|
||||
body.put("portalBean", portal);
|
||||
body.put("error", errorMessage);
|
||||
body.put("title", errorPageTitle);
|
||||
|
||||
return new TemplateResponseValues(VisualizationFrameworkConstants.ERROR_TEMPLATE, body);
|
||||
}
|
||||
|
||||
public static void handleMalformedParameters(String errorMessage,
|
||||
HttpServletResponse response,
|
||||
Log log)
|
||||
throws IOException {
|
||||
|
||||
GenericQueryMap errorDataResponse = new GenericQueryMap();
|
||||
errorDataResponse.addEntry("error", errorMessage);
|
||||
|
||||
Gson jsonErrorResponse = new Gson();
|
||||
|
||||
response.setContentType("application/octet-stream");
|
||||
response.getWriter().write(jsonErrorResponse.toJson(errorDataResponse));
|
||||
}
|
||||
|
||||
public static DateTime getValidParsedDateTimeObject(String unparsedDateTime) {
|
||||
|
||||
for (DateTimeFormatter currentFormatter : VOConstants.POSSIBLE_DATE_TIME_FORMATTERS) {
|
||||
|
||||
try {
|
||||
|
||||
DateTime dateTime = currentFormatter.parseDateTime(unparsedDateTime);
|
||||
return dateTime;
|
||||
|
||||
} catch (Exception e2) {
|
||||
/*
|
||||
* The current date-time formatter did not pass the muster.
|
||||
* */
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* This means that none of the date time formatters worked.
|
||||
* */
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will be called to get the inferred end year for the entity.
|
||||
* The 2 choices, in order, are,
|
||||
* 1. parsed year from core:DateTime object saved in core:dateTimeValue
|
||||
* 2. Default Entity Year
|
||||
* @return
|
||||
*/
|
||||
public static String getValidYearFromCoreDateTimeString(String inputDate,
|
||||
String defaultYearInCaseOfError) {
|
||||
/*
|
||||
* Always return default year identifier in case of an illegal parsed year.
|
||||
* */
|
||||
String parsedGrantYear = defaultYearInCaseOfError;
|
||||
|
||||
if (inputDate != null) {
|
||||
|
||||
DateTime validParsedDateTimeObject = UtilityFunctions
|
||||
.getValidParsedDateTimeObject(inputDate);
|
||||
|
||||
if (validParsedDateTimeObject != null) {
|
||||
return String.valueOf(validParsedDateTimeObject.getYear());
|
||||
}
|
||||
}
|
||||
|
||||
return parsedGrantYear;
|
||||
}
|
||||
|
||||
public static String getCSVDownloadURL(String individualURI, String visType, String visMode) {
|
||||
|
||||
ParamMap csvDownloadURLParams = null;
|
||||
|
||||
if (StringUtils.isBlank(visMode)) {
|
||||
|
||||
csvDownloadURLParams = new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY,
|
||||
individualURI,
|
||||
VisualizationFrameworkConstants.VIS_TYPE_KEY,
|
||||
visType);
|
||||
|
||||
} else {
|
||||
|
||||
csvDownloadURLParams = new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY,
|
||||
individualURI,
|
||||
VisualizationFrameworkConstants.VIS_TYPE_KEY,
|
||||
visType,
|
||||
VisualizationFrameworkConstants.VIS_MODE_KEY,
|
||||
visMode);
|
||||
|
||||
}
|
||||
|
||||
String csvDownloadLink = UrlBuilder.getUrl(
|
||||
VisualizationFrameworkConstants
|
||||
.DATA_VISUALIZATION_SERVICE_URL_PREFIX,
|
||||
csvDownloadURLParams);
|
||||
|
||||
return csvDownloadLink != null ? csvDownloadLink : "" ;
|
||||
|
||||
}
|
||||
|
||||
public static String getCollaboratorshipNetworkLink(String individualURI,
|
||||
String visType,
|
||||
String visMode) {
|
||||
|
||||
ParamMap collaboratorshipNetworkURLParams = new ParamMap(
|
||||
VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY,
|
||||
individualURI,
|
||||
VisualizationFrameworkConstants.VIS_TYPE_KEY,
|
||||
visType,
|
||||
VisualizationFrameworkConstants.VIS_MODE_KEY,
|
||||
visMode);
|
||||
|
||||
String collaboratorshipNetworkURL = UrlBuilder.getUrl(
|
||||
VisualizationFrameworkConstants.FREEMARKERIZED_VISUALIZATION_URL_PREFIX,
|
||||
collaboratorshipNetworkURLParams);
|
||||
|
||||
return collaboratorshipNetworkURL != null ? collaboratorshipNetworkURL : "" ;
|
||||
}
|
||||
|
||||
public static boolean isEntityAPerson(VitroRequest vreq, SubEntity subentity) {
|
||||
return vreq.getWebappDaoFactory()
|
||||
.getIndividualDao()
|
||||
.getIndividualByURI(subentity.getIndividualURI())
|
||||
.isVClass("http://xmlns.com/foaf/0.1/Person");
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue