package com.mobilesorcery.sdk.core;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class MergeCapabilities implements ICapabilities {
private final ICapabilities[] children;
public MergeCapabilities(ICapabilities... children) {
this.children = children;
}
@Override
public boolean hasCapability(String capability) {
return getCapability(capability) != null;
}
@Override
public Set<ICapability> listCapabilities() {
HashSet<ICapability> result = new HashSet<ICapability>();
for (int i = 0; i < children.length; i++) {
if (children[i] != null) {
result.addAll(children[i].listCapabilities());
}
}
return result;
}
@Override
public ICapability getCapability(String capability) {
for (int i = 0; i < children.length; i++) {
ICapability child = children[i] == null ? null : children[i].getCapability(capability);
if (child != null) {
return child;
}
}
return null;
}
@Override
public String toString() {
return Arrays.asList(children).toString();
}
}