Class FallbackIdMethod

java.lang.Object
net.sf.basedb.plugins.batchimport.FallbackIdMethod
All Implemented Interfaces:
IdMethod

public class FallbackIdMethod
extends Object
implements IdMethod
Identification method implementation that first tries a parent id method, and, if no item is found and the identifier is a number, tries to load the item by id.
Version:
2.8
Author:
nicklas
Last modified
$Date: 2019-02-27 14:18:43 +0100 (ons, 27 feb. 2019) $
  • Field Details

    • NAME_OR_ID

      public static final FallbackIdMethod NAME_OR_ID
      Use the name for finding items. If no item is found and the identifier is numerical, try loading it by ID.
    • NAME_OR_EXTERNALID_OR_ID

      public static final FallbackIdMethod NAME_OR_EXTERNALID_OR_ID
    • NAME_OR_BARCODE_OR_ID

      public static final FallbackIdMethod NAME_OR_BARCODE_OR_ID
    • NAME_OR_SYSTEMID_OR_ID

      public static final FallbackIdMethod NAME_OR_SYSTEMID_OR_ID
      Use the name or system ID for finding items. If no item is found and the identifier is numerical, try loading it by ID.
      Since:
      3.0
    • NAME_OR_UNITSYMBOL_OR_ID

      public static final FallbackIdMethod NAME_OR_UNITSYMBOL_OR_ID
      ID method that can be used for units. Use the name or unit symbol for finding items. If no item is found and the identifier is numerical, try loading it by ID.
      Since:
      3.8
    • method

      private final String method
    • title

      private final String title
    • parent

      private final IdMethod parent
  • Constructor Details

    • FallbackIdMethod

      public FallbackIdMethod​(String method, String title, IdMethod parent)
      Create a new id method.
      Parameters:
      method - The method name, which should be unique among all methods
      title - The title to use for display purposes
      parent - The parent id method, which will be tried first
  • Method Details

    • getMethod

      public String getMethod()
      Description copied from interface: IdMethod
      The name of this method, which should be unique among the methods that can be used at a given time.
      Specified by:
      getMethod in interface IdMethod
      Returns:
      The method name
    • getTitle

      public String getTitle()
      Description copied from interface: IdMethod
      The display title of the method.
      Specified by:
      getTitle in interface IdMethod
    • isTrulyUnique

      public boolean isTrulyUnique()
      Description copied from interface: IdMethod
      If the identification method is truly unique or not. If this method returns true, the IdMethod.find(DbControl, ItemQuery, String) method will never ever return a list with more than one item.
      Specified by:
      isTrulyUnique in interface IdMethod
    • getColumnMappingParameterName

      public String getColumnMappingParameterName()
      Specified by:
      getColumnMappingParameterName in interface IdMethod
    • prepareQuery

      public <I extends BasicItem> ItemQuery<I> prepareQuery​(DbControl dc, ItemQuery<I> query)
      Adds a restriction to the query: property = :identifier
      Specified by:
      prepareQuery in interface IdMethod
      query - The query to prepare
      Returns:
      The query that is used for item lookup
    • find

      public <I extends BasicItem> List<I> find​(DbControl dc, ItemQuery<I> query, String identifier)
      First, find items using the parent id method. If no items is found with this, try to convert the identifier to a number and use getById() to load the item.
      Specified by:
      find in interface IdMethod
      query - The query to use, which should have been prepared using IdMethod.prepareQuery(DbControl, ItemQuery)
      identifier - The identifier of the item
      Returns:
      A list with the found items, if IdMethod.isTrulyUnique() return true the list is guaranteed to have at most one item
    • toString

      public String toString()
      Overrides:
      toString in class Object