# Class DefaultFormula

Object
FormattableObject
DefaultFormula

All Implemented Interfaces:
  `Serializable`, `Printable`, `Formula`

public class DefaultFormula extends FormattableObject implements Formula, Serializable
Specification of the coordinate operation method formula. A formula may be given textually, or may be a reference to a publication.

`Formula` is for human reading. The object that actually does the work of applying formula to coordinate values is `MathTransform`.

Since:
  0.5
See Also:
  - `DefaultOperationMethod`
  - `AbstractMathTransform`
  - `MathTransformProvider`
  - Serialized Form

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  ``
  `DefaultFormula(CharSequence formula)`
  Creates a new formula from the given string.
  ``
  `DefaultFormula(Citation citation)`
  Creates a new formula from the given citation.
  `protected`
  `DefaultFormula(Formula formula)`
  Creates a new formula with the same values as the specified one.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static DefaultFormula`
  `castOrCopy(Formula object)`
  Returns a SIS formula implementation with the same values as the given arbitrary implementation.
  `boolean`
  `equals(Object object)`
  Compares this formula with the given object for equality.
  `protected String`
  `formatTo(Formatter formatter)`
  Formats this formula as a pseudo-Well Known Text element.
  `Citation`
  `getCitation()`
  Returns the reference to a publication giving the formula(s) or procedure used by the coordinate operation method, or `null` if none.
  `InternationalString`
  `getFormula()`
  Returns the formula(s) or procedure used by the operation method, or `null` if none.
  `int`
  `hashCode()`
  Returns a hash code value for this formula.

  ### Methods inherited from class FormattableObject

  `print, toString, toString, toWKT`

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### DefaultFormula

    public DefaultFormula(CharSequence formula)
    Creates a new formula from the given string.
    Parameters:
      `formula` - the formula.

  - ### DefaultFormula

    public DefaultFormula(Citation citation)
    Creates a new formula from the given citation.
    Parameters:
      `citation` - the citation.

  - ### DefaultFormula

    protected DefaultFormula(Formula formula)
    Creates a new formula with the same values as the specified one. This copy constructor provides a way to convert an arbitrary implementation into a SIS one or a user-defined one (as a subclass), usually in order to leverage some implementation-specific API.

    This constructor performs a shallow copy, i.e. the properties are not cloned.

    Parameters:
      `formula` - the formula to copy.
    See Also:
      - `castOrCopy(Formula)`

- ## Method Details

  - ### castOrCopy

    public static DefaultFormula castOrCopy(Formula object)
    Returns a SIS formula implementation with the same values as the given arbitrary implementation. If the given object is `null`, then this method returns `null`. Otherwise if the given object is already a SIS implementation, then the given object is returned unchanged. Otherwise a new SIS implementation is created and initialized to the attribute values of the given object.
    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.

  - ### getFormula

    public InternationalString getFormula()
    Returns the formula(s) or procedure used by the operation method, or `null` if none.
    Specified by:
      `getFormula` in interface `Formula`
    Returns:
      The formula used by the operation method, or `null` if none.

  - ### getCitation

    public Citation getCitation()
    Returns the reference to a publication giving the formula(s) or procedure used by the coordinate operation method, or `null` if none.
    Specified by:
      `getCitation` in interface `Formula`
    Returns:
      Reference to a publication giving the formula, or `null` if none.

  - ### hashCode

    public int hashCode()
    Returns a hash code value for this formula.
    Overrides:
      `hashCode` in class `Object`

  - ### equals

    public boolean equals(Object object)
    Compares this formula with the given object for equality.
    Overrides:
      `equals` in class `Object`
    Parameters:
      `object` - the object to compare with this formula.
    Returns:
      `true` if both objects are equal.

  - ### formatTo

    protected String formatTo(Formatter formatter)
    Formats this formula as a pseudo-Well Known Text element.

    #### Compatibility note

    ISO 19162 does not define a WKT representation for `Formula` objects. The text formatted by this method is SIS-specific and causes the text to be flagged as invalid WKT. The WKT content of this element may change in any future SIS version.
    Specified by:
      `formatTo` in class `FormattableObject`
    Parameters:
      `formatter` - the formatter where to format the inner content of this WKT element.
    Returns:
      `"Formula"`.
    See Also:
      - `FormattableObject​.toWKT()`
      - `FormattableObject​.toString()`