comparison artifacts/doc/datacage_ref_de.rst @ 7401:bbf758e594bb

Datacage reference doc: Explain dc:container-context and dc:properties.
author Sascha L. Teichmann <teichmann@intevation.de>
date Mon, 21 Oct 2013 12:22:40 +0200
parents dd87e0a5f83c
children 99312d2b4a20
comparison
equal deleted inserted replaced
7400:dd87e0a5f83c 7401:bbf758e594bb
140 werden übernommen und später beim Auffalten des Datensatzes benutzt. 140 werden übernommen und später beim Auffalten des Datensatzes benutzt.
141 141
142 ``dc:container-context`` Tabellarische Daten aus der Programm-Umgebung 142 ``dc:container-context`` Tabellarische Daten aus der Programm-Umgebung
143 ...................................................................... 143 ......................................................................
144 144
145 **TODO** 145 .. code:: xml
146 146
147 ``dc:properties`` **TODO** 147 <dc:container-context container="Container">
148 ...
149 </dc:container-context>
150
151 Dies spannt einen Kontext auf einem Container namens Container auf,
152 einer listen-ähnlichen Struktur, die als externe Datenquellen in
153 Form eines Java-Objekts an den Datenkorb übergeben werden kann.
154 Dies müssen Klassen sein, die das Interface ``java.util.Collection``
155 implementieren. Mit diesem Konstrukt ist es möglich, tabellarische
156 Ergebnisse von außen in die Auswertung des Datenkorbs zu integrieren.
157 Der Container muss hierfür über die Variable ``Container`` zur Verfügung
158 gestellt werden. Die Spalten des Tabelle werden über ``dc:properties``
159 definiert. Der Datensatz selbst kann wie gewohnt mittels ``dc:for-each``
160 realisiert werden.
161
162 ``dc:properties`` Spaltendefinitionen für externe Daten aus der Programm-Umgebung
163 .................................................................................
164
165 .. code:: xml
166
167 <dc:container-context container="Container">
168 <dc:properties>
169 <dc:property name="name" alias="alias"/>
170 </dc:properties>
171 </dc:container-context>
172
173 Muss innerhalb eines ``dc:container-context`` angegeben werden und enthält eine
174 Liste von Attributen der Java-Objekte, die in den Datenkorb eingeblendet werden sollen.
175 Die Auflösung der Namen auf der Java-Seite funktioniert nach Konvention von Java-Beans,
176 sprich aus ``name`` wird ``getName``. ``alias`` ist optional und weisst explizit einen
177 Spaltennamen aus. Dies entspricht im Wesentlichen einen 'AS' bei einem SQL-Statement.
178
179 Ein vollständigeres Beispiel könnte in etwa so aussehen.
180 Die Java-Seite:
181
182 .. code:: java
183
184 public class Car {
185
186 private String marke;
187 private String name;
188
189 public Car(String marke, String name) {
190 this.marke = marke;
191 this.name = name;
192 }
193
194 public String getMarke() {
195 return marke;
196 }
197
198 public String getName() {
199 return name;
200 }
201 }
202
203 // Liste befuellen.
204
205 java.util.Container<Car> container = new java.util.ArrayList<Car>();
206
207 container.add(new Car("Volvo", "V80"));
208 container.add(new Car("Ferrari", "Testarossa"));
209
210 // Dem Datenkorb uebergeben.
211
212 parameters.put("CARS", cars);
213
214 Das Datenkorb-Schnipsel
215
216 .. code:: xml
217
218 <dc:container-context container="cars">
219 <dc:properties>
220 <dc:property name="marke" alias="brand" />
221 <dc:property name="name" alias="type" />
222 </dc:properties>
223
224 <cars>
225 <dc:for-each>
226 <car type="$type" brand="$brand" />
227 </dc:for-each>
228 </cars>
229 </dc:container-context>
230
231 liefert dann folgende Ausgabe:
232
233 .. code:: xml
234
235 <cars>
236 <car type="V80" brand="Volvo" />
237 <car type="Testarossa" brand="Ferrari" />
238 </cars>
239
240
148 241
149 ``dc:virtual-column`` Virtuelle Spalten definieren 242 ``dc:virtual-column`` Virtuelle Spalten definieren
150 .................................................. 243 ..................................................
151 244
152 .. code:: xml 245 .. code:: xml

http://dive4elements.wald.intevation.org