package com.mobilesorcery.sdk.core;
import java.util.HashMap;
import java.util.Set;
import java.util.TreeSet;
import com.mobilesorcery.sdk.core.ICapabilities;
import com.mobilesorcery.sdk.core.Util;
public class Capabilities implements ICapabilities {
private final HashMap<String, ICapability> capabilites = new HashMap<String, ICapability>();
public Capabilities() {
}
public void setCapability(ICapability capability) {
capabilites.put(capability.getName(), capability);
}
public void removeCapability(String name) {
capabilites.remove(name);
}
public ICapabilities merge(ICapabilities other) {
return new MergeCapabilities(this, other);
}
public void copyMerge(ICapabilities other) {
for (ICapability capability : other.listCapabilities()) {
if (!hasCapability(capability.getName())) {
setCapability(other.getCapability(capability.getName()));
}
}
}
@Override
public boolean hasCapability(String capability) {
return getCapability(capability) != null;
}
@Override
public Set<ICapability> listCapabilities() {
return new TreeSet<ICapability>(capabilites.values());
}
@Override
public ICapability getCapability(String capability) {
ICapability result = capabilites.get(capability);
if (result == null) {
return capability == null ? null : getCapability(Util.getParentKey(capability));
} else {
return result;
}
}
@Override
public String toString() {
return capabilites.toString();
}
}