| 1 19 20 package org.netbeans.lexer.gen; 21 22 import java.io.File ; 23 import java.io.FileWriter ; 24 import java.io.IOException ; 25 26 import org.apache.tools.ant.BuildException; 27 import org.apache.tools.ant.Task; 28 29 34 public abstract class GenerateLanguageDescription extends Task { 35 36 private String tokenTypesClassName; 37 38 private File languageDescriptionFile; 39 40 public GenerateLanguageDescription() { 41 } 42 43 public String getTokenTypesClassName() { 44 return tokenTypesClassName; 45 } 46 47 public void setTokenTypesClassName(String tokenTypesClassName) { 48 this.tokenTypesClassName = tokenTypesClassName; 49 } 50 51 public File getLanguageDescriptionFile() { 52 return languageDescriptionFile; 53 } 54 55 public void setLanguageDescriptionFile(File languageDescriptionFile) { 56 this.languageDescriptionFile = languageDescriptionFile; 57 } 58 59 public void execute() throws BuildException { 60 String tokenTypesClassName = getTokenTypesClassName(); 61 File langDescFile = getLanguageDescriptionFile(); 62 63 if (tokenTypesClassName == null || "".equals(tokenTypesClassName)) { 64 throw new BuildException("tokenTypesClassName attribute must be set"); 65 } 66 if (langDescFile == null) { 67 throw new BuildException("languageDescriptionFile attribute must be set"); 68 } 69 70 String output; 71 try { 72 output = generate(tokenTypesClassName); 73 } catch (ClassNotFoundException e) { 74 throw new BuildException(e); 75 } 76 77 try { 78 String writeType = langDescFile.exists() 79 ? "appended to the end of" 80 : "generated to"; 81 82 FileWriter langDescWriter = new FileWriter (langDescFile.getAbsolutePath(), true); 85 langDescWriter.write(output); 86 langDescWriter.close(); 87 88 log("Language description about class " 89 + tokenTypesClassName + " successfully " 90 + writeType + " file " 91 + langDescFile 92 ); 93 94 } catch (IOException e) { 95 throw new BuildException("IOException occurred", e); 96 } 97 } 98 99 protected abstract String generate(String tokenTypesClassName) throws ClassNotFoundException ; 100 101 } 102 | Popular Tags |