edu.bonn.xulu.plugin.appl
Class GeoModelCodeGenerator

java.lang.Object
  extended by edu.bonn.xulu.plugin.appl.GeoModelCodeGenerator

public class GeoModelCodeGenerator
extends Object

Diese Klasse stellt einen Sourcecode-Generator dar, mit dem ein Grundgeruest fuer XuluModel- und StepModel-Klassen (mit entsprechendem ModelContentManager) erzeugt werden koennen.
Der Generator basiert auf folgenden Vorlagen-Dateien:

Das Verzeichnis, aus dem die Dateien gezogen werden, wird im Konstruktor angegeben.
Auf Basis von wird aus den Vorlagen-Dateien eine Klasse für den ContentManager und eine Klasse fuer das Xulu-Modell erzeugt, in denen die Ressourcen-Spezifikation, das Ressourcen-Handling, sowie deren Referenzierung in lokalen Variablen bereits implementiert ist.
Der Modell-Entwickler (unmittelbar) mit der Programmierung des Modell-Algorithmus (z.B. in StepModel.performModelStep(int)) beginnen.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)
See Also:
schmitzm.io.dyntxt.DynamicTextGenerator, schmitzm.io.dyntxt.DynamicInputProvider

Field Summary
static String CM_TEMPLATE_FILENAME
          Vorlagen-Datei fuer ModelContentManager.
static String STEPMODEL_TEMPLATE_FILENAME
          Name der Vorlagen-Datei fuer StepModel.
static String XULUMODEL_TEMPLATE_FILENAME
          Name der Vorlagen-Datei fuer XuluModel.
 
Constructor Summary
GeoModelCodeGenerator(String modelName, String packageName, File classDir, Class<XuluModel> modelClass, ModelResource[] resource, String[] resourceVarName, File tplDir)
          Erzeugt einen neuen ModellCode-Generator.
 
Method Summary
protected  void checkInputs(String modelName, String packageName, File classDir, Class<XuluModel> modelClass, ModelResource[] resource, String[] resourceVarName, File tplDir)
          Prueft die Parameter des Konstruktors auf Korrektheit
 void generateSource()
          Fuehrt die Generierung der Quell-Dateien fuer ContentManager und Modell aus.
static String getResourceCategoryString(ModelResource resource)
          Liefert die Bezeichnung einer Kategorie-Konstante fuer eine Modell-Ressource.
static void sortClassesByName(Class[] clazz)
          Sortiert einen Array von Klassen nach der natuerlichen Sortierung ihrer Namen (inklusive Package).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

XULUMODEL_TEMPLATE_FILENAME

public static final String XULUMODEL_TEMPLATE_FILENAME
Name der Vorlagen-Datei fuer XuluModel.

See Also:
Constant Field Values

STEPMODEL_TEMPLATE_FILENAME

public static final String STEPMODEL_TEMPLATE_FILENAME
Name der Vorlagen-Datei fuer StepModel.

See Also:
Constant Field Values

CM_TEMPLATE_FILENAME

public static final String CM_TEMPLATE_FILENAME
Vorlagen-Datei fuer ModelContentManager.

See Also:
Constant Field Values
Constructor Detail

GeoModelCodeGenerator

public GeoModelCodeGenerator(String modelName,
                             String packageName,
                             File classDir,
                             Class<XuluModel> modelClass,
                             ModelResource[] resource,
                             String[] resourceVarName,
                             File tplDir)
Erzeugt einen neuen ModellCode-Generator.

Parameters:
modelName - Name des Modells (darf keine Leer/Sonderzeichen enthalten)
packageName - Name des Pakets in dem Modell und ContentManager implementiert werden
classDir - File Pfad unterhalb dem die Klassen abgelegt werden
modelClass - Typ der Modell-Klasse (nur StepModel oder XuluModel erlaubt)
resource - fuer das Modell benoetigte Ressourcen
resourceVarName - Variablen-Namen fuer die modell-Internen Referenzen auf die Ressourcen
tplDir - Verzeichnis, in dem die Vorlagen-Dateien zur Code-Generierung zu finden sind
Method Detail

checkInputs

protected void checkInputs(String modelName,
                           String packageName,
                           File classDir,
                           Class<XuluModel> modelClass,
                           ModelResource[] resource,
                           String[] resourceVarName,
                           File tplDir)
Prueft die Parameter des Konstruktors auf Korrektheit

Parameters:
modelName - Name des Modells (darf keine Leer/Sonderzeichen enthalten)
packageName - Name des Pakets in dem Modell und ContentManager implementiert werden
classDir - File Pfad unterhalb dem die Klassen abgelegt werden
modelClass - Typ der Modell-Klasse (nur StepModel oder XuluModel erlaubt)
resource - fuer das Modell benoetigte Ressourcen
resourceVarName - Variablen-Namen fuer die modell-Internen Referenzen auf die Ressourcen
Throws:
IllegalArgumentException - falls ein Parameter nicht korrekt ist

generateSource

public void generateSource()
                    throws Exception
Fuehrt die Generierung der Quell-Dateien fuer ContentManager und Modell aus.

Throws:
Exception - wenn irgendein Fehler auftritt

getResourceCategoryString

public static String getResourceCategoryString(ModelResource resource)
Liefert die Bezeichnung einer Kategorie-Konstante fuer eine Modell-Ressource.

Parameters:
resource - Model-Ressource

sortClassesByName

public static void sortClassesByName(Class[] clazz)
Sortiert einen Array von Klassen nach der natuerlichen Sortierung ihrer Namen (inklusive Package).

Parameters:
clazz - Klassen
See Also:
Class.getName()