package de.persosim.simulator.seccondition; import java.util.ArrayList; import java.util.Collection; import de.persosim.simulator.platform.ProtocolMechanism; import de.persosim.simulator.protocols.Protocol; import de.persosim.simulator.secstatus.SecMechanism; /** * This {@link SecCondition} requires a protocol of a certain type to be * currently active. * * @author slutters * */ public class ProtocolSecCondition implements SecCondition { protected Class<? extends Protocol> protocol; public ProtocolSecCondition(Class<? extends Protocol> protocol) { this.protocol = protocol; } @Override public boolean check(Collection<SecMechanism> mechanisms) { for(SecMechanism secMechanism:mechanisms) { if(secMechanism instanceof ProtocolMechanism) { return protocol.isAssignableFrom(((ProtocolMechanism) secMechanism).getCurrentlyActiveProtocol()); } } return false; } @Override public Collection<Class<? extends SecMechanism>> getNeededMechanisms() { Collection<Class<? extends SecMechanism>> mechanisms = new ArrayList<>(); mechanisms.add(ProtocolMechanism.class); return mechanisms; } @Override public String toString() { return getClass().getSimpleName() + "[" + protocol.getName() + "]"; } }