ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/AntTasks/source/net/douglasthrift/anttasks/APKBuilder.java
(Generate patch)

Comparing AntTasks/source/net/douglasthrift/anttasks/APKBuilder.java (file contents):
Revision 1113 by douglas, 2008-11-04T12:53:49-08:00 vs.
Revision 1114 by douglas, 2008-11-12T03:28:29-08:00

# Line 21 | Line 21
21  
22   package net.douglasthrift.anttasks;
23  
24 < import org.apache.tools.ant.Task;
24 > import java.io.File;
25  
26 < public class APKBuilder extends Task
26 > import java.util.Iterator;
27 >
28 > import org.apache.tools.ant.Project;
29 > import org.apache.tools.ant.BuildException;
30 > import org.apache.tools.ant.taskdefs.UpToDate;
31 > import org.apache.tools.ant.taskdefs.condition.Os;
32 > import org.apache.tools.ant.types.FileSet;
33 > import org.apache.tools.ant.types.Path;
34 > import org.apache.tools.ant.types.resources.FileResource;
35 > import org.apache.tools.ant.types.resources.Union;
36 >
37 > public class APKBuilder extends CommandTask
38   {
39 +        private File output_;
40 +        private boolean verbose_;
41 +        private boolean unsigned_;
42 +        private String storeType_;
43 +        private Path zip_;
44 +        private Path file_;
45 +        private Path folder_;
46 +        private Path jar_;
47 +
48 +        public void setOutput(File output)
49 +        {
50 +                output_ = output;
51 +        }
52 +
53 +        public void setVerbose(boolean verbose)
54 +        {
55 +                verbose_ = verbose;
56 +        }
57 +
58 +        public void setUnsigned(boolean unsigned)
59 +        {
60 +                unsigned_ = unsigned;
61 +        }
62 +
63 +        public void setStoreType(String storeType)
64 +        {
65 +                storeType_ = storeType;
66 +        }
67 +
68 +        public void setZip(Path zip)
69 +        {
70 +                zip_ = zip;
71 +        }
72 +
73 +        public void setFile(Path file)
74 +        {
75 +                file_ = file;
76 +        }
77 +
78 +        public void setFolder(Path folder)
79 +        {
80 +                folder_ = folder;
81 +        }
82 +
83 +        public void setJar(Path jar)
84 +        {
85 +                jar_ = jar;
86 +        }
87 +
88 +        @Override
89 +        public void execute()
90 +        {
91 +                if (output_ == null)
92 +                        throw new BuildException("no output file specified");
93 +
94 +                if (isUpToDate())
95 +                        return;
96 +
97 +                command(Os.isFamily(Os.FAMILY_WINDOWS) ? "apkbuilder.bat" : "apkbuilder");
98 +                argument(output_);
99 +
100 +                if (verbose_)
101 +                        argument("-v");
102 +
103 +                if (unsigned_)
104 +                        argument("-u");
105 +
106 +                if (storeType_ != null)
107 +                        arguments("-storetype", storeType_);
108 +
109 +                if (zip_ != null)
110 +                        for (Iterator iterator = zip_.iterator(); iterator.hasNext();)
111 +                                arguments("-z", iterator.next().toString());
112 +
113 +                if (file_ != null)
114 +                        for (Iterator iterator = file_.iterator(); iterator.hasNext();)
115 +                                arguments("-f", iterator.next().toString());
116 +
117 +                if (folder_ != null)
118 +                        for (Iterator iterator = folder_.iterator(); iterator.hasNext();)
119 +                                arguments("-rf", iterator.next().toString());
120 +
121 +                if (jar_ != null)
122 +                        for (Iterator iterator = jar_.iterator(); iterator.hasNext();)
123 +                                arguments("-rj", iterator.next().toString());
124 +
125 +                super.execute();
126 +        }
127 +
128 +        private boolean isUpToDate()
129 +        {
130 +                Project project = getProject();
131 +                UpToDate upToDate = (UpToDate)project.createTask("uptodate");
132 +
133 +                upToDate.setTargetFile(output_);
134 +
135 +                Union union = upToDate.createSrcResources();
136 +
137 +                if (zip_ != null)
138 +                        union.add(zip_);
139 +
140 +                if (file_ != null)
141 +                        union.add(file_);
142 +
143 +                if (folder_ != null)
144 +                        for (Iterator iterator = folder_.iterator(); iterator.hasNext();)
145 +                        {
146 +                                FileSet fileSet = (FileSet)project.createDataType("fileset");
147 +
148 +                                fileSet.setDir(((FileResource)iterator.next()).getFile());
149 +                                fileSet.setExcludes("**/_*/** **/*.aidl **/*.class **/*.java **/META-INF/** **/overview.html **/package.html");
150 +                                union.add(fileSet);
151 +                        }
152 +
153 +                if (jar_ != null)
154 +                        for (Iterator iterator = jar_.iterator(); iterator.hasNext();)
155 +                        {
156 +                                FileSet fileSet = (FileSet)project.createDataType("fileset");
157 +                                File file = ((FileResource)iterator.next()).getFile();
158 +
159 +                                if (file.isDirectory())
160 +                                {
161 +                                        fileSet.setDir(file);
162 +                                        fileSet.setIncludes("*.jar");
163 +                                }
164 +                                else
165 +                                        fileSet.setFile(file);
166 +
167 +                                union.add(fileSet);
168 +                        }
169 +
170 +                return upToDate.eval();
171 +        }
172   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines