2.17.2: 2011-06-17

net.sf.basedb.plugins
Class GalExporter

java.lang.Object
  extended by net.sf.basedb.core.plugin.AbstractPlugin
      extended by net.sf.basedb.core.plugin.AbstractExporterPlugin
          extended by net.sf.basedb.plugins.GalExporter
All Implemented Interfaces:
ImmediateDownloadExporter, InteractivePlugin, Plugin, SignalTarget

public class GalExporter
extends AbstractExporterPlugin
implements SignalTarget, InteractivePlugin

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: 2010-11-08 14:49:35 +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  RequestInformation configureJob
           
private  DbControl dc
           
private static Set<GuiContext> guiContexts
           
private  long numExported
           
private static Set<Permissions> permissions
           
private  ThreadSignalHandler signalHandler
           
private static Pattern unsafe
           
 
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
GalExporter()
           
 
Method Summary
protected  void begin(DbControl dc)
          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.
 void exportGal(DbControl dc, ArrayDesign design, PrintWriter writer, ProgressReporter progress)
          Deprecated. Use exportGal(DbControl, ArrayDesign, Integer, PrintWriter, ProgressReporter) instead
 About getAbout()
          Get information about the plugin, such as name, version, authors, etc.
private  RequestInformation getConfigureJobParameters(Boolean requireFile)
           
 Set<GuiContext> getGuiContexts()
          Get a set containing all items that the plugin handles.
 Collection<Permissions> 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.
 RequestInformation getRequestInformation(GuiContext context, String command)
          This method will return the RequestInformation for a given command, i.e.
 SignalHandler getSignalHandler()
          Get the signal handler that is handling signals on behalf of this object.
protected  String getSuccessMessage()
          Called if the export was successful to let the subclass generate a simple message that is sent back to the core and user interface.
 String 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 requiresConfiguration()
          Returns FALSE, since that is how the plugins used to work before this method was introduced.
 boolean supportsConfigurations()
          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
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

signalHandler

private ThreadSignalHandler signalHandler

configureJob

private RequestInformation configureJob

dc

private DbControl dc

numExported

private long numExported

unsafe

private static final Pattern unsafe
Constructor Detail

GalExporter

public GalExporter()
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: AbstractPlugin
Returns FALSE, since that is how the plugins used to work before this method was introduced.

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

getPermissions

public Collection<Permissions> 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 interface Plugin
Overrides:
getPermissions in class AbstractPlugin
Returns:
A collection of permissions or null to not use permissions

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.

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)
Description copied from interface: InteractivePlugin
Check if the plugin can be used on the specified object. The item is either a BasicItem or BasicData 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 the InteractivePlugin.getGuiContexts() method. For GuiContext.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 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

getRequestInformation

public RequestInformation getRequestInformation(GuiContext context,
                                                String command)
                                         throws BaseException
Description copied from interface: InteractivePlugin
This method will return the RequestInformation for a given command, i.e. the list of parameters and some nice help text.

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)
Description copied from interface: InteractivePlugin
Configure the plugin. Hopefully the client is supplying values for the parameters specified by InteractivePlugin.getRequestInformation(GuiContext, String).

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

getSignalHandler

public SignalHandler 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 interface SignalTarget
Returns:
A SignalHandler object, or null if the current instance doesn't support signals

begin

protected void begin(DbControl dc)
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 class AbstractExporterPlugin
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:
AbstractExporterPlugin.end(boolean)

performExport

protected void performExport(ExportOutputStream out,
                             ProgressReporter progress)
                      throws IOException
Description copied from class: AbstractExporterPlugin
Perform the export. This method replaces the ImmediateDownloadExporter.doExport(ExportOutputStream, ProgressReporter) method.

Specified by:
performExport in class AbstractExporterPlugin
Parameters:
out - Output stream to write the exported data to
progress - 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 the AbstractExporterPlugin.begin(DbControl) method here.

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

getSuccessMessage

protected String 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 class AbstractExporterPlugin

exportGal

public void exportGal(DbControl dc,
                      ArrayDesign design,
                      PrintWriter writer,
                      ProgressReporter progress)
               throws IOException
Deprecated. Use exportGal(DbControl, ArrayDesign, Integer, PrintWriter, ProgressReporter) instead

Throws:
IOException

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 access
design - The array design to export
featureDiameter - The expected feature diameter (in µm) of spots, or null to use the values from the database
writer - The stream to write to
progress - 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; use createHeader(String, Object) to create a properly formatted header
design - The current array design
blocks - 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; use createHeader(String, Object) to create a properly formatted header
design - The current array design
featureDiameter - The expected feature diameter (µm), or null to use ArrayDesignBlock.getFeatureDiameter()
blocks - A list with all blocks in the array design

createHeader

protected String createHeader(String name,
                              Object value)
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 use makeSafeHeaderValue(String) for the value.

Parameters:
name - The name of the header
value - The value of the header
Returns:
A properly formatted header

makeSafeHeaderValue

protected String makeSafeHeaderValue(String value)
Removes "unsafe" characters in the value. Unsafe characers are:

Parameters:
value - The value to check
Returns:
The checked value

writeHeaders

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.

Parameters:
writer - The writer to print to
headers - The list with all headers

writeDataHeader

protected void writeDataHeader(PrintWriter writer)
Write the data header. The column headers must match the data written by writeFeature(PrintWriter, FeatureData, ArrayDesignBlock) and writeMissingFeature(PrintWriter, FeatureCoordinate).

Parameters:
writer - The writer to print to

writeFeature

protected void writeFeature(PrintWriter writer,
                            FeatureData feature,
                            ArrayDesignBlock block)
Write feature data. The data that is written must match the column headers written by writeDataHeader(PrintWriter). Features that doesn't have a reporter should get ID and Name = empty.

Parameters:
writer - The writer to print to
feature - The feature
block - The block on which the feature is located

writeMissingFeature

protected void writeMissingFeature(PrintWriter writer,
                                   FeatureCoordinate missing)
Write a missing features. The data that is written must match the column headers written by writeDataHeader(PrintWriter). The ID and Name should be empty.

Parameters:
writer - The writer to print to
missing - The feature

getConfigureJobParameters

private RequestInformation getConfigureJobParameters(Boolean requireFile)

2.17.2: 2011-06-17