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());
}
/*