/** * Logic Operation on founding a Closing parenthesis * * @param pil * @throws NotNumberException * @throws NotBooleanException * @throws EmptyListException * @throws NotTheSameInstanceException * @throws NullObjectsInTheArrayException */ @SuppressWarnings("incomplete-switch") private static void doLogicOperation(List<Object> pil) throws NotNumberException, NotBooleanException, EmptyListException, NotTheSameInstanceException, NullObjectsInTheArrayException { List<Object> operands = new ArrayList<Object>(); List<Object> operators = new ArrayList<Object>(); Object o = pull(pil); while (CommonDifferentTests.areDifferentWhateverClass(o, LogicOperationOperators.OP)) { if (CommonClassTests.isBoolean(o)) operands.add(o); if (o instanceof LogicOperationOperators) operators.add(o); o = pull(pil); } while (CommonMathTests.ADifferentFromB(operators.size(), 0)) { LogicOperationOperators op = (LogicOperationOperators) pull(operators); Object o1 = pull(operands); Object o2 = pull(operands); switch (op) { case AND: operands.add(CommonLogicTests.and(o1, o2)); break; case OR: operands.add(CommonLogicTests.or(o1, o2)); break; } } pil.add(operands.get(0)); }
/** * Get the Boolean from the Object given * * @param o * @return * @throws NotBooleanException */ public static Boolean getBoolean(Object o) throws NotBooleanException { if (!CommonClassTests.isBoolean(o)) throw new NotBooleanException( "The object given is not instance of java.lang.Boolean : " + o.getClass().toString()); return (Boolean) o; }