From 8b2e150e32d7a5cc8eb280fe281f47ac7afe9f56 Mon Sep 17 00:00:00 2001 From: Georgy Litvinov Date: Thu, 2 Feb 2023 14:24:10 +0100 Subject: [PATCH] use qualified by root in faux property to provide into FauxObjectPropertyWrapper (#360) Co-authored-by: Georgy Litvinov --- .../mannlib/vitro/webapp/beans/FauxProperty.java | 10 ++++++++++ .../vitro/webapp/dao/jena/FauxPropertyDaoJena.java | 5 +++++ .../individual/FauxObjectPropertyWrapper.java | 4 ++++ .../templatemodels/individual/GroupedPropertyList.java | 10 ++++++++-- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/beans/FauxProperty.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/beans/FauxProperty.java index 210fc3a26..cebc1d68b 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/beans/FauxProperty.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/beans/FauxProperty.java @@ -23,6 +23,8 @@ public class FauxProperty extends BaseResourceBean implements ResourceBean, // Must not be null on insert or update. Partial identifier on delete. private String rangeURI = ""; + + private String rootRangeURI; // May be null. Partial identifier on delete. private String domainURI; @@ -260,4 +262,12 @@ public class FauxProperty extends BaseResourceBean implements ResourceBean, public String getRangeVClassURI() { return getRangeURI(); } + + public void setRootRangeUri(String rootRangeUri) { + this.rootRangeURI = rootRangeUri; + } + + public String getRootRangeUri() { + return rootRangeURI; + } } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/FauxPropertyDaoJena.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/FauxPropertyDaoJena.java index 1594419a7..da21bc32d 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/FauxPropertyDaoJena.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/FauxPropertyDaoJena.java @@ -163,7 +163,12 @@ public class FauxPropertyDaoJena extends JenaBaseDao implements FauxPropertyDao String domainUri = domainUris.isEmpty() ? null : domainUris .iterator().next(); + Collection rootRangeUris = getPropertyResourceURIValues(context, QUALIFIED_BY_ROOT); + FauxProperty fp = new FauxProperty(domainUri, baseUri, rangeUri); + if (!rootRangeUris.isEmpty()) { + fp.setRootRangeUri(rootRangeUris.iterator().next()); + } fp.setContextUri(contextUri); populateInstance(fp); log.debug("Loaded FauxProperty: " + fp); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/FauxObjectPropertyWrapper.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/FauxObjectPropertyWrapper.java index d5bb5896c..e0425861a 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/FauxObjectPropertyWrapper.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/FauxObjectPropertyWrapper.java @@ -226,6 +226,10 @@ public class FauxObjectPropertyWrapper extends ObjectProperty implements FauxPro @Override public String getRangeEntityURI() { + String uri = faux.getRootRangeUri(); + if (uri != null) { + return uri; + } return innerOP.getRangeEntityURI(); } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java index 75a40773e..2de0036c6 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java @@ -176,9 +176,15 @@ public class GroupedPropertyList extends BaseTemplateModel { List filteredAdditions = new ArrayList(); for (FauxObjectPropertyWrapper prop : populatedFauxOPs) { List allowedTypes = populatedObjTypes.get(prop.getURI()); - if(allowedTypes != null && (allowedTypes.contains(prop.getRangeVClassURI()) - || allowedTypes.contains(prop.getRangeEntityURI()) ) ) { + if (allowedTypes == null) { + continue; + } + String rangeVClassURI = prop.getRangeVClassURI(); + String rangeEntityURI = prop.getRangeEntityURI(); + if(allowedTypes.contains(rangeVClassURI) ) { filteredAdditions.add(prop); + } else if (allowedTypes.contains(rangeEntityURI)) { + filteredAdditions.add(prop); } } return filteredAdditions;