Move JCR to another repository
[lgpl/argeo-commons.git] / jcr / org.argeo.cms.jcr / src / org / argeo / jcr / fs / JcrPath.java
diff --git a/jcr/org.argeo.cms.jcr/src/org/argeo/jcr/fs/JcrPath.java b/jcr/org.argeo.cms.jcr/src/org/argeo/jcr/fs/JcrPath.java
deleted file mode 100644 (file)
index 7318b70..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-package org.argeo.jcr.fs;
-
-import java.nio.file.Path;
-
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-
-import org.argeo.api.acr.fs.AbstractFsPath;
-
-/** A {@link Path} which contains a reference to a JCR {@link Node}. */
-public class JcrPath extends AbstractFsPath<JcrFileSystem, WorkspaceFileStore> {
-       final static String separator = "/";
-       final static char separatorChar = '/';
-
-//     private final JcrFileSystem fs;
-//     /** null for non absolute paths */
-//     private final WorkspaceFileStore fileStore;
-//     private final String[] path;// null means root
-//     private final boolean absolute;
-//
-//     // optim
-//     private final int hashCode;
-
-       public JcrPath(JcrFileSystem filesSystem, String path) {
-               super(filesSystem, path);
-//             this.fs = filesSystem;
-//             if (path == null)
-//                     throw new JcrFsException("Path cannot be null");
-//             if (path.equals(separator)) {// root
-//                     this.path = null;
-//                     this.absolute = true;
-//                     this.hashCode = 0;
-//                     this.fileStore = fs.getBaseFileStore();
-//                     return;
-//             } else if (path.equals("")) {// empty path
-//                     this.path = new String[] { "" };
-//                     this.absolute = false;
-//                     this.fileStore = null;
-//                     this.hashCode = "".hashCode();
-//                     return;
-//             }
-//
-//             if (path.equals("~")) {// home
-//                     path = filesSystem.getUserHomePath();
-//                     if (path == null)
-//                             throw new JcrFsException("No home directory available");
-//             }
-//
-//             this.absolute = path.charAt(0) == separatorChar ? true : false;
-//
-//             this.fileStore = absolute ? fs.getFileStore(path) : null;
-//
-//             String trimmedPath = path.substring(absolute ? 1 : 0,
-//                             path.charAt(path.length() - 1) == separatorChar ? path.length() - 1 : path.length());
-//             this.path = trimmedPath.split(separator);
-//             for (int i = 0; i < this.path.length; i++) {
-//                     this.path[i] = Text.unescapeIllegalJcrChars(this.path[i]);
-//             }
-//             this.hashCode = this.path[this.path.length - 1].hashCode();
-//             assert !(absolute && fileStore == null);
-       }
-
-       public JcrPath(JcrFileSystem filesSystem, Node node) throws RepositoryException {
-               this(filesSystem, filesSystem.getFileStore(node).toFsPath(node));
-       }
-
-       /** Internal optimisation */
-       private JcrPath(JcrFileSystem filesSystem, WorkspaceFileStore fileStore, String[] path, boolean absolute) {
-               super(filesSystem, fileStore, path, absolute);
-//             this.fs = filesSystem;
-//             this.path = path;
-//             this.absolute = path == null ? true : absolute;
-//             if (this.absolute && fileStore == null)
-//                     throw new IllegalArgumentException("Absolute path requires a file store");
-//             if (!this.absolute && fileStore != null)
-//                     throw new IllegalArgumentException("A file store should not be provided for a relative path");
-//             this.fileStore = fileStore;
-//             this.hashCode = path == null ? 0 : path[path.length - 1].hashCode();
-//             assert !(absolute && fileStore == null);
-       }
-
-       protected String cleanUpSegment(String segment) {
-               return Text.unescapeIllegalJcrChars(segment);
-       }
-
-       @Override
-       protected JcrPath newInstance(String path) {
-               return new JcrPath(getFileSystem(), path);
-       }
-
-       @Override
-       protected JcrPath newInstance(String[] segments, boolean absolute) {
-               return new JcrPath(getFileSystem(), getFileStore(), segments, absolute);
-
-       }
-
-//     @Override
-//     public FileSystem getFileSystem() {
-//             return fs;
-//     }
-//
-//     @Override
-//     public boolean isAbsolute() {
-//             return absolute;
-//     }
-//
-//     @Override
-//     public Path getRoot() {
-//             if (path == null)
-//                     return this;
-//             return new JcrPath(fs, separator);
-//     }
-//
-//     @Override
-//     public String toString() {
-//             return toFsPath(path);
-//     }
-//
-//     private String toFsPath(String[] path) {
-//             if (path == null)
-//                     return "/";
-//             StringBuilder sb = new StringBuilder();
-//             if (isAbsolute())
-//                     sb.append('/');
-//             for (int i = 0; i < path.length; i++) {
-//                     if (i != 0)
-//                             sb.append('/');
-//                     sb.append(path[i]);
-//             }
-//             return sb.toString();
-//     }
-
-//     @Deprecated
-//     private String toJcrPath() {
-//             return toJcrPath(path);
-//     }
-//
-//     @Deprecated
-//     private String toJcrPath(String[] path) {
-//             if (path == null)
-//                     return "/";
-//             StringBuilder sb = new StringBuilder();
-//             if (isAbsolute())
-//                     sb.append('/');
-//             for (int i = 0; i < path.length; i++) {
-//                     if (i != 0)
-//                             sb.append('/');
-//                     sb.append(Text.escapeIllegalJcrChars(path[i]));
-//             }
-//             return sb.toString();
-//     }
-
-//     @Override
-//     public Path getFileName() {
-//             if (path == null)
-//                     return null;
-//             return new JcrPath(fs, path[path.length - 1]);
-//     }
-//
-//     @Override
-//     public Path getParent() {
-//             if (path == null)
-//                     return null;
-//             if (path.length == 1)// root
-//                     return new JcrPath(fs, separator);
-//             String[] parentPath = Arrays.copyOfRange(path, 0, path.length - 1);
-//             if (!absolute)
-//                     return new JcrPath(fs, null, parentPath, absolute);
-//             else
-//                     return new JcrPath(fs, toFsPath(parentPath));
-//     }
-//
-//     @Override
-//     public int getNameCount() {
-//             if (path == null)
-//                     return 0;
-//             return path.length;
-//     }
-//
-//     @Override
-//     public Path getName(int index) {
-//             if (path == null)
-//                     return null;
-//             return new JcrPath(fs, path[index]);
-//     }
-//
-//     @Override
-//     public Path subpath(int beginIndex, int endIndex) {
-//             if (path == null)
-//                     return null;
-//             String[] parentPath = Arrays.copyOfRange(path, beginIndex, endIndex);
-//             return new JcrPath(fs, null, parentPath, false);
-//     }
-//
-//     @Override
-//     public boolean startsWith(Path other) {
-//             return toString().startsWith(other.toString());
-//     }
-//
-//     @Override
-//     public boolean startsWith(String other) {
-//             return toString().startsWith(other);
-//     }
-//
-//     @Override
-//     public boolean endsWith(Path other) {
-//             return toString().endsWith(other.toString());
-//     }
-//
-//     @Override
-//     public boolean endsWith(String other) {
-//             return toString().endsWith(other);
-//     }
-
-//     @Override
-//     public Path normalize() {
-//             // always normalized
-//             return this;
-//     }
-
-//     @Override
-//     public Path resolve(Path other) {
-//             JcrPath otherPath = (JcrPath) other;
-//             if (otherPath.isAbsolute())
-//                     return other;
-//             String[] newPath;
-//             if (path == null) {
-//                     newPath = new String[otherPath.path.length];
-//                     System.arraycopy(otherPath.path, 0, newPath, 0, otherPath.path.length);
-//             } else {
-//                     newPath = new String[path.length + otherPath.path.length];
-//                     System.arraycopy(path, 0, newPath, 0, path.length);
-//                     System.arraycopy(otherPath.path, 0, newPath, path.length, otherPath.path.length);
-//             }
-//             if (!absolute)
-//                     return new JcrPath(fs, null, newPath, absolute);
-//             else {
-//                     return new JcrPath(fs, toFsPath(newPath));
-//             }
-//     }
-//
-//     @Override
-//     public final Path resolve(String other) {
-//             return resolve(getFileSystem().getPath(other));
-//     }
-//
-//     @Override
-//     public final Path resolveSibling(Path other) {
-//             if (other == null)
-//                     throw new NullPointerException();
-//             Path parent = getParent();
-//             return (parent == null) ? other : parent.resolve(other);
-//     }
-//
-//     @Override
-//     public final Path resolveSibling(String other) {
-//             return resolveSibling(getFileSystem().getPath(other));
-//     }
-//
-//     @Override
-//     public final Iterator<Path> iterator() {
-//             return new Iterator<Path>() {
-//                     private int i = 0;
-//
-//                     @Override
-//                     public boolean hasNext() {
-//                             return (i < getNameCount());
-//                     }
-//
-//                     @Override
-//                     public Path next() {
-//                             if (i < getNameCount()) {
-//                                     Path result = getName(i);
-//                                     i++;
-//                                     return result;
-//                             } else {
-//                                     throw new NoSuchElementException();
-//                             }
-//                     }
-//
-//                     @Override
-//                     public void remove() {
-//                             throw new UnsupportedOperationException();
-//                     }
-//             };
-//     }
-//
-//     @Override
-//     public Path relativize(Path other) {
-//             if (equals(other))
-//                     return new JcrPath(fs, "");
-//             if (other.startsWith(this)) {
-//                     String p1 = toString();
-//                     String p2 = other.toString();
-//                     String relative = p2.substring(p1.length(), p2.length());
-//                     if (relative.charAt(0) == '/')
-//                             relative = relative.substring(1);
-//                     return new JcrPath(fs, relative);
-//             }
-//             throw new IllegalArgumentException(other + " cannot be relativized against " + this);
-//     }
-
-//     @Override
-//     public URI toUri() {
-//             try {
-//                     return new URI(fs.provider().getScheme(), toString(), null);
-//             } catch (URISyntaxException e) {
-//                     throw new JcrFsException("Cannot create URI for " + toString(), e);
-//             }
-//     }
-//
-//     @Override
-//     public Path toAbsolutePath() {
-//             if (isAbsolute())
-//                     return this;
-//             return new JcrPath(fs, fileStore, path, true);
-//     }
-//
-//     @Override
-//     public Path toRealPath(LinkOption... options) throws IOException {
-//             return this;
-//     }
-//
-//     @Override
-//     public File toFile() {
-//             throw new UnsupportedOperationException();
-//     }
-
-       public Node getNode() throws RepositoryException {
-               if (!isAbsolute())// TODO default dir
-                       throw new JcrFsException("Cannot get a JCR node from a relative path");
-               assert getFileStore() != null;
-               return getFileStore().toNode(getSegments());
-//             String pathStr = toJcrPath();
-//             Session session = fs.getSession();
-//             // TODO synchronize on the session ?
-//             if (!session.itemExists(pathStr))
-//                     return null;
-//             return session.getNode(pathStr);
-       }
-//
-//     @Override
-//     public boolean equals(Object obj) {
-//             if (!(obj instanceof JcrPath))
-//                     return false;
-//             JcrPath other = (JcrPath) obj;
-//
-//             if (path == null) {// root
-//                     if (other.path == null)// root
-//                             return true;
-//                     else
-//                             return false;
-//             } else {
-//                     if (other.path == null)// root
-//                             return false;
-//             }
-//             // non root
-//             if (path.length != other.path.length)
-//                     return false;
-//             for (int i = 0; i < path.length; i++) {
-//                     if (!path[i].equals(other.path[i]))
-//                             return false;
-//             }
-//             return true;
-//     }
-
-//     @Override
-//     public int hashCode() {
-//             return hashCode;
-//     }
-
-//     @Override
-//     protected Object clone() throws CloneNotSupportedException {
-//             return new JcrPath(fs, toString());
-//     }
-
-//     @Override
-//     protected void finalize() throws Throwable {
-//             Arrays.fill(path, null);
-//     }
-
-       
-       
-}