Search in sources :

Example 21 with FileStore

use of com.serotonin.m2m2.vo.FileStore in project ma-core-public by infiniteautomation.

the class FileStoreService method get.

/**
 * @param xid xid of the user file store, or the storeName of the {@link FileStoreDefinition}
 */
@Override
public FileStore get(String xid) throws PermissionException, NotFoundException {
    FileStore vo = getWithoutPermissionCheck(xid);
    ensureReadPermission(Common.getUser(), vo);
    return vo;
}
Also used : FileStore(com.serotonin.m2m2.vo.FileStore)

Example 22 with FileStore

use of com.serotonin.m2m2.vo.FileStore in project ma-core-public by infiniteautomation.

the class FileStoreService method delete.

@Override
protected FileStore delete(FileStore vo) throws PermissionException, NotFoundException {
    if (ModuleRegistry.getFileStoreDefinitions().containsKey(vo.getXid())) {
        throw new UnsupportedOperationException("Deleting a built in filestore is not supported");
    }
    FileStore deleted = super.delete(vo);
    Path root = getFileStoreRoot(deleted);
    if (Files.exists(root)) {
        try {
            FileUtils.deleteDirectory(root.toFile());
        } catch (IOException e) {
            throw new FileStoreException(new TranslatableMessage("filestore.failedToDeleteFiles", deleted.getXid()), e);
        }
    }
    return deleted;
}
Also used : Path(java.nio.file.Path) FileStore(com.serotonin.m2m2.vo.FileStore) IOException(java.io.IOException) TranslatableMessage(com.serotonin.m2m2.i18n.TranslatableMessage)

Example 23 with FileStore

use of com.serotonin.m2m2.vo.FileStore in project ma-core-public by infiniteautomation.

the class FileStoreService method getPathWithinFileStore.

private FileStorePath getPathWithinFileStore(FileStore fileStore, String path) {
    Path root = getFileStoreRoot(fileStore);
    Path filePath = root.resolve(path).toAbsolutePath().normalize();
    if (!filePath.startsWith(root)) {
        throw new TranslatableIllegalArgumentException(new TranslatableMessage("filestore.invalidPath"));
    }
    return new FileStorePath(fileStore, filePath);
}
Also used : Path(java.nio.file.Path) TranslatableIllegalArgumentException(com.infiniteautomation.mango.util.exception.TranslatableIllegalArgumentException) TranslatableMessage(com.serotonin.m2m2.i18n.TranslatableMessage)

Example 24 with FileStore

use of com.serotonin.m2m2.vo.FileStore in project ma-core-public by infiniteautomation.

the class FileStoreService method validate.

@Override
public ProcessResult validate(FileStore vo) {
    ProcessResult result = super.validate(vo);
    validateXid(result, vo);
    PermissionHolder user = Common.getUser();
    permissionService.validatePermission(result, "readPermission", user, vo.getReadPermission());
    permissionService.validatePermission(result, "writePermission", user, vo.getWritePermission());
    return result;
}
Also used : ProcessResult(com.serotonin.m2m2.i18n.ProcessResult) PermissionHolder(com.serotonin.m2m2.vo.permission.PermissionHolder)

Example 25 with FileStore

use of com.serotonin.m2m2.vo.FileStore in project ma-core-public by infiniteautomation.

the class FileStoreService method update.

@Override
protected FileStore update(FileStore existing, FileStore vo) throws PermissionException, ValidationException {
    if (ModuleRegistry.getFileStoreDefinitions().containsKey(existing.getXid())) {
        throw new UnsupportedOperationException("Updating a built in filestore is not supported");
    }
    FileStore updated = super.update(existing, vo);
    // move files to the new location if the XID changed
    if (!updated.getXid().equals(existing.getXid())) {
        Path existingPath = getFileStoreRoot(existing);
        Path newPath = getFileStoreRoot(updated);
        if (Files.exists(existingPath)) {
            try {
                Files.move(existingPath, newPath);
            } catch (IOException e) {
                throw new FileStoreException(new TranslatableMessage("filestore.failedToMoveFiles", updated.getXid()), e);
            }
        }
    }
    return updated;
}
Also used : Path(java.nio.file.Path) FileStore(com.serotonin.m2m2.vo.FileStore) IOException(java.io.IOException) TranslatableMessage(com.serotonin.m2m2.i18n.TranslatableMessage)

Aggregations

FileStore (com.serotonin.m2m2.vo.FileStore)38 Path (java.nio.file.Path)18 TranslatableMessage (com.serotonin.m2m2.i18n.TranslatableMessage)17 IOException (java.io.IOException)15 TranslatableIllegalArgumentException (com.infiniteautomation.mango.util.exception.TranslatableIllegalArgumentException)10 NotFoundException (com.infiniteautomation.mango.util.exception.NotFoundException)7 TranslatableRuntimeException (com.infiniteautomation.mango.util.exception.TranslatableRuntimeException)6 ValidationException (com.infiniteautomation.mango.util.exception.ValidationException)6 PermissionException (com.serotonin.m2m2.vo.permission.PermissionException)6 FileAlreadyExistsException (java.nio.file.FileAlreadyExistsException)6 NoSuchFileException (java.nio.file.NoSuchFileException)6 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)5 MangoPermission (com.infiniteautomation.mango.permission.MangoPermission)4 PermissionHolder (com.serotonin.m2m2.vo.permission.PermissionHolder)4 ApiOperation (io.swagger.annotations.ApiOperation)4 ArrayList (java.util.ArrayList)4 FileStoreModel (com.infiniteautomation.mango.rest.latest.model.filestore.FileStoreModel)3 ConditionSortLimit (com.infiniteautomation.mango.db.query.ConditionSortLimit)2 MangoScript (com.infiniteautomation.mango.spring.script.MangoScript)2 LoadFileStorePermission (com.infiniteautomation.mango.spring.script.permissions.LoadFileStorePermission)2