com.basecmp.core.usecasesteps.miscellaneous
Class CsvExport
java.lang.Object
BaseCmpUsecaseStep
com.basecmp.core.usecasesteps.miscellaneous.CsvExport
- public class CsvExport
- extends BaseCmpUsecaseStep
Führt ein SQL-Statement aus und exportiert die Daten des Resultset in eine
CSV-Datei.
Das Statement wird aus den Config-Keys
CONFIG_KEY_SELECT_COLUMNS,
CONFIG_KEY_SELECT_TABLESund optional
CONFIG_KEY_WHERE_CLAUSEzusammengesetzt.
Die SQL-Schlüsselwörter "select", "from" und "where", werden intern erzeugt
und dürfen nicht mit angegeben werden. Die Erzeugung der Statement ist durch
folgende Codezeile definiert:
String sql = "select " + selectColumns + " from " + selectTable + " where " + whereClause;
Fehlt einer der beiden Werte wird der Fehlerausgang benutzt und die Variable
ExportOk als Usecase-Attribute auf false gesetzt.
Konnten beide Werte gelesen werden, wird versucht das zusammengesetzte
SQL-Statement an die Datenbank abzusetzen. Im Fehlerfall wird der
Fehlerausgang benutzt und die Variable ExportOk als Usecase-Attribute auf
false gesetzt.
Wenn das Statement erfolgreich abgesetzt werden konnte, wird das Resultset
iteriert und dabei jeder Datensatz als CSV-Zeile in eine Datei geschrieben.
Der Name der Datei wird als Konfiguartionswert unter dem Variablennamen
CONFIG_KEY_FILENAMEerwartet. zusätzlich kann eine
Konfigurationsvariable aus basecmp_sytem.properties als Pfad in
CONFIG_KEY_CONFIG_PATHNAMEangegeben werden.
Die exportierten Datensätze können mit dem aktuellen Datum markiert werden.
Um dieses Feature zu aktivieren muss der Wert
CONFIG_KEY_MARK_EXPORTEDauf true gesetzt sein. Ist
MarkEported auf true gesetzt, wird mit den Werten aus
CONFIG_KEY_MARKING_TABLE,
CONFIG_KEY_MARKING_COLUMNund
CONFIG_KEY_MARK_EXPORTED_WHERE_CLAUSEein Update-Statement
gebildet, welches mit die gewünschte Spalte der Datensätze mit dem aktuellen
Datum -NOW()- setzt. Die Spalte muss ein Datumsfeld sein! Das
Update-Statement bildet sich wie folgt:
String sqlMarkExported = "update " + markExportedUpdateTable + " set " + markExportedUpdateColumn + "=NOW() where " + markExportedWhereClause;
Da das Update-Statement nur einmal ausgeführt wird und nicht pro exportiertem
Datensatz, muss das Update-Statement mit der Menge des Select-Statements
korrelieren, d.h. die gleichen Datensätze in der Where-Clause auswählen!
Um eine Headline in der CSV-Datei zu erzeugen, kann der Parameter
FirstCsvLine benutzt werden. Der Inhalt von FirstCsvLine wird -wenn
vorhanden- als erstes in die CSV-Datei geschrieben.
Erwartete Konfiguartionswerte:
- Name: Filename
Klasse: java.lang.String
Dateiname für die zu erzeugende CSV-Datei
- Name: AppendDateSuffix
Klasse: java.lang.String
[true|false] Entscheidet, ob das Datum and den Dateinamen angehängt werden
soll.
- Name: ConfigPath
Klasse: java.lang.String
Name eines Konfigurationspfades aus der Datei basecmp_system.properties. Der
hier angegebene Name wird versucht als Configwert zu lesen und dem Dateinamen
vorangestellt.
- Name: SelectTable
Klasse: java.lang.String
Datenbanktabelle(n) des zu erzeugenden Select-Statements
- Name: SelectColumns
Spalten des zu erzeugenden Select-Statements. Da diese Liste auch die
Reihenfolge der Felder in der CSV-Datei definiert, darf hier nicht mit * etc
gearbeitet werden! Klasse: java.lang.String
- Name: WhereClause
Die Einschränkungsbedingung(en) für das Select-Statement. Klasse:
java.lang.String
- Name: FirstCsvLine
Klasse: java.lang.String
- Name: MarkExported
Klasse: java.lang.String
[true|false]
- Name: MarkExportedUpdateTable
Klasse: java.lang.String
Datenbanktabelle(n) des zu erzeugenden Select-Statements
- Name: MarkExportedUpdateColumn
Spalten des zu erzeugenden Select-Statements. Da diese Liste auch die
Reihenfolge der Felder in der CSV-Datei definiert, darf hier nicht mit * etc
gearbeitet werden! Klasse: java.lang.String
- Name: MarkExportedWhereClause
Die Einschränkungsbedingung(en) für das Select-Statement. Klasse:
java.lang.String
Erzeugte Request-Attribute:
- Name: FileName
Klasse: java.lang.String Der Name der erzeugten CSV-Datei.
- Name: CsvExportOk
Klasse: java.lang.Boolean True, wenn der Export erfolgreich durchgeführt
wurde
Created on 12.01.2004
- See Also:
- Serialized Form
- Author:
- Wolfgang Schröder
|
Method Summary |
void |
execute(UsecaseContext uc,
int unlockKey)
|
protected void |
initStep(java.lang.Integer stepId)
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CONFIG_KEY_APPEND_DATE_SUFFIX
public static final java.lang.String CONFIG_KEY_APPEND_DATE_SUFFIX
- See Also:
- Constant Field Values
CONFIG_KEY_CONFIG_PATHNAME
public static final java.lang.String CONFIG_KEY_CONFIG_PATHNAME
- See Also:
- Constant Field Values
CONFIG_KEY_CSV_DEFINITION_LINE
public static final java.lang.String CONFIG_KEY_CSV_DEFINITION_LINE
- See Also:
- Constant Field Values
CONFIG_KEY_FILENAME
public static final java.lang.String CONFIG_KEY_FILENAME
- See Also:
- Constant Field Values
CONFIG_KEY_MARK_EXPORTED
public static final java.lang.String CONFIG_KEY_MARK_EXPORTED
- See Also:
- Constant Field Values
CONFIG_KEY_MARK_EXPORTED_WHERE_CLAUSE
public static final java.lang.String CONFIG_KEY_MARK_EXPORTED_WHERE_CLAUSE
- See Also:
- Constant Field Values
CONFIG_KEY_MARKING_COLUMN
public static final java.lang.String CONFIG_KEY_MARKING_COLUMN
- See Also:
- Constant Field Values
CONFIG_KEY_MARKING_TABLE
public static final java.lang.String CONFIG_KEY_MARKING_TABLE
- See Also:
- Constant Field Values
CONFIG_KEY_SELECT_COLUMNS
public static final java.lang.String CONFIG_KEY_SELECT_COLUMNS
- See Also:
- Constant Field Values
CONFIG_KEY_SELECT_TABLES
public static final java.lang.String CONFIG_KEY_SELECT_TABLES
- See Also:
- Constant Field Values
CONFIG_KEY_WHERE_CLAUSE
public static final java.lang.String CONFIG_KEY_WHERE_CLAUSE
- See Also:
- Constant Field Values
CsvExport
public CsvExport()
execute
public void execute(UsecaseContext uc,
int unlockKey)
throws java.lang.Exception
- Throws:
java.lang.Exception
initStep
protected void initStep(java.lang.Integer stepId)
Copyright © 2004 by basecmp® - Professional Web Solutions