package diskCacheV111.services.space;
import java.io.Serializable;
import java.util.Date;
import diskCacheV111.util.AccessLatency;
import diskCacheV111.util.RetentionPolicy;
import diskCacheV111.util.VOInfo;
public class LinkGroup implements Serializable{
private static final long serialVersionUID = -7606565102712000875L;
private long id;
private String name;
private long availableSpace;
private boolean onlineAllowed ;
private boolean nearlineAllowed ;
private boolean replicaAllowed ;
private boolean outputAllowed;
private boolean custodialAllowed ;
private VOInfo[] vos;
private long updateTime;
private long reservedSpace;
public LinkGroup(){
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getFreeSpace() {
return reservedSpace + availableSpace;
}
public String toString(){
StringBuilder sb = new StringBuilder();
sb.append(id).append(' ');
sb.append("Name:").append(name).append(' ');
sb.append("AvailableSpace:").append(availableSpace).append(' ');
sb.append("ReservedSpace:").append(reservedSpace).append(' ');
sb.append("AvailableSpace:").append(getAvailableSpace()).append(' ');
sb.append("VOs:");
for (VOInfo vo : vos) {
sb.append('{').append(vo).append('}');
}
sb.append(' ');
sb.append("onlineAllowed:").append(onlineAllowed).append(' ');
sb.append("nearlineAllowed:").append(nearlineAllowed).append(' ');
sb.append("replicaAllowed:").append(replicaAllowed).append(' ');
sb.append("custodialAllowed:").append(custodialAllowed).append(' ');
sb.append("outputAllowed:").append(outputAllowed).append(' ');
sb.append("UpdateTime:").append((new Date(updateTime)).toString()).append('(').append(updateTime).append(')');
return sb.toString();
}
public VOInfo[] getVOs() {
return vos;
}
public void setVOs(VOInfo[] vos) {
this.vos = vos;
}
public long getUpdateTime() {
return updateTime;
}
public void setUpdateTime(long updateTime) {
this.updateTime = updateTime;
}
public boolean isOnlineAllowed() {
return onlineAllowed;
}
public void setOnlineAllowed(boolean onlineAllowed) {
this.onlineAllowed = onlineAllowed;
}
public boolean isNearlineAllowed() {
return nearlineAllowed;
}
public void setNearlineAllowed(boolean nearlineAllowed) {
this.nearlineAllowed = nearlineAllowed;
}
public boolean isReplicaAllowed() {
return replicaAllowed;
}
public void setReplicaAllowed(boolean replicaAllowed) {
this.replicaAllowed = replicaAllowed;
}
public boolean isOutputAllowed() {
return outputAllowed;
}
public void setOutputAllowed(boolean outputAllowed) {
this.outputAllowed = outputAllowed;
}
public boolean isCustodialAllowed() {
return custodialAllowed;
}
public void setCustodialAllowed(boolean custodialAllowed) {
this.custodialAllowed = custodialAllowed;
}
public long getReservedSpace() {
return reservedSpace;
}
public void setReservedSpace(long reserved) {
this.reservedSpace = reserved;
}
public void setAvailableSpace(long availableSpace)
{
this.availableSpace = availableSpace;
}
public long getAvailableSpace() {
return availableSpace;
}
public boolean isAllowed(AccessLatency al)
{
return (al == AccessLatency.NEARLINE && isNearlineAllowed()) ||
(al == AccessLatency.ONLINE && isOnlineAllowed());
}
public boolean isAllowed(RetentionPolicy rp)
{
return (rp == RetentionPolicy.CUSTODIAL && isCustodialAllowed()) ||
(rp == RetentionPolicy.REPLICA && isReplicaAllowed()) ||
(rp == RetentionPolicy.OUTPUT && isOutputAllowed());
}
}