1 16 17 package org.apache.taglibs.standard.lang.jpath.expression; 18 19 import javax.servlet.jsp.PageContext ; 20 21 import org.apache.taglibs.standard.lang.jpath.adapter.ConversionException; 22 import org.apache.taglibs.standard.lang.jpath.adapter.Convert; 23 import org.apache.taglibs.standard.lang.jpath.adapter.IterationContext; 24 25 32 public class TranslateFunction extends SimpleNode { 33 34 41 public TranslateFunction(int id) { 42 super(id); 43 } 44 45 53 public TranslateFunction(Parser p, int id) { 54 super(p, id); 55 } 56 57 67 public String toNormalizedString() { 68 69 boolean first = true; 70 String normalized; 71 72 normalized = "substring("; 73 74 if (children != null) { 75 for (int i = 0; i < children.length; ++i) { 76 if (!first) { 77 normalized = normalized + ","; 78 } 79 80 first = false; 81 82 SimpleNode n = (SimpleNode) children[i]; 83 84 if (n != null) { 85 normalized = normalized + n.toNormalizedString(); 86 } 87 } 88 } 89 90 normalized = normalized + ")"; 91 92 return normalized; 93 } 94 95 112 public Object evaluate(PageContext pageContext, IterationContext icontext) 113 throws EvaluationException { 114 115 String result; 116 117 try { 118 String arg1 = 119 Convert.toString(jjtGetChild(0).evaluate(pageContext, 120 icontext)); 121 String arg2 = 122 Convert.toString(jjtGetChild(1).evaluate(pageContext, 123 icontext)); 124 String arg3 = 125 Convert.toString(jjtGetChild(2).evaluate(pageContext, 126 icontext)); 127 128 result = arg1; 129 130 char replacement; 131 132 for (int i = 0; i < arg2.length(); i++) { 133 if (i < arg3.length()) { 134 replacement = arg3.charAt(i); 135 } else { 136 replacement = 0; 137 } 138 139 result = result.replace(arg2.charAt(i), replacement); 140 } 141 } catch (ConversionException ce) { 142 throw new EvaluationException(this, ce.getMessage()); 143 } 144 145 return result; 146 } 147 } 148 | Popular Tags |