svn commit: r770746 - /ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/UelFunctions.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r770746 - /ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/UelFunctions.java

adrianc
Author: adrianc
Date: Fri May  1 16:31:55 2009
New Revision: 770746

URL: http://svn.apache.org/viewvc?rev=770746&view=rev
Log:
UEL functions improvements. Added str:toLowerCase(String) and str:toUpperCase(String) functions. Added a method to the UelFunctions class to make it easier to add built-in functions.

Modified:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/UelFunctions.java

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/UelFunctions.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/UelFunctions.java?rev=770746&r1=770745&r2=770746&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/UelFunctions.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/UelFunctions.java Fri May  1 16:31:55 2009
@@ -117,7 +117,9 @@
  * <tr><td><code>str:startsWith(String, String)</code></td><td>Returns <code>true</code> if this string starts with the specified prefix.</td></tr>
  * <tr><td><code>str:endstring(String, int)</code></td><td>Returns a new string that is a substring of this string. The substring begins with the character at the specified index and extends to the end of this string.</td></tr>
  * <tr><td><code>str:substring(String, int, int)</code></td><td>Returns a new string that is a substring of this string. The substring begins at the specified beginIndex and extends to the character at index endIndex - 1. Thus the length of the substring is endIndex-beginIndex.</td></tr>
+ * <tr><td><code>str:toLowerCase(String)</code></td><td>Converts all of the characters in this String to lower case using the rules of the default locale.</td></tr>
  * <tr><td><code>str:toString(Object)</code></td><td>Converts <code>Object</code> to a <code>String</code> - bypassing localization.</td></tr>
+ * <tr><td><code>str:toUpperCase(String)</code></td><td>Converts all of the characters in this String to upper case using the rules of the default locale.</td></tr>
  * <tr><td><code>str:trim(String)</code></td><td>Returns a copy of the string, with leading and trailing whitespace omitted.</td></tr>
  * <tr><td colspan="2"><b><code>sys:</code> maps to <code>java.lang.System</code></b></td></tr>
  * <tr><td><code>sys:getenv(String)</code></td><td>Gets the value of the specified environment variable.</td></tr>
@@ -133,16 +135,16 @@
 public class UelFunctions {
 
     public static final String module = UelFunctions.class.getName();
-    protected static final FunctionMapper functionMapper = new Functions();
+    protected static final Functions functionMapper = new Functions();
 
     /** Returns a <code>FunctionMapper</code> instance.
      * @return <code>FunctionMapper</code> instance
      */
-    public static FunctionMapper getFunctionMapper() {
+    protected static FunctionMapper getFunctionMapper() {
         return functionMapper;
     }
 
-    protected static class Functions extends FunctionMapper {
+    public static class Functions extends FunctionMapper {
         protected final Map<String, Method> functionMap = FastMap.newInstance();
         public Functions() {
             try {
@@ -222,6 +224,8 @@
                 this.functionMap.put("str:endstring", UelFunctions.class.getMethod("endString", String.class, int.class));
                 this.functionMap.put("str:substring", UelFunctions.class.getMethod("subString", String.class, int.class, int.class));
                 this.functionMap.put("str:toString", UelFunctions.class.getMethod("toString", Object.class));
+                this.functionMap.put("str:toLowerCase", UelFunctions.class.getMethod("toLowerCase", String.class));
+                this.functionMap.put("str:toUpperCase", UelFunctions.class.getMethod("toUpperCase", String.class));
                 this.functionMap.put("str:trim", UelFunctions.class.getMethod("trim", String.class));
                 this.functionMap.put("sys:getenv", UelFunctions.class.getMethod("sysGetEnv", String.class));
                 this.functionMap.put("sys:getProperty", UelFunctions.class.getMethod("sysGetProp", String.class));
@@ -230,20 +234,20 @@
                 this.functionMap.put("util:defaultTimeZone", TimeZone.class.getMethod("getDefault"));
                 this.functionMap.put("util:urlExists", UelFunctions.class.getMethod("urlExists", String.class));
             } catch (Exception e) {
-                Debug.logWarning("Error while initializing UelFunctions.Functions instance: " + e, module);
+                Debug.logError("Error while initializing UelFunctions.Functions instance: " + e, module);
             }
             Debug.logVerbose("UelFunctions.Functions loaded " + this.functionMap.size() + " functions", module);
         }
-        public void setFunction(String prefix, String localName, Method method) {
-            synchronized(this) {
-                functionMap.put(prefix + ":" + localName, method);
-            }
-        }
         public Method resolveFunction(String prefix, String localName) {
             return functionMap.get(prefix + ":" + localName);
         }
     }
 
+    /** Add a function to OFBiz's built-in UEL functions. */
+    public static synchronized void setFunction(String prefix, String localName, Method method) {
+        functionMapper.functionMap.put(prefix + ":" + localName, method);
+    }
+
     public static String dateString(Timestamp stamp, TimeZone timeZone, Locale locale) {
         DateFormat dateFormat = UtilDateTime.toDateFormat(UtilDateTime.DATE_FORMAT, timeZone, locale);
         dateFormat.setTimeZone(timeZone);
@@ -356,6 +360,20 @@
         return null;
     }
 
+    public static String toLowerCase(String str) {
+        try {
+            return str.toLowerCase();
+        } catch (Exception e) {}
+        return null;
+    }
+
+    public static String toUpperCase(String str) {
+        try {
+            return str.toUpperCase();
+        } catch (Exception e) {}
+        return null;
+    }
+
     public static String toString(Object obj) {
         return obj.toString();
     }