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;
}
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;
}
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;
}
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();
}
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();
}
Aggregations