/** * Copyright 2010 JBoss Inc * * 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.drools.eclipse.rulebuilder.modeldriven; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * This contains some simple mappings between operators, conditional elements * and the human readable equivalent. * * Yes, I am making the presumption that programmers are not human, but I think * they (we) are cool with that. * * @author Michael Neale */ public class HumanReadable { public static Map operatorDisplayMap = new HashMap(); public static Map ceDisplayMap = new HashMap(); public static Map actionDisplayMap = new HashMap(); public static final String[] CONDITIONAL_ELEMENTS = new String[]{"not", "exists", "or"}; static { operatorDisplayMap.put( "==", "is equal to" ); operatorDisplayMap.put( "!=", "is not equal to" ); operatorDisplayMap.put( "<", "is less than" ); operatorDisplayMap.put( "<=", "less than or equal to" ); operatorDisplayMap.put( ">", "greater than" ); operatorDisplayMap.put( ">=", "greater than or equal to" ); operatorDisplayMap.put( "soundslike", "sounds like" ); operatorDisplayMap.put( "|| ==", "or equal to" ); operatorDisplayMap.put( "|| !=", "or not equal to" ); operatorDisplayMap.put( "&& !=", "and not equal to" ); operatorDisplayMap.put( "&& >", "and greater than" ); operatorDisplayMap.put( "&& <", "and less than" ); operatorDisplayMap.put( "|| >", "or greater than" ); operatorDisplayMap.put( "|| <", "or less than" ); operatorDisplayMap.put( "|| >=", "or greater than (or equal to)" ); operatorDisplayMap.put( "|| <=", "or less than (or equal to)" ); operatorDisplayMap.put( "&& >=", "and greater than (or equal to)" ); operatorDisplayMap.put( "&& <=", "or less than (or equal to)" ); operatorDisplayMap.put( "&& contains", "and contains" ); operatorDisplayMap.put( "|| contains", "or contains" ); operatorDisplayMap.put( "&& matches", "and matches" ); operatorDisplayMap.put( "|| matches", "or matches" ); operatorDisplayMap.put( "|| excludes", "or excludes" ); operatorDisplayMap.put( "&& excludes", "and excludes" ); ceDisplayMap.put( "not", "There is no" ); ceDisplayMap.put( "exists", "There exists" ); ceDisplayMap.put( "or", "Any of" ); actionDisplayMap.put( "assert", "Insert" ); actionDisplayMap.put( "assertLogical", "Logically insert" ); actionDisplayMap.put( "retract", "Retract" ); actionDisplayMap.put( "set", "Set" ); actionDisplayMap.put( "modify", "Modify" ); } public static String getActionDisplayName(String action) { return lookup( action, actionDisplayMap ); } public static String getOperatorDisplayName(String op) { return lookup( op, operatorDisplayMap ); } public static String getCEDisplayName(String ce) { return lookup( ce, ceDisplayMap ); } private static String lookup(String ce, Map map) { if ( map.containsKey( ce ) ) { return (String) map.get( ce ); } else { return ce; } } /** * get operator by its display name * * @param op * operator display name * @return operator */ public static String getOperatorName(String op) { Set keys = operatorDisplayMap.keySet(); for ( Iterator iter = keys.iterator(); iter.hasNext(); ) { String key = (String) iter.next(); if ( op.equals( operatorDisplayMap.get( key ) ) ) { return key; } } throw new RuntimeException( "No operator display name '" + op + "' was found." ); } }