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

CourseImpl.java

Go to the documentation of this file.
00001 
00066 package com.arcle.rmt.superwaba.model.imp.rqml;
00067 
00068 import superwaba.ext.xplat.io.Storable;
00069 import superwaba.ext.xplat.io.DataStream;
00070 import com.arcle.rmt.xplat.util.List;
00071 import com.arcle.rmt.xplat.util.Iterator;
00072 
00073 import com.arcle.rmt.rqml.*;
00074 import com.arcle.rmt.superwaba.model.imp.*;
00075 
00082 public abstract class CourseImpl extends RQMLSecondClassImpl implements Course {
00083     public CourseImpl() {
00084         descriptions = createList();
00085         actorActions = createList();
00086         systemResponses = createList();
00087     }
00088 
00089     //-----------------------------------------------------------------------
00090     // Course Implementations
00091 
00092 
00093     public Description createDescription() {
00094         Description desc = createDescriptionImpl();
00095         descriptions.add(desc);
00096         return desc;
00097     }
00098 
00099     public ActorAction createActorAction() {
00100         ActorAction aa = createActorActionImpl();
00101         actorActions.add(aa);
00102         return aa;
00103     }
00104 
00105     public SystemResponse createSystemResponse() {
00106         SystemResponse sr = createSystemResponseImpl();
00107         systemResponses.add(sr);
00108         return sr;
00109     }
00110 
00111     public Iterator getDescriptions() {
00112         return descriptions.iterator();
00113     }
00114 
00115 
00116     public Description getDescription() {
00117         if (descriptions.size() == 0) {
00118             return createDescription();
00119         } else {
00120             return (Description) descriptions.get(0);
00121         }
00122     }
00123 
00124     public ActorAction getActorAction() {
00125         if (actorActions.size() == 0) {
00126             return createActorAction();
00127         } else {
00128             return (ActorAction) actorActions.get(0);
00129         }
00130     }
00131 
00132     public SystemResponse getSystemResponse() {
00133         if (systemResponses.size() == 0) {
00134             return createSystemResponse();
00135         } else {
00136             return (SystemResponse) systemResponses.get(0);
00137         }
00138     }
00139 
00140 
00141 
00142     //-----------------------------------------------------------------------
00143     // Factory Methods
00144 
00145     public abstract GenericMemento createMemento();
00146 
00147     protected ActorActionImpl createActorActionImpl() {
00148         return new ActorActionImpl();
00149     }
00150 
00151     protected SystemResponseImpl createSystemResponseImpl() {
00152         return new SystemResponseImpl();
00153     }
00154 
00155     //-----------------------------------------------------------------------
00156     // Member variables
00157 
00158     private List actorActions;
00159 
00160     private List systemResponses;
00161 
00162     private List descriptions;
00163 
00164     //-----------------------------------------------------------------------
00165     // Inner Classes
00166 
00167     protected static abstract class Memento extends RQMLSecondClassImpl.Memento {
00168         public Memento(CourseImpl originator) {
00169             super(originator);
00170         }
00171 
00172         public Storable getInstance() {
00173             // This memento is not directly stored in the Catalog,
00174             // so this factory method is not required.
00175             return null;
00176         }
00177 
00178 
00179         public void saveState(DataStream data) {
00180             final CourseImpl org = (CourseImpl) getOriginator();
00181             super.saveState(data);
00182             saveList(org.descriptions, data);
00183             saveList(org.actorActions, data);
00184             saveList(org.systemResponses, data);
00185         }
00186 
00187         public void loadState(DataStream data) {
00188             final CourseImpl org = (CourseImpl) getOriginator();
00189             super.loadState(data);
00190 
00191             org.descriptions = loadList(data, new MementoableFactory() {
00192                 public Mementoable createOriginator() {
00193                     return org.createDescriptionImpl();
00194                 }
00195             });
00196 
00197             org.actorActions = loadList(data, new MementoableFactory() {
00198                 public Mementoable createOriginator() {
00199                     return org.createActorActionImpl();
00200                 }
00201             });
00202             org.systemResponses = loadList(data, new MementoableFactory() {
00203                 public Mementoable createOriginator() {
00204                     return org.createSystemResponseImpl();
00205                 }
00206             });
00207         }
00208     }
00209 }

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