001: /*
002: * Project: AMODA - Abstract Modeled Application
003: * Class: de.gulden.framework.amoda.environment.ant.ANTTaskEnvironment
004: * Version: snapshot-beautyj-1.1
005: *
006: * Date: 2004-09-29
007: *
008: * This is a snapshot version of the AMODA 0.2 development branch,
009: * it is not released as a seperate version.
010: * For AMODA, see http://amoda.berlios.de/.
011: *
012: * This is licensed under the GNU Lesser General Public License (LGPL)
013: * and comes with NO WARRANTY.
014: *
015: * Author: Jens Gulden
016: * Email: amoda@jensgulden.de
017: */
018:
019: package de.gulden.framework.amoda.environment.ant;
020:
021: import de.gulden.framework.amoda.environment.commandline.*;
022: import de.gulden.framework.amoda.generic.core.*;
023: import de.gulden.framework.amoda.model.core.*;
024: import de.gulden.framework.amoda.model.data.*;
025: import de.gulden.framework.amoda.model.data.Value;
026: import de.gulden.framework.amoda.model.interaction.*;
027: import java.lang.*;
028: import java.util.*;
029:
030: /**
031: * Class ANTTaskEnvironment.
032: *
033: * @author Jens Gulden
034: * @version snapshot-beautyj-1.1
035: */
036: public class ANTTaskEnvironment extends
037: CommandLineApplicationEnvironment {
038:
039: // ------------------------------------------------------------------------
040: // --- fields ---
041: // ------------------------------------------------------------------------
042:
043: protected List inputValues = new ArrayList();
044:
045: protected ANTTaskApplicationWrapper taskWrapper;
046:
047: // ------------------------------------------------------------------------
048: // --- methods ---
049: // ------------------------------------------------------------------------
050:
051: public ANTTaskApplicationWrapper getTaskWrapper() {
052: return taskWrapper;
053: }
054:
055: public void setTaskWrapper(
056: ANTTaskApplicationWrapper aNTTaskApplicationWrapper) {
057: if (this .taskWrapper != aNTTaskApplicationWrapper) {
058: this .taskWrapper = aNTTaskApplicationWrapper;
059: if (aNTTaskApplicationWrapper != null)
060: aNTTaskApplicationWrapper.setEnvironment(this );
061: }
062: }
063:
064: public ArgsParser createArgsParser() {
065: return null;
066: }
067:
068: public void launch(Application application) {
069: GenericApplication genericApplication = (GenericApplication) application; // application must be of type GenericApplication
070: setGenericApplication(genericApplication);
071: // everything has been initialized before through called from ANT, so directly launch now
072: try {
073: launchAfterInit(genericApplication);
074: } catch (Throwable t) {
075: getGenericApplication().fatalError(t);
076: }
077: }
078:
079: public void doErrorMessage(ErrorMessage msg) {
080: if (msg.exitApplication()) {
081: Throwable t = msg.getCause();
082: if (t != null) {
083: throw new org.apache.tools.ant.BuildException(msg
084: .getText()
085: + " - " + t.getMessage(), t);
086: } else {
087: throw new org.apache.tools.ant.BuildException(msg
088: .getText());
089: }
090: } else {
091: getTaskWrapper().log(msg.getText(),
092: org.apache.tools.ant.Project.MSG_ERR);
093: }
094: }
095:
096: public Value[] getInputValues() {
097: de.gulden.framework.amoda.generic.data.GenericValue[] v = new de.gulden.framework.amoda.generic.data.GenericValue[inputValues
098: .size()];
099: for (int i = 0; i < v.length; i++) {
100: v[i] = new de.gulden.framework.amoda.generic.data.GenericValue();
101: Object o = inputValues.get(i);
102: if (o instanceof Src) { // <src path="..."/>
103: v[i].setType(java.io.File.class);
104: v[i].set(((Src) o).getPath());
105: } else if (o instanceof de.gulden.framework.amoda.environment.ant.Value) { // <value input="..."/>
106: v[i].setType(String.class);
107: v[i]
108: .set(((de.gulden.framework.amoda.environment.ant.Value) o)
109: .getInput());
110: }
111: }
112: return v;
113: }
114:
115: void addInput(Object input) {
116: // All inner tags of the ANT-wrapped application are considered to be input values from AMODA's point of view
117: // currently, input can be of type "Src" or "Value", which mean any AMODA application running in ANT
118: // can have <src path=".."> or <value input=".."> tags as children.
119: inputValues.add(input);
120: /*
121: de.gulden.framework.amoda.model.data.Value[] oldV = getInputValues();
122: de.gulden.framework.amoda.model.data.Value[] v;
123: if (oldV != null) {
124: v = new de.gulden.framework.amoda.model.data.Value[ oldV.length + 1 ];
125: System.arraycopy(oldV, 0, v, 0, oldV.length);
126: } else {
127: v = new de.gulden.framework.amoda.model.data.Value[1];
128: }
129: v[v.length-1] = value;
130: setInputValues(v);*/
131: }
132:
133: } // end ANTTaskEnvironment
|