/** * Copyright 2012 Universitat Pompeu Fabra. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * */ package org.onexus.website.api.widgets.tableviewer.decorators.scale.scales; import java.io.Serializable; import java.util.HashMap; import java.util.Map; @SuppressWarnings("serial") public abstract class CutoffCmp implements Serializable { private static final long serialVersionUID = 6256197968707025432L; public static final CutoffCmp LT = new CutoffCmp("<", "less than") { @Override public boolean compare(double value, double cutoff) { return value < cutoff; } }; public static final CutoffCmp LE = new CutoffCmp("<=", "less or equal") { @Override public boolean compare(double value, double cutoff) { return value <= cutoff; } }; public static final CutoffCmp EQ = new CutoffCmp("=", "equal") { @Override public boolean compare(double value, double cutoff) { return value == cutoff; } }; public static final CutoffCmp NE = new CutoffCmp("!=", "not equal") { @Override public boolean compare(double value, double cutoff) { return value != cutoff; } }; public static final CutoffCmp GT = new CutoffCmp(">", "greater than") { @Override public boolean compare(double value, double cutoff) { return value > cutoff; } }; public static final CutoffCmp GE = new CutoffCmp(">=", "greater or equal") { @Override public boolean compare(double value, double cutoff) { return value >= cutoff; } }; public static final CutoffCmp ABS_LT = new CutoffCmp("abs <", "absolute less than") { @Override public boolean compare(double value, double cutoff) { return value < cutoff; } }; public static final CutoffCmp ABS_LE = new CutoffCmp("abs <=", "absolute less or equal") { @Override public boolean compare(double value, double cutoff) { return value <= cutoff; } }; public static final CutoffCmp ABS_EQ = new CutoffCmp("abs =", "absolute equal") { @Override public boolean compare(double value, double cutoff) { return Math.abs(value) == cutoff; } }; public static final CutoffCmp ABS_NE = new CutoffCmp("abs !=", "absolute not equal") { @Override public boolean compare(double value, double cutoff) { return Math.abs(value) != cutoff; } }; public static final CutoffCmp ABS_GT = new CutoffCmp("abs >", "absolute greater than") { @Override public boolean compare(double value, double cutoff) { return Math.abs(value) > cutoff; } }; public static final CutoffCmp ABS_GE = new CutoffCmp("abs >=", "absolute greater or equal") { @Override public boolean compare(double value, double cutoff) { return Math.abs(value) >= cutoff; } }; public static final CutoffCmp[] COMPARATORS = new CutoffCmp[]{LT, LE, GT, GE, EQ, NE, ABS_LT, ABS_LE, ABS_GT, ABS_GE, ABS_EQ, ABS_NE}; public static final Map<String, CutoffCmp> ABBREVIATED_NAME_MAP = new HashMap<String, CutoffCmp>(); public static final Map<String, CutoffCmp> SHORT_NAME_MAP = new HashMap<String, CutoffCmp>(); public static final Map<String, CutoffCmp> LONG_NAME_MAP = new HashMap<String, CutoffCmp>(); public static final Map<String, CutoffCmp> NAME_MAP = new HashMap<String, CutoffCmp>(); static { ABBREVIATED_NAME_MAP.put("lt", CutoffCmp.LT); ABBREVIATED_NAME_MAP.put("le", CutoffCmp.LE); ABBREVIATED_NAME_MAP.put("gt", CutoffCmp.GT); ABBREVIATED_NAME_MAP.put("ge", CutoffCmp.GE); ABBREVIATED_NAME_MAP.put("eq", CutoffCmp.EQ); ABBREVIATED_NAME_MAP.put("ne", CutoffCmp.NE); ABBREVIATED_NAME_MAP.put("alt", CutoffCmp.ABS_LT); ABBREVIATED_NAME_MAP.put("ale", CutoffCmp.ABS_LE); ABBREVIATED_NAME_MAP.put("agt", CutoffCmp.ABS_GT); ABBREVIATED_NAME_MAP.put("age", CutoffCmp.ABS_GE); ABBREVIATED_NAME_MAP.put("aeq", CutoffCmp.ABS_EQ); ABBREVIATED_NAME_MAP.put("ane", CutoffCmp.ABS_NE); for (CutoffCmp cmp : COMPARATORS) { SHORT_NAME_MAP.put(cmp.getShortName(), cmp); LONG_NAME_MAP.put(cmp.getLongName(), cmp); NAME_MAP.put(cmp.getShortName(), cmp); NAME_MAP.put(cmp.getLongName(), cmp); } } private String shortName; private String longName; public CutoffCmp(String shortName, String longName) { this.shortName = shortName; this.longName = longName; } public String getShortName() { return shortName; } public String getLongName() { return longName; } public abstract boolean compare(double value, double cutoff); @Override public String toString() { return shortName; } }