Class KitImporter

All Implemented Interfaces:
AutoDetectingImporter, InteractivePlugin, Plugin, SignalTarget, ConfigureByExample

public class KitImporter
extends AbstractItemImporter<Kit>
Plug-in for importing kit items in a batch. The plug-in can create new items and updated existing items.
Since:
3.7
Author:
nicklas
  • Field Details

    • guiContexts

      private static final Set<GuiContext> guiContexts
    • expirationDateColumnMapping

      private static final PluginParameter<String> expirationDateColumnMapping
      Column mapping parameter for the kit expiration date.
    • inactiveColumnMapping

      private static final PluginParameter<String> inactiveColumnMapping
      Column mapping parameter for the kit inactive flag.
    • nameMapper

      private Mapper nameMapper
    • descriptionMapper

      private Mapper descriptionMapper
    • registeredMapper

      private Mapper registeredMapper
    • expirationDateMapper

      private Mapper expirationDateMapper
    • inactiveMapper

      private Mapper inactiveMapper
  • Constructor Details

    • KitImporter

      public KitImporter()
  • Method Details

    • getGuiContexts

      public Set<GuiContext> getGuiContexts()
      Description copied from interface: InteractivePlugin
      Get a set containing all items that the plugin handles. Ie. if the plugin imports reporters, return a set containing Item.REPORTER. This information is used by client applications to put the plugin in the proper place in the user interface.
      Returns:
      A Set containing Item:s, or null if the plugin is not concerned about items
    • getIdMethods

      protected IdMethod[] getIdMethods()
      Overrides:
      getIdMethods in class AbstractItemImporter<Kit>
    • getItemForSubtypes

      protected Item getItemForSubtypes()
      Description copied from class: AbstractItemImporter
      Does the importer want to use item subtypes when importing? If this method returns a non-null, this class will add a parameter in the "Item identification" section that makes it possible to select which subtypes the importer should use to limit the search for existing items. The default implementation returns null.
      Overrides:
      getItemForSubtypes in class AbstractItemImporter<Kit>
      Returns:
      An Item or null
    • getItemForAnnotationTypes

      protected Item getItemForAnnotationTypes()
      Enable annotations as item identifier.
      Overrides:
      getItemForAnnotationTypes in class AbstractItemImporter<Kit>
      Returns:
      An Item or null
    • addMoreColumnMappingParameters

      protected void addMoreColumnMappingParameters​(List<PluginParameter<?>> parameters)
      Adds column mappings for name and description.
      Overrides:
      addMoreColumnMappingParameters in class AbstractItemImporter<Kit>
      Parameters:
      parameters - The list of parameters to add the column mapping parameters to
    • createItemQuery

      protected ItemQuery<Kit> createItemQuery()
      Specified by:
      createItemQuery in class AbstractItemImporter<Kit>
      Returns:
      A query
    • createColumnMappers

      protected void createColumnMappers​(FlatFileParser ffp, boolean cropStrings)
      Description copied from class: AbstractItemImporter
      Create mappers that can be used to extract data values from the file that is currently being parsed by the ffp FlatFileParser. This method is called during initialisation of the plug-in when the FlatFileParser.parseHeaders() has successfully found the start of data. Use the AbstractFlatFileImporter.getMapper(FlatFileParser, String, Integer, Mapper) to create column mappers. Example:
      nameMapper = getMapper(ffp, job.getValue("nameColumnMapping"), 
         cropStrings ? Nameable.MAX_NAME_LENGTH : null, null);
      
      Overrides:
      createColumnMappers in class AbstractItemImporter<Kit>
      Parameters:
      ffp - The parser that is parsing the data file
      cropStrings - If strings that are too long to fit in the database should be cropped or not (=generate an error)
    • createItem

      protected Kit createItem​(DbControl dc, FlatFileParser.Data data)
      Description copied from class: AbstractItemImporter
      Create a new item and populate it with data from the current line. Do not call DbControl.saveItem(BasicItem). This is done automatically by the core implementation.
      BioSource bs = BioSource.getNew(dc);
      // Set properties. See example on updateItem method
      return bs;
      

      If the current data line doesn't have data for all required properties, this method should throw an InvalidUseOfNullException exception.

      This method is called during import when current item can be found and if the user has selected to create missing item.

      Specified by:
      createItem in class AbstractItemImporter<Kit>
      Parameters:
      dc - The DbControl to use for database access
      data - The current data line
      Returns:
      A new item
    • updateItem

      protected void updateItem​(DbControl dc, Kit kit, FlatFileParser.Data data)
      Description copied from class: AbstractItemImporter
      Update an item with data from the current line. Example:
      if (nameMapper != null) item.setName(nameMapper.getValue(data));
      if (descriptionMapper != null) item.setDescription(descriptionMapper.getValue(data));
      ...
      
      This method is called during import to update an existing item.
      Specified by:
      updateItem in class AbstractItemImporter<Kit>
      Parameters:
      dc - The DbControl to use for database access
      kit - The item to update
      data - The current data line