org.argouml.persistence
Class AbstractFilePersister

java.lang.Object
  extended byjavax.swing.filechooser.FileFilter
      extended byorg.argouml.persistence.AbstractFilePersister
All Implemented Interfaces:
ProjectFilePersister

public abstract class AbstractFilePersister
extends FileFilter
implements ProjectFilePersister

To persist to and from zargo (zipped file) storage.


Constructor Summary
AbstractFilePersister()
           
 
Method Summary
 boolean accept(File f)
           
 void addProgressListener(ProgressListener listener)
          Add any object interested in listening to persistence progress.
protected  File copyFile(File src, File dest)
          Copies one file src to another, raising file exceptions if there are some problems.
protected  File createTempFile(File file)
          Create a temporary copy of the existing file.
abstract  Project doLoad(File file)
           
protected abstract  void doSave(Project project, File file)
          Implement in your concrete class to save a project to a file.
protected abstract  String getDesc()
          Just the description, not the extension between "()".
 String getDescription()
           
abstract  String getExtension()
          The extension valid for this type of file.
abstract  boolean hasAnIcon()
          Returns true if a FileChooser should visualize an icon for the persister.
 boolean isFileExtensionApplicable(String filename)
          Given the full filename this returns true if that filename contains the expected extension for the is persister.
 boolean isLoadEnabled()
          Some persisters only provide save functionality for deprecated formats.
 boolean isSaveEnabled()
          Some persisters only provide load functionality for discontinued formats but no save.
 void removeProgressListener(ProgressListener listener)
          Remove any object no longer interested in listening to persistence progress.
 void save(Project project, File file)
          Save a project to file.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractFilePersister

public AbstractFilePersister()
Method Detail

createTempFile

protected File createTempFile(File file)
                       throws FileNotFoundException,
                              IOException
Create a temporary copy of the existing file.

Parameters:
file - the file to copy.
Returns:
the temp file or null if none copied.
Throws:
FileNotFoundException - if file not found
IOException - if error reading or writing

copyFile

protected File copyFile(File src,
                        File dest)
                 throws FileNotFoundException,
                        IOException
Copies one file src to another, raising file exceptions if there are some problems.

Parameters:
dest - The destination file.
src - The source file.
Returns:
The destination file after successful copying.
Throws:
IOException - if there is some problems with the files.
FileNotFoundException - if any of the files cannot be found.

accept

public boolean accept(File f)

getExtension

public abstract String getExtension()
The extension valid for this type of file. (Just the chars, not the dot: e.g. "zargo".)

Returns:
the extension valid for this type of file

getDesc

protected abstract String getDesc()
Just the description, not the extension between "()".

Returns:
the description valid for this type of file

isFileExtensionApplicable

public boolean isFileExtensionApplicable(String filename)
Given the full filename this returns true if that filename contains the expected extension for the is persister.

Parameters:
filename - The filename to test.
Returns:
true if the filename is valid for this persister

getDescription

public String getDescription()

save

public final void save(Project project,
                       File file)
                throws org.argouml.persistence.SaveException,
                       InterruptedException
Save a project to file.

This first archives the existing file, then calls doSave(...) to do the actual saving.

Should doSave(...) throw an exception then it is caught here and any rollback handled before rethrowing the exception.

Specified by:
save in interface ProjectFilePersister
Parameters:
project - The project being saved.
file - The file to which the save is taking place.
Throws:
SaveException - when anything goes wrong
InterruptedException - if the thread is interrupted
See Also:
ProjectFilePersister.save( org.argouml.kernel.Project, java.io.File)

doSave

protected abstract void doSave(Project project,
                               File file)
                        throws org.argouml.persistence.SaveException,
                               InterruptedException
Implement in your concrete class to save a project to a file.

There is no need to worry about archiving or restoring archive on failure, that is handled by the rest of the framework.

Parameters:
project - the project to save
file - The file to write.
Throws:
SaveException - when anything goes wrong
InterruptedException - if the thread is interrupted
See Also:
save( org.argouml.kernel.Project, java.io.File)

isSaveEnabled

public boolean isSaveEnabled()
Some persisters only provide load functionality for discontinued formats but no save. This method returns true by default. Those Peristers that do not provide save must override this.

Returns:
true if this persister is able to save

isLoadEnabled

public boolean isLoadEnabled()
Some persisters only provide save functionality for deprecated formats. Other persisters with the same extension will manage loading. This method returns true by default. Those Peristers that do not provide load must override this.

Returns:
true if this persister is able to load

doLoad

public abstract Project doLoad(File file)
                        throws OpenException,
                               InterruptedException
Specified by:
doLoad in interface ProjectFilePersister
Parameters:
file - the file of the project to load.
Returns:
the Project
Throws:
OpenException - when we fail to open from this url
InterruptedException - if the thread is interrupted

addProgressListener

public void addProgressListener(ProgressListener listener)
Add any object interested in listening to persistence progress.

Specified by:
addProgressListener in interface ProjectFilePersister
Parameters:
listener - the interested listener.

removeProgressListener

public void removeProgressListener(ProgressListener listener)
Remove any object no longer interested in listening to persistence progress.

Specified by:
removeProgressListener in interface ProjectFilePersister
Parameters:
listener - the listener to remove.

hasAnIcon

public abstract boolean hasAnIcon()
Returns true if a FileChooser should visualize an icon for the persister.

Returns:
true if the persister is associated to an icon


ArgoUML © 1996-2006ArgoUML HomepageArgoUML Developers' pageArgoUML Cookbook