diff --git a/productMods/WEB-INF/visualization/visualizations-beans-injection-fm.xml b/productMods/WEB-INF/visualization/visualizations-beans-injection-fm.xml index 4f275f63..50831035 100644 --- a/productMods/WEB-INF/visualization/visualizations-beans-injection-fm.xml +++ b/productMods/WEB-INF/visualization/visualizations-beans-injection-fm.xml @@ -43,6 +43,9 @@ + + @@ -111,6 +114,10 @@ + + + + diff --git a/productMods/templates/freemarker/visualization/modelconstructor/regenerateConstructedModels.ftl b/productMods/templates/freemarker/visualization/modelconstructor/regenerateConstructedModels.ftl new file mode 100644 index 00000000..fda25f21 --- /dev/null +++ b/productMods/templates/freemarker/visualization/modelconstructor/regenerateConstructedModels.ftl @@ -0,0 +1,56 @@ +<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> + + +<#if (currentModels?size > 0)> + + + Below cached models will be regenerated.
+ +
    + <#list currentModels as model> +
  • + + <#if model.uri == ""> + + URI Independent Model + + <#else> + + ${model.individualLabel} + + + ${model.humanReadableType} + +
  • + +
+ +<#else> + + Currently there are no constructed models for use by visualization. + + + +${stylesheets.add('')} + +<#assign standardVisualizationURLRoot ="/visualization"> +<#assign ajaxVisualizationURLRoot ="/visualizationAjax"> +<#assign dataVisualizationURLRoot ="/visualizationData"> +<#assign shortVisualizationURLRoot ="/vis"> + +<#assign refreshCacheVisTypeParam = "refresh-cache"> + +<#assign regenerateCacheURL = "${urls.base}${ajaxVisualizationURLRoot}?vis=${refreshCacheVisTypeParam}"> + + \ No newline at end of file diff --git a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/AjaxVisualizationController.java b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/AjaxVisualizationController.java index cfc9e7c2..95231ee8 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/AjaxVisualizationController.java +++ b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/AjaxVisualizationController.java @@ -16,6 +16,7 @@ import com.hp.hpl.jena.query.Dataset; import com.hp.hpl.jena.query.Syntax; import com.hp.hpl.jena.rdf.model.Model; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerHttpServlet; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.TemplateProcessingHelper.TemplateProcessingException; @@ -41,6 +42,27 @@ public class AjaxVisualizationController extends FreemarkerHttpServlet { protected static final Syntax SYNTAX = Syntax.syntaxARQ; public static ServletContext servletContext; + + @Override + protected Actions requiredActions(VitroRequest vreq) { + + /* + * Based on the query parameters passed via URI get the appropriate visualization + * request handler. + * */ + VisualizationRequestHandler visRequestHandler = + getVisualizationRequestHandler(vreq); + + if (visRequestHandler != null) { + + Actions requiredPrivileges = visRequestHandler.getRequiredPrivileges(); + if (requiredPrivileges != null) { + return requiredPrivileges; + } + } + + return super.requiredActions(vreq); + } @Override public void doGet(HttpServletRequest request, HttpServletResponse response) diff --git a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/DataVisualizationController.java b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/DataVisualizationController.java index b032528b..a41b3d65 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/DataVisualizationController.java +++ b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/DataVisualizationController.java @@ -45,7 +45,7 @@ public class DataVisualizationController extends VitroHttpServlet { @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - + VitroRequest vreq = new VitroRequest(request); /* @@ -55,8 +55,15 @@ public class DataVisualizationController extends VitroHttpServlet { VisualizationRequestHandler visRequestHandler = getVisualizationRequestHandler(vreq); - if (visRequestHandler != null) { + if (visRequestHandler != null) { + + if (visRequestHandler.getRequiredPrivileges() != null) { + if (!isAuthorizedToDisplayPage(request, response, visRequestHandler.getRequiredPrivileges())) { + return; + } + } + /* * Pass the query to the selected visualization request handler & render the vis. * Since the visualization content is directly added to the response object we are side- diff --git a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/ShortURLVisualizationController.java b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/ShortURLVisualizationController.java index 204c0b9d..305fcc98 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/ShortURLVisualizationController.java +++ b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/ShortURLVisualizationController.java @@ -6,11 +6,9 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.regex.Matcher; import javax.servlet.ServletContext; -import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -18,6 +16,7 @@ import com.hp.hpl.jena.query.Dataset; import com.hp.hpl.jena.query.Syntax; import com.hp.hpl.jena.rdf.model.Model; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerHttpServlet; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; @@ -42,6 +41,25 @@ public class ShortURLVisualizationController extends FreemarkerHttpServlet { protected static final Syntax SYNTAX = Syntax.syntaxARQ; public static ServletContext servletContext; + + @Override + protected Actions requiredActions(VitroRequest vreq) { + /* + * Based on the query parameters passed via URI get the appropriate visualization + * request handler. + * */ + VisualizationRequestHandler visRequestHandler = + getVisualizationRequestHandler(vreq); + + if (visRequestHandler != null) { + + Actions requiredPrivileges = visRequestHandler.getRequiredPrivileges(); + if (requiredPrivileges != null) { + return requiredPrivileges; + } + } + return super.requiredActions(vreq); + } @Override protected ResponseValues processRequest(VitroRequest vreq) { @@ -145,7 +163,7 @@ public class ShortURLVisualizationController extends FreemarkerHttpServlet { * url. * */ String subjectURI = null; - if (StringUtils.isBlank(matchedPatternGroups.get(1))) { + if (matchedPatternGroups.size() <= 1) { subjectURI = vitroRequest.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY); @@ -226,21 +244,17 @@ public class ShortURLVisualizationController extends FreemarkerHttpServlet { * as an input. */ private List extractShortURLParameters(VitroRequest vitroRequest) { - - Matcher requestPatternMatcher = VisualizationFrameworkConstants - .SHORT_URL_REQUEST_PATTERN - .matcher(vitroRequest.getRequestURI() - .substring(vitroRequest.getContextPath().length())); List matchedGroups = new ArrayList(); - - if(requestPatternMatcher.matches() && requestPatternMatcher.groupCount() >= 1) { - - for (int ii=1; ii<=requestPatternMatcher.groupCount(); ii++) { - matchedGroups.add(requestPatternMatcher.group(ii)); - } - - } + + String[] urlParams = vitroRequest.getRequestURI().substring(vitroRequest.getContextPath().length()+1).split("/"); + + if (urlParams.length > 1 + && urlParams[0].equalsIgnoreCase("vis")) { + for (int ii=1; ii < urlParams.length; ii++) { + matchedGroups.add(urlParams[ii]); + } + } return matchedGroups; } diff --git a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/StandardVisualizationController.java b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/StandardVisualizationController.java index d01a9e38..21a61b86 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/StandardVisualizationController.java +++ b/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/StandardVisualizationController.java @@ -11,6 +11,7 @@ import com.hp.hpl.jena.query.Dataset; import com.hp.hpl.jena.query.Syntax; import com.hp.hpl.jena.rdf.model.Model; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerHttpServlet; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; @@ -35,10 +36,28 @@ public class StandardVisualizationController extends FreemarkerHttpServlet { protected static final Syntax SYNTAX = Syntax.syntaxARQ; public static ServletContext servletContext; + + @Override + protected Actions requiredActions(VitroRequest vreq) { + /* + * Based on the query parameters passed via URI get the appropriate visualization + * request handler. + * */ + VisualizationRequestHandler visRequestHandler = + getVisualizationRequestHandler(vreq); + + if (visRequestHandler != null) { + + Actions requiredPrivileges = visRequestHandler.getRequiredPrivileges(); + if (requiredPrivileges != null) { + return requiredPrivileges; + } + } + return super.requiredActions(vreq); + } @Override protected ResponseValues processRequest(VitroRequest vreq) { - /* * Based on the query parameters passed via URI get the appropriate visualization * request handler. @@ -122,6 +141,7 @@ public class StandardVisualizationController extends FreemarkerHttpServlet { .VIS_TYPE_KEY); VisualizationRequestHandler visRequestHandler = null; + try { visRequestHandler = VisualizationsDependencyInjector .getVisualizationIDsToClassMap(getServletContext()) diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/CoAuthorshipRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/CoAuthorshipRequestHandler.java index 5030b1d8..46858c61 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/CoAuthorshipRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/CoAuthorshipRequestHandler.java @@ -14,6 +14,7 @@ import org.apache.commons.logging.Log; import com.hp.hpl.jena.query.Dataset; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.visualization.DataVisualizationController; @@ -294,4 +295,9 @@ public class CoAuthorshipRequestHandler implements VisualizationRequestHandler { return fileData; } + @Override + public Actions getRequiredPrivileges() { + return null; + } + } diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/coprincipalinvestigator/CoPIGrantCountRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/coprincipalinvestigator/CoPIGrantCountRequestHandler.java index dfa8f7d5..12315336 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/coprincipalinvestigator/CoPIGrantCountRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/coprincipalinvestigator/CoPIGrantCountRequestHandler.java @@ -13,6 +13,7 @@ import org.apache.commons.logging.Log; import com.hp.hpl.jena.query.Dataset; import com.hp.hpl.jena.rdf.model.Model; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.visualization.DataVisualizationController; @@ -288,4 +289,9 @@ public class CoPIGrantCountRequestHandler implements VisualizationRequestHandler } + @Override + public Actions getRequiredPrivileges() { + return null; + } + } \ No newline at end of file diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/EntityPublicationCountRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/EntityPublicationCountRequestHandler.java index 84777e1c..0a84b842 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/EntityPublicationCountRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/EntityPublicationCountRequestHandler.java @@ -17,6 +17,7 @@ import com.google.gson.Gson; import com.hp.hpl.jena.query.Dataset; import com.hp.hpl.jena.rdf.model.Model; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; @@ -346,4 +347,10 @@ public class EntityPublicationCountRequestHandler implements return csvFileContent.toString(); } + @Override + public Actions getRequiredPrivileges() { + // TODO Auto-generated method stub + return null; + } + } \ No newline at end of file diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/cached/TemporalGrantVisualizationRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/cached/TemporalGrantVisualizationRequestHandler.java index 0588aafd..a7455f60 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/cached/TemporalGrantVisualizationRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/cached/TemporalGrantVisualizationRequestHandler.java @@ -16,6 +16,7 @@ import org.apache.commons.logging.Log; import com.google.gson.Gson; import com.hp.hpl.jena.query.Dataset; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; @@ -378,5 +379,11 @@ public class TemporalGrantVisualizationRequestHandler implements } return csvFileContent.toString(); + } + + + @Override + public Actions getRequiredPrivileges() { + return null; } } diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/cached/TemporalPublicationVisualizationRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/cached/TemporalPublicationVisualizationRequestHandler.java index 02015daf..49a73356 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/cached/TemporalPublicationVisualizationRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/cached/TemporalPublicationVisualizationRequestHandler.java @@ -16,6 +16,7 @@ import org.apache.commons.logging.Log; import com.google.gson.Gson; import com.hp.hpl.jena.query.Dataset; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; @@ -370,4 +371,10 @@ public class TemporalPublicationVisualizationRequestHandler implements return csvFileContent.toString(); } + @Override + public Actions getRequiredPrivileges() { + // TODO Auto-generated method stub + return null; + } + } \ No newline at end of file diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/entitygrantcount/EntityGrantCountRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/entitygrantcount/EntityGrantCountRequestHandler.java index d69d36aa..0812070f 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/entitygrantcount/EntityGrantCountRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/entitygrantcount/EntityGrantCountRequestHandler.java @@ -17,6 +17,7 @@ import com.google.gson.Gson; import com.hp.hpl.jena.query.Dataset; import com.hp.hpl.jena.rdf.model.Model; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; @@ -345,5 +346,11 @@ public class EntityGrantCountRequestHandler implements return csvFileContent.toString(); } + + @Override + public Actions getRequiredPrivileges() { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/exceptions/IllegalConstructedModelIdentifierException.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/exceptions/IllegalConstructedModelIdentifierException.java new file mode 100644 index 00000000..0822717f --- /dev/null +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/exceptions/IllegalConstructedModelIdentifierException.java @@ -0,0 +1,21 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +package edu.cornell.mannlib.vitro.webapp.visualization.exceptions; + +public class IllegalConstructedModelIdentifierException extends Exception { + + private static final long serialVersionUID = 1L; + + public IllegalConstructedModelIdentifierException(String message) { + super(message); + } + + public IllegalConstructedModelIdentifierException(Exception cause) { + super(createMessage(cause), cause); + } + + private static String createMessage(Exception cause) { + return "Illegal Constructed Model Identifier provided. It should be of the form $. " + cause.getMessage(); + } + +} diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/mapofscience/MapOfScienceVisualizationRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/mapofscience/MapOfScienceVisualizationRequestHandler.java index 2e68c671..8cb3b6e8 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/mapofscience/MapOfScienceVisualizationRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/mapofscience/MapOfScienceVisualizationRequestHandler.java @@ -19,6 +19,7 @@ import org.apache.commons.logging.Log; import com.google.gson.Gson; import com.hp.hpl.jena.query.Dataset; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; @@ -602,6 +603,12 @@ public class MapOfScienceVisualizationRequestHandler implements this.journalToPublicationCount = journalToPublicationCount; } + } + + @Override + public Actions getRequiredPrivileges() { + // TODO Auto-generated method stub + return null; } } \ No newline at end of file diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/ModelConstructorRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/ModelConstructorRequestHandler.java new file mode 100644 index 00000000..ba87189b --- /dev/null +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/ModelConstructorRequestHandler.java @@ -0,0 +1,144 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +package edu.cornell.mannlib.vitro.webapp.visualization.modelconstructor; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.commons.logging.Log; + +import com.google.gson.Gson; +import com.hp.hpl.jena.query.Dataset; + +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.RefreshVisualizationCacheAction; +import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; +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.DataVisualizationController; +import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.IllegalConstructedModelIdentifierException; +import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException; +import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.ConstructedModel; +import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.ConstructedModelTracker; +import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UtilityFunctions; +import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VisualizationRequestHandler; + +public class ModelConstructorRequestHandler implements + VisualizationRequestHandler { + + public static final Actions REQUIRED_ACTIONS = new Actions(new RefreshVisualizationCacheAction()); + + @Override + public Object generateAjaxVisualization(VitroRequest vitroRequest, Log log, + Dataset dataSource) throws MalformedQueryParametersException { + return regenerateConstructedModels(vitroRequest, dataSource); + } + + @Override + public Map generateDataVisualization( + VitroRequest vitroRequest, Log log, Dataset dataset) + throws MalformedQueryParametersException { + throw new UnsupportedOperationException( + "Cached Model does not provide Data Response."); + } + + private ResponseValues renderRefreshCacheMarkup(VitroRequest vitroRequest, + Log log, Dataset dataSource) { + + String standaloneTemplate = "regenerateConstructedModels.ftl"; + + List currentConstructedModels = new ArrayList(); + List unidentifiedModels = new ArrayList(); + + for (String currentIdentifier : ConstructedModelTracker.getAllModels() + .keySet()) { + try { + ConstructedModel parseModelIdentifier = ConstructedModelTracker + .parseModelIdentifier(currentIdentifier); + + parseModelIdentifier.setIndividualLabel(UtilityFunctions + .getIndividualLabelFromDAO(vitroRequest, + parseModelIdentifier.getUri())); + + currentConstructedModels.add(parseModelIdentifier); + } catch (IllegalConstructedModelIdentifierException e) { + unidentifiedModels.add(e.getMessage()); + } + } + + Map body = new HashMap(); + body.put("title", "Regenerate Constructed Models"); + body.put("vivoDefaultNamespace", vitroRequest.getWebappDaoFactory() + .getDefaultNamespace()); + body.put("currentModels", currentConstructedModels); + body.put("unidentifiedModels", unidentifiedModels); + + return new TemplateResponseValues(standaloneTemplate, body); + } + + private Map regenerateConstructedModels(VitroRequest vitroRequest, + Dataset dataSource) { + + List refreshedModels = new ArrayList(); + + Set currentModelIdentifiers = new HashSet(ConstructedModelTracker.getAllModels().keySet()); + + for (String currentIdentifier : currentModelIdentifiers) { + try { + + ConstructedModel parseModelIdentifier = ConstructedModelTracker + .parseModelIdentifier(currentIdentifier); + + ConstructedModelTracker.removeModel(parseModelIdentifier.getUri(), + parseModelIdentifier.getType()); + + ModelConstructorUtilities.getOrConstructModel(parseModelIdentifier.getUri(), + parseModelIdentifier.getType(), dataSource); + refreshedModels.add(parseModelIdentifier); + + } catch (IllegalConstructedModelIdentifierException e) { + e.printStackTrace(); + } catch (MalformedQueryParametersException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + Map fileData = new HashMap(); + + fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY, + "application/octet-stream"); + + Gson json = new Gson(); + + fileData.put(DataVisualizationController.FILE_CONTENT_KEY, + json.toJson(refreshedModels)); + return fileData; + } + + @Override + public ResponseValues generateStandardVisualization( + VitroRequest vitroRequest, Log log, Dataset dataSource) + throws MalformedQueryParametersException { + + return renderRefreshCacheMarkup(vitroRequest, log, dataSource); + } + + @Override + public ResponseValues generateVisualizationForShortURLRequests( + Map parameters, VitroRequest vitroRequest, Log log, + Dataset dataSource) throws MalformedQueryParametersException { + + return renderRefreshCacheMarkup(vitroRequest, log, dataSource); + } + + @Override + public Actions getRequiredPrivileges() { + return REQUIRED_ACTIONS; + } + +} diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/ModelConstructorUtilities.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/ModelConstructorUtilities.java index f4d857a7..e43ff0c1 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/ModelConstructorUtilities.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/ModelConstructorUtilities.java @@ -19,9 +19,9 @@ import edu.cornell.mannlib.vitro.webapp.visualization.modelconstructor.factory.P import edu.cornell.mannlib.vitro.webapp.visualization.modelconstructor.factory.PersonToPublicationsFactory; import edu.cornell.mannlib.vitro.webapp.visualization.modelconstructor.factory.SubOrganizationWithinModelFactory; +@SuppressWarnings("serial") public class ModelConstructorUtilities { - @SuppressWarnings("serial") private static final Map modelTypeIdentifierToFactory = new HashMap() {{ put(PersonToPublicationsModelConstructor.MODEL_TYPE, new PersonToPublicationsFactory()); put(PeopleToPublicationsModelConstructor.MODEL_TYPE, new PeopleToPublicationsFactory()); @@ -34,6 +34,18 @@ public class ModelConstructorUtilities { put(SubOrganizationWithinModelConstructor.MODEL_TYPE, new SubOrganizationWithinModelFactory()); }}; + public static final Map modelTypeToHumanReadableName = new HashMap() {{ + put(PersonToPublicationsModelConstructor.MODEL_TYPE, PersonToPublicationsModelConstructor.MODEL_TYPE_HUMAN_READABLE); + put(PeopleToPublicationsModelConstructor.MODEL_TYPE, PeopleToPublicationsModelConstructor.MODEL_TYPE_HUMAN_READABLE); + put(PersonToGrantsModelConstructor.MODEL_TYPE, PersonToGrantsModelConstructor.MODEL_TYPE_HUMAN_READABLE); + put(PeopleToGrantsModelConstructor.MODEL_TYPE, PeopleToGrantsModelConstructor.MODEL_TYPE_HUMAN_READABLE); + put(OrganizationToPublicationsForSubOrganizationsModelConstructor.MODEL_TYPE, OrganizationToPublicationsForSubOrganizationsModelConstructor.MODEL_TYPE_HUMAN_READABLE); + put(OrganizationToGrantsForSubOrganizationsModelConstructor.MODEL_TYPE, OrganizationToGrantsForSubOrganizationsModelConstructor.MODEL_TYPE_HUMAN_READABLE); + put(OrganizationAssociatedPeopleModelWithTypesConstructor.MODEL_TYPE, OrganizationAssociatedPeopleModelWithTypesConstructor.MODEL_TYPE_HUMAN_READABLE); + put(OrganizationModelWithTypesConstructor.MODEL_TYPE, OrganizationModelWithTypesConstructor.MODEL_TYPE_HUMAN_READABLE); + put(SubOrganizationWithinModelConstructor.MODEL_TYPE, SubOrganizationWithinModelConstructor.MODEL_TYPE_HUMAN_READABLE); + }}; + public static Model getOrConstructModel(String uri, String modelType, Dataset dataset) throws MalformedQueryParametersException { return modelTypeIdentifierToFactory.get(modelType).getOrCreateModel(uri, dataset); diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationAssociatedPeopleModelWithTypesConstructor.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationAssociatedPeopleModelWithTypesConstructor.java index 693ecd86..c0aa78e9 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationAssociatedPeopleModelWithTypesConstructor.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationAssociatedPeopleModelWithTypesConstructor.java @@ -21,7 +21,8 @@ public class OrganizationAssociatedPeopleModelWithTypesConstructor implements Mo protected static final Syntax SYNTAX = Syntax.syntaxARQ; - public static final String MODEL_TYPE = "ORGANIZATION_ASSOCIATED_MODEL_WITH_TYPES"; + public static final String MODEL_TYPE = "ORGANIZATION_ASSOCIATED_MODEL_WITH_TYPES"; + public static final String MODEL_TYPE_HUMAN_READABLE = "People for specific organization"; private Dataset dataset; diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationModelWithTypesConstructor.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationModelWithTypesConstructor.java index 57571e9f..90a76439 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationModelWithTypesConstructor.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationModelWithTypesConstructor.java @@ -21,7 +21,8 @@ public class OrganizationModelWithTypesConstructor implements ModelConstructor { protected static final Syntax SYNTAX = Syntax.syntaxARQ; - public static final String MODEL_TYPE = "ORGANIZATION_MODEL_WITH_TYPES"; + public static final String MODEL_TYPE = "ORGANIZATION_MODEL_WITH_TYPES"; + public static final String MODEL_TYPE_HUMAN_READABLE = "Organization hierarchy"; private Dataset dataset; diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationToGrantsForSubOrganizationsModelConstructor.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationToGrantsForSubOrganizationsModelConstructor.java index a8936ffb..549abec5 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationToGrantsForSubOrganizationsModelConstructor.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationToGrantsForSubOrganizationsModelConstructor.java @@ -26,7 +26,8 @@ public class OrganizationToGrantsForSubOrganizationsModelConstructor implements private Dataset dataset; - public static final String MODEL_TYPE = "ORGANIZATION_TO_GRANTS_FOR_SUBORGANIZATIONS"; + public static final String MODEL_TYPE = "ORGANIZATION_TO_GRANTS_FOR_SUBORGANIZATIONS"; + public static final String MODEL_TYPE_HUMAN_READABLE = "Grants for specific organization via all descendants"; private String organizationURI; diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationToPublicationsForSubOrganizationsModelConstructor.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationToPublicationsForSubOrganizationsModelConstructor.java index 81082cb1..2adb53b4 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationToPublicationsForSubOrganizationsModelConstructor.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/OrganizationToPublicationsForSubOrganizationsModelConstructor.java @@ -24,6 +24,7 @@ public class OrganizationToPublicationsForSubOrganizationsModelConstructor imple private Dataset dataset; public static final String MODEL_TYPE = "ORGANIZATION_TO_PUBLICATIONS_FOR_SUBORGANIZATIONS"; + public static final String MODEL_TYPE_HUMAN_READABLE = "Publications for specific organization via all descendants"; private String organizationURI; diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PeopleToGrantsModelConstructor.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PeopleToGrantsModelConstructor.java index 7a43b1a9..00dc054d 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PeopleToGrantsModelConstructor.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PeopleToGrantsModelConstructor.java @@ -27,6 +27,7 @@ public class PeopleToGrantsModelConstructor implements ModelConstructor { private Dataset dataset; public static final String MODEL_TYPE = "PEOPLE_TO_GRANTS"; + public static final String MODEL_TYPE_HUMAN_READABLE = "Grants for all people via all roles"; private Log log = LogFactory.getLog(PeopleToGrantsModelConstructor.class.getName()); diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PeopleToPublicationsModelConstructor.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PeopleToPublicationsModelConstructor.java index 36f3fe77..50ee11c3 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PeopleToPublicationsModelConstructor.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PeopleToPublicationsModelConstructor.java @@ -24,6 +24,7 @@ public class PeopleToPublicationsModelConstructor implements ModelConstructor { private Dataset dataset; public static final String MODEL_TYPE = "PEOPLE_TO_PUBLICATIONS"; + public static final String MODEL_TYPE_HUMAN_READABLE = "Publications for all people"; private Log log = LogFactory.getLog(PeopleToPublicationsModelConstructor.class.getName()); diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PersonToGrantsModelConstructor.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PersonToGrantsModelConstructor.java index cd3f0261..c63529ed 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PersonToGrantsModelConstructor.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PersonToGrantsModelConstructor.java @@ -27,6 +27,7 @@ public class PersonToGrantsModelConstructor implements ModelConstructor { private Dataset dataset; public static final String MODEL_TYPE = "PERSON_TO_GRANTS"; + public static final String MODEL_TYPE_HUMAN_READABLE = "Grants for specific person via all roles"; private String personURI; diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PersonToPublicationsModelConstructor.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PersonToPublicationsModelConstructor.java index 34571bae..d4206cbc 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PersonToPublicationsModelConstructor.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/PersonToPublicationsModelConstructor.java @@ -23,7 +23,8 @@ public class PersonToPublicationsModelConstructor implements ModelConstructor { private Dataset dataset; - public static final String MODEL_TYPE = "PERSON_TO_PUBLICATIONS"; + public static final String MODEL_TYPE = "PERSON_TO_PUBLICATIONS"; + public static final String MODEL_TYPE_HUMAN_READABLE = "Specific Person to Publications"; private String personURI; diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/SubOrganizationWithinModelConstructor.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/SubOrganizationWithinModelConstructor.java index f5e099c7..6bb4ead5 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/SubOrganizationWithinModelConstructor.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/SubOrganizationWithinModelConstructor.java @@ -22,6 +22,7 @@ public class SubOrganizationWithinModelConstructor implements ModelConstructor { protected static final Syntax SYNTAX = Syntax.syntaxARQ; public static final String MODEL_TYPE = "SUBORGANIZATION_WITHIN_HIERARCHY_MODEL"; + public static final String MODEL_TYPE_HUMAN_READABLE = "Bottom-up Organization hierarchy"; private Dataset dataset; diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/persongrantcount/PersonGrantCountRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/persongrantcount/PersonGrantCountRequestHandler.java index b491ffff..871dc5be 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/persongrantcount/PersonGrantCountRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/persongrantcount/PersonGrantCountRequestHandler.java @@ -13,6 +13,7 @@ import org.apache.commons.logging.Log; import com.hp.hpl.jena.query.Dataset; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; @@ -277,4 +278,10 @@ public class PersonGrantCountRequestHandler implements VisualizationRequestHandl } + @Override + public Actions getRequiredPrivileges() { + // TODO Auto-generated method stub + return null; + } + } \ No newline at end of file diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/PersonLevelRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/PersonLevelRequestHandler.java index a81ae922..7bdccb89 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/PersonLevelRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/PersonLevelRequestHandler.java @@ -11,8 +11,8 @@ import org.apache.commons.logging.Log; import com.hp.hpl.jena.query.Dataset; import com.hp.hpl.jena.rdf.model.Model; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; 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.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants; @@ -291,4 +291,10 @@ public class PersonLevelRequestHandler implements VisualizationRequestHandler { return new TemplateResponseValues(standaloneTemplate, body); } + + @Override + public Actions getRequiredPrivileges() { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/PersonPublicationCountRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/PersonPublicationCountRequestHandler.java index c6d3fc7f..5871d1df 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/PersonPublicationCountRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/PersonPublicationCountRequestHandler.java @@ -13,6 +13,7 @@ import org.apache.commons.logging.Log; import com.hp.hpl.jena.query.Dataset; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; @@ -283,4 +284,10 @@ VisualizationRequestHandler { return new TemplateResponseValues(dynamicTemplate, body); } + + @Override + public Actions getRequiredPrivileges() { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/utilities/UtilitiesRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/utilities/UtilitiesRequestHandler.java index 750a30ec..52714cdb 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/utilities/UtilitiesRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/utilities/UtilitiesRequestHandler.java @@ -17,6 +17,7 @@ import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.rdf.model.RDFNode; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.config.ConfigurationProperties; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; @@ -479,5 +480,11 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler { throw new UnsupportedOperationException("Utilities Visualization does not provide " + "Short URL Response."); } + + @Override + public Actions getRequiredPrivileges() { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/ConstructedModel.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/ConstructedModel.java new file mode 100644 index 00000000..c9b25c3f --- /dev/null +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/ConstructedModel.java @@ -0,0 +1,39 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ +package edu.cornell.mannlib.vitro.webapp.visualization.valueobjects; + +import edu.cornell.mannlib.vitro.webapp.visualization.modelconstructor.ModelConstructorUtilities; + +public class ConstructedModel { + + private String uri; + private String individualLabel; + private String type; + private String humanReadableType; + + public ConstructedModel(String type, String uri) { + this.type = type; + this.humanReadableType = ModelConstructorUtilities.modelTypeToHumanReadableName.get(type); + this.uri = uri == null ? "" : uri; + } + + public String getUri() { + return uri; + } + + public String getType() { + return type; + } + + public String getHumanReadableType() { + return humanReadableType; + } + + public void setIndividualLabel(String indiviualLabel) { + this.individualLabel = indiviualLabel; + } + + public String getIndividualLabel() { + return individualLabel; + } + +} \ No newline at end of file diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/ConstructedModelTracker.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/ConstructedModelTracker.java index ca018ffe..34cf48e6 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/ConstructedModelTracker.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/ConstructedModelTracker.java @@ -4,10 +4,14 @@ package edu.cornell.mannlib.vitro.webapp.visualization.valueobjects; import java.util.HashMap; import java.util.Map; +import org.apache.commons.lang.StringUtils; + import com.hp.hpl.jena.rdf.model.Model; -public class ConstructedModelTracker { +import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.IllegalConstructedModelIdentifierException; +public class ConstructedModelTracker { + private static Map modelIdentifierToConstructedModel = new HashMap(); public static void trackModel(String identifier, Model model) { @@ -18,6 +22,10 @@ public class ConstructedModelTracker { return modelIdentifierToConstructedModel.get(identifier); } + public static Model removeModel(String uri, String modelType) { + return modelIdentifierToConstructedModel.remove(generateModelIdentifier(uri, modelType)); + } + public static String generateModelIdentifier(String uri, String modelType) { if (uri == null) { @@ -30,4 +38,17 @@ public class ConstructedModelTracker { return modelIdentifierToConstructedModel; } + public static ConstructedModel parseModelIdentifier(String modelIdentifier) + throws IllegalConstructedModelIdentifierException { + + String[] parts = StringUtils.split(modelIdentifier, '$'); + + if (parts.length == 0) { + throw new IllegalConstructedModelIdentifierException(modelIdentifier + " provided."); + } else if (parts.length == 1) { + return new ConstructedModel(parts[0], null); + } else { + return new ConstructedModel(parts[0], parts[1]); + } + } } diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/UtilityFunctions.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/UtilityFunctions.java index 8c18397d..07f87b51 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/UtilityFunctions.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/UtilityFunctions.java @@ -25,13 +25,13 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMa 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.VisualizationFrameworkConstants; +import edu.cornell.mannlib.vitro.webapp.dao.IndividualDao; import edu.cornell.mannlib.vitro.webapp.visualization.collaborationutils.CollaborationData; 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.valueobjects.Activity; import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.Collaborator; import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.GenericQueryMap; -import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.SubEntity; public class UtilityFunctions { @@ -285,4 +285,18 @@ public class UtilityFunctions { return ""; } + + public static String getIndividualLabelFromDAO(VitroRequest vitroRequest, + String entityURI) { + + IndividualDao iDao = vitroRequest.getWebappDaoFactory().getIndividualDao(); + Individual ind = iDao.getIndividualByURI(entityURI); + + String individualLabel = "Unknown Individual"; + + if (ind != null) { + individualLabel = ind.getName(); + } + return individualLabel; + } } \ No newline at end of file diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/VisualizationRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/VisualizationRequestHandler.java index c0f446d1..f9789f52 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/VisualizationRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/VisualizationRequestHandler.java @@ -7,6 +7,7 @@ import org.apache.commons.logging.Log; import com.hp.hpl.jena.query.Dataset; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException; @@ -22,6 +23,8 @@ import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryP * @author cdtank */ public interface VisualizationRequestHandler { + + Actions getRequiredPrivileges(); ResponseValues generateStandardVisualization(VitroRequest vitroRequest, Log log,