1 32 package net.sf.retrotranslator.transformer; 33 34 import java.io.File ; 35 import java.util.*; 36 import org.apache.tools.ant.*; 37 import org.apache.tools.ant.types.*; 38 39 42 public class RetrotranslatorTask extends Task implements MessageLogger { 43 44 private File srcdir; 45 private File srcjar; 46 private File destdir; 47 private File destjar; 48 private List<FileSet> fileSets = new ArrayList<FileSet>(); 49 private List<FileSet> jarFileSets = new ArrayList<FileSet>(); 50 private List<DirSet> dirSets = new ArrayList<DirSet>(); 51 private boolean verbose; 52 private boolean stripsign; 53 private boolean retainapi; 54 private boolean retainflags; 55 private boolean lazy; 56 private boolean advanced; 57 private boolean verify; 58 private boolean failonwarning = true; 59 private String srcmask; 60 private String embed; 61 private String backport; 62 private String target; 63 private Path classpath; 64 65 public RetrotranslatorTask() { 66 } 67 68 public void setSrcdir(File srcdir) { 69 this.srcdir = srcdir; 70 } 71 72 public void setSrcjar(File srcjar) { 73 this.srcjar = srcjar; 74 } 75 76 public void setDestdir(File destdir) { 77 this.destdir = destdir; 78 } 79 80 public void setDestjar(File destjar) { 81 this.destjar = destjar; 82 } 83 84 public void addConfiguredFileset(FileSet fileSet) { 85 fileSets.add(fileSet); 86 } 87 88 public void addConfiguredJarfileset(FileSet fileSet) { 89 jarFileSets.add(fileSet); 90 } 91 92 public void addConfiguredDirset(DirSet dirSet) { 93 dirSets.add(dirSet); 94 } 95 96 public void setVerbose(boolean verbose) { 97 this.verbose = verbose; 98 } 99 100 public void setStripsign(boolean stripsign) { 101 this.stripsign = stripsign; 102 } 103 104 public void setRetainapi(boolean retainapi) { 105 this.retainapi = retainapi; 106 } 107 108 public void setRetainflags(boolean retainflags) { 109 this.retainflags = retainflags; 110 } 111 112 public void setLazy(boolean lazy) { 113 this.lazy = lazy; 114 } 115 116 public void setAdvanced(boolean advanced) { 117 this.advanced = advanced; 118 } 119 120 public void setVerify(boolean verify) { 121 this.verify = verify; 122 } 123 124 public void setFailonwarning(boolean failonwarning) { 125 this.failonwarning = failonwarning; 126 } 127 128 public void setSrcmask(String srcmask) { 129 this.srcmask = srcmask; 130 } 131 132 public void setEmbed(String embed) { 133 this.embed = embed; 134 } 135 136 public void setBackport(String backport) { 137 this.backport = backport; 138 } 139 140 public void setTarget(String target) { 141 this.target = target; 142 } 143 144 public void setClasspathref(Reference classpathref) { 145 createClasspath().setRefid(classpathref); 146 } 147 148 public void setClasspath(Path classpath) { 149 this.getClasspath().append(classpath); 150 } 151 152 public Path createClasspath() { 153 return getClasspath().createPath(); 154 } 155 156 private Path getClasspath() { 157 return classpath != null ? classpath : (classpath = new Path(getProject())); 158 } 159 160 public void log(Message message) { 161 log(message.toString(), message.getLevel().isCritical() ? Project.MSG_WARN : Project.MSG_INFO); 162 } 163 164 public void execute() throws BuildException { 165 Retrotranslator retrotranslator = new Retrotranslator(); 166 if (srcdir != null) retrotranslator.addSrcdir(srcdir); 167 if (srcjar != null) retrotranslator.addSrcjar(srcjar); 168 if (destdir != null) retrotranslator.setDestdir(destdir); 169 if (destjar != null) retrotranslator.setDestjar(destjar); 170 for (FileSet fileSet : fileSets) { 171 DirectoryScanner scanner = fileSet.getDirectoryScanner(getProject()); 172 retrotranslator.addSourceFiles(scanner.getBasedir(), Arrays.asList(scanner.getIncludedFiles())); 173 } 174 for (FileSet jarFileSet : jarFileSets) { 175 DirectoryScanner scanner = jarFileSet.getDirectoryScanner(getProject()); 176 File basedir = scanner.getBasedir(); 177 for (String jarFile : scanner.getIncludedFiles()) { 178 retrotranslator.addSrcjar(new File (basedir, jarFile)); 179 } 180 } 181 for (DirSet dirSet : dirSets) { 182 DirectoryScanner scanner = dirSet.getDirectoryScanner(getProject()); 183 File basedir = scanner.getBasedir(); 184 for (String subdirectory : scanner.getIncludedDirectories()) { 185 retrotranslator.addSrcdir(new File (basedir, subdirectory)); 186 } 187 } 188 retrotranslator.setVerbose(verbose); 189 retrotranslator.setStripsign(stripsign); 190 retrotranslator.setRetainapi(retainapi); 191 retrotranslator.setRetainflags(retainflags); 192 retrotranslator.setLazy(lazy); 193 retrotranslator.setAdvanced(advanced); 194 retrotranslator.setVerify(verify); 195 retrotranslator.setSrcmask(srcmask); 196 retrotranslator.setEmbed(embed); 197 retrotranslator.setBackport(backport); 198 if (target != null) retrotranslator.setTarget(target); 199 for (String fileName : getClasspath().list()) { 200 retrotranslator.addClasspathElement(getProject().resolveFile(fileName)); 201 } 202 retrotranslator.setLogger(this); 203 boolean success = retrotranslator.run(); 204 if (!success && failonwarning) { 205 throw new BuildException("Translation failed.", getLocation()); 206 } 207 } 208 } 209 | Popular Tags |