ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Diane Holt <hol...@yahoo.com>
Subject Re: increment task
Date Wed, 25 Oct 2000 10:19:30 GMT
There's almost already a task for this (<propertyfile>) -- it does
increments, decrements, gen's a date, puts a comment-block at the top --
but it isn't actually submitted yet. I think Stefan was going to take a
look at it again, but he's off at ApacheCon, so...

Diane
--- Stuart Barlow <sbarlow@peopledoc.com> wrote:
> 
> When undertaking nightly builds we have found the need for a build
> number.
> And we also wanted this to live in a java propery file so that ANT could
> 
> make
> use of it during the build.
> 
> Below is a simple task that increments a numeric property in a java
> property
> file.
> 
> Thanks,
> Stuart.
> 
> 
> /**
> * Allows a particular property in a Java property file to be incremented
> by
> * one. Useful for build numbers that increase by one with each build.
> *
> * @author Stuart Barlow <a 
> href="mailto:sbarlow@peopledoc.com">sbarlow@peopledoc.com</a>
> * @author <a href="mailto:sbarlow@peopledoc.com">Stuart Barlow</a>
> */
> public class IncrementProperty extends Task {
> 
>    private File src = null;
>    private String property = null;
> 
>    /**
>     * Do the execution.
>     */
>    public void execute() throws BuildException {
> 
>        if (property == null) {
>            throw new BuildException("replace token must not be null", 
> location);
>        }
> 
>        log("Incrementing " + property + " in file: " + src);
> 
>        if (src != null) {
>            processFile(src);
>        }
>    }
> 
>    /**
>     * Perform the increment of a property value on the given file.
>     *
>     * The replacement is performed on a temporary file which then 
> replaces the original file.
>     *
>     * @param src the source file
>     */
>    private void processFile(File src) throws BuildException {
>        if (!src.exists()) {
>            throw new BuildException("Increment: source file " + 
> src.getPath() + " doesn't exist", location);
>        }
> 
>        File temp = new File(src.getPath() + ".temp");
> 
>        if (temp.exists()) {
>            throw new BuildException("Replace: temporary file " + 
> temp.getPath() + " already exists", location);
>        }
> 
>        Properties propFile = new Properties();
> 
>        try {
>            // load in the property file
>            FileInputStream in = new FileInputStream(src);
>            propFile.load(in);
>            in.close();
>        } catch (IOException ioe) {
>            ioe.printStackTrace();
>            throw new BuildException(ioe, location);
>        }
> 
>        try {
>            // get the old value and set the new one.
>            String strValue = propFile.getProperty(property);
>            long longValue = Long.parseLong(strValue);
>            longValue++;
>            Long newIncrementedValue = new Long(longValue);
>            propFile.setProperty(property,
> newIncrementedValue.toString());
> 
>            // write out the property file
>            FileOutputStream out = new FileOutputStream(src);
>            propFile.store(out, "Ant - written out by the task: 
> IncrementProperty");
>            out.close();
>        } catch (Exception ex) {
>            ex.printStackTrace();
>            throw new BuildException(ex, location);
>        }
>    }
> 
>    /**
>     * Set the source file.
>     */
>    public void setFile(File file) {
>        this.src = file;
>    }
> 
>    /**
>     * Set the string token to replace.
>     */
>    public void setProperty(String property) {
>        this.property = property;
>    }
> }
> 


=====
(holtdl@yahoo.com)



__________________________________________________
Do You Yahoo!?
Yahoo! Messenger - Talk while you surf!  It's FREE.
http://im.yahoo.com/

Mime
View raw message