1 28 29 package com.idaremedia.antx.valueuri.info; 30 31 import java.util.Iterator ; 32 import java.util.List ; 33 34 import org.apache.tools.ant.Project; 35 36 import com.idaremedia.antx.AntX; 37 import com.idaremedia.antx.FixtureExaminer; 38 import com.idaremedia.antx.apis.Requester; 39 import com.idaremedia.antx.helpers.Tk; 40 import com.idaremedia.antx.starters.ListFriendly; 41 42 95 96 public final class ListFriendlyValueURIHandler extends ManageCollectionValueURIHandler 97 { 98 101 public ListFriendlyValueURIHandler() 102 { 103 super(); 104 } 105 106 107 110 int getDefaultOp() 111 { 112 return VALUES; 113 } 114 115 116 121 String valueFromTyped(String refid, int op, String delim, String key, 122 Requester clnt) 123 { 124 final Project P = clnt.getProject(); 125 126 Object o; 127 if (refid.startsWith("[") && refid.endsWith("]")) { 128 refid = refid.substring(1,refid.length()-1); 129 o = null; 130 } else { 131 o = FixtureExaminer.trueReference(P,refid); 132 } 133 if (o instanceof ListFriendly) { 134 ListFriendly l = (ListFriendly)o; 135 switch(op) { 136 case SIZE: { 137 return String.valueOf(l.size()); 138 } 139 case VALUES: 140 case KEYSET: { 141 if (delim!=null) { 142 return listFrom(l.readonlyStringIterator(P),delim); 143 } 144 return l.stringFrom(P); 145 } 146 case LOOKUP: { 147 int i = Tk.integerFrom(key,-1); 148 if (i>=0) { 149 Iterator itr= l.readonlyStringIterator(P); 150 int n=0; 151 while (itr.hasNext()) { 152 String s = itr.next().toString(); 153 if (n==i) { 154 return s; 155 } 156 n++; 157 } 158 } 159 break; 160 } 161 case DUMP: { 162 return String.valueOf(o); 163 } 164 } 165 } else if (o==null || (o instanceof List )) { 166 List l = o==null ? Tk.splitList(refid.trim()) : (List )o; 167 switch(op) { 168 case SIZE: { 169 return String.valueOf(l.size()); 170 } 171 case LOOKUP: { 172 int i = Tk.integerFrom(key,-1); 173 if (i>=0 && i<l.size()) { 174 return (String )l.get(i); 175 } 176 break; 177 } 178 case VALUES: 179 case KEYSET: { 180 if (delim==null) { 181 delim = AntX.DEFAULT_DELIMITER; 182 } 183 return listFrom(l.iterator(),delim); 184 } 185 default: { 186 return String.valueOf(l); 187 } 188 } 189 } 190 return null; 191 } 192 } 193 194 | Popular Tags |