Massive package refactoring
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / fs / FsContent.java
index b8f98d2c84996e7fa4c6b1ad39e465037298b076..43cae85721bf6b96c3f577f157f64b56845c11b2 100644 (file)
@@ -24,6 +24,7 @@ import java.util.Set;
 import java.util.StringJoiner;
 import java.util.concurrent.CompletableFuture;
 
+import javax.xml.XMLConstants;
 import javax.xml.namespace.QName;
 import javax.xml.transform.Source;
 import javax.xml.transform.TransformerException;
@@ -35,6 +36,7 @@ import org.argeo.api.acr.ContentName;
 import org.argeo.api.acr.ContentResourceException;
 import org.argeo.api.acr.CrAttributeType;
 import org.argeo.api.acr.CrName;
+import org.argeo.api.acr.DName;
 import org.argeo.api.acr.NamespaceUtils;
 import org.argeo.api.acr.spi.ContentProvider;
 import org.argeo.api.acr.spi.ProvidedContent;
@@ -42,7 +44,7 @@ import org.argeo.api.acr.spi.ProvidedSession;
 import org.argeo.api.cms.CmsLog;
 import org.argeo.cms.acr.AbstractContent;
 import org.argeo.cms.acr.ContentUtils;
-import org.argeo.util.FsUtils;
+import org.argeo.cms.util.FsUtils;
 
 /** Content persisted as a filesystem {@link Path}. */
 public class FsContent extends AbstractContent implements ProvidedContent {
@@ -54,14 +56,15 @@ public class FsContent extends AbstractContent implements ProvidedContent {
        private static final Map<QName, String> POSIX_KEYS;
        static {
                BASIC_KEYS = new HashMap<>();
-               BASIC_KEYS.put(CrName.creationTime.qName(), "basic:creationTime");
-               BASIC_KEYS.put(CrName.lastModifiedTime.qName(), "basic:lastModifiedTime");
-               BASIC_KEYS.put(CrName.size.qName(), "basic:size");
+               BASIC_KEYS.put(DName.creationdate.qName(), "basic:creationTime");
+               BASIC_KEYS.put(DName.getlastmodified.qName(), "basic:lastModifiedTime");
+               BASIC_KEYS.put(DName.getcontentlength.qName(), "basic:size");
+
                BASIC_KEYS.put(CrName.fileKey.qName(), "basic:fileKey");
 
                POSIX_KEYS = new HashMap<>(BASIC_KEYS);
-               POSIX_KEYS.put(CrName.owner.qName(), "owner:owner");
-               POSIX_KEYS.put(CrName.group.qName(), "posix:group");
+               POSIX_KEYS.put(DName.owner.qName(), "owner:owner");
+               POSIX_KEYS.put(DName.group.qName(), "posix:group");
                POSIX_KEYS.put(CrName.permissions.qName(), "posix:permissions");
        }
 
@@ -196,6 +199,8 @@ public class FsContent extends AbstractContent implements ProvidedContent {
                        try {
                                for (String name : udfav.list()) {
                                        QName providerName = NamespaceUtils.parsePrefixedName(provider, name);
+                                       if (providerName.getNamespaceURI().equals(XMLConstants.XMLNS_ATTRIBUTE_NS_URI))
+                                               continue; // skip prefix mapping
                                        QName sessionName = new ContentName(providerName, getSession());
                                        result.add(sessionName);
                                }
@@ -281,7 +286,7 @@ public class FsContent extends AbstractContent implements ProvidedContent {
                FsContent fsContent;
                try {
                        Path newPath = path.resolve(NamespaceUtils.toPrefixedName(provider, name));
-                       if (ContentName.contains(classes, CrName.collection.qName()))
+                       if (ContentName.contains(classes, DName.collection.qName()))
                                Files.createDirectory(newPath);
                        else
                                Files.createFile(newPath);
@@ -357,13 +362,13 @@ public class FsContent extends AbstractContent implements ProvidedContent {
        @Override
        public List<QName> getContentClasses() {
                List<QName> res = new ArrayList<>();
-               List<String> value = getMultiple(CrName.cc.qName(), String.class);
+               List<String> value = getMultiple(DName.resourcetype.qName(), String.class);
                for (String s : value) {
                        QName name = NamespaceUtils.parsePrefixedName(provider, s);
                        res.add(name);
                }
                if (Files.isDirectory(path))
-                       res.add(CrName.collection.qName());
+                       res.add(DName.collection.qName());
                return res;
        }
 
@@ -371,14 +376,14 @@ public class FsContent extends AbstractContent implements ProvidedContent {
        public void addContentClasses(QName... contentClass) {
                List<String> toWrite = new ArrayList<>();
                for (QName cc : getContentClasses()) {
-                       if (cc.equals(CrName.collection.qName()))
+                       if (cc.equals(DName.collection.qName()))
                                continue; // skip
                        toWrite.add(NamespaceUtils.toPrefixedName(provider, cc));
                }
                for (QName cc : contentClass) {
                        toWrite.add(NamespaceUtils.toPrefixedName(provider, cc));
                }
-               put(CrName.cc.qName(), toWrite);
+               put(DName.resourcetype.qName(), toWrite);
        }
 
        /*
@@ -395,7 +400,7 @@ public class FsContent extends AbstractContent implements ProvidedContent {
         */
        @SuppressWarnings("unchecked")
        public <A> CompletableFuture<A> write(Class<A> clss) {
-               if (isContentClass(CrName.collection.qName())) {
+               if (isContentClass(DName.collection.qName())) {
                        throw new IllegalStateException("Cannot directly write to a collection");
                }
                if (InputStream.class.isAssignableFrom(clss)) {