From 7760fdf6af8027db65137202385493b372ae1af4 Mon Sep 17 00:00:00 2001 From: brianjlowe Date: Wed, 22 May 2013 16:28:11 -0400 Subject: [PATCH] work on VIVO-60 application ontology for property/class combinations --- .../auth/permissions/DisplayByRolePermission.java | 12 +++++++++--- .../policy/bean/PropertyRestrictionPolicyHelper.java | 8 +++++++- .../ObjectPropertyStatementDaoFiltering.java | 4 ++++ .../dao/jena/ObjectPropertyStatementDaoJena.java | 4 +++- .../utils/ApplicationConfigurationOntologyUtils.java | 2 +- 5 files changed, 24 insertions(+), 6 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/auth/permissions/DisplayByRolePermission.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/auth/permissions/DisplayByRolePermission.java index c98120dec..80aae91d2 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/auth/permissions/DisplayByRolePermission.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/auth/permissions/DisplayByRolePermission.java @@ -114,9 +114,11 @@ public class DisplayByRolePermission extends Permission { ObjectPropertyStatement stmt = action.getObjectPropertyStatement(); String subjectUri = stmt.getSubjectURI(); String predicateUri = stmt.getPropertyURI(); + String rangeUri = (stmt.getProperty() == null) ? null + : stmt.getProperty().getRangeVClassURI(); String objectUri = stmt.getObjectURI(); return canDisplayResource(subjectUri) - && canDisplayPredicate(predicateUri) + && canDisplayPredicate(predicateUri, rangeUri) && canDisplayResource(objectUri); } @@ -124,10 +126,14 @@ public class DisplayByRolePermission extends Permission { return PropertyRestrictionPolicyHelper.getBean(ctx).canDisplayResource( resourceUri, this.roleLevel); } - + private boolean canDisplayPredicate(String predicateUri) { + return canDisplayPredicate(predicateUri, null); + } + + private boolean canDisplayPredicate(String predicateUri, String rangeUri) { return PropertyRestrictionPolicyHelper.getBean(ctx) - .canDisplayPredicate(predicateUri, this.roleLevel); + .canDisplayPredicate(predicateUri, rangeUri, this.roleLevel); } @Override diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/auth/policy/bean/PropertyRestrictionPolicyHelper.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/auth/policy/bean/PropertyRestrictionPolicyHelper.java index f6bf31603..70b38cbeb 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/auth/policy/bean/PropertyRestrictionPolicyHelper.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/auth/policy/bean/PropertyRestrictionPolicyHelper.java @@ -257,17 +257,23 @@ public class PropertyRestrictionPolicyHelper { log.debug("can modify resource '" + resourceUri + "'"); return true; } + + public boolean canDisplayPredicate(String predicateUri, RoleLevel userRole) { + return canDisplayPredicate(predicateUri, null, userRole); + } /** * If display of a predicate is restricted, the user's role must be at least * as high as the restriction level. */ - public boolean canDisplayPredicate(String predicateUri, RoleLevel userRole) { + public boolean canDisplayPredicate(String predicateUri, String rangeUri, RoleLevel userRole) { if (predicateUri == null) { log.debug("can't display predicate: predicateUri was null"); return false; } + // TODO insert combo logic here + RoleLevel displayThreshold = displayThresholdMap.get(predicateUri); if (isAuthorized(userRole, displayThreshold)) { log.debug("can display predicate: '" + predicateUri diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyStatementDaoFiltering.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyStatementDaoFiltering.java index 1bf06d3db..de7c93438 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyStatementDaoFiltering.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyStatementDaoFiltering.java @@ -105,6 +105,10 @@ class ObjectPropertyStatementDaoFiltering extends BaseFiltering implements Objec for (Map map : data) { String objectUri = map.get(objectKey); ObjectPropertyStatement statement = new ObjectPropertyStatementImpl(subjectUri, propertyUri, objectUri); + ObjectProperty op = new ObjectProperty(); + op.setURI(propertyUri); + op.setRangeVClassURI(rangeUri); + statement.setProperty(op); stmtsToData.put(statement, map); } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java index 4c67580bd..073c1189f 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java @@ -297,7 +297,9 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec QuerySolutionMap initialBindings = new QuerySolutionMap(); initialBindings.add("subject", ResourceFactory.createResource(subjectUri)); initialBindings.add("property", ResourceFactory.createResource(propertyUri)); - initialBindings.add("objectType", ResourceFactory.createResource(rangeUri)); + if (rangeUri != null) { + initialBindings.add("objectType", ResourceFactory.createResource(rangeUri)); + } // Run the SPARQL query to get the properties List> list = new ArrayList>(); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/ApplicationConfigurationOntologyUtils.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/ApplicationConfigurationOntologyUtils.java index 698564a34..cbb3ad258 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/ApplicationConfigurationOntologyUtils.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/ApplicationConfigurationOntologyUtils.java @@ -55,7 +55,7 @@ public class ApplicationConfigurationOntologyUtils { "}"; for (ObjectProperty op : propList) { - log.info("Checking " + op.getURI() + " for additional properties"); + log.debug("Checking " + op.getURI() + " for additional properties"); String queryStr = propQuery.replaceAll("\\?property", "<" + op.getURI() + ">"); log.debug(queryStr); Query q = QueryFactory.create(queryStr);