Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

GenericMemento.java

Go to the documentation of this file.
00001 
00066 package com.arcle.rmt.superwaba.model.imp;
00067 
00068 import waba.util.Vector;
00069 
00070 import superwaba.ext.xplat.io.Storable;
00071 import superwaba.ext.xplat.io.DataStream;
00072 
00073 import com.arcle.rmt.xplat.util.List;
00074 import com.arcle.rmt.superwaba.util.VectorListAdapter;
00075 
00124 public abstract class GenericMemento implements Storable {
00125 
00126     public GenericMemento(Mementoable originator) {
00127         theOriginator = originator;
00128     }
00129 
00130     //-----------------------------------------------------------------------
00131     // Storable methods
00132 
00139     public abstract Storable getInstance();
00140 
00150     public abstract byte getID();
00151 
00157     public abstract void saveState(DataStream data);
00158 
00165     public abstract void loadState(DataStream data);
00166 
00167 
00168     //-----------------------------------------------------------------------
00169     // Public Methods
00170 
00174     public Mementoable getOriginator() {
00175         return theOriginator;
00176     }
00177 
00178     //------------------------------------------------------------------------
00179     // Factory Methods
00180 
00181     public List createList(int initCapacity) {
00182         return new VectorListAdapter(new Vector(initCapacity));
00183     }
00184 
00185 
00186     //------------------------------------------------------------------------
00187     // Own protected methods
00188 
00195     protected void saveList(List v, DataStream stream) {
00196         int numElems = v.size();
00197         stream.writeInt(numElems);
00198         for (int i=0; i<numElems; i++) {
00199             saveMementoable((Mementoable)v.get(i), stream);
00200         }
00201     }
00202 
00211     protected List loadList(DataStream stream, MementoableFactory factory) {
00212         int numElems = stream.readInt();
00213         List v = createList(numElems);
00214         for (int i=0; i<numElems; i++) {
00215             v.add(loadMementoable(stream, factory));
00216         }
00217         return v;
00218     }
00219 
00225     protected static void saveMementoable(Mementoable m, DataStream stream) {
00226         Storable memento = (Storable) m.createMemento();
00227         memento.saveState(stream);
00228     }
00229 
00236     protected static Mementoable loadMementoable(DataStream stream, MementoableFactory factory) {
00237         Mementoable object = factory.createOriginator();
00238         GenericMemento memento = object.createMemento();
00239         memento.loadState(stream);
00240         object.setMemento(memento);
00241         return object;
00242     }
00243 
00247     private Mementoable theOriginator = null;
00248 }

Generated on Fri Jun 18 19:51:21 2004 for Arcle Rambutan by doxygen 1.3.5