package org.krakenapps.logdb.query.command; import java.util.Map; public class OptionChecker { private boolean bracket; private String lh1; private String rh1; private OptionChecker lh2; private boolean isAnd; private OptionChecker rh2; public OptionChecker(String lh, String rh) { this.bracket = true; this.lh1 = lh; this.rh1 = rh; } public OptionChecker(OptionChecker lh, boolean isAnd, OptionChecker rh) { this.lh2 = lh; this.isAnd = isAnd; this.rh2 = rh; } public boolean eval(Map<String, Object> m) { if (lh1 != null && rh1 != null) return rh1.equals(m.get(lh1)); if (isAnd) return lh2.eval(m) & rh2.eval(m); else return lh2.eval(m) | rh2.eval(m); } public boolean isBracket() { return bracket; } public void setBracket(boolean bracket) { this.bracket = bracket; } public String getLh1() { return lh1; } public String getRh1() { return rh1; } public OptionChecker getLh2() { return lh2; } public boolean isAnd() { return isAnd; } public OptionChecker getRh2() { return rh2; } public boolean isHighPriority() { if (bracket) return true; if (lh1 != null && rh1 != null) return true; if (isAnd) return true; return false; } @Override public String toString() { if (lh1 != null && rh1 != null) return (lh1 + "=>" + rh1); else return ("(" + lh2 + (isAnd ? " & " : " | ") + rh2 + ")"); } }