From 4e4ebd89421a330f33723d24f93908e221736c56 Mon Sep 17 00:00:00 2001 From: "Jesus M. Castagnetto" Date: Tue, 4 Jun 2013 15:52:41 -0500 Subject: [PATCH] restore Xor.java content, removed in a botched commit --- .../refine/expr/functions/booleans/Xor.java | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/main/src/com/google/refine/expr/functions/booleans/Xor.java b/main/src/com/google/refine/expr/functions/booleans/Xor.java index e69de29bb..72fdb1e16 100644 --- a/main/src/com/google/refine/expr/functions/booleans/Xor.java +++ b/main/src/com/google/refine/expr/functions/booleans/Xor.java @@ -0,0 +1,65 @@ +/* +Copyright (c) 2013, Jesus M. Castagnetto +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package com.google.refine.expr.functions.booleans; + +import java.util.Properties; + +import org.json.JSONException; +import org.json.JSONWriter; + +import com.google.refine.expr.EvalError; +import com.google.refine.grel.ControlFunctionRegistry; +import com.google.refine.grel.Function; + +public class Xor implements Function { + + /* naive implementation of the XOR operation */ + @Override + public Object call(Properties bindings, Object[] args) { + if (args.length == 2 && + args[0] != null && args[0] instanceof Boolean && + args[1] != null && args[0] instanceof Boolean) { + boolean o1 = ((Boolean) args[0]).booleanValue(); + boolean o2 = ((Boolean) args[1]).booleanValue(); + return o1 != o2; + } + return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects 2 booleans"); + } + + @Override + public void write(JSONWriter writer, Properties options) + throws JSONException { + + writer.object(); + writer.key("description"); + writer.value("XORs two boolean values"); + writer.key("params"); + writer.value("boolean a, boolean b"); + writer.key("returns"); + writer.value("boolean"); + writer.endObject(); + } +}