X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.suite.workbench.rap%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fworkbench%2Ffs%2FFsAppService.java;fp=org.argeo.suite.workbench.rap%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fworkbench%2Ffs%2FFsAppService.java;h=fc9563de92452b34ae4c19a034d2ef48f96b5aab;hb=f2bf1e12e3aad9c2507e86e1d33fef2fd3e67489;hp=0000000000000000000000000000000000000000;hpb=1fb1ccc2edbf7cfbdd37efc618c52b8eebe4e6be;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/fs/FsAppService.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/fs/FsAppService.java new file mode 100644 index 0000000..fc9563d --- /dev/null +++ b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/fs/FsAppService.java @@ -0,0 +1,70 @@ +package org.argeo.suite.workbench.fs; + +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.file.FileSystem; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.spi.FileSystemProvider; +import java.security.PrivilegedActionException; + +import javax.jcr.Session; + +import org.argeo.cms.auth.CurrentUser; +import org.argeo.node.NodeUtils; +import org.argeo.suite.SuiteException; + +public class FsAppService { + private final static String NODE_PREFIX = "node://"; + + private String getCurrentHomePath(Session session) { + try { + // Make in a do as if not from the workbench + // Repository repo = session.getRepository(); + // session = CurrentUser.tryAs(() -> repo.login()); + String homepath = NodeUtils.getUserHome(session).getPath(); + return homepath; + } catch (Exception e) { + throw new SuiteException("Cannot retrieve Current User Home Path", e); + // } finally { + // JcrUtils.logoutQuietly(session); + } + } + + public Path[] getMyFilesPath(FileSystemProvider nodeFileSystemProvider, Session session) { + // return Paths.get(System.getProperty("user.dir")); + String currHomeUriStr = NODE_PREFIX + getCurrentHomePath(session); + try { + URI uri = new URI(currHomeUriStr); + FileSystem fileSystem = nodeFileSystemProvider.getFileSystem(uri); + if (fileSystem == null) { + fileSystem = CurrentUser.tryAs(() -> nodeFileSystemProvider.newFileSystem(uri, null)); + // PrivilegedExceptionAction pea = new + // PrivilegedExceptionAction() { + // @Override + // public FileSystem run() throws Exception { + // return nodeFileSystemProvider.newFileSystem(uri, null); + // } + // + // }; + // fileSystem = CurrentUser.tryAs(pea); + } + Path[] paths = { fileSystem.getPath(getCurrentHomePath(session)), fileSystem.getPath("/") }; + return paths; + } catch (URISyntaxException | PrivilegedActionException e) { + throw new RuntimeException("unable to initialise home file system for " + currHomeUriStr, e); + } + } + + public Path[] getMyGroupsFilesPath(FileSystemProvider nodeFileSystemProvider, Session session) { + // TODO + Path[] paths = { Paths.get(System.getProperty("user.dir")), Paths.get("/tmp") }; + return paths; + } + + public Path[] getMyBookmarks(FileSystemProvider nodeFileSystemProvider, Session session) { + // TODO + Path[] paths = { Paths.get(System.getProperty("user.dir")), Paths.get("/tmp"), Paths.get("/opt") }; + return paths; + } +}