Package net.sf.basedb.plugins
Class PackedFileExporter
java.lang.Object
net.sf.basedb.core.plugin.AbstractPlugin
net.sf.basedb.core.plugin.AbstractExporterPlugin
net.sf.basedb.plugins.PackedFileExporter
- All Implemented Interfaces:
ImmediateDownloadExporter
,InteractivePlugin
,Plugin
,SignalTarget
public class PackedFileExporter
extends AbstractExporterPlugin
implements InteractivePlugin, SignalTarget
Plug-in that packs one or more selected files and directories into a single file.
The actual packing is performed by classes implementing the
FilePacker
interface. To add new formats, create a class that implements the interface and,
register the new class with a PluginConfiguration
item.
The compressed file can either be downloaded immediately to the local computer or stored into BASE's file system.
- Version:
- 2.4
- Author:
- Martin, Nicklas
- Last modified
- $Date: 2007-07-11 15:45:01 +0200 (Mon, 02 Jul 2007) $
-
Nested Class Summary
Nested classes/interfaces inherited from interface net.sf.basedb.core.plugin.Plugin
Plugin.MainType
-
Field Summary
Modifier and TypeFieldDescriptionprivate RequestInformation
private RequestInformation
private DbControl
private static final GuiContext
private static final GuiContext
private static final Set<GuiContext>
private int
private PluginParameter<String>
private static final Set<Permissions>
private PluginParameter<Boolean>
private ThreadSignalHandler
private long
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
end
(boolean success) Called just after everything has been committed to the database, or immediately after an error has ocurred.private String
generateDefaultName
(FilePacker packer, Directory rootDir, Collection<Nameable> selectedItems) Generate a default name without a path for the packed file.private String
generateDefaultPath
(FilePacker packer, Directory rootDir, Collection<Nameable> selectedItems) Generate a default path for the packed file.private RequestInformation
getConfigureJobParameters
(GuiContext context, Boolean requireFile) private RequestInformation
Get a set containing all items that the plugin handles.private FilePacker
Get the FilePacker that has been configured in the current configuration.private FilePacker
Create a FilePacker from the given class.Request create and delete access to File:s and Directory: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 that at least one file or directory has been selected.private void
loadFiles
(DbControl dc, Collection<Nameable> loadedFiles, Directory directory) Load files and subdirectories in the given directory.private void
loadFilesAndDirectories
(DbControl dc, Collection<Nameable> loadedFiles, Collection<Integer> files, Collection<Integer> directories, boolean recursive) Load specified files and directories and put them inloadedFiles
.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.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
-
fileGui
-
directoryGui
-
guiContexts
-
permissions
-
configureJob
-
configurePlugin
-
removeFilesParameter
-
packerParameter
-
numFiles
private int numFiles -
totalBytes
private long totalBytes -
selectedFiles
-
selectedDirs
-
selectedFilesAndDirs
-
signalHandler
-
dc
-
-
Constructor Details
-
PackedFileExporter
public PackedFileExporter()Create new instance.
-
-
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 delete access to File:s and Directory: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
Check that at least one file or directory has been selected.- 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
-
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
-
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
-
getConfigureJobParameters
-
getConfigurePluginParameters
-
loadFilesAndDirectories
private void loadFilesAndDirectories(DbControl dc, Collection<Nameable> loadedFiles, Collection<Integer> files, Collection<Integer> directories, boolean recursive) Load specified files and directories and put them inloadedFiles
. This method also calculates the total size of all files and stores it intotalBytes
.- Parameters:
dc
- The DbControl to use for loadingloadedFiles
- The files and directories will be added to this collectionfiles
- The ID of the files to loaddirectories
- The ID of the directories to loadrecursive
- If we should recurse into subdirectories or not
-
loadFiles
Load files and subdirectories in the given directory.- Parameters:
dc
- The DbControl to use for loadingloadedFiles
- The files and directories will be added to this collectiondirectory
- The parent directory
-
getPacker
Get the FilePacker that has been configured in the current configuration. -
getPacker
Create a FilePacker from the given class.- Parameters:
packerClass
- The class name of a class that implements FilePacker- Throws:
Exception
-
generateDefaultPath
private String generateDefaultPath(FilePacker packer, Directory rootDir, Collection<Nameable> selectedItems) Generate a default path for the packed file. If the selection contains only one file or directory, the name of that item is used, otherwise the name of the root directory is used. The file extension fromFilePacker.getFileExtension()
is automatically appeneded.- Parameters:
packer
- The current FilePackerrootDir
- The root directoryselectedItems
- The selected items (not including subdirectories)
-
generateDefaultName
private String generateDefaultName(FilePacker packer, Directory rootDir, Collection<Nameable> selectedItems) Generate a default name without a path for the packed file.
-