| 1 28 29 package com.idaremedia.antx.valueuri.info; 30 31 import java.util.Iterator ; 32 33 import org.apache.tools.ant.Project; 34 35 import com.idaremedia.antx.apis.Requester; 36 import com.idaremedia.antx.helpers.Strings; 37 import com.idaremedia.antx.helpers.Tk; 38 import com.idaremedia.antx.starters.ValueURIHandlerSkeleton; 39 40 51 52 abstract class ManageCollectionValueURIHandler extends ValueURIHandlerSkeleton 53 { 54 static final int UNKNOWN=-1; 55 static final int SIZE=UNKNOWN+1; 56 static final int KEYSET=SIZE+1; 57 static final int VALUES=KEYSET+1; 58 static final int LOOKUP=VALUES+1; 59 static final int DUMP=LOOKUP+1; 60 61 62 65 protected ManageCollectionValueURIHandler() 66 { 67 super(); 68 } 69 70 71 75 int getDefaultOp() 76 { 77 return DUMP; 78 } 79 80 81 82 87 public String valueFrom(String uriFragment, String fullUri, Requester clnt) 88 { 89 final Project P = clnt.getProject(); 90 91 String refid = uriFragment; 92 int op = getDefaultOp(); 93 String key = null; 94 String delim = null; 95 96 int i = uriFragment.lastIndexOf("?"); 97 if (i>=0) { 98 refid = uriFragment.substring(0,i++); 99 if (i<uriFragment.length()) { 100 String instr = Tk.resolveString(P,uriFragment.substring(i),true); 101 int j = instr.lastIndexOf(",,"); 102 if (j>=0) { 103 delim = instr.substring(j+2); 104 instr = instr.substring(0,j); 105 if ("\\n".equals(delim)) { 106 delim= Strings.NL; 107 } 108 } 109 op = opFrom(instr); 110 if (op==LOOKUP) { 111 key = instr; 112 } 113 } 114 } 115 refid = Tk.resolveString(P,refid,true); 116 return valueFromTyped(refid,op,delim,key,clnt); 117 } 118 119 120 121 131 abstract String valueFromTyped(String refid, int op, String delim, String key, 132 Requester clnt); 133 134 135 136 141 int opFrom(String opstring) 142 { 143 if ("size".equals(opstring)) { 144 return SIZE; 145 } 146 if ("keys".equals(opstring)) { 147 return KEYSET; 148 } 149 if ("values".equals(opstring)) { 150 return VALUES; 151 } 152 if ("dump".equals(opstring)) { 153 return DUMP; 154 } 155 return opstring.length()>0 ? LOOKUP : getDefaultOp(); 156 } 157 158 159 160 168 String listFrom(Iterator itr, String delim) 169 { 170 StringBuffer sb = new StringBuffer (100); 171 int i=0; 172 while (itr.hasNext()) { 173 if (i>0) { 174 sb.append(delim); 175 } 176 sb.append(itr.next()); 177 i++; 178 } 179 return sb.toString(); 180 } 181 } 182 183 | Popular Tags |