1 28 29 package com.idaremedia.antx.ownhelpers; 30 31 import java.util.Iterator ; 32 import java.util.List ; 33 import java.util.Map ; 34 import java.util.StringTokenizer ; 35 36 import org.apache.tools.ant.RuntimeConfigurable; 37 import org.apache.tools.ant.Task; 38 import org.apache.tools.ant.TaskContainer; 39 import org.apache.tools.ant.UnknownElement; 40 41 import com.idaremedia.antx.AntX; 42 import com.idaremedia.antx.helpers.Tk; 43 44 54 55 public final class UEContainerProxy implements TaskContainer 56 { 57 60 private final UnknownElement m_rootItem; 61 62 63 64 68 public UEContainerProxy(UnknownElement impl) 69 { 70 AntX.require_(impl!=null,AntX.nopackage,"ctor- nonzro UE"); 71 m_rootItem= impl; 72 } 73 74 75 76 77 82 public void addTask(Task task) 83 { 84 AntX.require_(task instanceof UnknownElement, 85 AntX.nopackage, "addWrappedTask- UE"); 86 UnknownElement ue = (UnknownElement)task; 87 m_rootItem.addChild(ue); 88 m_rootItem.getWrapper().addChild(ue.getWrapper()); 89 } 90 91 92 93 100 public void setAttribute(String name, String value) 101 { 102 RuntimeConfigurable wrapper = m_rootItem.getWrapper(); 103 wrapper.setAttribute(name,value); 104 } 105 106 107 108 116 public void setAttributes(Map attrs) 117 { 118 RuntimeConfigurable wrapper = m_rootItem.getWrapper(); 119 Iterator itr = attrs.entrySet().iterator(); 120 while (itr.hasNext()) { 121 Map.Entry e = (Map.Entry )itr.next(); 122 wrapper.setAttribute((String )e.getKey(),(String )e.getValue()); 123 } 124 } 125 126 127 128 136 public void addGrandchildTask(Task task, String parentname) 137 { 138 AntX.require_(task instanceof UnknownElement, 139 AntX.nopackage, "addWrappedTask- UE"); 140 UnknownElement target = getBestTarget(parentname); 141 UnknownElement ue = (UnknownElement)task; 142 target.addChild(ue); 143 target.getWrapper().addChild(ue.getWrapper()); 144 } 145 146 147 148 156 public void setGrandchildAttribute(String name, String value, 157 String parentname) 158 { 159 UnknownElement target = getBestTarget(parentname); 160 RuntimeConfigurable wrapper = target.getWrapper(); 161 wrapper.setAttribute(name,value); 162 } 163 164 165 166 173 public void setGrandchildAttributes(Map attrs, String parentname) 174 { 175 RuntimeConfigurable wrapper = getBestTarget(parentname).getWrapper(); 176 Iterator itr = attrs.entrySet().iterator(); 177 while (itr.hasNext()) { 178 Map.Entry e = (Map.Entry )itr.next(); 179 wrapper.setAttribute((String )e.getKey(),(String )e.getValue()); 180 } 181 } 182 183 184 185 191 public UnknownElement getUE() 192 { 193 return m_rootItem; 194 } 195 196 197 private UnknownElement getBestTarget(String itempath) 198 { 199 UnknownElement match = m_rootItem; 200 if (!Tk.isWhitespace(itempath)) { 201 StringTokenizer st= new StringTokenizer (itempath,","); 202 while (st.hasMoreTokens()) { 203 String nextname = st.nextToken(); 204 UnknownElement next = childFor(nextname,match); 205 if (next==null) { 206 return m_rootItem; 207 } 208 match = next; 209 } 210 } 211 return match; 212 } 213 214 215 216 private UnknownElement childFor(String childname, UnknownElement parent) 217 { 218 UnknownElement child = null; 219 if (!Tk.isWhitespace(childname)) { 220 List l = parent.getChildren(); 221 if (l!=null && !l.isEmpty()) { 222 for (int i=0,N=l.size();i<N;i++) { 223 UnknownElement next = (UnknownElement)l.get(i); 224 if (childname.equals(next.getTaskName())) { 225 child = next; 226 break; 227 } 228 } 229 } 230 } 231 return child; 232 } 233 } 234 235 236 | Popular Tags |