Package net.sf.basedb.plugins
Class GalExporter
java.lang.Object
net.sf.basedb.core.plugin.AbstractPlugin
net.sf.basedb.core.plugin.AbstractExporterPlugin
net.sf.basedb.plugins.GalExporter
- All Implemented Interfaces:
ImmediateDownloadExporter
,InteractivePlugin
,Plugin
,SignalTarget
Exports an array design with features to a GAL file. The exporter only
works for array desigs that has stored the features in a database. For
a description of the GAL format see
http://www.moleculardevices.com/pages/software/gn_genepix_file_formats.html#gal
- Version:
- 2.7
- Author:
- nicklas
- Last modified
- $Date: 2012-09-14 09:28:35 +0200 (fr, 14 sep 2012) $
-
Nested Class Summary
Nested classes/interfaces inherited from interface net.sf.basedb.core.plugin.Plugin
Plugin.MainType
-
Field Summary
Modifier and TypeFieldDescriptionprivate RequestInformation
private DbControl
private static final Set<GuiContext>
private long
private static final Set<Permissions>
private ThreadSignalHandler
private static final Pattern
Fields inherited from class net.sf.basedb.core.plugin.AbstractExporterPlugin
optionalSaveAsType, OVERWRITE, overwriteType, requiredSaveAsType, SAVE_AS
Fields inherited from class net.sf.basedb.core.plugin.AbstractPlugin
annotationSection, configuration, COPY_ANNOTATIONS, job, OVERWRITE_ANNOTATIONS, sc
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
Called just before the export starts.void
configure
(GuiContext context, Request request, Response response) Configure the plugin.protected void
createBlockHeaders
(List<String> headers, ArrayDesign design, Integer featureDiameter, List<ArrayDesignBlock> blocks) Create header entries for each block in the array design.protected String
createHeader
(String name, Object value) Create a properly formatted GAL header.protected void
createStandardHeaders
(List<String> headers, ArrayDesign design, List<ArrayDesignBlock> blocks) Create the standard headers that are required by the GAL format or that are useful to have in the GAL file.protected void
end
(boolean success) Called just after everything has been committed to the database, or immediately after an error has ocurred.void
exportGal
(DbControl dc, ArrayDesign design, Integer featureDiameter, PrintWriter writer, ProgressReporter progress) Exports an array design with features to a GAL file.private RequestInformation
getConfigureJobParameters
(Boolean requireFile) Get a set containing all items that the plugin handles.Request create and write access to File:s, Directory:s and ArrayDesign:s read access to User:s and forced read access to DataFileType:s.getRequestInformation
(GuiContext context, String command) This method will return theRequestInformation
for a given command, i.e.Get the signal handler that is handling signals on behalf of this object.protected String
Called if the export was successful to let the subclass generate a simple message that is sent back to the core and user interface.isInContext
(GuiContext context, Object item) Check if the plugin can be used on the specified object.protected String
makeSafeHeaderValue
(String value) Removes "unsafe" characters in the value.protected void
performExport
(ExportOutputStream out, ProgressReporter progress) Perform the export.boolean
Returns FALSE, since that is how the plugins used to work before this method was introduced.boolean
Returns TRUE, since that is how the plugins used to work before this method was introduced.protected void
writeDataHeader
(PrintWriter writer) Write the data header.protected void
writeFeature
(PrintWriter writer, FeatureData feature, ArrayDesignBlock block) Write feature data.protected void
writeHeaders
(PrintWriter writer, List<String> headers) Write the headers of the GAL file, including the two first lines with the "ATF 1.0" line and the second line with the number of header lines and the number of data columns.protected void
writeMissingFeature
(PrintWriter writer, FeatureCoordinate missing) Write a missing features.Methods inherited from class net.sf.basedb.core.plugin.AbstractExporterPlugin
doExport, getMainType, getOverwrite, getOverwriteParameter, getSaveAsParameter, getSaveAsPath, getSaveTo, pathCanBeUsed, run
Methods inherited from class net.sf.basedb.core.plugin.AbstractPlugin
cloneParameterWithDefaultValue, closeLogFile, createLogFile, done, getCopyAnnotationsParmeter, getCurrentConfiguration, getCurrentJob, getJobOrConfigurationValue, getOverwriteAnnotationsParameters, init, isLogging, 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 Details
-
guiContexts
-
permissions
-
signalHandler
-
configureJob
-
dc
-
numExported
private long numExported -
unsafe
-
-
Constructor Details
-
GalExporter
public GalExporter()
-
-
Method Details
-
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 interfacePlugin
- Overrides:
supportsConfigurations
in classAbstractPlugin
- Returns:
- TRUE or FALSE
-
requiresConfiguration
public boolean requiresConfiguration()Description copied from class:AbstractPlugin
Returns FALSE, since that is how the plugins used to work before this method was introduced.- Specified by:
requiresConfiguration
in interfacePlugin
- Overrides:
requiresConfiguration
in classAbstractPlugin
- Returns:
- TRUE or FALSE
-
getPermissions
Request create and write access to File:s, Directory:s and ArrayDesign:s read access to User:s and forced read access to DataFileType:s.- Specified by:
getPermissions
in interfacePlugin
- Overrides:
getPermissions
in classAbstractPlugin
- Returns:
- A collection of permissions or null to not use permissions
-
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 containingItem.REPORTER
. This information is used by client applications to put the plugin in the proper place in the user interface.- Specified by:
getGuiContexts
in interfaceInteractivePlugin
- Returns:
- A
Set
containingItem
:s, or null if the plugin is not concerned about items
-
isInContext
Description copied from interface:InteractivePlugin
Check if the plugin can be used on the specified object. The item is either aBasicItem
orBasicData
object, or null if called from a list context. A client application should only call this method for contexts matching one of the contexts in the set returned by theInteractivePlugin.getGuiContexts()
method. ForGuiContext.Type.ITEM
contexts an item of the correct type should be passed as a parameter.The plug-in can response with a null value indicating success, a warning-level message or throw an exception to indicate an error-level message. Client application should normally only show error-level messages to users, unless the user has requested to see warning messages.
NOTE! Before BASE 2.4 all messages were treated as error-level messages.
- Specified by:
isInContext
in interfaceInteractivePlugin
- Parameters:
context
- The current context of the client application, it is one of the values found in set returned byInteractivePlugin.getGuiContexts()
item
- The currently active item, it's type should match theGuiContext.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
-
getRequestInformation
public RequestInformation getRequestInformation(GuiContext context, String command) throws BaseException Description copied from interface:InteractivePlugin
This method will return theRequestInformation
for a given command, i.e. the list of parameters and some nice help text.- Specified by:
getRequestInformation
in interfaceInteractivePlugin
- Parameters:
context
- The current context of the client application, it is one of the values found in set returned byInteractivePlugin.getGuiContexts()
command
- The command- Returns:
- The
RequestInformation
for the command - Throws:
BaseException
- if there is an error
-
configure
Description copied from interface:InteractivePlugin
Configure the plugin. Hopefully the client is supplying values for the parameters specified byInteractivePlugin.getRequestInformation(GuiContext, String)
.- Specified by:
configure
in interfaceInteractivePlugin
- Parameters:
context
- The current context of the client application, it is one of the values found in set returned byInteractivePlugin.getGuiContexts()
request
- Request object with the command and parametersresponse
- Response object in for the plugin to response through
-
getSignalHandler
Description copied from interface:SignalTarget
Get the signal handler that is handling signals on behalf of this object. Multiple invokations of this method may receive the same or different objects. Null may be returned if, for some reason, the current object instance doesn't want to receive signals. Returning null is the same as not implementing this interface.- Specified by:
getSignalHandler
in interfaceSignalTarget
- Returns:
- A SignalHandler object, or null if the current instance doesn't support signals
-
begin
Description copied from class:AbstractExporterPlugin
Called just before the export starts. A subclass may override this method if it needs to initialise some resources.- Overrides:
begin
in classAbstractExporterPlugin
- Parameters:
dc
- The DbControl that is used to write to the database. A subclass may use this read from the database as well- See Also:
-
performExport
Description copied from class:AbstractExporterPlugin
Perform the export. This method replaces theImmediateDownloadExporter.doExport(ExportOutputStream, ProgressReporter)
method.- Specified by:
performExport
in classAbstractExporterPlugin
- Parameters:
out
- Output stream to write the exported data toprogress
- An optional progress reporter- Throws:
IOException
-
end
protected void end(boolean success) Description copied from class:AbstractExporterPlugin
Called just after everything has been committed to the database, or immediately after an error has ocurred. A subclass should clean up any resources aquired in theAbstractExporterPlugin.begin(DbControl)
method here.- Overrides:
end
in classAbstractExporterPlugin
- Parameters:
success
- TRUE if the file was parsed successfully, FALSE otherwise- See Also:
-
getSuccessMessage
Description copied from class:AbstractExporterPlugin
Called if the export was successful to let the subclass generate a simple message that is sent back to the core and user interface. An example message might by:178 reporters exported successfully
. The default implementation always return null.- Overrides:
getSuccessMessage
in classAbstractExporterPlugin
-
exportGal
public void exportGal(DbControl dc, ArrayDesign design, Integer featureDiameter, PrintWriter writer, ProgressReporter progress) throws IOException Exports an array design with features to a GAL file. The array must have features in the database.- Parameters:
dc
- The DbControl to use for database accessdesign
- The array design to exportfeatureDiameter
- The expected feature diameter (in µm) of spots, or null to use the values from the databasewriter
- The stream to write toprogress
- An optional progress reporter- Throws:
IOException
- Since:
- 2.8
-
createStandardHeaders
protected void createStandardHeaders(List<String> headers, ArrayDesign design, List<ArrayDesignBlock> blocks) Create the standard headers that are required by the GAL format or that are useful to have in the GAL file.- Parameters:
headers
- Add the created headers to this list; usecreateHeader(String, Object)
to create a properly formatted headerdesign
- The current array designblocks
- A list with all blocks in the array design
-
createBlockHeaders
protected void createBlockHeaders(List<String> headers, ArrayDesign design, Integer featureDiameter, List<ArrayDesignBlock> blocks) Create header entries for each block in the array design.- Parameters:
headers
- Add the created headers to this list; usecreateHeader(String, Object)
to create a properly formatted headerdesign
- The current array designfeatureDiameter
- The expected feature diameter (µm), or null to useArrayDesignBlock.getFeatureDiameter()
blocks
- A list with all blocks in the array design
-
createHeader
Create a properly formatted GAL header. The typical format is "name=value". We assume that the header name has no strange characters in it, but usemakeSafeHeaderValue(String)
for the value.- Parameters:
name
- The name of the headervalue
- The value of the header- Returns:
- A properly formatted header
-
makeSafeHeaderValue
Removes "unsafe" characters in the value. Unsafe characers are:- quote (")
- newline (\n, \r)
- Parameters:
value
- The value to check- Returns:
- The checked value
-
writeHeaders
Write the headers of the GAL file, including the two first lines with the "ATF 1.0" line and the second line with the number of header lines and the number of data columns.- Parameters:
writer
- The writer to print toheaders
- The list with all headers
-
writeDataHeader
Write the data header. The column headers must match the data written bywriteFeature(PrintWriter, FeatureData, ArrayDesignBlock)
andwriteMissingFeature(PrintWriter, FeatureCoordinate)
.- Parameters:
writer
- The writer to print to
-
writeFeature
Write feature data. The data that is written must match the column headers written bywriteDataHeader(PrintWriter)
. Features that doesn't have a reporter should get ID and Name = empty.- Parameters:
writer
- The writer to print tofeature
- The featureblock
- The block on which the feature is located
-
writeMissingFeature
Write a missing features. The data that is written must match the column headers written bywriteDataHeader(PrintWriter)
. The ID and Name should be empty.- Parameters:
writer
- The writer to print tomissing
- The feature
-
getConfigureJobParameters
-