All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ucar.units.UnitDB Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 1998-2018 University Corporation for Atmospheric Research/Unidata
 * See LICENSE for license information.
 */
package ucar.units;

import java.util.Iterator;

/**
 * Interface for a unit database.
 * 
 * @author Steven R. Emmerson
 */
public interface UnitDB {
  /**
   * Adds a unit to the database.
   * 
   * @param unit
   *        The unit to be added. Its getName() method must not return
   *        null. Its getPlural() and getSymbol() methods may return null.
   * @throws NameException
   *         Bad unit name.
   * @throws UnitExistsException
   *         The unit is already in the database.
   * @throws UnitDBAccessException
   *         Problem accessing unit database.
   */
  void addUnit(Unit unit) throws UnitExistsException, UnitDBAccessException, NameException;

  /**
   * Adds an alias for a unit to the database.
   * 
   * @param alias
   *        The alias for the unit.
   * @param name
   *        The name of the unit already in the database.
   * @throws NameException
   *         Bad unit name.
   * @throws UnitExistsException
   *         The unit is already in the database.
   * @throws UnitDBAccessException
   *         Problem accessing unit database.
   * @throws NoSuchUnitException
   *         The unit doesn't exist in the database.
   */
  void addAlias(String alias, String name)
      throws NoSuchUnitException, UnitExistsException, UnitDBAccessException, NameException;

  /**
   * Adds an alias for a unit to the database.
   * 
   * @param alias
   *        The alias for the unit.
   * @param name
   *        The name of the unit already in the database.
   * @param symbol
   *        The symbol for the unit.
   * @throws NameException
   *         Bad unit name.
   * @throws UnitExistsException
   *         The unit is already in the database.
   * @throws UnitDBAccessException
   *         Problem accessing unit database.
   * @throws NoSuchUnitException
   *         The unit doesn't exist in the database.
   */
  void addAlias(String alias, String name, String symbol)
      throws NoSuchUnitException, UnitExistsException, UnitDBAccessException, NameException;

  /**
   * Adds an alias for a unit to the database.
   * 
   * @param alias
   *        The alias for the unit.
   * @param name
   *        The name of the unit already in the database.
   * @param symbol
   *        The symbol of the alias. May be null
   *        .
   * @param plural
   *        The plural form of the alias. May be 
   *        null in which
   *        case regular plural- forming rules are followed.
   * @throws NameException
   *         Bad unit name.
   * @throws UnitExistsException
   *         The unit is already in the database.
   * @throws UnitDBAccessException
   *         Problem accessing unit database.
   * @throws NoSuchUnitException
   *         The unit doesn't exist in the database.
   */
  void addAlias(String alias, String name, String symbol, String plural)
      throws NoSuchUnitException, UnitExistsException, UnitDBAccessException, NameException;

  /**
   * Adds an alias for a unit to the database.
   * 
   * @param id
   *        The alias identifier.
   * @param name
   *        The name of the unit already in the database.
   * @throws NoSuchUnitException
   *         The unit doesn't exist in the database.
   * @throws UnitExistsException
   *         The unit is already in the database.
   * @throws UnitDBAccessException
   *         Problem accessing unit database.
   */
  void addAlias(UnitID id, String name) throws NoSuchUnitException, UnitExistsException, UnitDBAccessException;

  /**
   * Adds a symbol for a unit to the database.
   * 
   * @param symbol
   *        The symbol for the unit.
   * @param name
   *        The name of the unit already in the database.
   * @throws NameException
   *         Bad unit name.
   * @throws UnitExistsException
   *         The unit is already in the database.
   * @throws UnitDBAccessException
   *         Problem accessing unit database.
   * @throws NoSuchUnitException
   *         The unit doesn't exist in the database.
   */
  void addSymbol(String symbol, String name)
      throws NoSuchUnitException, UnitExistsException, UnitDBAccessException, NameException;

  /**
   * Gets the unit in the database whose name, plural, or symbol, match an
   * identifier. The order of matching is implementation defined.
   * 
   * @param id
   *        The identifier for the unit.
   * @return The matching unit in the database or 
   *        null if no
   *         matching unit could be found.
   * @throws UnitDBAccessException
   *         Problem accessing unit database.
   */
  Unit get(String id) throws UnitDBAccessException;

  /**
   * Gets a unit in the database by name.
   * 
   * @param name
   *        The name of the unit.
   * @return The matching unit in the database or 
   *        null if no
   *         matching unit could be found.
   * @throws UnitDBAccessException
   *         Problem accessing unit database.
   */
  Unit getByName(String name) throws UnitDBAccessException;

  /**
   * Gets a unit in the database by symbol.
   * 
   * @param symbol
   *        The symbol for the unit.
   * @return The matching unit in the database or 
   *        null if no
   *         matching unit could be found.
   * @throws UnitDBAccessException
   *         Problem accessing unit database.
   */
  Unit getBySymbol(String symbol) throws UnitDBAccessException;

  /**
   * Returns the string representation of the database.
   * 
   * @return The string representation of the database.
   */
  String toString();

  /**
   * Returns an iterator over the units of the database.
   * 
   * @return An iterator over the units of the database. The
   *         next() of the iterator returns objects of type
   *         Unit.
   */
  Iterator getIterator();
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy