![JAR search and dependency download from the Maven repository](/logo.png)
de.tsl2.nano.util.operation.BooleanOperator Maven / Gradle / Ivy
/*
* File: $HeadURL$
* Id : $Id$
*
* created by: Tom
* created on: 22.10.2013
*
* Copyright: (c) Thomas Schneider 2013, all rights reserved
*/
package de.tsl2.nano.util.operation;
import java.text.FieldPosition;
import java.text.Format;
import java.text.ParsePosition;
import java.util.HashMap;
import java.util.Map;
import de.tsl2.nano.action.CommonAction;
import de.tsl2.nano.action.IAction;
import de.tsl2.nano.core.util.Util;
/**
* Boolean Operator as a sample implementation of {@link Operator}. Is able to do boolean operations.
*
* TODO: performance enhancing pre-check for evaluation (e.g.: A | B ==> if A is true, B can be ignored!)
* TODO: XOR ==> !(A&B)&(A|B), NOT ==> (!A), EQUALS ==> (A&B)|!(A&B)
* TODO: Boolean with bits: TRUE=1, FALSE=0
*
* @author Tom
* @version $Revision$
*/
public class BooleanOperator extends SOperator {
/**
* constructor
*/
public BooleanOperator() {
super();
}
/**
* constructor
*
* @param values
*/
public BooleanOperator(Map values) {
super(CharSequence.class, createConverter(), values);
}
protected static IConverter createConverter() {
@SuppressWarnings("serial")
Format fmt = new Format() {
@Override
public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) {
return toAppendTo.append(((Boolean) obj).toString());
}
@Override
public Object parseObject(String source, ParsePosition pos) {
pos.setIndex(Util.isEmpty(source) ? 1 : source.length());
return Boolean.valueOf(source);
}
};
return new FromCharSequenceConverter(fmt);
}
/**
* define all possible operations. see {@link #operationDefs}
*/
@Override
@SuppressWarnings("serial")
protected void createOperations() {
syntax.put(KEY_OPERATION, "[!&|=]");
// syntax.put(KEY_DEFAULT_OPERAND, "false");
// syntax.put(KEY_DEFAULT_OPERATOR, "|");
operationDefs = new HashMap>();
addOperation("&", new CommonAction() {
@Override
public Boolean action() throws Exception {
return (Boolean) parameters().getValue(0) & (Boolean) parameters().getValue(1);
}
});
addOperation("|", new CommonAction() {
@Override
public Boolean action() throws Exception {
return (Boolean) parameters().getValue(0) | (Boolean) parameters().getValue(1);
}
});
addOperation("!", new CommonAction() {
@Override
public Boolean action() throws Exception {
return !(Boolean) parameters().getValue(1);
}
});
addOperation("=", new CommonAction() {
@Override
public Boolean action() throws Exception {
return Util.equals(parameter.getValues());
}
});
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy