use of org.apache.chemistry.opencmis.commons.data.ObjectInFolderContainer in project copper-cms by PogeyanOSS.
the class NavigationActor method getFolderTree.
private JSONArray getFolderTree(QueryGetRequest request) throws CmisInvalidArgumentException, CmisRuntimeException {
String permission = request.getUserObject().getPermission();
if (!Helpers.checkingUserPremission(permission, "get")) {
throw new CmisRuntimeException(request.getUserName() + " is not authorized to applyAcl.");
}
String folderId = request.getObjectId();
String filter = request.getParameter(QueryGetRequest.PARAM_FILTER);
BigInteger depth = request.getBigIntegerParameter(QueryGetRequest.PARAM_DEPTH);
Boolean includeAllowableActions = request.getBooleanParameter(QueryGetRequest.PARAM_ALLOWABLE_ACTIONS);
IncludeRelationships includeRelationships = request.getEnumParameter(QueryGetRequest.PARAM_RELATIONSHIPS, IncludeRelationships.class);
String renditionFilter = request.getParameter(QueryGetRequest.PARAM_RENDITION_FILTER);
Boolean includePathSegment = request.getBooleanParameter(QueryGetRequest.PARAM_PATH_SEGMENT);
boolean succinct = request.getBooleanParameter(QueryGetRequest.PARAM_SUCCINCT, false);
DateTimeFormat dateTimeFormat = request.getDateTimeFormatParameter();
List<ObjectInFolderContainer> folderTree = CmisNavigationService.Impl.getFolderTree(request.getRepositoryId(), folderId, depth, filter, includeAllowableActions, includeRelationships, renditionFilter, includePathSegment, null, request.getUserObject());
if (folderTree == null) {
throw new CmisRuntimeException("Folder Tree are null!");
}
JSONArray jsonDescendants = new JSONArray();
for (ObjectInFolderContainer descendant : folderTree) {
jsonDescendants.add(JSONConverter.convert(descendant, CmisTypeCacheService.get(request.getRepositoryId()), succinct, dateTimeFormat));
}
return jsonDescendants;
}
use of org.apache.chemistry.opencmis.commons.data.ObjectInFolderContainer in project copper-cms by PogeyanOSS.
the class NavigationActor method getDescendants.
private JSONArray getDescendants(QueryGetRequest request) throws CmisInvalidArgumentException, CmisRuntimeException {
String permission = request.getUserObject().getPermission();
if (!Helpers.checkingUserPremission(permission, "get")) {
throw new CmisRuntimeException(request.getUserName() + " is not authorized to applyAcl.");
}
String folderId = request.getObjectId();
String filter = request.getParameter(QueryGetRequest.PARAM_FILTER);
BigInteger depth = request.getBigIntegerParameter(QueryGetRequest.PARAM_DEPTH);
Boolean includeAllowableActions = request.getBooleanParameter(QueryGetRequest.PARAM_ALLOWABLE_ACTIONS);
includeAllowableActions = includeAllowableActions == null ? false : includeAllowableActions;
IncludeRelationships includeRelationships = request.getEnumParameter(QueryGetRequest.PARAM_RELATIONSHIPS, IncludeRelationships.class);
String renditionFilter = request.getParameter(QueryGetRequest.PARAM_RENDITION_FILTER);
Boolean includePathSegment = request.getBooleanParameter(QueryGetRequest.PARAM_PATH_SEGMENT);
boolean succinct = request.getBooleanParameter(QueryGetRequest.PARAM_SUCCINCT, false);
DateTimeFormat dateTimeFormat = request.getDateTimeFormatParameter();
List<ObjectInFolderContainer> descendants = CmisNavigationService.Impl.getDescendants(request.getRepositoryId(), folderId, depth, filter, includeAllowableActions, includeRelationships, renditionFilter, includePathSegment, null, request.getUserObject());
if (descendants == null) {
throw new CmisRuntimeException("Descendants are null!");
}
JSONArray jsonDescendants = new JSONArray();
for (ObjectInFolderContainer descendant : descendants) {
jsonDescendants.add(JSONConverter.convert(descendant, CmisTypeCacheService.get(request.getRepositoryId()), succinct, dateTimeFormat));
}
return jsonDescendants;
}
use of org.apache.chemistry.opencmis.commons.data.ObjectInFolderContainer in project structr by structr.
the class CMISNavigationService method getDescendants.
@Override
public List<ObjectInFolderContainer> getDescendants(String repositoryId, String folderId, BigInteger depth, String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter, Boolean includePathSegment, ExtensionsData extension) {
final List<ObjectInFolderContainer> result = new LinkedList<>();
final App app = StructrApp.getInstance();
try (final Tx tx = app.tx()) {
int maxDepth = Integer.MAX_VALUE;
if (depth != null && depth.intValue() >= 0) {
maxDepth = depth.intValue();
}
for (final AbstractFile child : getChildrenQuery(app, folderId).getAsList()) {
recursivelyCollectDescendants(result, child, maxDepth, 1, includeAllowableActions);
}
tx.success();
} catch (final FrameworkException fex) {
logger.warn("", fex);
}
return result;
}
use of org.apache.chemistry.opencmis.commons.data.ObjectInFolderContainer in project structr by structr.
the class CMISNavigationService method recursivelyCollectFolderTree.
// ----- private methods -----
private void recursivelyCollectFolderTree(final List<ObjectInFolderContainer> list, final Folder child, final int maxDepth, final int depth, final Boolean includeAllowableActions) throws FrameworkException {
if (depth > maxDepth) {
return;
}
final CMISObjectInFolderWrapper wrapper = new CMISObjectInFolderWrapper(includeAllowableActions);
final ObjectInFolderContainerImpl impl = new ObjectInFolderContainerImpl();
final List<ObjectInFolderContainer> childContainerList = new LinkedList<>();
final String pathSegment = child.getName();
impl.setObject(wrapper.wrapObjectData(wrapper.wrapGraphObject(child), pathSegment));
impl.setChildren(childContainerList);
// add wrapped object to current list
list.add(impl);
// fetch and sort children
final List<Folder> children = Iterables.toList(child.getFolders());
Collections.sort(children, new GraphObjectComparator(AbstractNode.name, false));
// descend into children
for (final Folder folderChild : children) {
recursivelyCollectFolderTree(childContainerList, folderChild, maxDepth, depth + 1, includeAllowableActions);
}
}
use of org.apache.chemistry.opencmis.commons.data.ObjectInFolderContainer in project structr by structr.
the class CMISNavigationService method recursivelyCollectDescendants.
private void recursivelyCollectDescendants(final List<ObjectInFolderContainer> list, final AbstractFile child, final int maxDepth, final int depth, final Boolean includeAllowableActions) throws FrameworkException {
if (depth > maxDepth) {
return;
}
final PropertyKey<Folder> parent = StructrApp.key(AbstractFile.class, "parent");
final PropertyKey<Boolean> hasParent = StructrApp.key(AbstractFile.class, "hasParent");
final PropertyKey<Boolean> isThumbnail = StructrApp.key(Image.class, "isThumbnail");
final CMISObjectInFolderWrapper wrapper = new CMISObjectInFolderWrapper(includeAllowableActions);
final ObjectInFolderContainerImpl impl = new ObjectInFolderContainerImpl();
final List<ObjectInFolderContainer> childContainerList = new LinkedList<>();
final String pathSegment = child.getName();
impl.setObject(wrapper.wrapObjectData(wrapper.wrapGraphObject(child), pathSegment));
impl.setChildren(childContainerList);
// add wrapped object to current list
list.add(impl);
if (child.getProperty(AbstractNode.type).equals("Folder")) {
final App app = StructrApp.getInstance();
// descend into children
for (final AbstractFile folderChild : app.nodeQuery(AbstractFile.class).sort(AbstractNode.name).and(parent, (Folder) child).and(isThumbnail, false).getAsList()) {
recursivelyCollectDescendants(childContainerList, folderChild, maxDepth, depth + 1, includeAllowableActions);
}
}
}
Aggregations