org.springframework.batch.item.file.transform

## Class RangeArrayPropertyEditor

- java.lang.Object
- - java.beans.PropertyEditorSupport
  - - org.springframework.batch.item.file.transform.RangeArrayPropertyEditor

- All Implemented Interfaces:
    java.beans.PropertyEditor

      public class RangeArrayPropertyEditor
      extends java.beans.PropertyEditorSupport

  Property editor implementation which parses string and creates array of ranges. Ranges can be provided in any order.
  Input string should be provided in following format: 'range1, range2, range3,...' where range is specified as:
  - 'X-Y', where X is minimum value and Y is maximum value (condition X<=Y is verified)
  - or 'Z', where Z is minimum and maximum is calculated as (minimum of adjacent range - 1). Maximum of the last range is never calculated. Range stays unbound at maximum side if maximum value is not provided.
  Minimum and maximum values can be from interval <1, Integer.MAX_VALUE-1>

  Examples:
  '1, 15, 25, 38, 55-60' is equal to '1-14, 15-24, 25-37, 38-54, 55-60'
  '36, 14, 1-10, 15, 49-57' is equal to '36-48, 14-14, 1-10, 15-35, 49-57'

  Property editor also allows to validate whether ranges are disjoint. Validation can be turned on/off by using `setForceDisjointRanges(boolean)`. By default validation is turned off.

  Author:
    peter.zozom

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `RangeArrayPropertyEditor()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.String` | `getAsText()`
    `void` | `setAsText(java.lang.String text)`
    `void` | `setForceDisjointRanges(boolean forceDisjointRanges)` Set force disjoint ranges.

    - ### Methods inherited from class java.beans.PropertyEditorSupport

      `addPropertyChangeListener, firePropertyChange, getCustomEditor, getJavaInitializationString, getSource, getTags, getValue, isPaintable, paintValue, removePropertyChangeListener, setSource, setValue, supportsCustomEditor`

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

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

- - ### Constructor Detail

    - #### RangeArrayPropertyEditor

          public RangeArrayPropertyEditor()

  - ### Method Detail

    - #### setForceDisjointRanges

          public void setForceDisjointRanges(boolean forceDisjointRanges)

      Set force disjoint ranges. If set to TRUE, ranges are validated to be disjoint. For example: defining ranges '1-10, 5-15' will cause IllegalArgumentException in case of forceDisjointRanges=TRUE.
      Parameters:
        `forceDisjointRanges` - true to force disjoint ranges.

    - #### setAsText

          public void setAsText(java.lang.String text)
                         throws java.lang.IllegalArgumentException

      Specified by:
        `setAsText` in interface `java.beans.PropertyEditor`
      Overrides:
        `setAsText` in class `java.beans.PropertyEditorSupport`
      Throws:
        `java.lang.IllegalArgumentException`

    - #### getAsText

          public java.lang.String getAsText()

      Specified by:
        `getAsText` in interface `java.beans.PropertyEditor`
      Overrides:
        `getAsText` in class `java.beans.PropertyEditorSupport`