/**
* 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." );
}
}