PropertyFile (Apache Ant API)
Date: 2018-07-10

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
    Modifier and Type | Class and Description
    --- | ---
    `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

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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)
      Parameters:
        `val` - boolean