Search in sources :

Example 26 with VFSLeaf

use of org.olat.core.util.vfs.VFSLeaf in project OpenOLAT by OpenOLAT.

the class VersionsFileManager method delete.

@Override
public boolean delete(VFSItem item, boolean force) {
    if (item instanceof VFSContainer) {
        if (force) {
            VFSContainer container = (VFSContainer) item;
            VFSContainer versionContainer = getCanonicalVersionFolder(container, false);
            if (versionContainer == null) {
                return true;
            }
            return VFSConstants.YES.equals(versionContainer.delete());
        }
        return true;
    } else if (item instanceof VFSLeaf && item instanceof Versionable) {
        VFSLeaf leaf = (VFSLeaf) item;
        if (force || isTemporaryFile(leaf)) {
            cleanUp(leaf);
        } else {
            Identity identity = ThreadLocalUserActivityLogger.getLoggedIdentity();
            addToRevisions((Versionable) leaf, identity, null);
        }
    }
    return false;
}
Also used : VFSLeaf(org.olat.core.util.vfs.VFSLeaf) VFSContainer(org.olat.core.util.vfs.VFSContainer) Identity(org.olat.core.id.Identity)

Example 27 with VFSLeaf

use of org.olat.core.util.vfs.VFSLeaf in project OpenOLAT by OpenOLAT.

the class VersionsFileManager method rename.

@Override
public boolean rename(VFSItem item, String newname) {
    if (item instanceof VFSLeaf) {
        VFSLeaf currentFile = (VFSLeaf) item;
        VFSLeaf versionFile = getCanonicalVersionXmlFile(currentFile, true);
        // infinite loop if rename is own versions file
        return VFSConstants.YES.equals(versionFile.rename(newname + ".xml"));
    } else if (item instanceof VFSContainer) {
        VFSContainer container = (VFSContainer) item;
        VFSContainer versionContainer = getCanonicalVersionFolder(container, false);
        if (versionContainer == null) {
            return true;
        }
        return VFSConstants.YES.equals(versionContainer.rename(newname));
    }
    return false;
}
Also used : VFSLeaf(org.olat.core.util.vfs.VFSLeaf) VFSContainer(org.olat.core.util.vfs.VFSContainer)

Example 28 with VFSLeaf

use of org.olat.core.util.vfs.VFSLeaf in project OpenOLAT by OpenOLAT.

the class VFSWebservice method resolveFile.

protected VFSItem resolveFile(List<PathSegment> path) {
    VFSContainer directory = container;
    VFSItem resolvedItem = directory;
    boolean notFound = false;
    // remove trailing segment if a trailing / is used
    if (path.size() > 0 && !StringHelper.containsNonWhitespace(path.get(path.size() - 1).getPath())) {
        path = path.subList(0, path.size() - 1);
    }
    a_a: for (PathSegment seg : path) {
        String segPath = seg.getPath();
        for (VFSItem item : directory.getItems(new SystemItemFilter())) {
            if (normalize(item.getName()).equals(segPath)) {
                if (item instanceof VFSLeaf) {
                    if (path.get(path.size() - 1) == seg) {
                        resolvedItem = item;
                        break a_a;
                    }
                } else if (item instanceof VFSContainer) {
                    resolvedItem = directory = (VFSContainer) item;
                    continue a_a;
                }
            }
        }
        notFound = true;
    }
    if (notFound) {
        return null;
    }
    return resolvedItem;
}
Also used : VFSLeaf(org.olat.core.util.vfs.VFSLeaf) VFSContainer(org.olat.core.util.vfs.VFSContainer) VFSItem(org.olat.core.util.vfs.VFSItem) PathSegment(javax.ws.rs.core.PathSegment) SystemItemFilter(org.olat.core.util.vfs.filters.SystemItemFilter)

Example 29 with VFSLeaf

use of org.olat.core.util.vfs.VFSLeaf in project OpenOLAT by OpenOLAT.

the class VFSWebservice method get.

protected Response get(List<PathSegment> path, UriInfo uriInfo, Request request) {
    VFSItem vItem = resolveFile(path);
    if (vItem == null) {
        return Response.serverError().status(Status.NOT_FOUND).build();
    } else if (vItem instanceof VFSContainer) {
        VFSContainer directory = (VFSContainer) vItem;
        List<VFSItem> items = directory.getItems(new SystemItemFilter());
        int count = 0;
        FileVO[] links = new FileVO[items.size()];
        for (VFSItem item : items) {
            UriBuilder builder = uriInfo.getAbsolutePathBuilder();
            String uri = builder.path(normalize(item.getName())).build().toString();
            if (item instanceof VFSLeaf) {
                links[count++] = new FileVO("self", uri, item.getName(), ((VFSLeaf) item).getSize());
            } else {
                links[count++] = new FileVO("self", uri, item.getName());
            }
        }
        return Response.ok(links).build();
    } else if (vItem instanceof VFSLeaf) {
        VFSLeaf leaf = (VFSLeaf) vItem;
        Date lastModified = new Date(leaf.getLastModified());
        Response.ResponseBuilder response = request.evaluatePreconditions(lastModified);
        if (response == null) {
            String mimeType = WebappHelper.getMimeType(leaf.getName());
            if (mimeType == null) {
                mimeType = MediaType.APPLICATION_OCTET_STREAM;
            }
            response = Response.ok(leaf.getInputStream(), mimeType).lastModified(lastModified).cacheControl(cc);
        }
        return response.build();
    }
    return Response.serverError().status(Status.BAD_REQUEST).build();
}
Also used : Response(javax.ws.rs.core.Response) VFSLeaf(org.olat.core.util.vfs.VFSLeaf) VFSContainer(org.olat.core.util.vfs.VFSContainer) FileVO(org.olat.restapi.support.vo.FileVO) VFSItem(org.olat.core.util.vfs.VFSItem) List(java.util.List) SystemItemFilter(org.olat.core.util.vfs.filters.SystemItemFilter) UriBuilder(javax.ws.rs.core.UriBuilder) Date(java.util.Date)

Example 30 with VFSLeaf

use of org.olat.core.util.vfs.VFSLeaf in project OpenOLAT by OpenOLAT.

the class VFSWebservice method getFMetadata.

protected Response getFMetadata(List<PathSegment> path, UriInfo uriInfo) {
    VFSItem vItem = resolveFile(path);
    if (vItem == null) {
        return Response.serverError().status(Status.NOT_FOUND).build();
    } else if (vItem instanceof VFSContainer) {
        return Response.serverError().status(Status.NOT_ACCEPTABLE).build();
    } else if (vItem instanceof VFSLeaf) {
        VFSLeaf leaf = (VFSLeaf) vItem;
        UriBuilder builder = uriInfo.getAbsolutePathBuilder();
        String uri = builder.build().toString();
        String[] uriArray = uri.split("metadata/");
        uri = uriArray[0] + uriArray[1];
        FileMetadataVO metaVo = new FileMetadataVO(uri, leaf);
        return Response.ok(metaVo).build();
    }
    return Response.serverError().status(Status.BAD_REQUEST).build();
}
Also used : VFSLeaf(org.olat.core.util.vfs.VFSLeaf) VFSContainer(org.olat.core.util.vfs.VFSContainer) FileMetadataVO(org.olat.restapi.support.vo.FileMetadataVO) VFSItem(org.olat.core.util.vfs.VFSItem) UriBuilder(javax.ws.rs.core.UriBuilder)

Aggregations

VFSLeaf (org.olat.core.util.vfs.VFSLeaf)642 VFSContainer (org.olat.core.util.vfs.VFSContainer)338 VFSItem (org.olat.core.util.vfs.VFSItem)280 File (java.io.File)114 InputStream (java.io.InputStream)96 IOException (java.io.IOException)92 Test (org.junit.Test)86 ArrayList (java.util.ArrayList)72 OutputStream (java.io.OutputStream)60 MetaInfo (org.olat.core.commons.modules.bc.meta.MetaInfo)58 MetaTagged (org.olat.core.commons.modules.bc.meta.tagged.MetaTagged)58 OlatRootFolderImpl (org.olat.core.commons.modules.bc.vfs.OlatRootFolderImpl)58 Identity (org.olat.core.id.Identity)54 LocalFileImpl (org.olat.core.util.vfs.LocalFileImpl)52 VFSMediaResource (org.olat.core.util.vfs.VFSMediaResource)46 URL (java.net.URL)40 Date (java.util.Date)40 RepositoryEntry (org.olat.repository.RepositoryEntry)36 URI (java.net.URI)34 MediaResource (org.olat.core.gui.media.MediaResource)34