package de.tum.in.i22.uc.pdp.core.condition.operators;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.tum.in.i22.uc.pdp.core.condition.Operator;
import de.tum.in.i22.uc.pdp.core.shared.Event;
import de.tum.in.i22.uc.pdp.core.shared.IPdpMechanism;
import de.tum.in.i22.uc.pdp.xsd.ImpliesType;
public class OSLImplies extends ImpliesType {
private static Logger log = LoggerFactory.getLogger(OSLImplies.class);
public OSLImplies() {
}
public OSLImplies(Operator operand1, Operator operand2) {
this.getOperators().add(operand1);
this.getOperators().add(operand2);
}
@Override
public void initOperatorForMechanism(IPdpMechanism mech) {
super.initOperatorForMechanism(mech);
((Operator) this.getOperators().get(0)).initOperatorForMechanism(mech);
((Operator) this.getOperators().get(1)).initOperatorForMechanism(mech);
}
public String toString() {
String str = "(" + this.getOperators().get(0) + " ==> "
+ this.getOperators().get(1) + ")";
return str;
}
@Override
public boolean evaluate(Event curEvent) {
Boolean op1state = ((Operator) this.getOperators().get(0))
.evaluate(curEvent);
Boolean op2state = ((Operator) this.getOperators().get(1))
.evaluate(curEvent);
this.state.value = !op1state || op2state;
log.debug("eval IMPLIES [{}]", this.state.value);
return this.state.value;
}
}