#include <SflexWorkerFactory.hpp>
Zusammengehörigkeiten von SflexWorkerFactory:

Öffentliche Datenelemente | |
| ~SflexWorkerFactory () | |
| SflexModule * | makeModule (std::string moduleName) | 
| Baut ein Modul, dessen Name übergeben werden muß. Mehr... | |
| SflexXslt * | makeXslt () | 
| Baut einen XSLT-Transformator. Mehr... | |
| SflexPdf * | makePdf () | 
| Baut einen PDF-Erzeuger. Mehr... | |
| SflexXslOutput * | makeXslOutput (std::string extension) | 
| Baut ein Ausgabe-Objekt. Mehr... | |
| const std::string | getError () const | 
| Liefert die Fehlermeldung, falls etwas schief gelaufen ist. Mehr... | |
Öffentliche, statische Datenelemente | |
| SflexWorkerFactory * | getFactory () | 
| Liefert den Zeiger auf die Fabrik. Mehr... | |
Private Datenelemente | |
| SflexWorkerFactory () | |
| Paranoia. Mehr... | |
Private Attribute | |
| std::ostringstream | errorStream_ | 
| der Stream mit einer etwagien Fehlermeldung. Mehr... | |
Statische private Attribute | |
| SflexWorkerFactory * | factory_ = 0 | 
| der Zeiger auf die Fabrik. Mehr... | |
Sie ist als 'Singleton' implementiert und steht so allen Klienten zur Verfügung. Für jede Gruppe von Arbeitern existiert eine Methode, um ein solches Objekt zu erschaffen. Es werden jeweils Zeiger auf diese Objekte zurückgeliefert. Wie es sich für eine Fabrik gehört, werden die Objekte nur erschaffen. Um die Verschrottung muß sich der Klient selbst kümmern. Die Objekte der Fabrik werden auf dem Heap erzeugt (durch ein einfaches 'new', so daß für die Zerstörung ein einfaches 'delete' verwendet werden muß).
      
  | 
  
| 
 
 
 00041 {
00042     
00043 }
 | 
  
      
  | 
  
| 
 Paranoia. 
 
 00034 {
00035     
00036 }
 | 
  
      
  | 
  
| 
 Liefert die Fehlermeldung, falls etwas schief gelaufen ist. 
 
 
 00159 {
00160     return errorStream_.str();
00161 }
 | 
  
      
  | 
  
| 
 Liefert den Zeiger auf die Fabrik. 
 
 
 00049 {
00050     if ( !factory_ ) {
00051         factory_ = new SflexWorkerFactory;
00052         return factory_;
00053     }
00054     return factory_;
00055 }
 | 
  
      
  | 
  
| 
 Baut ein Modul, dessen Name übergeben werden muß. 
 
 
 
 00061 {
00062     SflexModule *module = 0;
00063     errorStream_.str("");
00064     
00065     if ( moduleName == "einzel" ) {
00066         module =  new SflexModuleEinzel;
00067     }
00068     else if ( moduleName == "apparat" ) {
00069         module = new SflexModuleApparat;
00070     }
00071     else {
00072         errorStream_ << "Worker Factory: Das Modul "
00073                      << moduleName
00074                      << " kenne ich nicht!\n";
00075         return 0;
00076     }
00077 
00078     if ( !module ) {
00079         errorStream_ << "Worker Factory: Das Modul "
00080                      << moduleName
00081                      << " konnte nicht erzeugt werden!\n";
00082         return 0;
00083     }
00084 
00085     return module;
00086 }
 | 
  
      
  | 
  
| 
 Baut einen PDF-Erzeuger. Im Moment wird nur SflexPdfWithPdflatex unterstützt. 
 
 
 00109 {
00110     SflexPdf *pdf = new SflexPdfWithPdflatex;
00111     
00112     if ( !pdf ) {
00113         errorStream_ << "Worker Factory: konnte kein "
00114                      << "Pdf with pdflatex generieren!\n";
00115         return 0;
00116     }
00117     
00118     return pdf;
00119 }
 | 
  
      
  | 
  
| 
 Baut ein Ausgabe-Objekt. Welches Objekt erschaffen wird, hängt von der Extension des jeweiligen Content-Type ab. Es werden die Standard-Extensionen verwendent (also z.B. html für text/html, txt für text/plain und pdf für application/pdf). 
 
 
 00125 {
00126     SflexXslOutput *out = 0;
00127     errorStream_.str("");    
00128 
00129     if ( extension == "html" ) {
00130         out = new SflexHtmlOutput;
00131     }
00132     else if ( extension == "pdf" ) {
00133         out = new SflexPdfOutput;
00134     }
00135     else if ( extension == "txt" ) {
00136         out = new SflexPlainTextOutput;
00137     }
00138     else {
00139         errorStream_ << "Worker Factory: Das Format "
00140                      << extension
00141                      << " wird nicht unterstützt!\n";
00142         return 0;
00143     }
00144     
00145     if ( !out ) {
00146         errorStream_ << "Worker Factory: Das Output-Objekt "
00147                      << extension
00148                      << " konnte nicht erzeugt werden!\n";
00149         return 0;
00150     }
00151     
00152     return out;
00153 }        
 | 
  
      
  | 
  
| 
 Baut einen XSLT-Transformator. Im Moment wird nur Xalan unterstützt. 
 
 
 00092 {
00093     SflexXslt *xslt = new SflexXsltXalan;
00094     errorStream_.str("");
00095     
00096     if ( !xslt ) {
00097         errorStream_ << "Worker Factory: konnte kein "
00098                      << "Xslt Xalan generieren!\n";
00099         return 0;
00100     }
00101     
00102     return xslt;
00103 }
 | 
  
      
  | 
  
| 
 der Stream mit einer etwagien Fehlermeldung. 
  | 
  
      
  | 
  
| 
 der Zeiger auf die Fabrik. 
  | 
  
1.2.14 geschrieben von Dimitri van Heesch,
 © 1997-2002