package de.persosim.simulator.seccondition; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import de.persosim.simulator.secstatus.SecMechanism; /** * This class implements a {@link SecCondition} representing a boolean operation * on {@link SecCondition} * * @author slutters * */ public abstract class OperatorSecCondition implements SecCondition { protected SecCondition[] secConditions; public OperatorSecCondition(SecCondition... secConditions) { this.secConditions = secConditions; } @Override public Collection<Class<? extends SecMechanism>> getNeededMechanisms() { Collection<Class<? extends SecMechanism>> effectiveMechanisms = new ArrayList<>(); Collection<Class<? extends SecMechanism>> additionalMechanisms; for(SecCondition secCondition:secConditions) { additionalMechanisms = secCondition.getNeededMechanisms(); //don't add duplicates for(Class<? extends SecMechanism> secMechanism:additionalMechanisms) { if(!effectiveMechanisms.contains(secMechanism)) { effectiveMechanisms.add(secMechanism); } } } return effectiveMechanisms; } @Override public String toString() { return getClass().getSimpleName() + "[" + Arrays.toString(secConditions) + "]"; } }