use of com.serotonin.m2m2.vo.FileStore in project ma-core-public by infiniteautomation.
the class FileStoreService method moveFileOrFolder.
public FileStorePath moveFileOrFolder(String xid, String src, String dst) {
FileStore fileStore = getWithoutPermissionCheck(xid);
ensureEditPermission(Common.getUser(), fileStore);
FileStorePath srcPath = getPathWithinFileStore(fileStore, src);
if (!Files.exists(srcPath.absolutePath)) {
throw new NotFoundException();
}
FileStorePath dstPath = srcPath.getParent().resolve(Paths.get(dst));
if (Files.isDirectory(dstPath.absolutePath)) {
Path pathWithFileName = dstPath.absolutePath.resolve(srcPath.absolutePath.getFileName());
dstPath = new FileStorePath(fileStore, pathWithFileName);
}
try {
Files.move(srcPath.absolutePath, dstPath.absolutePath);
return dstPath;
} catch (FileAlreadyExistsException e) {
throw new FileStoreException(new TranslatableMessage("filestore.fileExists", dstPath.standardizedPath()));
} catch (Exception e) {
throw new FileStoreException(new TranslatableMessage("filestore.errorMovingFile"));
}
}
use of com.serotonin.m2m2.vo.FileStore in project ma-core-public by infiniteautomation.
the class FileStoreService method resolveFileStore.
private FileStorePath resolveFileStore(Path path) {
Path absolutePath = path.toAbsolutePath().normalize();
if (!absolutePath.startsWith(fileStoreRoot)) {
throw new TranslatableIllegalArgumentException(new TranslatableMessage("filestore.invalidPath"));
}
Path relative = fileStoreRoot.relativize(absolutePath);
if (relative.getNameCount() == 0) {
throw new TranslatableIllegalArgumentException(new TranslatableMessage("filestore.invalidPath"));
}
String fileStoreName = relative.getName(0).toString();
FileStore fileStore = getWithoutPermissionCheck(fileStoreName);
return new FileStorePath(fileStore, absolutePath);
}
use of com.serotonin.m2m2.vo.FileStore in project ma-core-public by infiniteautomation.
the class FileStoreService method forWrite.
/**
* Retrieves the path to a file in the file store, checking that the user has write permission for the file store.
* Does not check if the file exists, only that the filestore exists.
*
* @param xid xid of the user file store, or the storeName of the {@link FileStoreDefinition}
* @throws PermissionException user does not have permission to write to the file store
* @throws NotFoundException file store does not exist
*/
public FileStorePath forWrite(String xid, String path) throws PermissionException, NotFoundException {
FileStore fileStore = getWithoutPermissionCheck(xid);
ensureEditPermission(Common.getUser(), fileStore);
return getPathWithinFileStore(fileStore, path);
}
use of com.serotonin.m2m2.vo.FileStore in project ma-core-public by infiniteautomation.
the class FileStoreService method copyFileOrFolder.
public FileStorePath copyFileOrFolder(String xid, String src, String dst) {
FileStore fileStore = getWithoutPermissionCheck(xid);
ensureEditPermission(Common.getUser(), fileStore);
FileStorePath srcPath = getPathWithinFileStore(fileStore, src);
if (!Files.exists(srcPath.absolutePath)) {
throw new NotFoundException();
}
FileStorePath dstPath = srcPath.getParent().resolve(Paths.get(dst));
if (Files.isDirectory(dstPath.absolutePath)) {
Path pathWithFileName = dstPath.absolutePath.resolve(srcPath.absolutePath.getFileName());
dstPath = new FileStorePath(fileStore, pathWithFileName);
}
if (Files.exists(dstPath.absolutePath)) {
throw new FileStoreException(new TranslatableMessage("filestore.fileExists", dstPath.standardizedPath()));
}
try {
if (Files.isDirectory(srcPath.absolutePath)) {
FileUtils.copyDirectory(srcPath.absolutePath.toFile(), dstPath.absolutePath.toFile());
} else {
Files.copy(srcPath.absolutePath, dstPath.absolutePath);
}
return dstPath;
} catch (FileAlreadyExistsException e) {
throw new FileStoreException(new TranslatableMessage("filestore.fileExists", dstPath.standardizedPath()));
} catch (Exception e) {
throw new FileStoreException(new TranslatableMessage("filestore.errorCopyingFile"));
}
}
use of com.serotonin.m2m2.vo.FileStore in project ma-core-public by infiniteautomation.
the class FileStoreService method getStores.
/**
* List all file-stores that the user has read permission for
*/
public List<FileStore> getStores() {
List<FileStore> stores = new ArrayList<>();
this.customizedQuery(new ConditionSortLimit(null, null, null, null), (item) -> stores.add(item));
PermissionHolder user = Common.getUser();
Collection<FileStoreDefinition> moduleDefs = ModuleRegistry.getFileStoreDefinitions().values();
for (FileStoreDefinition def : moduleDefs) {
if (this.permissionService.hasPermission(user, def.getReadPermission())) {
stores.add(def.toFileStore());
}
}
return stores;
}
Aggregations