# Class SaveWorker

java.lang.Object
uk.ac.starlink.table.gui.SaveWorker

public abstract class SaveWorker extends Object
Handles asynchronous table saving. To save a table, create an instance of this class with a suitable implementation of the `attemptSave(StarTable[])` method and call `invoke()` on it from the event dispatch thread. A progress bar will advise the user on how the save is going, and if the save fails a popup will advise of the error. When the save has completed one way or another, the `done(boolean)` method will be called.

Since:
  24 Feb 2005
Author:
  Mark Taylor (Starlink)

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`SaveWorker(Component parent, StarTable[] tables, String location)`
Constructs a save worker which will use its own popup widow for progress display.
`protected`
`SaveWorker(JProgressBar progBar, StarTable[] tables, String location)`
Constructs a save worker which will use a given progress bar for progress display.

## Method Summary

Modifier and Type
Method
Description
`protected abstract void`
`attemptSave(StarTable[] tables)`
This method should do the work of saving the given tables.
`void`
`cancel()`
Interrupts any save which is in progress.
`protected abstract void`
`done(boolean success)`
Called from the event dispatch thread when the save has completed.
`void`
`invoke()`
Begins the save.

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### SaveWorker

protected SaveWorker(Component parent, StarTable[] tables, String location)
Constructs a save worker which will use its own popup widow for progress display.

Parameters:
  `parent` - parent component used for progress bar popup
  `tables` - tables to be saved
  `location` - string identifying the save destination - used for display purposes only

### SaveWorker

protected SaveWorker(JProgressBar progBar, StarTable[] tables, String location)
Constructs a save worker which will use a given progress bar for progress display.

Parameters:
  `progBar` - progress bar which will be updated to display progress
  `tables` - tables to be saved
  `location` - string identifying the save destination - used for display purposes only

## Method Details

### attemptSave

protected abstract void attemptSave(StarTable[] tables) throws IOException
This method should do the work of saving the given tables. It will not be called on the event dispatch thread, so may take some time to execute.

Parameters:
  `tables` - tables to save
Throws:
  `IOException` - if the table cannot be saved

### done

protected abstract void done(boolean success)
Called from the event dispatch thread when the save has completed. The `success` argument indicates whether the table was saved successfully or not. If it was not, the user will already have been informed of this.

The default implementation does nothing, but subclasses may override it to react in some way to the save's completion.

Parameters:
  `success` - save status

### cancel

public void cancel()
Interrupts any save which is in progress. Call from the event dispatch thread.

### invoke

public void invoke()
Begins the save. Should be invoked from the event dispatch thread.