public class CSVManager
extends java.lang.Object
Der CSVManager übernimmt innerhalb dieses Pakets die Erstellung der Header- und Datenzeilen wie sie etwa in CSV-Dateien verwendet werden, das heißt, es handelt sich um Zeilen mit Datenfeldern, die durch ein Trennzeichen voneinander separiert sind. Die Ausgangsdaten sind hier in einer Collection von DataTableObjects enthalten, und die Spalten und der Inhalt der Datenzeilen kann durch eine Collection von CellKeys gefiltert werden. Eine wesentliche Aufgabe bei der Erstellung der Zeilen ist die Abbildung der Arrays: deren Inhalte werden in aufeinanderfolgenden Spalten wiedergegeben.
Jeder CSVManager kann nur für eine Attributgruppe verwendet werden, die schon im Konstruktor endgültig festgelegt wird.
Modifier and Type | Class and Description |
---|---|
private class |
CSVManager.CSVColumn
Eine CSVColumn ist entweder ein ansonsten leeres Objekt für eine Spalte, die noch Subspalten hat, oder sie kapselt die Informationen, die eine Spalte in einer CSV-Datei benötigt, also Name und die Informationen des CellKeys, aus dem sie konstruiert wurde, die benötigt werden, um die Inhalte von Datensätzen ermitteln zu können.
|
Modifier and Type | Field and Description |
---|---|
private AttributeGroup |
_attributeGroup
Jeder CSVManager kann nur für eine Attributgruppe verwendet werden, die schon im Konstruktor endgültig festgelegt wird.
|
private java.util.Map<CSVManager.CSVColumn,java.util.Map<DataTableObject.DataTableObjectId,java.lang.String>> |
_csvColumnToText
Enthält die CSV-Spalten als Schlüssel und als Wert je eine HashMap, die wiederum als Schlüssel eine Datensatzkennung enthält und als Wert den Text der Zelle.
|
private java.util.List<DataTableObject> |
_dataTableObjects
Enthält die benötigten Datensätze in der richtigen Reihenfolge
|
private java.lang.String |
_delimiter |
private java.util.Set<CellKey> |
_selectedCellKeys
Die im Konstruktor übergebene Menge selektierter CellkKeys bestimmt Spalten und diejenigen Einträge, die nicht leer sein können.
|
private static java.lang.String |
TIME_FORMAT
speichert das Zeitformat für die Spalte ‘Zeit’
|
Constructor and Description |
---|
CSVManager(AttributeGroup attributeGroup,
java.util.Set<CellKey> selectedCellKeys,
java.util.List<DataTableObject> dataTableObjects)
Jeder CSVManager kann nur für eine Attributgruppe verwendet werden, die nicht veränderbar ist.
|
Modifier and Type | Method and Description |
---|---|
private java.lang.String |
encodeForCSV(java.lang.String s) |
java.lang.String |
getCSVHeaderLine(boolean rowHeader)
Gibt die Titelzeile der CSV-Datei zurück.
|
private java.lang.StringBuffer |
getCSVLineForDataTableObject(DataTableObject dataTableObject,
boolean rowHeader) |
java.lang.String |
getCSVLines(boolean rowHeader)
Gibt die Zeilen der CSV-Datei, die die Inhalte enthalten, zurück.
|
private void |
initCSVColumns(java.util.Map<java.lang.String,DataTableObject> dataTableObjectMap) |
void |
setDelimiter(java.lang.String delimiter)
Setzt das Trennzeichen, das in der Header- und den Datenzeilen verwendet wird.
|
private java.lang.String _delimiter
private final AttributeGroup _attributeGroup
Jeder CSVManager kann nur für eine Attributgruppe verwendet werden, die schon im Konstruktor endgültig festgelegt wird.
private final java.util.Set<CellKey> _selectedCellKeys
Die im Konstruktor übergebene Menge selektierter CellkKeys bestimmt Spalten und diejenigen Einträge, die nicht leer sein können.
private final java.util.List<DataTableObject> _dataTableObjects
Enthält die benötigten Datensätze in der richtigen Reihenfolge
private final java.util.Map<CSVManager.CSVColumn,java.util.Map<DataTableObject.DataTableObjectId,java.lang.String>> _csvColumnToText
Enthält die CSV-Spalten als Schlüssel und als Wert je eine HashMap, die wiederum als Schlüssel eine Datensatzkennung enthält und als Wert den Text der Zelle.
private static final java.lang.String TIME_FORMAT
speichert das Zeitformat für die Spalte ‘Zeit’
public CSVManager(AttributeGroup attributeGroup, java.util.Set<CellKey> selectedCellKeys, java.util.List<DataTableObject> dataTableObjects)
Jeder CSVManager kann nur für eine Attributgruppe verwendet werden, die nicht veränderbar ist. Die übergebenen CellKeys werden als Filter benutzt, fall die Collection nicht null
ist. Die Inhalte der Datenzeilen werden den DataTableObjects entnommen werden.
attributeGroup
- die AttributgruppeselectedCellKeys
- die CellKeysdataTableObjects
- die DataTableObjectspublic java.lang.String getCSVHeaderLine(boolean rowHeader)
Gibt die Titelzeile der CSV-Datei zurück. Ist der übergebene Wert true
, so werden auch die Spalten der Zeilenköpfe (Art, Zeit und Objekt) aufgeführt.
Wurde im Konstruktor eine von null
verschiedene Collection von CellKeys angegeben, so wirkt diese als Filter auf Spalten, Zeilen und Zellen. Für die Header-Zeile heißt dies: es treten nur Spalten auf, für die mindestens ein selektierter CellKey existiert.
public java.lang.String getCSVLines(boolean rowHeader)
Gibt die Zeilen der CSV-Datei, die die Inhalte enthalten, zurück. Ist der übergebene Wert true
, so werden auch die Inhalte der Zeilenköpfe (Art, Zeit und Objekt) aufgeführt.
Wurde im Konstruktor eine von null
verschiedene Collection von CellKeys angegeben, so wirkt diese als Filter auf Spalten, Zeilen und Zellen. Für die Datenzeilen heißt dies, dass nur die Inhalte von Zellen mit selektierten CellKeys ausgegeben werden, und dass leere Spalten und leere Zeilen gar nicht ausgeben werden.
public void setDelimiter(java.lang.String delimiter)
Setzt das Trennzeichen, das in der Header- und den Datenzeilen verwendet wird.
delimiter
- private void initCSVColumns(java.util.Map<java.lang.String,DataTableObject> dataTableObjectMap)
private java.lang.String encodeForCSV(java.lang.String s)
private java.lang.StringBuffer getCSVLineForDataTableObject(DataTableObject dataTableObject, boolean rowHeader)