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}
+
+ #if>
+ ${model.humanReadableType}
+
+
+ #list>
+
+
+<#else>
+
+ Currently there are no constructed models for use by visualization.
+
+#if>
+
+${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,