package diskCacheV111.poolManager;
import java.io.Serializable;
import java.util.Collection;
import java.util.concurrent.CopyOnWriteArraySet;
import diskCacheV111.poolManager.PoolSelectionUnit.SelectionLink;
import diskCacheV111.poolManager.PoolSelectionUnit.SelectionLinkGroup;
class LinkGroup implements SelectionLinkGroup, Serializable {
private static final long serialVersionUID = 5425784079451748166L;
private final String _name;
private final Collection<SelectionLink> _links = new CopyOnWriteArraySet<>();
/*
* my personal view to default behavior
*/
private boolean _isNearlineAllowed = true;
private boolean _isOnlineAllowed;
private boolean _isOutputAllowed = true;
private boolean _isReplicaAllowed = true;
private boolean _isCustodialAllowed = true;
LinkGroup(String name) {
_name = name;
}
@Override
public String getName() {
return _name;
}
@Override
public void add(SelectionLink link) {
_links.add(link);
}
@Override
public boolean remove(SelectionLink link) {
return _links.remove(link);
}
@Override
public Collection<SelectionLink> getLinks() {
return _links;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(_name);
sb.append(" : ");
if (!_links.isEmpty()) {
sb.append("[ ");
for (SelectionLink link : _links) {
sb.append(link.getName());
sb.append(" ");
}
sb.append("]");
} else {
sb.append("[EMPTY]");
}
sb.append("\n");
sb.append(" AccessLatency:\n");
sb.append(" ").append("onlineAllowed=").append(_isOnlineAllowed).append("\n");
sb.append(" ").append("nearlineAllowed=").append(_isNearlineAllowed).append("\n");
sb.append(" RetentionPolicy:\n");
sb.append(" ").append("custodialAllowed=").append(_isCustodialAllowed).append("\n");
sb.append(" ").append("outputAllowed=").append(_isOutputAllowed).append("\n");
sb.append(" ").append("replicaAllowed=").append(_isReplicaAllowed).append("\n");
return sb.toString();
}
public boolean contains(SelectionLink link) {
return _links.contains(link);
}
public Collection<SelectionLink> getAllLinks() {
return _links;
}
@Override
public boolean isCustodialAllowed() {
return _isCustodialAllowed;
}
@Override
public boolean isNearlineAllowed() {
return _isNearlineAllowed;
}
@Override
public boolean isOnlineAllowed() {
return _isOnlineAllowed;
}
@Override
public boolean isOutputAllowed() {
return _isOutputAllowed;
}
@Override
public boolean isReplicaAllowed() {
return _isReplicaAllowed;
}
@Override
public void setCustodialAllowed(boolean isAllowed) {
_isCustodialAllowed = isAllowed;
}
@Override
public void setNearlineAllowed(boolean isAllowed) {
_isNearlineAllowed = isAllowed;
}
@Override
public void setOnlineAllowed(boolean isAllowed) {
_isOnlineAllowed = isAllowed;
}
@Override
public void setOutputAllowed(boolean isAllowed) {
_isOutputAllowed = isAllowed;
}
@Override
public void setReplicaAllowed(boolean isAllowed) {
_isReplicaAllowed = isAllowed;
}
}