# Class DefaultOnlineResource

Object
AbstractMetadata
ModifiableMetadata
ISOMetadata
DefaultOnlineResource

All Implemented Interfaces:
  `Serializable`, `Emptiable`, `LenientComparable`, `IdentifiedObject`, `OnlineResource`

public class DefaultOnlineResource extends ISOMetadata implements OnlineResource
Information about on-line sources from which the dataset, specification, or community profile name and extended metadata elements can be obtained. The following property is mandatory in a well-formed metadata according ISO 19115:
`CI_OnlineResource` `└─linkage………………` Location (address) for on-line access using a Uniform Resource Locator address or similar addressing scheme.

## Limitations

- Instances of this class are not synchronized for multi-threading. Synchronization, if needed, is caller's responsibility.
- Serialized objects of this class are not guaranteed to be compatible with future Apache SIS releases. Serialization support is appropriate for short term storage or RMI between applications running the same version of Apache SIS. For long term storage, use `XML` instead.

Since:
  0.3
See Also:
  - Serialized Form

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from class ModifiableMetadata

  `ModifiableMetadata​.State`

- ## Field Summary

  ### Fields inherited from class ISOMetadata

  `identifiers`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DefaultOnlineResource()`
  Creates an initially empty on line resource.
  `DefaultOnlineResource(URI linkage)`
  Creates an on line resource initialized to the given URI.
  `DefaultOnlineResource(OnlineResource object)`
  Constructs a new instance initialized with the values from the specified metadata object.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static DefaultOnlineResource`
  `castOrCopy(OnlineResource object)`
  Returns a SIS metadata implementation with the values of the given arbitrary implementation.
  `String`
  `getApplicationProfile()`
  Returns the name of an application profile that can be used with the online resource.
  `InternationalString`
  `getDescription()`
  Returns the detailed text description of what the online resource is/does.
  `OnLineFunction`
  `getFunction()`
  Returns the code for function performed by the online resource.
  `URI`
  `getLinkage()`
  Returns the location (address) for on-line access using a Uniform Resource Locator address or similar addressing scheme.
  `String`
  `getName()`
  Name of the online resource.
  `String`
  `getProtocol()`
  Returns the connection protocol to be used.
  `String`
  `getProtocolRequest()`
  Returns the request used to access the resource depending on the protocol.
  `void`
  `setApplicationProfile(String newValue)`
  Sets the name of an application profile that can be used with the online resource.
  `void`
  `setDescription(InternationalString newValue)`
  Sets the detailed text description of what the online resource is/does.
  `void`
  `setFunction(OnLineFunction newValue)`
  Sets the code for function performed by the online resource.
  `void`
  `setLinkage(URI newValue)`
  Sets the location (address) for on-line access using a Uniform Resource Locator address or similar addressing scheme such as "`http://www​.statkart​.no/isotc211`".
  `void`
  `setName(String newValue)`
  Sets the name of the online resource.
  `void`
  `setProtocol(String newValue)`
  Sets the connection protocol to be used.
  `void`
  `setProtocolRequest(String newValue)`
  Sets the request to be used.

  ### Methods inherited from class ISOMetadata

  `getIdentifier, getIdentifierMap, getIdentifiers, getStandard, setIdentifier`

  ### Methods inherited from class ModifiableMetadata

  `checkWritePermission, collectionType, copyCollection, copyList, copyMap, copySet, deepCopy, nonNullCollection, nonNullList, nonNullMap, nonNullSet, singleton, state, writeCollection, writeList, writeMap, writeSet`

  ### Methods inherited from class AbstractMetadata

  `asMap, asTreeTable, clone, equals, equals, getInterface, hashCode, isEmpty, nilReasons, prune, toString`

  ### Methods inherited from class Object

  `finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### DefaultOnlineResource

    public DefaultOnlineResource()
    Creates an initially empty on line resource.

  - ### DefaultOnlineResource

    public DefaultOnlineResource(URI linkage)
    Creates an on line resource initialized to the given URI.
    Parameters:
      `linkage` - the location for on-line access using a Uniform Resource Locator address, or `null` if none.

  - ### DefaultOnlineResource

    public DefaultOnlineResource(OnlineResource object)
    Constructs a new instance initialized with the values from the specified metadata object. This is a shallow copy constructor, because the other metadata contained in the given object are not recursively copied.
    Parameters:
      `object` - the metadata to copy values from, or `null` if none.
    See Also:
      - `castOrCopy(OnlineResource)`

- ## Method Details

  - ### castOrCopy

    public static DefaultOnlineResource castOrCopy(OnlineResource object)
    Returns a SIS metadata implementation with the values of the given arbitrary implementation. This method performs the first applicable action in the following choices:
    - If the given object is `null`, then this method returns `null`.
    - Otherwise if the given object is already an instance of `DefaultOnlineResource`, then it is returned unchanged.
    - Otherwise a new `DefaultOnlineResource` instance is created using the copy constructor and returned. Note that this is a shallow copy operation, because the other metadata contained in the given object are not recursively copied.
    Parameters:
      `object` - the object to get as a SIS implementation, or `null` if none.
    Returns:
      a SIS implementation containing the values of the given object (may be the given object itself), or `null` if the argument was null.

  - ### getApplicationProfile

    public String getApplicationProfile()
    Returns the name of an application profile that can be used with the online resource. Returns `null` if none.
    Specified by:
      `getApplicationProfile` in interface `OnlineResource`
    Returns:
      application profile that can be used with the online resource, or `null`.

  - ### setApplicationProfile

    public void setApplicationProfile(String newValue)
    Sets the name of an application profile that can be used with the online resource.
    Parameters:
      `newValue` - the new application profile.

  - ### getName

    public String getName()
    Name of the online resource. Returns `null` if none.
    Upcoming API change — internationalization
    The return type may be changed from `String` to `InternationalString` in GeoAPI 4.0.
    Specified by:
      `getName` in interface `OnlineResource`
    Returns:
      name of the online resource, or `null`.

  - ### setName

    public void setName(String newValue)
    Sets the name of the online resource.
    Upcoming API change — internationalization
    The argument type may be changed from `String` to `InternationalString` in GeoAPI 4.0.
    Parameters:
      `newValue` - the new name, or `null` if none.

  - ### getDescription

    public InternationalString getDescription()
    Returns the detailed text description of what the online resource is/does.
    Specified by:
      `getDescription` in interface `OnlineResource`
    Returns:
      text description of what the online resource is/does, or `null`.

  - ### setDescription

    public void setDescription(InternationalString newValue)
    Sets the detailed text description of what the online resource is/does.
    Parameters:
      `newValue` - the new description, or `null` if none.

  - ### getFunction

    public OnLineFunction getFunction()
    Returns the code for function performed by the online resource.
    Specified by:
      `getFunction` in interface `OnlineResource`
    Returns:
      function performed by the online resource, or `null`.

  - ### setFunction

    public void setFunction(OnLineFunction newValue)
    Sets the code for function performed by the online resource.
    Parameters:
      `newValue` - the new function, or `null` if none.

  - ### getLinkage

    public URI getLinkage()
    Returns the location (address) for on-line access using a Uniform Resource Locator address or similar addressing scheme.
    Specified by:
      `getLinkage` in interface `OnlineResource`
    Returns:
      location for on-line access using a Uniform Resource Locator address or similar scheme, or `null`.

  - ### setLinkage

    public void setLinkage(URI newValue)
    Sets the location (address) for on-line access using a Uniform Resource Locator address or similar addressing scheme such as "`http://www​.statkart​.no/isotc211`".
    Parameters:
      `newValue` - the new linkage, or `null` if none.

  - ### getProtocol

    public String getProtocol()
    Returns the connection protocol to be used.

    #### Examples

    ftp, http get KVP, http POST, etc.
    Specified by:
      `getProtocol` in interface `OnlineResource`
    Returns:
      connection protocol to be used, or `null`.

  - ### setProtocol

    public void setProtocol(String newValue)
    Sets the connection protocol to be used.
    Parameters:
      `newValue` - the new protocol, or `null` if none.

  - ### getProtocolRequest

    @UML(identifier="protocolRequest", obligation=OPTIONAL, specification=ISO_19115) public String getProtocolRequest()
    Returns the request used to access the resource depending on the protocol. This is used mainly for POST requests.

    #### Example

        <GetFeature service="WFS" version="2.0.0"
                    outputFormat="application/gml+xml;verson=3.2"
                    xmlns="(…snip…)">
            <Query typeNames="Roads"/>
        </GetFeature>

    Returns:
      Request used to access the resource.
    Since:
      0.5

  - ### setProtocolRequest

    public void setProtocolRequest(String newValue)
    Sets the request to be used.
    Parameters:
      `newValue` - the new request, or `null` if none.
    Since:
      0.5