Author: adrianc
Date: Wed Apr  4 12:49:12 2012
New Revision: 1309360

URL: http://svn.apache.org/viewvc?rev=1309360&view=rev
Log:
Added some static methods to FlexibleStringExpander that enable querying an 
expression about its component parts.

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

Modified: 
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/FlexibleStringExpander.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/FlexibleStringExpander.java?rev=1309360&r1=1309359&r2=1309360&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/FlexibleStringExpander.java
 (original)
+++ 
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/FlexibleStringExpander.java
 Wed Apr  4 12:49:12 2012
@@ -51,6 +51,55 @@ public abstract class FlexibleStringExpa
     protected static final UtilCache<Key, FlexibleStringExpander> exprCache = 
UtilCache.createUtilCache("flexibleStringExpander.ExpressionCache");
     protected static final FlexibleStringExpander nullExpr = new 
ConstSimpleElem(new char[0]);
 
+    /**
+     * Returns <code>true</code> if <code>fse</code> contains a 
<code>String</code> constant.
+     * @param fse The <code>FlexibleStringExpander</code> to test
+     * @return <code>true</code> if <code>fse</code> contains a 
<code>String</code> constant
+     */
+    public static boolean containsConstant(FlexibleStringExpander fse) {
+        if (fse instanceof ConstSimpleElem || fse instanceof ConstOffsetElem) {
+            return true;
+        }
+        if (fse instanceof Elements) {
+            Elements fseElements = (Elements) fse;
+            for (FlexibleStringExpander childElement : fseElements.childElems) 
{
+                if (containsConstant(childElement)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Returns <code>true</code> if <code>fse</code> contains an expression.
+     * @param fse The <code>FlexibleStringExpander</code> to test
+     * @return <code>true</code> if <code>fse</code> contains an expression
+     */
+    public static boolean containsExpression(FlexibleStringExpander fse) {
+        return !(fse instanceof ConstSimpleElem);
+    }
+
+    /**
+     * Returns <code>true</code> if <code>fse</code> contains a script.
+     * @param fse The <code>FlexibleStringExpander</code> to test
+     * @return <code>true</code> if <code>fse</code> contains a script
+     */
+    public static boolean containsScript(FlexibleStringExpander fse) {
+        if (fse instanceof ScriptElem) {
+            return true;
+        }
+        if (fse instanceof Elements) {
+            Elements fseElements = (Elements) fse;
+            for (FlexibleStringExpander childElement : fseElements.childElems) 
{
+                if (containsScript(childElement)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
     /** Evaluate an expression and return the result as a <code>String</code>.
      * Null expressions return <code>null</code>.
      * A null <code>context</code> argument will return the original 
expression.


Reply via email to