package de.tud.inf.operator.capabilites; import java.util.ArrayList; import java.util.List; public abstract class AttributeCapability implements Capability{ protected BoolCapability inner; public void setCapability(BoolCapability cap) { this.inner = cap; } public void setInnerTypes(int[] types, boolean isAnd){ if(isAnd) inner = new AndCapability(); else inner = new OrCapability(); for(int i=0;i<types.length;i++){ inner.addCapability(new AttributeTypeCapability(types[i])); } } public boolean checkCapability(Capability toCheck) { if(toCheck.getType() == this.getType()) { if(inner == null) return true; boolean valid = false; for(Capability toCheckChild : toCheck.getInnerCapabilities()) { if(inner.checkCapability(toCheckChild)) { valid = true; break; } } if(!valid) return false; return true; } return false; } public List<Capability> getInnerCapabilities() { ArrayList<Capability> list = new ArrayList<Capability>(); list.add(inner); return list; } public abstract int getType(); public String getAsString(){ return inner.getAsString(); } }