3.2.4: 2013-12-06

net.sf.basedb.plugins.batchimport
Class DerivedBioAssayImporter

java.lang.Object
  extended by net.sf.basedb.core.plugin.AbstractPlugin
      extended by net.sf.basedb.plugins.AbstractFlatFileImporter
          extended by net.sf.basedb.plugins.batchimport.AbstractItemImporter<DerivedBioAssay>
              extended by net.sf.basedb.plugins.batchimport.DerivedBioAssayImporter
All Implemented Interfaces:
AutoDetectingImporter, InteractivePlugin, Plugin, SignalTarget, ConfigureByExample

public class DerivedBioAssayImporter
extends AbstractItemImporter<DerivedBioAssay>

Plug-in for importing derived bioassay items in a batch. The plug-in can create new items and update existing items.

Since:
3.0
Author:
nicklas
Last modified
$Date $

Nested Class Summary
 
Nested classes/interfaces inherited from interface net.sf.basedb.core.plugin.Plugin
Plugin.MainType
 
Field Summary
private  String dataDirectory
           
private  DefaultItemFunction<Hardware> defaultHardwareFunction
           
private  DefaultItemFunction<Protocol> defaultProtocolFunction
           
private  DefaultItemFunction<Software> defaultSoftwareFunction
           
private  Mapper descriptionMapper
           
protected static PluginParameter<String> extractColumnMapping
           
private  Mapper extractMapper
           
protected static PluginParameter<String> fileColumnMapping
           
private  Mapper fileMapper
           
protected static PluginParameter<String> fileTypeColumnMapping
           
private  Mapper fileTypeMapper
           
private static Set<GuiContext> guiContexts
           
protected static PluginParameter<String> hardwareColumnMapping
           
private  Mapper hardwareMapper
           
private  Mapper nameMapper
           
protected static PluginParameter<String> parentColumnMapping
          Column mapping parameter for the parent (physical bioassay OR derived bioassay)
private  Mapper parentMapper
           
protected static PluginParameter<String> parentTypeColumnMapping
          Column mapping parameter for the parent type.
private  Mapper parentTypeMapper
           
private  Mapper protocolMapper
           
protected static PluginParameter<String> softwareColumnMapping
           
private  Mapper softwareMapper
           
 
Fields inherited from class net.sf.basedb.plugins.batchimport.AbstractItemImporter
defaultsSection, descriptionColumnMapping, externalIdColumnMapping, identificationSection, internalIdColumnMapping, nameColumnMapping, optionalColumnMapping, permissionTemplateColumnMapping, protocolColumnMapping, requiredColumnMapping, subtypeColumnMapping
 
Fields inherited from class net.sf.basedb.plugins.AbstractFlatFileImporter
complexMappings, dataFooterRegexpParameter, dataHeaderRegexpParameter, dataSplitterRegexpParameter, defaultErrorParameter, errorSection, fileParameter, fileType, headerRegexpParameter, ignoreRegexpParameter, invalidUseOfNullErrorParameter, mappingSection, maxDataColumnsParameter, minDataColumnsParameter, numberFormatErrorParameter, numberOutOfRangeErrorParameter, numDataColumnsType, optionalRegexpType, parserSection, requiredRegexpType, sectionRegexpParameter, stringTooLongErrorParameter, trimQuotesParameter
 
Fields inherited from class net.sf.basedb.core.plugin.AbstractPlugin
annotationSection, configuration, COPY_ANNOTATIONS, job, OVERWRITE_ANNOTATIONS, sc
 
Constructor Summary
DerivedBioAssayImporter()
           
 
Method Summary
protected  void addMoreColumnMappingParameters(List<PluginParameter<?>> parameters)
          Adds column mappings for name, internalId, subtype, description, protocol, hardware, software, parent, data files and permissions.
protected  void addMoreJobParameters(List<PluginParameter<?>> parameters)
          Add parameter for "Data directory" directory where data files may be located.
protected  void createColumnMappers(FlatFileParser ffp, boolean cropStrings)
          Create mappers that can be used to extract data values from the file that is currently being parsed by the ffp FlatFileParser.
protected  DerivedBioAssay createItem(DbControl dc, FlatFileParser.Data data)
          Create a new item and populate it with data from the current line.
protected  ItemQuery<DerivedBioAssay> createItemQuery()
          Calls DerivedBioAssay.getQuery().
protected  void doneWithItem(DbControl dc, DerivedBioAssay bioAssay, int numMultiLines)
          Validate data files if they have been set.
 Set<GuiContext> getGuiContexts()
          Get a set containing all items that the plugin handles.
protected  IdMethod[] getIdMethods()
          Useable methods are: PropertyIdMethod.NAME InternalIdMethod.INTERNAL_ID FallbackIdMethod.NAME_OR_ID
protected  Item getItemForSubtypes()
          Does the importer want to use item subtypes when importing?
protected  void updateItem(DbControl dc, DerivedBioAssay bioAssay, FlatFileParser.Data data)
          Update an item with data from the current line.
protected  void updateMultiLineItem(DbControl dc, DerivedBioAssay bioAssay, FlatFileParser.Data data, int multiLineNum)
          Add data files
 
Methods inherited from class net.sf.basedb.plugins.batchimport.AbstractItemImporter
addMoreErrorParameters, addMoreParsingParameters, begin, beginData, configure, end, findArrayBatch, findArrayDesign, findArraySlide, findBioPlate, findBioPlateType, findBioSource, findBioSource, findBioWell, findDataFileType, findDerivedBioAssay, findExtract, findExtract, findHardware, findHardware, findHybridization, findItemSubtype, findItemSubtype, findLabeledExtract, findPermissionTemplate, findPhysicalBioAssay, findPlateGeometry, findPlatform, findProtocol, findProtocol, findRawDataType, findReferencedItem, findReferencedItemWithSubtype, findSample, findSample, findSoftware, findSoftware, findTag, findTag, findVariant, getConfigureOptionsParameters, getConfigureParserParameters, getDefaultItemFunction, getIdMethod, getInitializedFlatFileParser, getInitializedFlatFileParser, getProjectDefaultPlatform, getProjectDefaultRawDataType, getProjectDefaultVariant, getRequestInformation, getSuccessMessage, handleData, initReferenceQuery, isInContext, parseDate, requiresConfiguration, setOrAddFile, setUpErrorHandling, supportsConfigurations, updateItemSubtype, updatePermissions
 
Methods inherited from class net.sf.basedb.plugins.AbstractFlatFileImporter
addErrorHandler, checkColumnMapping, checkColumnMapping, continueWithNextFileAfterError, doImport, finish, getCharset, getCharset, getDecimalSeparator, getErrorHandler, getErrorOption, getFileIterator, getMainType, getMapper, getMapper, getNumberFormat, getNumBytes, getProgress, getSignalHandler, getTotalFileSize, handleHeader, handleSection, isImportable, isImportable, log, log, log, log, run, start, wrapInputStream
 
Methods inherited from class net.sf.basedb.core.plugin.AbstractPlugin
cloneParameterWithDefaultValue, closeLogFile, createLogFile, done, getCopyAnnotationsParmeter, getCurrentConfiguration, getCurrentJob, getJobOrConfigurationValue, getOverwriteAnnotationsParameters, getPermissions, init, log, log, storeValue, storeValue, storeValues, validateRequestParameters
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface net.sf.basedb.core.plugin.Plugin
done, getMainType, getPermissions, init, run
 

Field Detail

guiContexts

private static final Set<GuiContext> guiContexts

parentTypeColumnMapping

protected static final PluginParameter<String> parentTypeColumnMapping
Column mapping parameter for the parent type.


parentColumnMapping

protected static final PluginParameter<String> parentColumnMapping
Column mapping parameter for the parent (physical bioassay OR derived bioassay)


extractColumnMapping

protected static final PluginParameter<String> extractColumnMapping

hardwareColumnMapping

protected static final PluginParameter<String> hardwareColumnMapping

softwareColumnMapping

protected static final PluginParameter<String> softwareColumnMapping

fileTypeColumnMapping

protected static final PluginParameter<String> fileTypeColumnMapping

fileColumnMapping

protected static final PluginParameter<String> fileColumnMapping

nameMapper

private Mapper nameMapper

descriptionMapper

private Mapper descriptionMapper

protocolMapper

private Mapper protocolMapper

defaultProtocolFunction

private DefaultItemFunction<Protocol> defaultProtocolFunction

hardwareMapper

private Mapper hardwareMapper

defaultHardwareFunction

private DefaultItemFunction<Hardware> defaultHardwareFunction

softwareMapper

private Mapper softwareMapper

defaultSoftwareFunction

private DefaultItemFunction<Software> defaultSoftwareFunction

parentTypeMapper

private Mapper parentTypeMapper

parentMapper

private Mapper parentMapper

extractMapper

private Mapper extractMapper

fileTypeMapper

private Mapper fileTypeMapper

fileMapper

private Mapper fileMapper

dataDirectory

private String dataDirectory
Constructor Detail

DerivedBioAssayImporter

public DerivedBioAssayImporter()
Method Detail

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()
Useable methods are:

Overrides:
getIdMethods in class AbstractItemImporter<DerivedBioAssay>

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<DerivedBioAssay>
Returns:
An Item or null

addMoreJobParameters

protected void addMoreJobParameters(List<PluginParameter<?>> parameters)
Add parameter for "Data directory" directory where data files may be located.

Overrides:
addMoreJobParameters in class AbstractItemImporter<DerivedBioAssay>
Parameters:
parameters - The list of parameters to add the column mapping parameters to

addMoreColumnMappingParameters

protected void addMoreColumnMappingParameters(List<PluginParameter<?>> parameters)
Adds column mappings for name, internalId, subtype, description, protocol, hardware, software, parent, data files and permissions.

Overrides:
addMoreColumnMappingParameters in class AbstractItemImporter<DerivedBioAssay>
Parameters:
parameters - The list of parameters to add the column mapping parameters to

createItemQuery

protected ItemQuery<DerivedBioAssay> createItemQuery()
Calls DerivedBioAssay.getQuery().

Specified by:
createItemQuery in class AbstractItemImporter<DerivedBioAssay>
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<DerivedBioAssay>
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 DerivedBioAssay 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<DerivedBioAssay>
Parameters:
dc - The DbControl to use for database access
data - The current data line
Returns:
A new item

updateItem

protected void updateItem(DbControl dc,
                          DerivedBioAssay bioAssay,
                          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<DerivedBioAssay>
Parameters:
dc - The DbControl to use for database access
bioAssay - The item to update
data - The current data line

updateMultiLineItem

protected void updateMultiLineItem(DbControl dc,
                                   DerivedBioAssay bioAssay,
                                   FlatFileParser.Data data,
                                   int multiLineNum)
Add data files

Overrides:
updateMultiLineItem in class AbstractItemImporter<DerivedBioAssay>
Parameters:
dc - The DbControl to use for database access
bioAssay - The item to update
data - The current data line
multiLineNum - The number of the multi-line entry, starting with 1 for the first multi-line

doneWithItem

protected void doneWithItem(DbControl dc,
                            DerivedBioAssay bioAssay,
                            int numMultiLines)
Validate data files if they have been set.

Overrides:
doneWithItem in class AbstractItemImporter<DerivedBioAssay>
Parameters:
dc - The DbControl to use for database access
bioAssay - The item to update
numMultiLines - The number of the multi-line entries, starting with 1 for the first multi-line (0 for single-line entries)

3.2.4: 2013-12-06