>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]