/* * BinaryBooleanOperation.java * @Author Oleg Gorobets * Created: 26.07.2007 * CVS-ID: $Id: *************************************************************************/ package org.swfparser.operation; import java.util.Stack; import org.springframework.util.Assert; import org.apache.log4j.Logger; import org.swfparser.BooleanOperation; import org.swfparser.Operation; public abstract class BinaryBooleanOperation extends BinaryOperation implements BooleanOperation { private static Logger logger = Logger.getLogger(BinaryBooleanOperation.class); public BinaryBooleanOperation(Operation op1, Operation op2) { super(op1, op2); // Do not test operations to be boolean as they may NOT be boolean e.g. in less,greater operations // like 2-1 > 0 // logger.debug("Testing binary operations "+op1+" and "+op2); // Assert.isTrue(validateOperation(op1)); // Assert.isTrue(validateOperation(op2)); } public BinaryBooleanOperation(Stack<Operation> stack) { super(stack); } @Override public abstract String getSign(); // public abstract String getInvertedSign(); // public String getInvertedStringValue(int level) { // String leftString = leftOp.getStringValue(level); // // // if (leftOp.getPriority() > getPriority()) { // leftString = "("+leftString+")"; // } // // String rightString = rightOp.getStringValue(level); // // // if (rightOp.getPriority() > getPriority()) { // rightString = "("+rightString+")"; // } // // return leftString+" "+getInvertedSign()+" "+rightString; // } protected boolean validateOperation(Operation op) { return (op instanceof BooleanOperation); } public abstract Operation getInvertedOperation(); @Override public boolean equals(Object obj) { if (obj instanceof NotOperation) { return obj.equals(this); // invert comparison } else { return super.equals(obj); } } }