1 28 29 package com.idaremedia.antx.valueuri; 30 31 import java.util.Map ; 32 33 import org.apache.tools.ant.Project; 34 35 import com.idaremedia.antx.AntX; 36 import com.idaremedia.antx.AntXFixture; 37 import com.idaremedia.antx.Iteration; 38 import com.idaremedia.antx.apis.Requester; 39 import com.idaremedia.antx.helpers.Tk; 40 import com.idaremedia.antx.parameters.TransformHelper; 41 import com.idaremedia.antx.parameters.ValueTransform; 42 import com.idaremedia.antx.starters.ValueURIHandlerSkeleton; 43 44 72 73 public class TransformValueURIHandler extends ValueURIHandlerSkeleton 74 { 75 private static final Map LINKS = AntXFixture.newMap(); 76 static { 77 LINKS.put("$transform:",null); 80 LINKS.put("$ospath:",ValueTransform.OSPATH); 81 LINKS.put("$path:",ValueTransform.OSPATH); 82 LINKS.put("$ospathurl:",ValueTransform.OSPATHURL); 83 LINKS.put("$pathurl:",ValueTransform.OSPATHURL); 84 LINKS.put("$uppercase:",ValueTransform.UPPERCASE); 85 LINKS.put("$lowercase:",ValueTransform.LOWERCASE); 86 LINKS.put("$trim:",ValueTransform.TRIM); 87 LINKS.put("$stripws:",ValueTransform.STRIPWS); 88 LINKS.put("$decimal:",ValueTransform.DECIMAL); 89 } 90 91 92 93 96 public TransformValueURIHandler() 97 { 98 super(); 99 } 100 101 102 103 112 public static ValueTransform defaultTransform(String fullUri, Requester clnt) 113 { 114 ValueTransform valfmt= null; 115 int i= fullUri.indexOf(':'); 116 if (i>0) { 117 String which= fullUri.substring(0,++i); 118 valfmt = (ValueTransform)LINKS.get(which); 119 if (valfmt==null && (i=fullUri.indexOf("?",i))>0) { 120 i++; 121 if (i<fullUri.length()-1) { 122 String byname = Tk.resolveString(clnt.getProject(), 123 fullUri.substring(i),true); 124 valfmt = ValueTransform.from(byname); 125 } 126 } 127 } 128 return valfmt; 129 } 130 131 132 133 140 public static void addMapping(String name, ValueTransform valfmt) 141 { 142 AntX.require_(name!=null&&valfmt!=null, "TransformValueURIHandler:", 143 "addMaping- nonzro args"); 144 synchronized(LINKS) { 145 LINKS.put(name,valfmt); 146 } 147 } 148 149 150 151 157 public String valueFrom(String uriFragment, String fullUri, Requester clnt) 158 { 159 ValueTransform vt = defaultTransform(fullUri,clnt); 160 if (vt!=null) { 161 int i = uriFragment.lastIndexOf('?'); 162 if (i>0) { 163 uriFragment = Tk.resolveString(clnt.getProject(), 164 uriFragment.substring(0,i), true); 165 } else { 166 uriFragment = Tk.resolveString(clnt.getProject(), 167 uriFragment, true); 168 } 169 try { 170 return TransformHelper.apply(vt,uriFragment,clnt.getProject()); 171 } catch(RuntimeException anyX) { 172 clnt.problem(anyX.getMessage(),Project.MSG_WARN); 173 if (Iteration.defaultdefaults().isHaltIfError("valueuris")) { 174 throw anyX; 175 } 176 } 177 } 178 return null; 179 } 180 } 181 182 | Popular Tags |