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

SwExportFacade.java

Go to the documentation of this file.
00001 
00058 package com.arcle.rmt.j2se.bridge.swexport;
00059 import java.util.List;
00060 import java.util.Iterator;
00061 import java.util.Arrays;
00062 import java.lang.ref.SoftReference;
00063 
00064 
00065 import com.arcle.rmt.j2se.bridge.swexport.rqml.*;
00066 import com.arcle.rmt.superwaba.model.Document;
00067 import com.arcle.rmt.rqml.RQMLFirstClass;
00068 
00082 public final class SwExportFacade {
00086     private SwExportFacade() { }
00087 
00095     public boolean export(RQMLFirstClass srcElem, Document dest) {
00096         Iterator iter = getExporters().iterator();
00097         boolean succeed = false;
00098         // try each exporter until one is successful
00099         while (iter.hasNext() && !succeed) {
00100             FirstClassExporter exporter = (FirstClassExporter) iter.next();
00101             succeed = exporter.export(srcElem, dest);
00102         }
00103         return succeed;
00104     }
00105 
00106     //-----------------------------------------------------------------------
00107 
00112     protected synchronized List getExporters() {
00113         List exp = (List) _exporters.get();
00114         if (exp == null) {
00115             exp = createExporters();
00116             _exporters = new SoftReference(exp);
00117         }
00118         return exp;
00119     }
00120 
00124     public synchronized static SwExportFacade getInstance() {
00125         if (_instance == null) {
00126             _instance = new SwExportFacade();
00127         }
00128         return _instance;
00129     }
00130 
00131     //-----------------------------------------------------------------------
00132 
00137     protected List createExporters() {
00138         return Arrays.asList(new FirstClassExporter[] {
00139             new RequirementExport(),
00140             new UsecaseExport(),
00141             new StakeholderExport(),
00142             new AssumptionExport(),
00143             new IssueExport(),
00144             new LexiconExport(),
00145             new ContextExport(),
00146             new TaxonomyExport(),
00147             new ProjectExport()
00148         });
00149     }
00150 
00151     //-----------------------------------------------------------------------
00152 
00156     private SoftReference _exporters = new SoftReference(null);
00157 
00161     private static SwExportFacade _instance = null;
00162 }

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