2.17.2: 2011-06-17

net.sf.basedb.plugins
Class ReporterFlatFileImporter

java.lang.Object
  extended by net.sf.basedb.core.plugin.AbstractPlugin
      extended by net.sf.basedb.plugins.AbstractFlatFileImporter
          extended by net.sf.basedb.plugins.ReporterFlatFileImporter
All Implemented Interfaces:
AutoDetectingImporter, InteractivePlugin, Plugin, SignalTarget, ConfigureByExample

public class ReporterFlatFileImporter
extends AbstractFlatFileImporter
implements InteractivePlugin, ConfigureByExample

A plugin that imports reporter from a flat file.

Version:
2.0
Author:
Nicklas
Last modified
$Date: 2010-11-08 10:56:02 +0100 (Mon, 08 Nov 2010) $

Nested Class Summary
 
Nested classes/interfaces inherited from interface net.sf.basedb.core.plugin.Plugin
Plugin.MainType
 
Field Summary
private static About about
           
private  List<PluginParameter<String>> allColumnMappings
           
private  ReporterBatcher batcher
           
private  RequestInformation configureJob
           
private  RequestInformation configurePlugin
           
private  boolean createMissing
           
private  DbControl dc
           
private  Map<String,Float> deferred
           
private  Set<String> deleted
           
private  boolean deleteMode
           
private static PluginParameter<String> descriptionColumnMapping
           
private  Mapper descriptionMapper
           
private  Map<ExtendedProperty,Mapper> extendedMappers
           
private  boolean failIfUsed
           
private  FlatFileParser ffp
           
private static Set<GuiContext> guiContexts
           
private  Mapper idMapper
           
private static PluginParameter<String> nameColumnMapping
           
private  Mapper nameMapper
           
private  boolean nullIfException
           
private  int numAddedToList
           
private  NumberFormat numberFormat
           
private  int numDeleted
           
private  int numExists
           
private  int numInserted
           
private  int numNotFound
           
private  int numUpdated
           
private  int numUsed
           
private static StringParameterType optionalColumnMapping
           
private static Set<Permissions> permissions
           
private static PluginParameter<String> reporterIdColumnMapping
           
protected static PluginParameter<String> reporterIsUsedErrorParameter
           
private  ReporterList reporterList
           
private  PluginParameter<ReporterList> reporterListParameter
           
private  ReporterType reporterType
           
private static PluginParameter<String> reporterTypeColumnMapping
           
private  Mapper reporterTypeMapper
           
private  PluginParameter<ReporterType> reporterTypeParameter
           
private  Map<String,ReporterType> reporterTypes
           
private static StringParameterType requiredColumnMapping
           
private static PluginParameter<String> scoreColumnMapping
           
private  Mapper scoreMapper
           
private static PluginParameter<String> symbolColumnMapping
           
private  Mapper symbolMapper
           
private  boolean updateExisting
           
 
Fields inherited from class net.sf.basedb.plugins.AbstractFlatFileImporter
CHARSET, charsetType, complexMappings, dataFooterRegexpParameter, dataHeaderRegexpParameter, dataSplitterRegexpParameter, DECIMAL_SEPARATOR, decimalSeparatorType, 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
ReporterFlatFileImporter()
          Create a new importer.
 
Method Summary
protected  void begin(FlatFileParser ffp)
          Create a DbControl and a ReporterBatcher.
protected  void beginData()
          Initialise column Mapper:s.
 void configure(GuiContext context, Request request, Response response)
          Store configuration settings for Request.COMMAND_CONFIGURE_PLUGIN and Request.COMMAND_CONFIGURE_JOB.
protected  void end(boolean success)
          Close and commit/rollback the ReporterBatcher and DbControl.
 About getAbout()
          Get information about the plugin, such as name, version, authors, etc.
private  List<PluginParameter<String>> getAllColumnMappings(boolean reporterListContext)
           
private  RequestInformation getConfigureJobParameters(GuiContext context)
           
private  RequestInformation getConfigurePluginParameters(GuiContext context)
           
 Set<GuiContext> getGuiContexts()
          Return a set containing the context:s [REPORTER, LIST], [REPORTERLIST, ITEM], [REPORTERSCORE, LIST].
 Collection<Permissions> getPermissions()
          Request create, write and delete access to Reporter:s, write access to ReporterList:s and read access to File:s and ReporterType:s.
private  ReporterType getReporterType(String name)
           
 RequestInformation getRequestInformation(GuiContext context, String command)
          The Request.COMMAND_CONFIGURE_PLUGIN command will ask for parser regular expressions, column mappings and the reporter type.
protected  String getSuccessMessage(int skippedLines)
          Return x new reporters; y updated reporters; z reporters added to list.
protected  void handleData(FlatFileParser.Data data)
          Called by the parser for every line in the file that is a data line.
 String isInContext(GuiContext context, Object item)
          Null if the context is Item.REPORTERLIST and the item is a ReporterList.
 boolean requiresConfiguration()
          Return TRUE, since the implementation requires it for finding the regular expressions used by the FlatFileParser.
 boolean supportsConfigurations()
          Returns TRUE, since that is how the plugins used to work before this method was introduced.
 
Methods inherited from class net.sf.basedb.plugins.AbstractFlatFileImporter
addErrorHandler, checkColumnMapping, checkColumnMapping, continueWithNextFileAfterError, doImport, finish, getCharset, getCharset, getCharsetParameter, getDecimalSeparator, getDecimalSeparatorParameter, getErrorHandler, getErrorOption, getFileIterator, getInitializedFlatFileParser, getMainType, getMapper, getNumberFormat, getNumBytes, getPrimaryLocationFilter, getProgress, getSignalHandler, getTotalFileSize, handleHeader, handleSection, isImportable, isImportable, log, log, log, log, run, setUpErrorHandling, start, wrapInputStream
 
Methods inherited from class net.sf.basedb.core.plugin.AbstractPlugin
checkInterrupted, cloneParameterWithDefaultValue, closeLogFile, createLogFile, done, getCopyAnnotationsParmeter, getCurrentConfiguration, getCurrentJob, getJobOrConfigurationValue, getOverwriteAnnotationsParameters, 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, init, run
 

Field Detail

about

private static final About about

guiContexts

private static final Set<GuiContext> guiContexts

permissions

private static final Set<Permissions> permissions

requiredColumnMapping

private static final StringParameterType requiredColumnMapping

optionalColumnMapping

private static final StringParameterType optionalColumnMapping

nameColumnMapping

private static final PluginParameter<String> nameColumnMapping

reporterIdColumnMapping

private static final PluginParameter<String> reporterIdColumnMapping

descriptionColumnMapping

private static final PluginParameter<String> descriptionColumnMapping

symbolColumnMapping

private static final PluginParameter<String> symbolColumnMapping

scoreColumnMapping

private static final PluginParameter<String> scoreColumnMapping

reporterTypeColumnMapping

private static final PluginParameter<String> reporterTypeColumnMapping

reporterIsUsedErrorParameter

protected static final PluginParameter<String> reporterIsUsedErrorParameter

reporterTypeParameter

private PluginParameter<ReporterType> reporterTypeParameter

reporterListParameter

private PluginParameter<ReporterList> reporterListParameter

allColumnMappings

private List<PluginParameter<String>> allColumnMappings

configurePlugin

private RequestInformation configurePlugin

configureJob

private RequestInformation configureJob

dc

private DbControl dc

batcher

private ReporterBatcher batcher

idMapper

private Mapper idMapper

nameMapper

private Mapper nameMapper

symbolMapper

private Mapper symbolMapper

descriptionMapper

private Mapper descriptionMapper

scoreMapper

private Mapper scoreMapper

reporterTypeMapper

private Mapper reporterTypeMapper

extendedMappers

private Map<ExtendedProperty,Mapper> extendedMappers

reporterType

private ReporterType reporterType

reporterTypes

private Map<String,ReporterType> reporterTypes

reporterList

private ReporterList reporterList

updateExisting

private boolean updateExisting

createMissing

private boolean createMissing

deleteMode

private boolean deleteMode

numInserted

private int numInserted

numUpdated

private int numUpdated

numExists

private int numExists

numAddedToList

private int numAddedToList

numNotFound

private int numNotFound

numUsed

private int numUsed

numDeleted

private int numDeleted

deferred

private Map<String,Float> deferred

deleted

private Set<String> deleted

ffp

private FlatFileParser ffp

numberFormat

private NumberFormat numberFormat

nullIfException

private boolean nullIfException

failIfUsed

private boolean failIfUsed
Constructor Detail

ReporterFlatFileImporter

public ReporterFlatFileImporter()
Create a new importer.

Method Detail

getAbout

public About getAbout()
Description copied from interface: Plugin
Get information about the plugin, such as name, version, authors, etc.

Specified by:
getAbout in interface Plugin
Returns:
An About object

supportsConfigurations

public boolean supportsConfigurations()
Description copied from class: AbstractPlugin
Returns TRUE, since that is how the plugins used to work before this method was introduced.

Specified by:
supportsConfigurations in interface Plugin
Overrides:
supportsConfigurations in class AbstractPlugin
Returns:
TRUE or FALSE

requiresConfiguration

public boolean requiresConfiguration()
Description copied from class: AbstractFlatFileImporter
Return TRUE, since the implementation requires it for finding the regular expressions used by the FlatFileParser. If this method is overridden and returns FALSE, the subclass must also override the AbstractFlatFileImporter.getInitializedFlatFileParser() method and provide a parser with all regular expressions and other options set.

Specified by:
requiresConfiguration in interface Plugin
Overrides:
requiresConfiguration in class AbstractFlatFileImporter
Returns:
TRUE or FALSE

getPermissions

public Collection<Permissions> getPermissions()
Request create, write and delete access to Reporter:s, write access to ReporterList:s and read access to File:s and ReporterType:s.

Specified by:
getPermissions in interface Plugin
Overrides:
getPermissions in class AbstractPlugin
Returns:
A collection of permissions or null to not use permissions

getGuiContexts

public Set<GuiContext> getGuiContexts()
Return a set containing the context:s [REPORTER, LIST], [REPORTERLIST, ITEM], [REPORTERSCORE, LIST]. The first context is for importing reporters only, and the last two for importing reporters to a reporter list.

Specified by:
getGuiContexts in interface InteractivePlugin
Returns:
A Set containing Item:s, or null if the plugin is not concerned about items

isInContext

public String isInContext(GuiContext context,
                          Object item)
Null if the context is Item.REPORTERLIST and the item is a ReporterList.

Specified by:
isInContext in interface InteractivePlugin
Parameters:
context - The current context of the client application, it is one of the values found in set returned by InteractivePlugin.getGuiContexts()
item - The currently active item, it's type should match the GuiContext.getItem() type, or null if the context is a list context
Returns:
Null if the plugin can use that item, or a warning-level message explaining why the plugin can't be used
Throws:
PermissionDeniedException - If the user doesn't have write permission to the reporter list

getRequestInformation

public RequestInformation getRequestInformation(GuiContext context,
                                                String command)
                                         throws BaseException
The Request.COMMAND_CONFIGURE_PLUGIN command will ask for parser regular expressions, column mappings and the reporter type. The Request.COMMAND_CONFIGURE_JOB command will ask for a file and if existing reporters should be updated or ignored.

Specified by:
getRequestInformation in interface InteractivePlugin
Parameters:
context - The current context of the client application, it is one of the values found in set returned by InteractivePlugin.getGuiContexts()
command - The command
Returns:
The RequestInformation for the command
Throws:
BaseException - if there is an error

configure

public void configure(GuiContext context,
                      Request request,
                      Response response)
Store configuration settings for Request.COMMAND_CONFIGURE_PLUGIN and Request.COMMAND_CONFIGURE_JOB.

Specified by:
configure in interface InteractivePlugin
Parameters:
context - The current context of the client application, it is one of the values found in set returned by InteractivePlugin.getGuiContexts()
request - Request object with the command and parameters
response - Response object in for the plugin to response through

begin

protected void begin(FlatFileParser ffp)
              throws BaseException
Create a DbControl and a ReporterBatcher. Load the ReporterType if one has been specified.

Overrides:
begin in class AbstractFlatFileImporter
Throws:
BaseException
See Also:
AbstractFlatFileImporter.end(boolean)

beginData

protected void beginData()
Initialise column Mapper:s.

Overrides:
beginData in class AbstractFlatFileImporter

end

protected void end(boolean success)
            throws BaseException
Close and commit/rollback the ReporterBatcher and DbControl.

Overrides:
end in class AbstractFlatFileImporter
Parameters:
success - TRUE if the file was parsed successfully, FALSE otherwise
Throws:
BaseException
See Also:
AbstractFlatFileImporter.begin(FlatFileParser)

handleData

protected void handleData(FlatFileParser.Data data)
                   throws BaseException
Description copied from class: AbstractFlatFileImporter
Called by the parser for every line in the file that is a data line.

Specified by:
handleData in class AbstractFlatFileImporter
Throws:
BaseException

getSuccessMessage

protected String getSuccessMessage(int skippedLines)
Return x new reporters; y updated reporters; z reporters added to list.

Overrides:
getSuccessMessage in class AbstractFlatFileImporter
Parameters:
skippedLines - The number of data lines that were skipped due to errors

getAllColumnMappings

private List<PluginParameter<String>> getAllColumnMappings(boolean reporterListContext)

getConfigureJobParameters

private RequestInformation getConfigureJobParameters(GuiContext context)

getConfigurePluginParameters

private RequestInformation getConfigurePluginParameters(GuiContext context)

getReporterType

private ReporterType getReporterType(String name)

2.17.2: 2011-06-17