/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.client.model;
import java.net.URI;
/**
* BucketACL will contain the details of ACL on Bucket.
* It will hold information about the user, group, customgroup, domain, bucketId etc. mapped to Bucket ACL
*
*/
@Cf("ObjectBucketACL")
public class ObjectBucketACL extends DataObject {
protected String user;
protected String group;
protected String customGroup;
protected String domain;
// Permissions for user or group or customgroup: execute,full_control,delete,none,read,privileged_write,write,read_acl,write_acl
protected String permissions;
protected String bucketACLIndex;
protected String bucketName;
protected String namespace;
protected URI bucketId;
@Name("user")
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
setChanged("user");
}
@Name("group")
public String getGroup() {
return group;
}
public void setGroup(String group) {
this.group = group;
setChanged("group");
}
@Name("domain")
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
setChanged("domain");
}
@Name("permissions")
public String getPermissions() {
return permissions;
}
public void setPermissions(String permissions) {
this.permissions = permissions;
setChanged("permissions");
}
@Name("bucketACLIndex")
@AlternateId("bucketACLIndexTable")
public String getBucketACLIndex() {
return bucketACLIndex;
}
public void setBucketACLIndex(String bucketACLIndex) {
this.bucketACLIndex = bucketACLIndex;
setChanged("bucketACLIndex");
}
@Name("bucketName")
public String getBucketName() {
return bucketName;
}
public void setBucketName(String bucketName) {
this.bucketName = bucketName;
calculateACLIndex();
setChanged("bucketName");
}
@RelationIndex(cf = "RelationIndex", type = Bucket.class)
@Name("bucketId")
public URI getBucketId() {
return bucketId;
}
public void setBucketId(URI bucketId) {
this.bucketId = bucketId;
setChanged("bucketId");
}
@Name("namespace")
public String getNamespace() {
return namespace;
}
public void setNamespace(String namespace) {
this.namespace = namespace;
setChanged("namespace");
}
@Name("customGroup")
public String getCustomGroup() {
return customGroup;
}
public void setCustomGroup(String customGroup) {
this.customGroup = customGroup;
setChanged("customGroup");
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("ObjectBucketACL [user=");
builder.append(user);
builder.append(", group=");
builder.append(group);
builder.append(", customgroup=");
builder.append(customGroup);
builder.append(", permissions=");
builder.append(permissions);
builder.append(", buckectName=");
builder.append(bucketName);
builder.append(", buckectId=");
builder.append(bucketId);
builder.append(", namespace=");
builder.append(namespace);
builder.append("]");
return builder.toString();
}
public void calculateACLIndex() {
String userOrGroupOrCustom = this.user;
String type = "user";
if (userOrGroupOrCustom == null) {
userOrGroupOrCustom = this.group != null ? this.group : this.customGroup;
type = this.group != null ? "group" : "customgroup";
}
StringBuffer aclIndexBuffer = new StringBuffer();
if (userOrGroupOrCustom != null) {
if (this.bucketId != null) {
aclIndexBuffer.append(this.bucketId)
.append(this.domain == null ? "" : this.domain.toLowerCase())
.append(userOrGroupOrCustom.toLowerCase()).append(type);
this.setBucketACLIndex(aclIndexBuffer.toString());
}
}
}
}