And maybe there are some existing tasks you could use, like http://antcount.sourceforge.net/ ;-)
Jan >-----Ursprüngliche Nachricht----- >Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] >Gesendet: Freitag, 12. Mai 2006 07:28 >An: [email protected] >Betreff: AW: Counting lines in a file > >>import java.io.BufferedReader; >>import java.io.File; >>import java.io.FileReader; >>import java.util.ArrayList; >> >>import org.apache.tools.ant.BuildException; >>import org.apache.tools.ant.Task; >> >>public class LineCounter extends Task >>{ >> public String filename; >> public void Execute() throws BuildException > >as mentioned earlier it must be execute() > > >> { >> LineCounter lc = new LineCounter(); > >You dont need that. You are inside LineCounter - why >instantiating another object? > > > >> log("about to call countlines"); >> log(filename+ " contains " + >lc.countLines(this.filename) +" lines."); > >therefore just .... + countLines(filename) + .... > > >> } >> public void setFilename(String filename) > >You could use setFilename(java.io.File file) directly. >Ant will convert it. > > >> { >> System.out.println("we are about to parse ->"+filename); > >Better use log() > > >> this.filename= filename; >> } >> public int countLines(String file) >> { >> ArrayList integlist = new ArrayList(); > >Why holding the content if you just want to count the lines? >Think of huge files .... > > >> try >> { >> BufferedReader br = new >>BufferedReader(new FileReader(new File(file))); >> String line; >> while((line = br.readLine())!=null) >> { >> integlist.add(line); >> } >> System.out.println(integlist.size()); > >Better use log() > > >> br.close(); >> } >> catch (Exception e) >> { >> e.printStackTrace(); >> System.exit(-1); > > >just do a > throw new BuildException(e) >calling a System.exit is not a very scalable approach. Think >of a buildfile integrated into a server. I dont know if >CruiseControl would start a new VM for each build ... If not >you would stop the build loop of the continous integration server. > > > > >> } >> return integlist.size(); >> } >>} > >Just returing? No access from the buildfile? >* add another attribute 'property' > private String propertyName; > public void setProperty(String p) { propertyName = p; } >* enhance the execute() method for setting the the value > getProject().setNewProperty(propertyName, >Integer.valueOf(countLines(filename))); >* refactor using local fields for not calling countLines(filename) >multiple times for each file. > > >Jan > >--------------------------------------------------------------------- >To unsubscribe, e-mail: [EMAIL PROTECTED] >For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
