]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java
Introduce SLC Main command line
[gpl/argeo-slc.git] / org.argeo.slc.agent / src / main / java / org / argeo / slc / ant / spring / OverrideArg.java
1 package org.argeo.slc.ant.spring;
2
3 import java.util.List;
4 import java.util.Vector;
5
6 import org.apache.tools.ant.BuildException;
7
8 import org.argeo.slc.core.SlcException;
9
10 /** Ant type allowing to override bean properties. */
11 public class OverrideArg extends SpringArg<Object> {
12 private String name;
13 private Object value;
14 private OverrideList overrideList;
15 private MapArg overrideMap;
16
17 /** The name of the property to override. */
18 public String getName() {
19 return name;
20 }
21
22 /** Sets the name. */
23 public void setName(String name) {
24 this.name = name;
25 }
26
27 /** Both value and bean cannot be set. */
28 public void setValue(String value) {
29 checkValueAlreadySet();
30 this.value = value;
31 }
32
33 @Override
34 public void setBean(String bean) {
35 checkValueAlreadySet();
36 super.setBean(bean);
37 }
38
39 /** Creates override list sub tag. */
40 public OverrideList createList() {
41 checkValueAlreadySet();
42 overrideList = new OverrideList();
43 return overrideList;
44 }
45
46 public MapArg createMap() {
47 checkValueAlreadySet();
48 overrideMap = new MapArg();
49 return overrideMap;
50 }
51
52 /**
53 * The related object: the value if a value had been set or an instance of
54 * the bean if not.
55 */
56 public Object getObject() {
57 if (value != null) {
58 return value;
59 } else if (getBean() != null || getAntref() != null) {
60 return getBeanInstance();
61 } else if (overrideList != null) {
62 return overrideList.getAsObjectList();
63 } else if (overrideMap != null) {
64 return overrideMap.getMap();
65 } else {
66 throw new BuildException("Value or bean not set.");
67 }
68 }
69
70 protected void checkValueAlreadySet() {
71 super.checkValueAlreadySet();
72 if (value != null || overrideList != null || overrideMap != null) {
73 throw new BuildException("Value already set.");
74 }
75 }
76
77 /** List of overrides */
78 protected class OverrideList {
79 private List<OverrideArg> list = new Vector<OverrideArg>();
80
81 /** Creates override sub tag. */
82 public OverrideArg createOverride() {
83 OverrideArg overrideArg = new OverrideArg();
84 list.add(overrideArg);
85 return overrideArg;
86 }
87
88 /** Gets as list of objects. */
89 public List<Object> getAsObjectList() {
90 List<Object> objectList = new Vector<Object>();
91 for (OverrideArg arg : list) {
92 objectList.add(arg.getObject());
93 }
94 return objectList;
95 }
96 }
97 }