Class AbstractExporterPlugin
- java.lang.Object
-
- net.sf.basedb.core.plugin.AbstractPlugin
-
- net.sf.basedb.core.plugin.AbstractExporterPlugin
-
- All Implemented Interfaces:
ImmediateDownloadExporter
,Plugin
- Direct Known Subclasses:
BaseFileExporterPlugin
,GalExporter
,HelpExporter
,PackedFileExporter
,PlateMappingExporter
,PluginConfigurationExporter
,SimpleExport
public abstract class AbstractExporterPlugin extends AbstractPlugin implements ImmediateDownloadExporter
An abstract base class for all exporter plugins that wish to implement theImmediateDownloadExporter
interface. This class implements that interface, but you have to implement theperformExport(ExportOutputStream, ProgressReporter)
instead which has the same requirements as theImmediateDownloadExporter.doExport(ExportOutputStream, ProgressReporter)
method.This class also implements the
run(Request, Response, ProgressReporter)
method but if you want to use it you must use the parameters for the file path and overwrite option as they are defined in this class. Use thegetSaveAsParameter(String, String, String, boolean)
andgetOverwriteParameter(String, String)
to generate the parameter objects and then thegetSaveAsPath(DbControl)
andgetOverwrite()
to get values entered by the user.This class doesn't override any methods of the
InteractivePlugin
interface. It is your responsibility to ask for the correct parameters and save them to the job. See theHelpExporter
implementation forexample code.- Version:
- 2.2
- 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
Fields Modifier and Type Field Description protected static PathParameterType
optionalSaveAsType
protected static String
OVERWRITE
Parameter name for thegetOverwriteParameter(String, String)
parameter.protected static BooleanParameterType
overwriteType
protected static PathParameterType
requiredSaveAsType
protected static String
SAVE_AS
Parameter name for thegetSaveAsParameter(String, String, String, boolean)
parameter.private File
saveTo
-
Fields inherited from class net.sf.basedb.core.plugin.AbstractPlugin
annotationSection, configuration, COPY_ANNOTATIONS, job, OVERWRITE_ANNOTATIONS, sc
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractExporterPlugin()
Create a newAbstractExporterPlugin
.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
begin(DbControl dc)
Called just before the export starts.void
doExport(ExportOutputStream out, ProgressReporter progress)
Implements immediate downloading.protected void
end(boolean success)
Called just after everything has been committed to the database, or immediately after an error has ocurred.Plugin.MainType
getMainType()
Get the type of the plugin.boolean
getOverwrite()
Get the configured value for the overwrite parameter.protected PluginParameter<Boolean>
getOverwriteParameter(String label, String description)
Get a plugin parameter that asks if existing files can be overwritten or not.protected PluginParameter<String>
getSaveAsParameter(String label, String description, String defaultValue, boolean required)
Get a plugin parameter that asks for the path to a file where the exported data should be saved.protected Path
getSaveAsPath(DbControl dc)
Get the configured path where the exported data should be saved.protected File
getSaveTo()
Get the file object that the current export is writing to.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.protected boolean
pathCanBeUsed(String strPath, boolean overwrite)
See if file path already exists and if it's allowed to overwrite it.protected abstract void
performExport(ExportOutputStream out, ProgressReporter progress)
Perform the export.void
run(Request request, Response response, ProgressReporter progress)
Checks theSAVE_AS
parameter for the path to save the exported data.-
Methods inherited from class net.sf.basedb.core.plugin.AbstractPlugin
cloneParameterWithDefaultValue, closeLogFile, createLogFile, done, getCopyAnnotationsParmeter, getCurrentConfiguration, getCurrentJob, getJobOrConfigurationValue, getOverwriteAnnotationsParameters, getPermissions, init, log, log, requiresConfiguration, storeValue, storeValue, storeValues, supportsConfigurations, 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, getPermissions, init, requiresConfiguration, supportsConfigurations
-
-
-
-
Field Detail
-
optionalSaveAsType
protected static final PathParameterType optionalSaveAsType
-
requiredSaveAsType
protected static final PathParameterType requiredSaveAsType
-
overwriteType
protected static final BooleanParameterType overwriteType
-
saveTo
private File saveTo
-
SAVE_AS
protected static final String SAVE_AS
Parameter name for thegetSaveAsParameter(String, String, String, boolean)
parameter.- See Also:
- Constant Field Values
-
OVERWRITE
protected static final String OVERWRITE
Parameter name for thegetOverwriteParameter(String, String)
parameter.- See Also:
- Constant Field Values
-
-
Method Detail
-
getMainType
public Plugin.MainType getMainType()
Description copied from interface:Plugin
Get the type of the plugin. This method must always return the same value.- Specified by:
getMainType
in interfacePlugin
- Returns:
- MainType.EXPORT
-
run
public void run(Request request, Response response, ProgressReporter progress)
Checks theSAVE_AS
parameter for the path to save the exported data. If the file doesn't exists it is created. If the file exists theOVERWRITE
parameter is checked if overwriting is ok. Files marked for deletion will always be overwritten. If no path has been specified an error response is sent.Then, the subclass is called to generate the export. The following methods are called:
begin(DbControl)
performExport(ExportOutputStream, ProgressReporter)
end(boolean)
(after the DbControl has been committed)getSuccessMessage()
(only if no error ocurred)
- Specified by:
run
in interfacePlugin
- Parameters:
request
- Request object with the command and parametersresponse
- Response object in for the plugin to response throughprogress
- AProgressReporter
where the plugin can report its progess, can be null
-
doExport
public final void doExport(ExportOutputStream out, ProgressReporter progress) throws IOException
Implements immediate downloading. Calls the subclass methods in the following order:begin(DbControl)
performExport(ExportOutputStream, ProgressReporter)
end(boolean)
(after the DbControl has been committed)
- Specified by:
doExport
in interfaceImmediateDownloadExporter
- Parameters:
out
- The output stream that the exported data should be written toprogress
- An optional progress reporter, may be null- Throws:
IOException
- If there is an error writing to the export stream
-
begin
protected void begin(DbControl dc)
Called just before the export starts. A subclass may override this method if it needs to initialise some resources.- 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:
end(boolean)
-
getSaveTo
protected File getSaveTo()
Get the file object that the current export is writing to. This method may return a file object that already exists in the database, a new file that is saved when the transaction is committed or null if the export is a 'download immediately' export.- Returns:
- A file object or null
- Since:
- 2.7
-
performExport
protected abstract void performExport(ExportOutputStream out, ProgressReporter progress) throws IOException
Perform the export. This method replaces theImmediateDownloadExporter.doExport(ExportOutputStream, ProgressReporter)
method.- Parameters:
out
- Output stream to write the exported data toprogress
- An optional progress reporter- Throws:
IOException
-
end
protected void end(boolean success)
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 thebegin(DbControl)
method here.- Parameters:
success
- TRUE if the file was parsed successfully, FALSE otherwise- See Also:
begin(DbControl)
-
getSuccessMessage
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. An example message might by:178 reporters exported successfully
. The default implementation always return null.
-
getSaveAsParameter
protected PluginParameter<String> getSaveAsParameter(String label, String description, String defaultValue, boolean required)
Get a plugin parameter that asks for the path to a file where the exported data should be saved. If no path is specified by the user the data will be downloaded immediately.- Parameters:
label
- The parameter label, or null to use the default (Save as)description
- The parameter description, or null to use the default (The path to the file where the exported data should be placed. Leave empty to download immediately.)defaultValue
- A default filename, or null to not use any defaultrequired
- If the parameter is required or optional
-
getSaveAsPath
protected Path getSaveAsPath(DbControl dc)
Get the configured path where the exported data should be saved.- Parameters:
dc
- A DbControl which is needed to find the currently logged in user if the path starts with '~/' = Home directory of logged in user- Returns:
- A path or null if no path has been specified
-
getOverwriteParameter
protected PluginParameter<Boolean> getOverwriteParameter(String label, String description)
Get a plugin parameter that asks if existing files can be overwritten or not.- Parameters:
label
- The parameter label, or null to use the default (Overwrite)description
- The parameter description, or null to use the default (If it is allowed to overwrite an existing file or not.)
-
getOverwrite
public boolean getOverwrite()
Get the configured value for the overwrite parameter.- Returns:
- A boolean, if no values has been specified false is returned
- See Also:
getOverwriteParameter(String, String)
-
pathCanBeUsed
protected boolean pathCanBeUsed(String strPath, boolean overwrite)
See if file path already exists and if it's allowed to overwrite it.- Parameters:
strPath
- The file path to be checked.overwrite
- TRUE If it is allowed to overwrite the file, FALSE otherwise.- Returns:
- FALSE If the file path exists and isn't allowed to be overwritten or TRUE otherwise.
-
-