Package org.apache.tools.ant.filters

## Class LineContains

- java.lang.Object
- - java.io.Reader
  - - java.io.FilterReader
    - - org.apache.tools.ant.filters.BaseFilterReader
      - - org.apache.tools.ant.filters.BaseParamFilterReader
        - - org.apache.tools.ant.filters.LineContains

- All Implemented Interfaces:
    `java.io.Closeable`, `java.lang.AutoCloseable`, `java.lang.Readable`, `ChainableReader`, `Parameterizable`

      public final class LineContains
      extends BaseParamFilterReader
      implements ChainableReader

  Filter which includes only those lines that contain the user-specified strings. Example:

      <linecontains>
         <contains value="foo">
         <contains value="bar">
       </linecontains>

  Or:

      <filterreader classname="org.apache.tools.ant.filters.LineContains">
          <param type="contains" value="foo"/>
          <param type="contains" value="bar"/>
       </filterreader>

  This will include only those lines that contain `foo` and `bar`. Starting Ant 1.10.4, the `matchAny` attribute can be used to control whether any one of the user-specified strings is expected to be contained in the line or all of them are expected to be contained. For example:

      <linecontains matchAny="true">
        *   <contains value="foo">
        *   <contains value="bar">
        * </linecontains>

  This will include only those lines that contain either `foo` or `bar`.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `LineContains.Contains` | Holds a contains element

  - ### Field Summary

    - ### Fields inherited from class java.io.FilterReader

      `in`

    - ### Fields inherited from class java.io.Reader

      `lock`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `LineContains()` | Constructor for "dummy" instances.
    `LineContains​(java.io.Reader in)` | Creates a new filtered reader.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addConfiguredContains​(LineContains.Contains contains)` | Adds a `contains` element.
    `java.io.Reader` | `chain​(java.io.Reader rdr)` | Creates a new LineContains using the passed in Reader for instantiation.
    `boolean` | `isMatchAny()` |
    `boolean` | `isNegated()` | Find out whether we have been negated.
    `int` | `read()` | Returns the next character in the filtered stream, only including lines from the original stream which contain all of the specified words.
    `void` | `setMatchAny​(boolean matchAny)` |
    `void` | `setNegate​(boolean b)` | Set the negation mode.

    - ### Methods inherited from class org.apache.tools.ant.filters.BaseParamFilterReader

      `getParameters, setParameters`

    - ### Methods inherited from class org.apache.tools.ant.filters.BaseFilterReader

      `getInitialized, getProject, read, readFully, readLine, setInitialized, setProject, skip`

    - ### Methods inherited from class java.io.FilterReader

      `close, mark, markSupported, ready, reset`

    - ### Methods inherited from class java.io.Reader

      `nullReader, read, read, transferTo`

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

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

- - ### Constructor Detail

    - #### LineContains

          public LineContains()

      Constructor for "dummy" instances.
      See Also:
        `BaseFilterReader()`

    - #### LineContains

          public LineContains​(java.io.Reader in)

      Creates a new filtered reader.
      Parameters:
        `in` - A Reader object providing the underlying stream. Must not be `null`.

  - ### Method Detail

    - #### read

          public int read()
                   throws java.io.IOException

      Returns the next character in the filtered stream, only including lines from the original stream which contain all of the specified words.
      Overrides:
        `read` in class `java.io.FilterReader`
      Returns:
        the next character in the resulting stream, or -1 if the end of the resulting stream has been reached
      Throws:
        `java.io.IOException` - if the underlying stream throws an IOException during reading

    - #### addConfiguredContains

          public void addConfiguredContains​(LineContains.Contains contains)

      Adds a `contains` element.
      Parameters:
        `contains` - The `contains` element to add. Must not be `null`.

    - #### setNegate

          public void setNegate​(boolean b)

      Set the negation mode. Default false (no negation).
      Parameters:
        `b` - the boolean negation mode to set.

    - #### isNegated

          public boolean isNegated()

      Find out whether we have been negated.
      Returns:
        boolean negation flag.

    - #### setMatchAny

          public void setMatchAny​(boolean matchAny)

      Parameters:
        `matchAny` - True if this `LineContains` is considered a match, if `any` of the `contains` value match. False if `all` of the `contains` value are expected to match
      Since:
        Ant 1.10.4

    - #### isMatchAny

          public boolean isMatchAny()

      Returns:
        Returns true if this `LineContains` is considered a match, if `any` of the `contains` value match. False if `all` of the `contains` value are expected to match
      Since:
        Ant 1.10.4

    - #### chain

          public java.io.Reader chain​(java.io.Reader rdr)

      Creates a new LineContains using the passed in Reader for instantiation.
      Specified by:
        `chain` in interface `ChainableReader`
      Parameters:
        `rdr` - A Reader object providing the underlying stream. Must not be `null`.
      Returns:
        a new filter based on this configuration, but filtering the specified reader