org.apache.tools.ant.taskdefs.optional

## Class PropertyFile

- java.lang.Object
- - org.apache.tools.ant.ProjectComponent
  - - org.apache.tools.ant.Task
    - - org.apache.tools.ant.taskdefs.optional.PropertyFile

All Implemented Interfaces:
  java.lang.Cloneable

    public class PropertyFile
    extends Task

Modifies settings in a property file.

The following is an example of its usage:

        <target name="setState">
          <property
            name="header"
            value="##Generated file - do not modify!"/>
          <propertyfile file="apropfile.properties" comment="${header}">
            <entry key="product.version.major" type="int"  value="5"/>
            <entry key="product.version.minor" type="int"  value="0"/>
            <entry key="product.build.major"   type="int"  value="0" />
            <entry key="product.build.minor"   type="int"  operation="+" />
            <entry key="product.build.date"    type="date" value="now" />
            <entry key="intSet" type="int" operation="=" value="681"/>
            <entry key="intDec" type="int" operation="-"/>
            <entry key="StringEquals" type="string" value="testValue"/>
         </propertyfile>
       </target>

The <propertyfile> task must have:

- file

Other parameters are:

- comment
- key
- operation
- type
- value (the final four being eliminated shortly)

The <entry> task must have:

- key

Other parameters are:

- operation
- type
- value
- default
- unit

If type is unspecified, it defaults to string. Parameter values:

- operation:

- "=" (set -- default)
- "-" (dec)
- "+" (inc)

- type:

- "int"
- "date"
- "string"

- value:

- holds the default value, if the property was not found in property file
- "now" In case of type "date", the value "now" will be replaced by the current date/time and used even if a valid date was found in the property file.

String property types can only use the "=" operation. Int property types can only use the "=", "-" or "+" operations.

The message property is used for the property file header, with "\\" being a newline delimiter character.

### Nested Class Summary

Nested Classes
`static class` `PropertyFile.Entry` Instance of this class represents nested elements of a task propertyfile.
`static class` `PropertyFile.Unit` Borrowed from Tstamp

### Field Summary

### Fields inherited from class org.apache.tools.ant.Task

`target, taskName, taskType, wrapper`

### Fields inherited from class org.apache.tools.ant.ProjectComponent

`description, location, project`

### Constructor Summary

Constructors
Constructor and Description
`PropertyFile()`

### Method Summary

Methods
`PropertyFile.Entry` `createEntry()` The entry nested element.
`void` `execute()` Execute the task.
`void` `setComment(java.lang.String hdr)` optional header comment for the file
`void` `setFile(java.io.File file)` Location of the property file to be edited; required.
`void` `setJDKProperties(boolean val)` optional flag to use original Java properties (as opposed to layout preserving properties)

### Methods inherited from class org.apache.tools.ant.Task

`bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType`

### Methods inherited from class org.apache.tools.ant.ProjectComponent

`clone, getDescription, getLocation, getProject, setDescription, setLocation, setProject`

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### PropertyFile

    public PropertyFile()

### Method Detail

#### execute

    public void execute()
                 throws BuildException

Execute the task.

Overrides:
  `execute` in class `Task`
Throws:
  `BuildException` - on error.

#### createEntry

    public PropertyFile.Entry createEntry()

The entry nested element.

Returns:
  an entry nested element to be configured.

#### setFile

    public void setFile(java.io.File file)

Location of the property file to be edited; required.

Parameters:
  `file` - the property file.

#### setComment

    public void setComment(java.lang.String hdr)

optional header comment for the file

Parameters:
  `hdr` - the string to use for the comment.

#### setJDKProperties

    public void setJDKProperties(boolean val)

optional flag to use original Java properties (as opposed to layout preserving properties)