Hauptseite   Liste aller Namensbereiche   Klassenhierarchie   Alphabetische Liste   Übersicht   Auflistung der Dateien   Elemente eines Namensbereiches   Datenstruktur-Elemente   Datei-Elemente  

SflexWorkerFactory Klassenreferenz

Diese Klasse liefert Arbeiter. Mehr...

#include <SflexWorkerFactory.hpp>

Zusammengehörigkeiten von SflexWorkerFactory:

Collaboration graph
[Legende]
Aufstellung aller Elemente

Öffentliche Datenelemente

 ~SflexWorkerFactory ()
SflexModulemakeModule (std::string moduleName)
 Baut ein Modul, dessen Name übergeben werden muß. Mehr...

SflexXsltmakeXslt ()
 Baut einen XSLT-Transformator. Mehr...

SflexPdfmakePdf ()
 Baut einen PDF-Erzeuger. Mehr...

SflexXslOutputmakeXslOutput (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...


Ausführliche Beschreibung

Diese Klasse liefert Arbeiter.

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ß).


Beschreibung der Konstruktoren und Destruktoren

SflexWorkerFactory::~SflexWorkerFactory  
 

00041 {
00042     
00043 }

SflexWorkerFactory::SflexWorkerFactory   [private]
 

Paranoia.

00034 {
00035     
00036 }


Dokumentation der Elementfunktionen

const std::string SflexWorkerFactory::getError   const
 

Liefert die Fehlermeldung, falls etwas schief gelaufen ist.

Rückgabe:
die Fehlermeldung

00159 {
00160     return errorStream_.str();
00161 }

SflexWorkerFactory * SflexWorkerFactory::getFactory   [static]
 

Liefert den Zeiger auf die Fabrik.

Rückgabe:
den Zeiger

00049 {
00050     if ( !factory_ ) {
00051         factory_ = new SflexWorkerFactory;
00052         return factory_;
00053     }
00054     return factory_;
00055 }

SflexModule * SflexWorkerFactory::makeModule std::string    moduleName
 

Baut ein Modul, dessen Name übergeben werden muß.

Parameter:
moduleName  der Name des Moduls
Rückgabe:
den Zeiger auf das Modul

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 }

SflexPdf * SflexWorkerFactory::makePdf  
 

Baut einen PDF-Erzeuger.

Im Moment wird nur SflexPdfWithPdflatex unterstützt.

Rückgabe:
den Zeiger auf den Erzeuger

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 }

SflexXslOutput * SflexWorkerFactory::makeXslOutput std::string    extension
 

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).

Parameter:
extension  die Extension des jeweiligen Content-Type
Rückgabe:
den Zeiger auf das Ausgabe-Objekt

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 }        

SflexXslt * SflexWorkerFactory::makeXslt  
 

Baut einen XSLT-Transformator.

Im Moment wird nur Xalan unterstützt.

Rückgabe:
den Zeiger auf den Transformator

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 }


Dokumentation der Datenelemente

std::ostringstream SflexWorkerFactory::errorStream_ [private]
 

der Stream mit einer etwagien Fehlermeldung.

SflexWorkerFactory * SflexWorkerFactory::factory_ = 0 [static, private]
 

der Zeiger auf die Fabrik.


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
Erzeugt am Fri Apr 12 10:57:07 2002 für SfleX von doxygen1.2.14 geschrieben von Dimitri van Heesch, © 1997-2002