- Timestamp:
- 06/24/13 13:38:40 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
java/main/src/main/java/com/framsticks/params/ParamBuilder.java
r84 r85 55 55 private PrimitiveParam primitiveParam; 56 56 57 ParamBuilder() { 58 } 59 57 60 /** 58 61 * Build Param based on provided data. … … 62 65 * when Param getType is not defined 63 66 */ 64 public Param build() {67 public Param finish() { 65 68 assert param != null; 66 69 param.id = id; … … 73 76 } 74 77 75 public ParamBuilder setId(String id) {78 public ParamBuilder id(String id) { 76 79 this.id = id; 77 80 return this; … … 87 90 } 88 91 89 public <T extends Param> ParamBuilder setType(Class<T> type) {92 public <T extends Param> ParamBuilder type(Class<T> type) { 90 93 try { 91 94 return internalSetType(type, type.newInstance()); 92 } catch (InstantiationException e) {95 } catch (InstantiationException | IllegalAccessException e) { 93 96 e.printStackTrace(); 94 } catch (IllegalAccessException e) { 95 e.printStackTrace(); 96 } 97 return this; 98 } 99 100 public <T extends Param> ParamBuilder setType(T param) { 97 } 98 return this; 99 } 100 101 public <T extends Param> ParamBuilder type(T param) { 101 102 return internalSetType(param.getClass(), param); 102 103 } … … 108 109 } 109 110 110 public ParamBuilder setGroup(Integer group) {111 public ParamBuilder group(Integer group) { 111 112 this.group = group; 112 113 return this; 113 114 } 114 115 115 public ParamBuilder setFlags(Integer flags) {116 public ParamBuilder flags(Integer flags) { 116 117 this.flags = flags; 117 118 return this; 118 119 } 119 120 120 public ParamBuilder setName(String name) {121 public ParamBuilder name(String name) { 121 122 this.name = name; 122 123 return this; … … 142 143 } 143 144 144 public ParamBuilder setType(String type) {145 public ParamBuilder type(String type) { 145 146 146 147 log.trace("parsing type: " + type); … … 153 154 switch (first.charAt(0)) { 154 155 case 'o': { 155 setType(new ObjectParam(second != null ? second : first.substring(1)));156 type(new ObjectParam(second != null ? second : first.substring(1))); 156 157 break; 157 158 } … … 164 165 log.error("invalid procedure signature '" + signature + "': " + e); 165 166 } 166 setType(procedureParam);167 type(procedureParam); 167 168 break; 168 169 } … … 171 172 int tildeIndex = type.indexOf("~"); 172 173 if (tildeIndex != -1) { 173 setType(new EnumParam(new ArrayList<String>(Arrays.asList(type.substring(tildeIndex + 1).split("~")))));174 type(new EnumParam(new ArrayList<String>(Arrays.asList(type.substring(tildeIndex + 1).split("~"))))); 174 175 } else { 175 176 if (first.length() >= 2) { 176 switch (first.charAt(1)) {177 switch (first.charAt(1)) { 177 178 case 'b': { 178 setType(BinaryParam.class);179 type(BinaryParam.class); 179 180 break; 180 181 } 181 182 case 'c': { 182 setType(ColorParam.class);183 type(ColorParam.class); 183 184 break; 185 } 186 default: { 187 log.error("unknown type: " + first); 188 return this; 184 189 } 185 190 } 186 191 } 187 192 if ("0".equals(second) && "1".equals(third)) { 188 setType(BooleanParam.class);193 type(BooleanParam.class); 189 194 } 190 195 if (param == null) { 191 setType(DecimalParam.class);196 type(DecimalParam.class); 192 197 } 193 198 } … … 198 203 } 199 204 case 'f': { 200 setType(FloatParam.class);205 type(FloatParam.class); 201 206 parseMinMaxDefNumber(Double.class, second, third); 202 207 break; 203 208 } 204 209 case 'x': { 205 setType(UniversalParam.class);210 type(UniversalParam.class); 206 211 break; 207 212 } 208 213 case 's': { 209 setType(StringParam.class);210 setMin(second);211 setMax(third);214 type(StringParam.class); 215 min(second); 216 max(third); 212 217 break; 213 218 } 214 219 case 'e': { 215 setType(EventParam.class);220 type(EventParam.class); 216 221 break; 217 222 } 218 223 case 'l': { 219 setType(third != null ? new UniqueListParam(second, third) : new ArrayListParam(second)); 220 break; 221 } 222 223 } 224 return this; 225 } 226 227 public ParamBuilder setHelp(String help) { 224 type(third != null ? new UniqueListParam(second, third) : new ArrayListParam(second)); 225 break; 226 } 227 default:{ 228 log.error("unknown type: " + first); 229 return this; 230 } 231 } 232 return this; 233 } 234 235 public ParamBuilder help(String help) { 228 236 this.help = help; 229 237 return this; … … 237 245 } 238 246 239 public <T> ParamBuilder setMin(T min) {247 public <T> ParamBuilder min(T min) { 240 248 if (primitiveParam != null) { 241 249 this.primitiveParam.min = min; … … 244 252 } 245 253 246 public <T> ParamBuilder setMax(T max) {254 public <T> ParamBuilder max(T max) { 247 255 if (primitiveParam != null) { 248 256 this.primitiveParam.max = max; … … 251 259 } 252 260 253 public <T> ParamBuilder setDef(T def) {261 public <T> ParamBuilder def(T def) { 254 262 if (def != null && primitiveParam != null) { 255 263 this.primitiveParam.def = def; … … 277 285 278 286 try { 279 setId(paramEntryValues[0]);280 setGroup(Integer.valueOf(paramEntryValues[1]));281 setFlags(Flags.read(paramEntryValues[2]));282 setName(paramEntryValues[3]);283 setType(paramEntryValues[4]);284 setHelp(paramEntryValues[6]);287 id(paramEntryValues[0]); 288 group(Integer.valueOf(paramEntryValues[1])); 289 flags(Flags.read(paramEntryValues[2])); 290 name(paramEntryValues[3]); 291 type(paramEntryValues[4]); 292 help(paramEntryValues[6]); 285 293 } catch (IndexOutOfBoundsException e) { 286 294 /** everything is ok, parameters have just finished*/ … … 290 298 return null; 291 299 } 292 return build();300 return finish(); 293 301 } 294 302 295 303 public void setField(String key, String value) { 296 if (key.equals(ID_FIELD)) { 297 setId(value); 298 } else if (key.equals(NAME_FIELD)) { 299 setName(value); 300 } else if (key.equals(TYPE_FIELD)) { 301 setType(value); 302 } else if (key.equals(FLAGS_FIELD)) { 303 setFlags(Flags.read(value)); 304 } else if (key.equals(HELP_FIELD)) { 305 setHelp(value); 306 } else if (key.equals(GROUP_FIELD)) { 307 setGroup(Integer.valueOf(value)); 304 switch (key) { 305 case ID_FIELD: 306 id(value); 307 break; 308 case NAME_FIELD: 309 name(value); 310 break; 311 case TYPE_FIELD: 312 type(value); 313 break; 314 case FLAGS_FIELD: 315 flags(Flags.read(value)); 316 break; 317 case HELP_FIELD: 318 help(value); 319 break; 320 case GROUP_FIELD: 321 group(Integer.valueOf(value)); 322 break; 323 default: 324 log.error("unknown field for Param: " + key); 325 break; 308 326 } 309 327 } … … 312 330 public static FramsClass getFramsClass() { 313 331 return new FramsClass("prop", "prop", null) 314 .append(new ParamBuilder().setId("name").setName("Name").setType(StringParam.class).build()) 315 .append(new ParamBuilder().setId("id").setName("Id").setType(StringParam.class).build()) 316 .append(new ParamBuilder().setId("type").setName("Type").setType(StringParam.class).build()) 317 .append(new ParamBuilder().setId("help").setName("Help").setType(StringParam.class).build()) 318 .append(new ParamBuilder().setId("flags").setName("Flags").setType(DecimalParam.class).build()); 332 .append(Param.build().id("name").name("Name").type(StringParam.class)) 333 .append(Param.build().id("id").name("Id").type(StringParam.class)) 334 .append(Param.build().id("type").name("Type").type(StringParam.class)) 335 .append(Param.build().id("help").name("Help").type(StringParam.class)) 336 .append(Param.build().id("group").name("Group").type(DecimalParam.class)) 337 .append(Param.build().id("flags").name("Flags").type(DecimalParam.class)); 319 338 } 320 339
Note: See TracChangeset
for help on using the changeset viewer.