/*******************************************************************************
* Copyright (c) 2012-2015 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.api.vfs.shared.dto;
import org.eclipse.che.dto.shared.DTO;
import java.util.List;
import java.util.Map;
/** @author <a href="mailto:andrew00x@gmail.com">Andrey Parfonov</a> */
@DTO
public interface VirtualFileSystemInfo {
String ANONYMOUS_PRINCIPAL = "anonymous";
String ANY_PRINCIPAL = "any";
String getId();
VirtualFileSystemInfo withId(String id);
void setId(String id);
boolean isVersioningSupported();
VirtualFileSystemInfo withVersioningSupported(boolean versioningSupported);
void setVersioningSupported(boolean versioningSupported);
boolean isLockSupported();
VirtualFileSystemInfo withLockSupported(boolean lockSupported);
void setLockSupported(boolean lockSupported);
String getAnonymousPrincipal();
VirtualFileSystemInfo withAnonymousPrincipal(String anonymousPrincipal);
void setAnonymousPrincipal(String anonymousPrincipal);
String getAnyPrincipal();
VirtualFileSystemInfo withAnyPrincipal(String anyPrincipal);
void setAnyPrincipal(String anyPrincipal);
List<String> getPermissions();
VirtualFileSystemInfo withPermissions(List<String> permissions);
void setPermissions(List<String> permissions);
ACLCapability getAclCapability();
VirtualFileSystemInfo withAclCapability(ACLCapability aclCapability);
void setAclCapability(ACLCapability aclCapability);
QueryCapability getQueryCapability();
VirtualFileSystemInfo withQueryCapability(QueryCapability queryCapability);
void setQueryCapability(QueryCapability queryCapability);
Map<String, Link> getUrlTemplates();
VirtualFileSystemInfo withUrlTemplates(Map<String, Link> uriTemplates);
void setUrlTemplates(Map<String, Link> uriTemplates);
Folder getRoot();
VirtualFileSystemInfo withRoot(Folder root);
void setRoot(Folder root);
/** ACL capabilities. */
public enum ACLCapability {
/** ACL is not supported. */
NONE("none"),
/** ACL may be only discovered but can't be changed over virtual file system API. */
READ("read"),
/** ACL may be discovered and managed. */
MANAGE("manage");
private final String value;
private ACLCapability(String value) {
this.value = value;
}
/** @return value of ACLCapabilities */
public String value() {
return value;
}
/**
* Get ACLCapabilities instance from string value.
*
* @param value
* string value
* @return ACLCapabilities
* @throws IllegalArgumentException
* if there is no corresponded ACLCapabilities for specified <code>value</code>
*/
public static ACLCapability fromValue(String value) {
for (ACLCapability e : ACLCapability.values()) {
if (e.value.equals(value)) {
return e;
}
}
throw new IllegalArgumentException(value);
}
/** @see Enum#toString() */
public String toString() {
return value;
}
}
/** Query capabilities. */
public enum QueryCapability {
/** Query is not supported. */
NONE("none"),
/** Query supported for properties only. */
PROPERTIES("properties"),
/** Full text search supported only. */
FULLTEXT("fulltext"),
/** Both queries are supported but not in one statement. */
BOTHSEPARATE("bothseparate"),
/** Both queries are supported in one statement. */
BOTHCOMBINED("bothcombined");
private final String value;
private QueryCapability(String value) {
this.value = value;
}
/** @return value of QueryCapability */
public String value() {
return value;
}
/**
* Get QueryCapability instance from string value.
*
* @param value
* string value
* @return QueryCapability
* @throws IllegalArgumentException
* if there is no corresponded QueryCapability for specified <code>value</code>
*/
public static QueryCapability fromValue(String value) {
for (QueryCapability e : QueryCapability.values()) {
if (e.value.equals(value)) {
return e;
}
}
throw new IllegalArgumentException(value);
}
/** @see Enum#toString() */
@Override
public String toString() {
return value;
}
}
/** Basic permissions. */
public enum BasicPermissions {
/** Read permission. */
READ("read"),
/** Write permission. */
WRITE("write"),
/** Update item permissions (ACL). */
UPDATE_ACL("update_acl"),
/** All. Any operation allowed. */
ALL("all");
private final String value;
private BasicPermissions(String value) {
this.value = value;
}
/** @return value of BasicPermissions */
public String value() {
return value;
}
/**
* Get BasicPermissions instance from string value.
*
* @param value
* string value
* @return BasicPermissions
* @throws IllegalArgumentException
* if there is no corresponded BasicPermissions for specified <code>value</code>
*/
public static BasicPermissions fromValue(String value) {
for (BasicPermissions e : BasicPermissions.values()) {
if (e.value.equals(value)) {
return e;
}
}
throw new IllegalArgumentException(value);
}
/** @see Enum#toString() */
@Override
public String toString() {
return value;
}
}
}