X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.cms.jcr%2Fsrc%2Forg%2Fargeo%2Fcms%2Fjcr%2Facr%2FJcrContent.java;fp=org.argeo.cms.jcr%2Fsrc%2Forg%2Fargeo%2Fcms%2Fjcr%2Facr%2FJcrContent.java;h=149ef3acf524fc6c8a1c31458fc9db893c5a913d;hb=c5d5dbfff752c5e7ec93d5f046306e3da82e06b0;hp=a46dd859fd0e5df2f605da056eba5d9d96be80c8;hpb=1172f84c1ac64f51b23eb22da48d871211841328;p=gpl%2Fargeo-jcr.git diff --git a/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContent.java b/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContent.java index a46dd85..149ef3a 100644 --- a/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContent.java +++ b/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContent.java @@ -36,6 +36,7 @@ import javax.xml.transform.stream.StreamSource; import org.argeo.api.acr.Content; import org.argeo.api.acr.CrAttributeType; +import org.argeo.api.acr.DName; import org.argeo.api.acr.NamespaceUtils; import org.argeo.api.acr.spi.ProvidedSession; import org.argeo.api.cms.CmsConstants; @@ -92,7 +93,38 @@ public class JcrContent extends AbstractContent { @SuppressWarnings("unchecked") @Override public Optional get(QName key, Class clss) { - Object value = get(getJcrNode(), key.toString()); + Node node = getJcrNode(); + if (DName.creationdate.equals(key)) + key = JcrName.created.qName(); + else if (DName.getlastmodified.equals(key)) + key = JcrName.lastModified.qName(); + else if (DName.checkedOut.equals(key)) { + try { + if (!node.hasProperty(Property.JCR_IS_CHECKED_OUT)) + return Optional.empty(); + boolean isCheckedOut = node.getProperty(Property.JCR_IS_CHECKED_OUT).getBoolean(); + if (!isCheckedOut) + return Optional.empty(); + // FIXME return URI + return (Optional) Optional.of(new Object()); + } catch (RepositoryException e) { + throw new JcrException(e); + } + } else if (DName.checkedIn.equals(key)) { + try { + if (!node.hasProperty(Property.JCR_IS_CHECKED_OUT)) + return Optional.empty(); + boolean isCheckedOut = node.getProperty(Property.JCR_IS_CHECKED_OUT).getBoolean(); + if (isCheckedOut) + return Optional.empty(); + // FIXME return URI + return (Optional) Optional.of(new Object()); + } catch (RepositoryException e) { + throw new JcrException(e); + } + } + + Object value = get(node, key.toString()); if (value instanceof List lst) return Optional.of((A) lst); // TODO check other collections? @@ -111,12 +143,23 @@ public class JcrContent extends AbstractContent { @Override protected Iterable keys() { try { + Node node = getJcrNode(); Set keys = new HashSet<>(); - for (PropertyIterator propertyIterator = getJcrNode().getProperties(); propertyIterator.hasNext();) { + for (PropertyIterator propertyIterator = node.getProperties(); propertyIterator.hasNext();) { Property property = propertyIterator.nextProperty(); + QName name = NamespaceUtils.parsePrefixedName(provider, property.getName()); + // TODO convert standard names + if (property.getName().equals(Property.JCR_CREATED)) + name = DName.creationdate.qName(); + if (property.getName().equals(Property.JCR_LAST_MODIFIED)) + name = DName.getlastmodified.qName(); + if (property.getName().equals(Property.JCR_IS_CHECKED_OUT)) { + boolean isCheckedOut = node.getProperty(Property.JCR_IS_CHECKED_OUT).getBoolean(); + name = isCheckedOut ? DName.checkedOut.qName() : DName.checkedIn.qName(); + } + // TODO skip technical properties - QName name = NamespaceUtils.parsePrefixedName(provider, property.getName()); keys.add(name); } return keys; @@ -202,12 +245,10 @@ public class JcrContent extends AbstractContent { public int getSiblingIndex() { return Jcr.getIndex(getJcrNode()); } - - @Override public String getText() { - return JcrxApi.getXmlValue(getJcrNode()); + return JcrxApi.getXmlValue(getJcrNode()); } /*