KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > enhydra > ant > taskdefs > DODS_DOClassFinder


1 /*
2  * Title: DODS Ant task
3  * Description: DODS
4  */

5 package org.enhydra.ant.taskdefs;
6
7 import java.io.File JavaDoc;
8 import java.util.ArrayList JavaDoc;
9
10 import org.apache.tools.ant.BuildException;
11 import org.apache.tools.ant.types.EnumeratedAttribute;
12
13 /**
14  * @author Sinisa Milosevic
15  * Invoke DODS to generate a list of java classes from a doml file<BR>
16  * This taskdef extends Ant's <Task> task;<BR>
17  * Typically made visible to an Ant build file with the following declaration:<PRE>
18  * &lt;taskdef name="dods" classname="org.enhydra.ant.taskdefs.ODS_DOClassFinder"/&gt;</PRE>
19  *
20  * <B>Parameters</B><PRE>
21  *
22  * doml - The doml input file describing data object mapping. Required = Yes
23  * outdir - Target for generated classes, expressed as a directory path. Required = Yes
24  *<BR>
25  * Examples<PRE>
26  * &lt;dods doml="${basedir}/discRack.doml"
27  * outdir="${basedir}/src"/&gt;</PRE>
28  *
29  */

30 public class DODS_DOClassFinder extends org.apache.tools.ant.Task {
31     protected File JavaDoc domlFile = null;
32     public static class BooleanAttribute extends EnumeratedAttribute {
33
34         /**
35          * Set value for Boolean parameters
36          */

37         public String JavaDoc[] getValues() {
38             return (new String JavaDoc[] {"yes", "no", "true", "false" });
39         }
40
41         public BooleanAttribute() {}
42     }
43     public DODS_DOClassFinder() {
44         domlFile = null;
45     }
46
47     /**
48      * Simply invoke DODS Generator, and then compile the generated files
49      * @exception org.apache.tools.ant.BuildException
50      */

51     public void execute() throws org.apache.tools.ant.BuildException {
52         
53         if (domlFile == null) {
54             throw new BuildException("doml attribute must be set!");
55         }
56        boolean regen = true;
57         if (regen) {
58             (this).project.log("Regenerating ClassList files from " + domlFile
59                     + "... ");
60         } else {
61             (this).project.log(String.valueOf(((java.lang.Object JavaDoc) (domlFile)))
62                     + " up to date.",
63                     2);
64         }
65         if (regen) {
66  
67             java.util.ArrayList JavaDoc argsList = new ArrayList JavaDoc();
68
69             argsList.add("ClassList");
70             try {
71                 String JavaDoc dodsClassName = "org.enhydra.dods.trans.TransientXMLBuilderFactory";
72                 java.lang.reflect.Method JavaDoc m = null;
73                 java.lang.Class JavaDoc c = null;
74
75                 try {
76                     c = java.lang.Class.forName(dodsClassName);
77                     m = c.getMethod("main", new java.lang.Class JavaDoc[] {
78                         String JavaDoc[].class
79                     });
80                 } catch (java.lang.Exception JavaDoc e) {
81                     ((java.lang.Throwable JavaDoc) (e)).printStackTrace();
82                     throw new BuildException(((java.lang.Throwable JavaDoc) (e)));
83                 }
84                 String JavaDoc args[] = (String JavaDoc[]) argsList.toArray(((java.lang.Object JavaDoc[]) (
85                         new String JavaDoc[argsList.size()])));
86
87                 if (m != null) {
88                     m.invoke(((java.lang.Object JavaDoc) (null)),
89                             new java.lang.Object JavaDoc[] {
90                         args
91                     });
92                 }
93             } catch (java.lang.reflect.InvocationTargetException JavaDoc ite) {
94                 ite.printStackTrace();
95                 throw new BuildException(((java.lang.Throwable JavaDoc) (ite)));
96             } catch (java.lang.Exception JavaDoc e) {
97                 ((java.lang.Throwable JavaDoc) (e)).printStackTrace();
98                 throw new BuildException(((java.lang.Throwable JavaDoc) (e)));
99             }
100         }
101     }
102
103     /**
104      * Sets the doml descriptor file.
105      * @param domlFile - The doml input file describing data object mapping
106      */

107     public void setDoml(File JavaDoc domlFile) {
108         this.domlFile = domlFile;
109     }
110     
111
112
113
114 }
115
Popular Tags