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

DocumentImpl.java

Go to the documentation of this file.
00001 
00066 package com.arcle.rmt.superwaba.model.imp;
00067 
00068 
00069 import superwaba.ext.xplat.io.DataStream;
00070 import superwaba.ext.xplat.io.Storable;
00071 
00072 import com.arcle.rmt.xplat.util.List;
00073 import com.arcle.rmt.superwaba.util.VectorListAdapter;
00074 import com.arcle.rmt.superwaba.model.Document;
00075 import com.arcle.rmt.superwaba.framework.Model;
00076 import com.arcle.rmt.rqml.*;
00077 import com.arcle.rmt.superwaba.model.imp.rqml.*;
00078 
00086 public class DocumentImpl implements Document, Mementoable, Model {
00087     //-----------------------------------------------------------------------
00088     // General
00089 
00090     public DocumentImpl() {
00091         requirements = createList();
00092         assumptions = createList();
00093         stakeholders = createList();
00094         issues = createList();
00095         taxonomies = createList();
00096         lexicons = createList();
00097         contexts = createList();
00098         projects = createList();
00099         usecases = createList();
00100     }
00101 
00102     //-----------------------------------------------------------------------
00103     // Project
00104 
00105     public Project createProject() {
00106         Project elem = createProjectImpl();
00107         projects.add(elem);
00108         elem.setID("prj-" + projects.size());
00109         return elem;
00110     }
00111 
00112 
00113     public int getProjectCount() {
00114         return projects.size();
00115     }
00116 
00117 
00118     public Project getProjectAt(int index) {
00119         return (Project) projects.get(index);
00120     }
00121 
00122 
00123     public boolean deleteProject(int index) {
00124         projects.remove(index);
00125         return true;
00126     }
00127 
00128     public boolean deleteProject(Project elem) {
00129         return projects.remove(elem);
00130     }
00131 
00132     //-----------------------------------------------------------------------
00133     // Requirement
00134 
00135     public Requirement createRequirement() {
00136         Requirement elem = createRequirementImpl();
00137         requirements.add(elem);
00138         elem.setID("req-" + requirements.size());
00139         return elem;
00140     }
00141 
00142     public int getRequirementCount() {
00143         return requirements.size();
00144     }
00145 
00146 
00147     public Requirement getRequirementAt(int index) {
00148         return (Requirement) requirements.get(index);
00149     }
00150 
00151 
00152     public boolean deleteRequirement(int index) {
00153         requirements.remove(index);
00154         return true;
00155     }
00156 
00157     public boolean deleteRequirement(Requirement req) {
00158         return requirements.remove(req);
00159     }
00160 
00161     //-----------------------------------------------------------------------
00162     // Stakeholder
00163 
00164     public Stakeholder createStakeholder() {
00165         Stakeholder elem = createStakeholderImpl();
00166         stakeholders.add(elem);
00167         elem.setID("st-" + stakeholders.size());
00168         return elem;
00169     }
00170 
00171 
00172     public int getStakeholderCount() {
00173         return stakeholders.size();
00174     }
00175 
00176 
00177     public Stakeholder getStakeholderAt(int index) {
00178         return (Stakeholder) stakeholders.get(index);
00179     }
00180 
00181 
00182     public boolean deleteStakeholder(int index) {
00183         stakeholders.remove(index);
00184         return true;
00185     }
00186 
00187     public boolean deleteStakeholder(Stakeholder elem) {
00188         return stakeholders.remove(elem);
00189     }
00190 
00191 
00192     //-----------------------------------------------------------------------
00193     // Use-Case
00194 
00195     public Usecase createUsecase() {
00196         Usecase elem = createUsecaseImpl();
00197         usecases.add(elem);
00198         elem.setID("uc-" + usecases.size());
00199         return elem;
00200     }
00201 
00202     public int getUsecaseCount() {
00203         return usecases.size();
00204     }
00205 
00206 
00207     public Usecase getUsecaseAt(int index) {
00208         return (Usecase) usecases.get(index);
00209     }
00210 
00211 
00212     public boolean deleteUsecase(int index) {
00213         usecases.remove(index);
00214         return true;
00215     }
00216 
00217     public boolean deleteUsecase(Usecase uc) {
00218         return usecases.remove(uc);
00219     }
00220 
00221 
00222     //-----------------------------------------------------------------------
00223     // Assumption
00224 
00225     public Assumption createAssumption() {
00226         Assumption elem= createAssumptionImpl();
00227         assumptions.add(elem);
00228         elem.setID("as-" + assumptions.size());
00229         return elem;
00230     }
00231 
00232 
00233     public int getAssumptionCount() {
00234         return assumptions.size();
00235     }
00236 
00237     public Assumption getAssumptionAt(int index) {
00238         return (Assumption) assumptions.get(index);
00239     }
00240 
00241     public boolean deleteAssumption(int index) {
00242         assumptions.remove(index);
00243         return true;
00244     }
00245 
00246     public boolean deleteAssumption(Assumption asm) {
00247         return assumptions.remove(asm);
00248     }
00249 
00250     //-----------------------------------------------------------------------
00251     // Issue
00252 
00253 
00254     public Issue createIssue() {
00255         Issue elem = createIssueImpl();
00256         issues.add(elem);
00257         elem.setID("iss-" + issues.size());
00258         return elem;
00259     }
00260 
00261     public int getIssueCount() {
00262         return issues.size();
00263     }
00264 
00265 
00266     public Issue getIssueAt(int index) {
00267         return (Issue) issues.get(index);
00268     }
00269 
00270 
00271     public boolean deleteIssue(int index) {
00272         issues.remove(index);
00273         return true;
00274     }
00275 
00276     public boolean deleteIssue(Issue elem) {
00277         return issues.remove(elem);
00278     }
00279 
00280     //-----------------------------------------------------------------------
00281     // Taxonomy
00282 
00283 
00284     public Taxonomy createTaxonomy() {
00285         Taxonomy elem = createTaxonomyImpl();
00286         taxonomies.add(elem);
00287         elem.setID("tax-" + taxonomies.size());
00288         return elem;
00289     }
00290 
00291 
00292     public int getTaxonomyCount() {
00293         return taxonomies.size();
00294     }
00295 
00296 
00297     public Taxonomy getTaxonomyAt(int index) {
00298         return (Taxonomy) taxonomies.get(index);
00299     }
00300 
00301 
00302     public boolean deleteTaxonomy(int index) {
00303         taxonomies.remove(index);
00304         return true;
00305     }
00306 
00307     public boolean deleteTaxonomy(Taxonomy elem) {
00308         return taxonomies.remove(elem);
00309     }
00310 
00311     //-----------------------------------------------------------------------
00312     // Context
00313 
00314     public Context createContext() {
00315         Context elem = createContextImpl();
00316         contexts.add(elem);
00317         elem.setID("ctx-" + contexts.size());
00318         return elem;
00319     }
00320 
00321 
00322     public int getContextCount() {
00323         return contexts.size();
00324     }
00325 
00326 
00327     public Context getContextAt(int index) {
00328         return (Context) contexts.get(index);
00329     }
00330 
00331 
00332     public boolean deleteContext(int index) {
00333         contexts.remove(index);
00334         return true;
00335     }
00336 
00337     public boolean deleteContext(Context elem) {
00338         return contexts.remove(elem);
00339     }
00340 
00341     //-----------------------------------------------------------------------
00342     // Lexicon
00343 
00344 
00345     public Lexicon createLexicon() {
00346         Lexicon elem = createLexiconImpl();
00347         lexicons.add(elem);
00348         elem.setID("lex-" + lexicons.size());
00349         return elem;
00350     }
00351 
00352 
00353     public int getLexiconCount() {
00354         return lexicons.size();
00355     }
00356 
00357 
00358     public Lexicon getLexiconAt(int index) {
00359         return (Lexicon) lexicons.get(index);
00360     }
00361 
00362 
00363     public boolean deleteLexicon(int index) {
00364         lexicons.remove(index);
00365         return true;
00366     }
00367 
00368     public boolean deleteLexicon(Lexicon elem) {
00369         return lexicons.remove(elem);
00370     }
00371 
00372 
00373     //-----------------------------------------------------------------------
00374     // Group
00375 
00376     //-----------------------------------------------------------------------
00377     // Trace
00378 
00379 
00380     //-----------------------------------------------------------------------
00381     // Mementoable Implementation
00382 
00396     public GenericMemento createMemento() {
00397         return new Memento(this);
00398     }
00399 
00400 
00404     public void setMemento(GenericMemento m) {
00405         DocumentImpl originator = (DocumentImpl) m.getOriginator();
00406         if (originator != this) {
00407             // must be a placeholder originator
00408             shallowClone(originator);
00409         }
00410     }
00411 
00412 
00413     //-----------------------------------------------------------------------
00414     // Public Access Methods
00415 
00419     public void setTitle(String title) {
00420         _title = title;
00421     }
00422 
00426     public String getTitle() {
00427         return _title;
00428     }
00429 
00430     public void setDeleted() {
00431         _isDeleted = true;
00432     }
00433 
00434     public boolean isDeleted() {
00435         return _isDeleted;
00436     }
00437 
00438 
00439     //-----------------------------------------------------------------------
00440     // Protected Utility Methods
00441 
00442 
00447     protected void shallowClone(DocumentImpl other) {
00448         requirements = other.requirements;
00449         _title = other._title;
00450     }
00451 
00452 
00453     //-----------------------------------------------------------------------
00454     // Factory Methods
00455 
00459     protected RequirementImpl createRequirementImpl() {
00460         return new RequirementImpl();
00461     }
00462 
00463     protected AssumptionImpl createAssumptionImpl() {
00464         return new AssumptionImpl();
00465     }
00466 
00467 
00468     protected StakeholderImpl createStakeholderImpl() {
00469         return new StakeholderImpl();
00470     }
00471 
00472     protected IssueImpl createIssueImpl() {
00473         return new IssueImpl();
00474     }
00475 
00476     protected TaxonomyImpl createTaxonomyImpl() {
00477         return new TaxonomyImpl();
00478     }
00479 
00480     protected LexiconImpl createLexiconImpl() {
00481         return new LexiconImpl();
00482     }
00483 
00484     protected ContextImpl createContextImpl() {
00485         return new ContextImpl();
00486     }
00487 
00488     protected ProjectImpl createProjectImpl() {
00489         return new ProjectImpl();
00490     }
00491 
00492     protected UsecaseImpl createUsecaseImpl() {
00493         return new UsecaseImpl();
00494     }
00495 
00496 
00497     protected List createList() {
00498         return new VectorListAdapter();
00499     }
00500 
00501 
00502     //-----------------------------------------------------------------------
00503     // First-Class Element IDs
00504 
00509     public static final byte DOCUMENT_ID    = 0x01;
00510 
00515     public static final byte PROJECT_ID     = 0x02;
00516 
00521     public static final byte REQUIREMENT_ID = 0x03;
00522 
00527     public static final byte STAKEHOLDER_ID = 0x04;
00528 
00533     public static final byte USECASE_ID     = 0x05;
00534 
00539     public static final byte ASSUMPTION_ID  = 0x06;
00540 
00545     public static final byte ISSUE_ID       = 0x07;
00546 
00551     public static final byte TAXONOMY_ID    = 0x08;
00552 
00557     public static final byte CONTEXT_ID     = 0x09;
00558 
00563     public static final byte LEXICON_ID     = 0x0A;
00564 
00569     public static final byte GROUP_ID       = 0x0B;
00570 
00575     public static final byte TRACE_ID       = 0x0C;
00576 
00577     //-----------------------------------------------------------------------
00578     // Nested Element IDs
00579 
00580 
00585     public static final byte NAME_ID        = 0x10;
00586 
00591     public static final byte DESCRIPTION_ID = 0x11;
00592 
00597     public static final byte RATIONALE_ID   = 0x12;
00598 
00599     public static final byte DEFINITION_ID  = 0x13;
00600 
00601     public static final byte TEXTUAL_DATA_ID = 0x14;
00602 
00603     public static final byte ORIGIN_ID = 0x15;
00604 
00605     public static final byte PRODUCT_ID = 0x16;
00606 
00607     public static final byte PROBLEM_ID = 0x17;
00608 
00609     public static final byte SCOPE_ID = 0x18;
00610 
00611     public static final byte VISION_ID = 0x19;
00612 
00613     public static final byte ACTOR_ID = 0x1A;
00614 
00615     public static final byte PRECONDITION_ID = 0x1B;
00616 
00617     public static final byte POSTCONDITION_ID = 0x1C;
00618 
00619     public static final byte NORMAL_COURSE_ID = 0x1D;
00620 
00621     public static final byte ALTERNATIVE_COURSE_ID = 0X1E;
00622 
00623     public static final byte EXCEPTION_ID = 0X1F;
00624 
00625     public static final byte ACTORACTION_ID = 0x20;
00626 
00627     public static final byte SYSTEMRESPONSE_ID = 0X21;
00628 
00629     public static final byte COMMENT_ID = 0x22;
00630 
00631     //-----------------------------------------------------------------------
00632     // Instance variables
00633 
00634     private List requirements;
00635 
00636     private List assumptions;
00637 
00638     private List stakeholders;
00639 
00640     private List issues;
00641 
00642     private List taxonomies;
00643 
00644     private List lexicons;
00645 
00646     private List contexts;
00647 
00648     private List projects;
00649 
00650     private List usecases;
00651 
00655     private String _title;
00656 
00657     private boolean _isDeleted = false;
00658 
00659     //-----------------------------------------------------------------------
00660     // Inner Classes
00661 
00670     protected static class Memento extends GenericMemento {
00675         public Memento(DocumentImpl originator) {
00676             super(originator);
00677         }
00678 
00679         //--------------------------------------------------------------------
00680         // implementation methods for GenericMemento
00681 
00682         public byte getID() {
00683             return DOCUMENT_ID;
00684         }
00685 
00686         public Storable getInstance() {
00687             // creates a blank originator to serve as temporary data
00688             // storage.
00689             DocumentImpl originator = createDocumentImpl();
00690             return new Memento(originator);
00691         }
00692 
00696         public void saveState(DataStream data) {
00697             final DocumentImpl org = (DocumentImpl) getOriginator();
00698             data.writeString(org._title);
00699 
00700             saveRequirements(data);
00701             saveAssumptions(data);
00702             saveStakeholders(data);
00703             saveIssues(data);
00704             saveTaxonomies(data);
00705             saveContexts(data);
00706             saveProjects(data);
00707             saveUsecases(data);
00708             saveLexicons(data);
00709         }
00710 
00715         public void loadState(DataStream data) {
00716             final DocumentImpl org = (DocumentImpl) getOriginator();
00717             org._title = data.readString();
00718 
00719             loadRequirements(data);
00720             loadAssumptions(data);
00721             loadStakeholders(data);
00722             loadIssues(data);
00723             loadTaxonomies(data);
00724             loadContexts(data);
00725             loadProjects(data);
00726             loadUsecases(data);
00727             loadLexicons(data);
00728         }
00729 
00730         //--------------------------------------------------------------------
00731         // Own Protected Methods
00732 
00733         //----
00734 
00739         protected void saveRequirements(DataStream stream) {
00740             final DocumentImpl org = (DocumentImpl) getOriginator();
00741             saveList(org.requirements, stream);
00742         }
00743 
00748         protected void loadRequirements(DataStream stream) {
00749             final DocumentImpl org = (DocumentImpl) getOriginator();
00750             org.requirements = loadList(stream, new MementoableFactory() {
00751                 public Mementoable createOriginator() {
00752                     return (Mementoable) org.createRequirementImpl();
00753                 }
00754             });
00755         }
00756 
00757         //----
00758 
00763         protected void saveAssumptions(DataStream stream) {
00764             final DocumentImpl org = (DocumentImpl) getOriginator();
00765             saveList(org.assumptions, stream);
00766         }
00767 
00772         protected void loadAssumptions(DataStream stream) {
00773             final DocumentImpl org = (DocumentImpl) getOriginator();
00774             org.assumptions = loadList(stream, new MementoableFactory() {
00775                 public Mementoable createOriginator() {
00776                     return (Mementoable) org.createAssumptionImpl();
00777                 }
00778             });
00779         }
00780 
00781         //----
00782 
00787         protected void saveStakeholders(DataStream stream) {
00788             final DocumentImpl org = (DocumentImpl) getOriginator();
00789             saveList(org.stakeholders, stream);
00790         }
00791 
00796         protected void loadStakeholders(DataStream stream) {
00797             final DocumentImpl org = (DocumentImpl) getOriginator();
00798             org.stakeholders = loadList(stream, new MementoableFactory() {
00799                 public Mementoable createOriginator() {
00800                     return (Mementoable) org.createStakeholderImpl();
00801                 }
00802             });
00803         }
00804 
00805         //----
00806 
00811         protected void saveIssues(DataStream stream) {
00812             final DocumentImpl org = (DocumentImpl) getOriginator();
00813             saveList(org.issues, stream);
00814         }
00815 
00820         protected void loadIssues(DataStream stream) {
00821             final DocumentImpl org = (DocumentImpl) getOriginator();
00822             org.issues = loadList(stream, new MementoableFactory() {
00823                 public Mementoable createOriginator() {
00824                     return (Mementoable) org.createIssueImpl();
00825                 }
00826             });
00827         }
00828 
00829         //----
00830 
00835         protected void saveTaxonomies(DataStream stream) {
00836             final DocumentImpl org = (DocumentImpl) getOriginator();
00837             saveList(org.taxonomies, stream);
00838         }
00839 
00844         protected void loadTaxonomies(DataStream stream) {
00845             final DocumentImpl org = (DocumentImpl) getOriginator();
00846             org.taxonomies = loadList(stream, new MementoableFactory() {
00847                 public Mementoable createOriginator() {
00848                     return (Mementoable) org.createTaxonomyImpl();
00849                 }
00850             });
00851         }
00852 
00853         //----
00854 
00859         protected void saveLexicons(DataStream stream) {
00860             final DocumentImpl org = (DocumentImpl) getOriginator();
00861             saveList(org.lexicons, stream);
00862         }
00863 
00868         protected void loadLexicons(DataStream stream) {
00869             final DocumentImpl org = (DocumentImpl) getOriginator();
00870             org.lexicons= loadList(stream, new MementoableFactory() {
00871                 public Mementoable createOriginator() {
00872                     return (Mementoable) org.createLexiconImpl();
00873                 }
00874             });
00875         }
00876 
00877         //----
00882         protected void saveContexts(DataStream stream) {
00883             final DocumentImpl org = (DocumentImpl) getOriginator();
00884             saveList(org.contexts, stream);
00885         }
00886 
00891         protected void loadContexts(DataStream stream) {
00892             final DocumentImpl org = (DocumentImpl) getOriginator();
00893             org.contexts = loadList(stream, new MementoableFactory() {
00894                 public Mementoable createOriginator() {
00895                     return (Mementoable) org.createContextImpl();
00896                 }
00897             });
00898         }
00899 
00900         //----
00905         protected void saveProjects(DataStream stream) {
00906             final DocumentImpl org = (DocumentImpl) getOriginator();
00907             saveList(org.projects, stream);
00908         }
00909 
00914         protected void loadProjects(DataStream stream) {
00915             final DocumentImpl org = (DocumentImpl) getOriginator();
00916             org.projects = loadList(stream, new MementoableFactory() {
00917                 public Mementoable createOriginator() {
00918                     return (Mementoable) org.createProjectImpl();
00919                 }
00920             });
00921         }
00922 
00923         //----
00928         protected void saveUsecases(DataStream stream) {
00929             final DocumentImpl org = (DocumentImpl) getOriginator();
00930             saveList(org.usecases, stream);
00931         }
00932 
00937         protected void loadUsecases(DataStream stream) {
00938             final DocumentImpl org = (DocumentImpl) getOriginator();
00939             org.usecases = loadList(stream, new MementoableFactory() {
00940                 public Mementoable createOriginator() {
00941                     return (Mementoable) org.createUsecaseImpl();
00942                 }
00943             });
00944         }
00945 
00946         //--------------------------------------------------------------------
00947         // Factory Methods
00948 
00954         protected DocumentImpl createDocumentImpl() {
00955             return new DocumentImpl();
00956         }
00957     }
00958 }

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