Class 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: 2012-09-14 09:28:35 +0200 (fr, 14 sep 2012) $
  • Field Details

  • 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 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:
    • 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:
    • 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, 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:
      • quote (")
      • newline (\n, \r)
      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)