001: /*
002: * $Header: /cvsroot/webman-cms/source/webman/com/teamkonzept/field/TKFieldTableIterator.java,v 1.6 2000/06/01 15:02:54 alex Exp $
003: *
004: */
005: /**
006: * Die Zellen einer Tabelle beinhalten jeweils das gleiche BaseField.
007: * Dies gilt auch fuer die Zusatz-Zeile/Spalte.
008: *
009: * Folgende Moeglichkeiten bestehen:
010: * 1. Anlegen von Tabellen variabler Groesse
011: * 2. Anlegen von einer Zeile/Spalte, die Zusatzinformationen enthalten
012: * 3. Auswahl der Inhalte (Fields) der Zellen
013: * 4. Auswahl der Inhalte (Fields) der Zusatzz-Zeilen/Spalten
014: * 5. Anzeigen der Tabelle
015: * 6. Das modifizieren der Tabelle selbst
016: * - Loeschen von Zeilen/Spalten
017: * - Einfuegen von Zeilen/Spalten
018: * - Vertauschen von Zeilen/Spalten
019: * 7. Speichern aller Daten in die Datenbank
020: * 8. Speichern aller Strukturinformationen in die Datenbank
021: *
022: * Um Verwechselungen zu vermeiden:
023: *
024: * --------------------------------
025: * | Col-Zusatz-Vektor |
026: * --------------------------------
027: * ------
028: * | Row- |
029: * | zu- |
030: * | satz | TABELLE
031: * | vek- |
032: * | tor |
033: * | |
034: * ------
035: */package com.teamkonzept.field;
036:
037: import com.teamkonzept.lib.*;
038: import com.teamkonzept.web.*;
039:
040: public class TKFieldTableIterator implements TKListIterator {
041:
042: TKListIterator oldIterator;
043: String listOuterName;
044: String listInnerName;
045: String listRowForInfo;
046: TKFieldTableRealData dataClass; //interne repraesentation!!
047: TKBaseField contentField;
048: TKBaseField rowField;
049: TKBaseField colField;
050: String prefix;
051: int outerIndex;
052: String merkePrefix;
053:
054: TKFieldTable fieldTableObject;
055:
056: public TKFieldTableIterator(TKFieldTableRealData dataClass,
057: TKBaseField contentField, TKBaseField rowField,
058: TKBaseField colField, String prefix,
059: TKListIterator oldIterator, String listOuterName,
060: String listInnerName, String listRowForInfo
061:
062: ) {
063: this .oldIterator = oldIterator;
064: this .contentField = contentField;
065: this .rowField = rowField;
066: this .colField = colField;
067: this .listOuterName = listOuterName;
068: this .listInnerName = listInnerName;
069: this .listRowForInfo = listRowForInfo;
070: this .dataClass = dataClass;
071: this .prefix = prefix;
072: this .outerIndex = 0;
073: }
074:
075: public boolean apply(TKTemplate t, int i, String currListName) {
076:
077: TKHTMLTemplate template = (TKHTMLTemplate) t;
078:
079: TKVector dataVector = (TKVector) dataClass.contentData;
080:
081: //---- Row mit den Infos ----//
082: if (currListName.equalsIgnoreCase(listRowForInfo)) {
083: TKVector colDataVector = dataClass.colData;
084: if ((colDataVector == null) || (i >= colDataVector.size()))
085: return false;
086: colField.fillIntoTemplate(template, colDataVector
087: .elementAt(i), prefix + TKFieldTable.PRE_COLS + "."
088: + i + ".");
089: return true;
090: }
091: //---- Aeussere Liste und Schleife ----//
092: else if (currListName.equalsIgnoreCase(listOuterName)) {
093: if ((dataVector == null) || (i >= dataVector.size()))
094: return false;
095: outerIndex = i;
096:
097: String prefixHelp = prefix + TKFieldTable.MODIFY_ROW + "."
098: + outerIndex + ".";
099: t.set("PREFIX_ROW", prefixHelp);
100:
101: TKVector rowDataVector = dataClass.rowData;
102: if ((rowDataVector != null) && (rowDataVector.size() > 0)) {
103: rowField.fillIntoTemplate(template, rowDataVector
104: .elementAt(outerIndex), prefix
105: + TKFieldTable.PRE_ROWS + "." + outerIndex
106: + ".");
107: }
108: return true;
109:
110: }
111: //---- Innere Liste ----//
112: else if (currListName.equalsIgnoreCase(listInnerName)) {
113: if (dataVector == null)
114: return false;
115:
116: TKVector dataRow = (TKVector) dataVector.get(outerIndex);
117: if (i >= dataRow.size())
118: return false;
119:
120: contentField.fillIntoTemplate(template, dataRow.get(i),
121: prefix + outerIndex + "." + i + ".");
122: return true;
123: } else if (oldIterator != null) {
124: return oldIterator.apply(template, i, currListName);
125: } else {
126: return false;
127: }
128: }
129: //{{DECLARE_CONTROLS
130: //}}
131: }//end class
|