Package org.apache.nutch.metadata

## Class Metadata

- java.lang.Object
- - org.apache.nutch.metadata.Metadata

- All Implemented Interfaces:
    `Writable`, `CreativeCommons`, `DublinCore`, `Feed`, `HttpHeaders`, `Nutch`
  Direct Known Subclasses:
    `CaseInsensitiveMetadata`, `SpellCheckedMetadata`

      public class Metadata
      extends Object
      implements Writable, CreativeCommons, DublinCore, HttpHeaders, Nutch, Feed

  A multi-valued metadata container.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected Map<String,​String[]>` | `metadata` | A map of all metadata attributes.

    - ### Fields inherited from interface org.apache.nutch.metadata.CreativeCommons

      `LICENSE_LOCATION, LICENSE_URL, WORK_TYPE`

    - ### Fields inherited from interface org.apache.nutch.metadata.DublinCore

      `CONTRIBUTOR, COVERAGE, CREATOR, DATE, DESCRIPTION, FORMAT, IDENTIFIER, LANGUAGE, MODIFIED, PUBLISHER, RELATION, RIGHTS, SOURCE, SUBJECT, TITLE, TYPE`

    - ### Fields inherited from interface org.apache.nutch.metadata.Feed

      `FEED, FEED_AUTHOR, FEED_PUBLISHED, FEED_TAGS, FEED_UPDATED`

    - ### Fields inherited from interface org.apache.nutch.metadata.HttpHeaders

      `CLIENT_TRANSFER_ENCODING, CONTENT_DISPOSITION, CONTENT_ENCODING, CONTENT_LANGUAGE, CONTENT_LENGTH, CONTENT_LOCATION, CONTENT_MD5, CONTENT_TYPE, IF_MODIFIED_SINCE, LAST_MODIFIED, LOCATION, TRANSFER_ENCODING, USER_AGENT, WRITABLE_CONTENT_TYPE`

    - ### Fields inherited from interface org.apache.nutch.metadata.Nutch

      `ARG_CRAWLDB, ARG_HOSTDB, ARG_LINKDB, ARG_SEEDDIR, ARG_SEEDNAME, ARG_SEGMENTDIR, ARG_SEGMENTS, CACHING_FORBIDDEN_ALL, CACHING_FORBIDDEN_CONTENT, CACHING_FORBIDDEN_KEY, CACHING_FORBIDDEN_NONE, CHAR_ENCODING_FOR_CONVERSION, CRAWL_ID_KEY, FETCH_EVENT_CONTENTLANG, FETCH_EVENT_CONTENTTYPE, FETCH_EVENT_FETCHTIME, FETCH_EVENT_SCORE, FETCH_EVENT_TITLE, FETCH_STATUS_KEY, FETCH_TIME_KEY, FIXED_INTERVAL_KEY, GENERATE_TIME_KEY, ORIGINAL_CHAR_ENCODING, PROTO_STATUS_KEY, PROTOCOL_STATUS_CODE_KEY, REPR_URL_KEY, ROBOTS_METATAG, SCORE_KEY, SEGMENT_NAME_KEY, SIGNATURE_KEY, STAT_PROGRESS, VAL_RESULT, WRITABLE_FIXED_INTERVAL_KEY, WRITABLE_GENERATE_TIME_KEY, WRITABLE_PROTO_STATUS_KEY, WRITABLE_REPR_URL_KEY`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Metadata()` | Constructs a new, empty metadata.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `add​(String name, String value)` | Add a metadata name/value mapping.
    `void` | `addAll​(Metadata metadata)` | Add all name/value mappings (merge two metadata mappings).
    `void` | `clear()` | Remove all mappings from metadata.
    `boolean` | `equals​(Object o)` |
    `String` | `get​(String name)` | Get the value associated to a metadata name.
    `String[]` | `getValues​(String name)` | Get the values associated to a metadata name.
    `boolean` | `isMultiValued​(String name)` | Returns true if named value is multivalued.
    `String[]` | `names()` | Returns an array of the names contained in the metadata.
    `void` | `readFields​(DataInput in)` |
    `void` | `remove​(String name)` | Remove a metadata and all its associated values.
    `void` | `set​(String name, String value)` | Set metadata name/value.
    `void` | `setAll​(Properties properties)` | Copy All key-value pairs from properties.
    `int` | `size()` | Returns the number of metadata names in this metadata.
    `String` | `toString()` |
    `String` | `toString​(String separator, String keyValueSeparator)` |
    `void` | `write​(DataOutput out)` |

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

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

- - ### Field Detail

    - #### metadata

          protected Map<String,​String[]> metadata

      A map of all metadata attributes.

  - ### Constructor Detail

    - #### Metadata

          public Metadata()

      Constructs a new, empty metadata.

  - ### Method Detail

    - #### isMultiValued

          public boolean isMultiValued​(String name)

      Returns true if named value is multivalued.
      Parameters:
        `name` - name of metadata
      Returns:
        true is named value is multivalued, false if single value or null

    - #### names

          public String[] names()

      Returns an array of the names contained in the metadata.
      Returns:
        Metadata names

    - #### get

          public String get​(String name)

      Get the value associated to a metadata name. If many values are associated to the specified name, then the first one is returned.
      Parameters:
        `name` - of the metadata.
      Returns:
        the value associated to the specified metadata name.

    - #### getValues

          public String[] getValues​(String name)

      Get the values associated to a metadata name.
      Parameters:
        `name` - of the metadata.
      Returns:
        the values associated to a metadata name.

    - #### add

          public void add​(String name,
                          String value)

      Add a metadata name/value mapping. Add the specified value to the list of values associated to the specified metadata name.
      Parameters:
        `name` - the metadata name.
        `value` - the metadata value.

    - #### addAll

          public void addAll​(Metadata metadata)

      Add all name/value mappings (merge two metadata mappings). If a name already exists in current metadata the values are added to existing values.
      Parameters:
        `metadata` - other Metadata to be merged

    - #### setAll

          public void setAll​(Properties properties)

      Copy All key-value pairs from properties.
      Parameters:
        `properties` - properties to copy from

    - #### set

          public void set​(String name,
                          String value)

      Set metadata name/value. Associate the specified value to the specified metadata name. If some previous values were associated to this name, they are removed.
      Parameters:
        `name` - the metadata name.
        `value` - the metadata value.

    - #### remove

          public void remove​(String name)

      Remove a metadata and all its associated values.
      Parameters:
        `name` - metadata name to remove

    - #### size

          public int size()

      Returns the number of metadata names in this metadata.
      Returns:
        number of metadata names

    - #### clear

          public void clear()

      Remove all mappings from metadata.

    - #### equals

          public boolean equals​(Object o)

      Overrides:
        `equals` in class `Object`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### toString

          public String toString​(String separator,
                                 String keyValueSeparator)

      Parameters:
        `separator` - separator between Metadata's key-value pairs
        `keyValueSeparator` - separator between key and value
      Returns:
        list of all key-value pairs in Metadata using the provided separators

    - #### write

          public final void write​(DataOutput out)
                           throws IOException

      Specified by:
        `write` in interface `Writable`
      Throws:
        `IOException`

    - #### readFields

          public final void readFields​(DataInput in)
                                throws IOException

      Specified by:
        `readFields` in interface `Writable`
      Throws:
        `IOException`