submarine.core
Interface Archivable

All Known Implementing Classes:
EAISystem.ErrorObject, ArchivableFile, ArchivableInputStream

public interface Archivable

Une classe qui implémente cette interface devient archivable lorsqu'elle est manipulée comme message par EAISystem.

Quand utiliser :

Pour enregister dans un flux un objet Archivable

Quand implémenter :

Pour que l'objet destiné à être un message d'entrée ou de sortie d'un Channel puisse être archivée par le EAISystem

Comment EAISystem l'utilise :

 File f = new File(archivePath, Channel);
 if( !f.isDirectory() ) f.mkdirs(); 
 f = new File(f, ctx.docId+ext);
 bos = new BufferedOutputStream(new FileOutputStream(f));
 if( message instanceof Archivable ) {
 	((Archivable)message).archive(bos);
 } else if( message instanceof Document ) {
 	Tools.archiveXML(bos, (Document)message);
 } else if( message instanceof byte[] ) {
 	bos.write((byte[])message);
 } else if( message instanceof String ) {
 	OutputStreamWriter p = new OutputStreamWriter(bos,encoding);
 	p.write((String)message);
 	p.flush();
 } else if( message instanceof Serializable ) {
 	ObjectOutputStream p = new ObjectOutputStream(bos);
 	p.writeObject(message);
 	bos=p;
 } else {
 	OutputStreamWriter p = new OutputStreamWriter(bos,encoding);
 	p.write("class:"+message.getClass().getName()+" 
 instance:"+message.toString());
 	p.flush();
 	System.err.println("Cannot archive "+f.getAbsolutePath()+" :"+message);
 }
 


Method Summary
 void archive(java.io.OutputStream out)
          Procède à l'archivage de l'objet dans le flux.
 

Method Detail

archive

public void archive(java.io.OutputStream out)
             throws java.lang.Exception
Procède à l'archivage de l'objet dans le flux. Le programme appelant doit fournir un flux valide et doit se charger de flusher et fermer le flux. Ces actions ne sont pas du resort de cette implémentation.
Parameters:
out - Le flux dans lequel l'objet doit s'écrire.
Throws:
java.lang.Exception -  
See Also:
OutputStream

Submarine project. free distribution of this software must include the opensource licence.
Guénolé de Cadoudal.