View Javadoc

1   ////////////////////////////////////////////////////////////////////////////////
2   //CabaWeb
3   //Copyright (C) 2004  Thomas Vogt <Thomas.Vogt@TVC-Software.com>
4   //
5   //This library is free software; you can redistribute it and/or
6   //modify it under the terms of the GNU Lesser General Public
7   //License as published by the Free Software Foundation; either//version 2.1 of the License, or (at your option) any later version.
8   //
9   //This library is distributed in the hope that it will be useful,
10  //but WITHOUT ANY WARRANTY; without even the implied warranty of
11  //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  //Lesser General Public License for more details.
13  //
14  //You should have received a copy of the GNU Lesser General Public
15  //License along with this library; if not, write to the Free Software
16  //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  ////////////////////////////////////////////////////////////////////////////////
18  package org.fhw.cabaweb.export.xml;
19  
20  import java.sql.Date;
21  import java.text.SimpleDateFormat;
22  import java.util.ArrayList;
23  import java.util.Collection;
24  import java.util.Iterator;
25  import java.util.Properties;
26  
27  import org.apache.commons.logging.Log;
28  import org.apache.commons.logging.LogFactory;
29  import org.dom4j.Document;
30  import org.dom4j.DocumentHelper;
31  import org.dom4j.Element;
32  
33  import org.fhw.cabaweb.data.DataInterfaceErgebnissdaten;
34  import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenFeldbeschreibungen;
35  import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenFeldnamen;
36  import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenGruppierungsbeschreibungen;
37  import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenGruppierungsnamen;
38  import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenUntergruppierungsbeschreibungen;
39  import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenUntergruppierungsnamen;
40  import org.fhw.cabaweb.data.DataInterfaceProjektgruppen;
41  import org.fhw.cabaweb.data.DataInterfaceReporterzeugung;
42  import org.fhw.cabaweb.data.DataInterfaceReportnamen;
43  import org.fhw.cabaweb.data.dataobjects.Ergebniss;
44  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Feldbeschreibungen;
45  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Feldnamen;
46  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Gruppierungsbeschreibungen;
47  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Gruppierungsnamen;
48  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Untergruppierungsbeschreibungen;
49  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Untergruppierungsnamen;
50  import org.fhw.cabaweb.ojb.dataobjects.Projektgruppen;
51  import org.fhw.cabaweb.ojb.dataobjects.Reporterzeugung;
52  import org.fhw.cabaweb.ojb.dataobjects.Reportnamen;
53  import org.fhw.cabaweb.tools.StringUtilities;
54  
55  /***
56   * Die Klasse exportiert die in der Reporterzeugung festgelegten WErte in eine XML Datei.
57   *
58   * @author  <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
59   * @version Version 1.0 28.08.-11.09.2004
60   */
61  public class ExportReport
62  {
63      /*** Commons Logging Instanz */
64      private static Log log = LogFactory.getLog("org.fhw.cabaweb.export.xml.ExportReport");
65  
66      /***
67       * Default Konstruktor
68       */
69      public ExportReport()
70      {
71          super();
72      }
73  
74      /***
75       * Erzeugt ein XML Document f&uuml;r das entsprechende Projekt / Unternehmen / Quartal  / ...
76       *
77       * @param projektnummer Die Projektnummer
78       * @param gruppennummer Die Gruppennummer
79       * @param quartal       Das Quartal
80       * @param reportnummer  Die Reportnummer
81       * @param sprachnummer  Die Sprachnummer
82       * @return  XML (DOM4J) Document
83       */
84      public final static Document createDocument(Integer projektnummer, Integer gruppennummer, Integer quartal, Integer reportnummer, Integer sprachnummer)
85      {
86          if (log.isDebugEnabled())
87          {
88              log.debug(" Erzeuge XML Dokument ROOT");
89          }
90  
91          /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
92          DataInterfaceErgebnissdatenGruppierungsnamen dieg = new DataInterfaceErgebnissdatenGruppierungsnamen();
93          /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
94          DataInterfaceErgebnissdatenGruppierungsbeschreibungen diegb = new DataInterfaceErgebnissdatenGruppierungsbeschreibungen();
95  
96          /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
97          DataInterfaceErgebnissdatenUntergruppierungsnamen dieug = new DataInterfaceErgebnissdatenUntergruppierungsnamen();
98          /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
99          DataInterfaceErgebnissdatenUntergruppierungsbeschreibungen dieugb = new DataInterfaceErgebnissdatenUntergruppierungsbeschreibungen();
100 
101         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
102         DataInterfaceErgebnissdatenFeldnamen dief = new DataInterfaceErgebnissdatenFeldnamen();
103         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
104         DataInterfaceErgebnissdatenFeldbeschreibungen diefb = new DataInterfaceErgebnissdatenFeldbeschreibungen();
105 
106         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
107         DataInterfaceErgebnissdaten die = new DataInterfaceErgebnissdaten();
108 
109         Properties properties = StringUtilities.getPropertiesFromFile("cabaweb.properties");
110 
111         String urlDTD = properties.getProperty("URLReportDTD");
112 
113         Date datum = new Date(System.currentTimeMillis());
114         SimpleDateFormat dfd = new SimpleDateFormat("dd.MM.yyyy");
115         SimpleDateFormat dft = new SimpleDateFormat("HH:mm:ss");
116 
117         Document document = DocumentHelper.createDocument();
118         document.addDocType("report", null, urlDTD);
119         Element root = document.addElement("report");
120 
121         root.addAttribute("version", "1.0");
122         root.addAttribute("date", dfd.format(datum));
123         root.addAttribute("time", dft.format(datum));
124 
125         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
126         DataInterfaceReportnamen dirn = new DataInterfaceReportnamen();
127         Reportnamen reportname = (Reportnamen) dirn.sucheReportnummer(reportnummer);
128 
129         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
130         DataInterfaceReporterzeugung dir = new DataInterfaceReporterzeugung();
131         Collection reportlines = dir.sucheReportnummer(reportnummer);
132         Iterator reportlinesiterator = reportlines.iterator();
133 
134         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
135         DataInterfaceProjektgruppen dipg = new DataInterfaceProjektgruppen();
136         Projektgruppen projektgruppe = (Projektgruppen) dipg.sucheGruppennummer(gruppennummer);
137 
138         Element page = null;
139         Element section = null;
140         Element element = null;
141         Element name = null;
142         Element text = null;
143 
144         boolean sectionchange = true;
145         boolean start = true;
146 
147         if (log.isDebugEnabled())
148         {
149             log.debug(" Erzeuge XML Dokument INHALT");
150         }
151 
152         while (reportlinesiterator.hasNext())
153         {
154             Reporterzeugung reportline = (Reporterzeugung) reportlinesiterator.next();
155 
156             if (log.isDebugEnabled())
157             {
158                 log.debug(" + " + reportline.getReportnamen().getBezeichnung() + " (" + reportline.getPosition() + ")");
159             }
160 
161             if (start == true && reportname.getBezeichnung() != null)
162             {
163                 page = root.addElement("page").addAttribute("title", reportname.getBezeichnung()).addAttribute("project", projektgruppe.getProjekte().getProjektname()).addAttribute("group", gruppennummer.toString()).addAttribute("groupname", projektgruppe.getGruppenname().toString()).addAttribute("quarter", projektgruppe.getProjekte().getAktuellesQuartal().toString());
164                 start = false;
165             }
166             else if (start == true)
167             {
168                 page = root.addElement("page").addAttribute("title", "Seite").addAttribute("project", projektgruppe.getProjekte().getProjektname()).addAttribute("group", gruppennummer.toString()).addAttribute("groupname", projektgruppe.getGruppenname().toString()).addAttribute("quarter", projektgruppe.getProjekte().getAktuellesQuartal().toString());
169                 start = false;
170             }
171 
172             if (reportline.getGruppierungsname() != null && reportline.getGruppierungsname().compareTo("") != 0)
173             {
174                 if (log.isDebugEnabled())
175                 {
176                     log.debug("  - G  " + reportline.getGruppierungsname());
177                 }
178 
179                 Collection gruppierungsnamen = dieg.sucheGruppierungsname(projektnummer, reportline.getGruppierungsname());
180                 Iterator gruppierungsnameniterator = gruppierungsnamen.iterator();
181                 Ergebnissdaten_Gruppierungsnamen gruppierungsname = null;
182 
183                 if (gruppierungsnameniterator.hasNext())
184                 {
185                     gruppierungsname = (Ergebnissdaten_Gruppierungsnamen) gruppierungsnameniterator.next();
186                 }
187 
188                 Collection gruppierungsbeschreibungen = diegb.sucheKombination(projektnummer, gruppierungsname.getGruppierungsnummer(), sprachnummer);
189                 Iterator gruppierungsbeschreibungsiterator = gruppierungsbeschreibungen.iterator();
190                 Ergebnissdaten_Gruppierungsbeschreibungen gruppierungsbeschreibung = null;
191 
192                 if (gruppierungsbeschreibungsiterator.hasNext())
193                 {
194                     gruppierungsbeschreibung = (Ergebnissdaten_Gruppierungsbeschreibungen) gruppierungsbeschreibungsiterator.next();
195                 }
196 
197                 if (gruppierungsbeschreibung.getBeschreibung() != null && sectionchange)
198                 {
199                     section = page.addElement("section").addAttribute("title", gruppierungsbeschreibung.getKurzbeschreibung());
200                     element = section.addElement("element");
201                     name = element.addElement("name").addText(gruppierungsbeschreibung.getKurzbeschreibung());
202                     text = element.addElement("text").addAttribute("align", "center").addAttribute("style", "normal").addAttribute("weight", "bold").addAttribute("size", "0").addText(gruppierungsbeschreibung.getBeschreibung());
203                     sectionchange = false;
204                 }
205                 else if (sectionchange)
206                 {
207                     section = page.addElement("section").addAttribute("title", "Sektion");
208                     element = section.addElement("element");
209                     name = element.addElement("name").addText("Sektion");
210                     text = element.addElement("text").addAttribute("align", "center").addAttribute("style", "normal").addAttribute("weight", "bold").addAttribute("size", "0").addText("Sektion");
211                     sectionchange = false;
212                 }
213 
214                 Collection untergruppierungsnamen = dieug.sucheGruppierungsnummer(gruppierungsname.getGruppierungsnummer());
215                 Iterator untergruppierungsnameniterator = untergruppierungsnamen.iterator();
216 
217                 while (untergruppierungsnameniterator.hasNext())
218                 {
219                     Ergebnissdaten_Untergruppierungsnamen untergruppierungsname = (Ergebnissdaten_Untergruppierungsnamen) untergruppierungsnameniterator.next();
220 
221                     Collection unterggruppierungsbeschreibungen = dieugb.sucheKombination(projektnummer, gruppierungsname.getGruppierungsnummer(), untergruppierungsname.getUntergruppierungsnummer(), sprachnummer);
222                     Iterator unterggruppierungsbeschreibungsiterator = unterggruppierungsbeschreibungen.iterator();
223                     Ergebnissdaten_Untergruppierungsbeschreibungen unterggruppierungsbeschreibung = null;
224 
225                     if (unterggruppierungsbeschreibungsiterator.hasNext())
226                     {
227                         unterggruppierungsbeschreibung = (Ergebnissdaten_Untergruppierungsbeschreibungen) unterggruppierungsbeschreibungsiterator.next();
228                     }
229 
230                     if (unterggruppierungsbeschreibung.getBeschreibung() != null)
231                     {
232                         element = section.addElement("element");
233                         name = element.addElement("name").addText(untergruppierungsname.getUntergruppierungsname());
234                         text = element.addElement("text").addAttribute("align", "left").addAttribute("style", "normal").addAttribute("weight", "bold").addAttribute("size", "0").addText(unterggruppierungsbeschreibung.getBeschreibung());
235                     }
236                     else
237                     {
238                         element = section.addElement("element");
239                         name = element.addElement("name").addText("&Uuml;berschrift");
240                         text = element.addElement("text").addAttribute("align", "left").addAttribute("style", "normal").addAttribute("weight", "bold").addAttribute("size", "0").addText("");
241                     }
242 
243                     Collection ergebnisse = die.sucheKombination_Untergruppierung(projektnummer, gruppennummer, quartal, untergruppierungsname.getUntergruppierungsnummer());
244                     Iterator ergebnisiterator = ergebnisse.iterator();
245                     Ergebniss ergebnis = null;
246 
247                     while (ergebnisiterator.hasNext())
248                     {
249                         ergebnis = (Ergebniss) ergebnisiterator.next();
250 
251                         Collection feldbeschreibungen = diefb.sucheKombination(projektnummer, ergebnis.getFeldnummer(), ergebnis.getGruppierungsnummer(), ergebnis.getUntergruppierungsnummer(), sprachnummer);
252                         Iterator feldbeschreibungsiterator = feldbeschreibungen.iterator();
253                         Ergebnissdaten_Feldbeschreibungen feldbeschreibung = null;
254 
255                         if (feldbeschreibungsiterator.hasNext())
256                         {
257                             feldbeschreibung = (Ergebnissdaten_Feldbeschreibungen) feldbeschreibungsiterator.next();
258                         }
259 
260                         element = section.addElement("element");
261                         name = element.addElement("name").addText(ergebnis.getFeldname());
262                         text = element.addElement("text").addAttribute("align", "left").addAttribute("style", "normal").addAttribute("weight", "normal").addAttribute("size", "0").addText(feldbeschreibung.getKurzbeschreibung());
263                         Element contents = element.addElement("contents").addAttribute("align", "right").addAttribute("position", "right").addAttribute("style", "normal").addAttribute("weight", "normal").addAttribute("size", "0");
264                         contents.addElement("value").addText(ergebnis.getStringWert());
265                         if (reportline.getWertkennzeichenanzeigen() != null && reportline.getWertkennzeichenanzeigen().booleanValue() == true)
266                             contents.addElement("symbol").addText(feldbeschreibung.getGroessenkennzeichen().trim());
267                     }
268                 }
269             }
270             else if (reportline.getUntergruppierungsname() != null && reportline.getUntergruppierungsname().compareTo("") != 0)
271             {
272                 if (log.isDebugEnabled())
273                 {
274                     log.debug("  - UG " + reportline.getUntergruppierungsname());
275                 }
276 
277                 Collection untergruppierungsnamen = dieug.sucheUntergruppierungsname(projektnummer, reportline.getUntergruppierungsname());
278                 Iterator untergruppierungsnameniterator = untergruppierungsnamen.iterator();
279                 Ergebnissdaten_Untergruppierungsnamen untergruppierungsname = null;
280 
281                 if (untergruppierungsnameniterator.hasNext())
282                 {
283                     untergruppierungsname = (Ergebnissdaten_Untergruppierungsnamen) untergruppierungsnameniterator.next();
284                 }
285 
286                 Collection untergruppierungsbeschreibungen = null;
287                 Iterator untergruppierungbeschreibungsiterator = null;
288                 Ergebnissdaten_Untergruppierungsbeschreibungen untergruppierungsbeschreibung = null;
289 
290                 if (untergruppierungsname != null && untergruppierungsname.getErgebnissdaten_gruppierungsnamen() != null && untergruppierungsname.getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer() != null)
291                 {
292                     untergruppierungsbeschreibungen = dieugb.sucheKombination(projektnummer, untergruppierungsname.getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer(), untergruppierungsname.getUntergruppierungsnummer(), sprachnummer);
293                     untergruppierungbeschreibungsiterator = untergruppierungsbeschreibungen.iterator();
294 
295                     if (untergruppierungbeschreibungsiterator.hasNext())
296                     {
297                         untergruppierungsbeschreibung = (Ergebnissdaten_Untergruppierungsbeschreibungen) untergruppierungbeschreibungsiterator.next();
298                     }
299                 }
300 
301                 if (untergruppierungsbeschreibung.getBeschreibung() != null && sectionchange)
302                 {
303                     section = page.addElement("section").addAttribute("title", untergruppierungsbeschreibung.getBeschreibung());
304                     element = section.addElement("element");
305                     name = element.addElement("name").addText(untergruppierungsbeschreibung.getKurzbeschreibung());
306                     text = element.addElement("text").addAttribute("align", "center").addAttribute("style", "normal").addAttribute("weight", "bold").addAttribute("size", "0").addText(untergruppierungsbeschreibung.getBeschreibung());
307                     sectionchange = false;
308                 }
309                 else if (sectionchange)
310                 {
311                     section = page.addElement("section").addAttribute("title", "Sektion");
312                     element = section.addElement("element");
313                     name = element.addElement("name").addText(untergruppierungsbeschreibung.getKurzbeschreibung());
314                     text = element.addElement("text").addAttribute("align", "center").addAttribute("style", "normal").addAttribute("weight", "bold").addAttribute("size", "0").addText(untergruppierungsbeschreibung.getBeschreibung());
315                     sectionchange = false;
316                 }
317 
318                 Collection ergebnisse = die.sucheKombination_Untergruppierung(projektnummer, gruppennummer, quartal, untergruppierungsname.getUntergruppierungsnummer());
319                 Iterator ergebnisiterator = ergebnisse.iterator();
320                 Ergebniss ergebnis = null;
321 
322                 while (ergebnisiterator.hasNext())
323                 {
324                     ergebnis = (Ergebniss) ergebnisiterator.next();
325 
326                     Collection feldbeschreibungen = diefb.sucheKombination(projektnummer, ergebnis.getFeldnummer(), ergebnis.getGruppierungsnummer(), ergebnis.getUntergruppierungsnummer(), sprachnummer);
327                     Iterator feldbeschreibungsiterator = feldbeschreibungen.iterator();
328                     Ergebnissdaten_Feldbeschreibungen feldbeschreibung = null;
329 
330                     if (feldbeschreibungsiterator.hasNext())
331                     {
332                         feldbeschreibung = (Ergebnissdaten_Feldbeschreibungen) feldbeschreibungsiterator.next();
333                     }
334 
335                     element = section.addElement("element");
336                     name = element.addElement("name").addText(ergebnis.getFeldname());
337                     text = element.addElement("text").addAttribute("align", "left").addAttribute("style", "normal").addAttribute("weight", "normal").addAttribute("size", "0").addText(feldbeschreibung.getKurzbeschreibung());
338                     Element contents = element.addElement("contents").addAttribute("align", "right").addAttribute("position", "right").addAttribute("style", "normal").addAttribute("weight", "normal").addAttribute("size", "0");
339                     contents.addElement("value").addText(ergebnis.getStringWert());
340                     if (reportline.getWertkennzeichenanzeigen() != null && reportline.getWertkennzeichenanzeigen().booleanValue() == true)
341                         contents.addElement("symbol").addText(feldbeschreibung.getGroessenkennzeichen().trim());
342                 }
343             }
344             else if (reportline.getFeldname() != null && reportline.getFeldname().compareTo("") != 0)
345             {
346                 if (log.isDebugEnabled())
347                 {
348                     log.debug("  - F  " + reportline.getFeldname());
349                 }
350 
351                 Collection feldnamen = dief.sucheFeldnameBenutzer(projektnummer, reportline.getFeldname());
352                 Iterator feldnameniterator = feldnamen.iterator();
353                 Ergebnissdaten_Feldnamen feldname = null;
354 
355                 if (feldnameniterator.hasNext())
356                 {
357                     feldname = (Ergebnissdaten_Feldnamen) feldnameniterator.next();
358                 }
359 
360                 Ergebniss ergebnis = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, quartal, feldname.getFeldnummer());
361 
362                 Collection feldbeschreibungen = diefb.sucheKombination(projektnummer, ergebnis.getFeldnummer(), ergebnis.getGruppierungsnummer(), ergebnis.getUntergruppierungsnummer(), sprachnummer);
363                 Iterator feldbeschreibungsiterator = feldbeschreibungen.iterator();
364                 Ergebnissdaten_Feldbeschreibungen feldbeschreibung = null;
365 
366                 if (feldbeschreibungsiterator.hasNext())
367                 {
368                     feldbeschreibung = (Ergebnissdaten_Feldbeschreibungen) feldbeschreibungsiterator.next();
369                 }
370 
371                 String textalign = "left";
372                 if (reportline.getTextalign() != null)
373                     textalign = reportline.getTextalign();
374 
375                 String textstil = "normal";
376                 if (reportline.getTextstil() != null)
377                     textstil = reportline.getTextstil();
378 
379                 String textweight = "normal";
380                 if (reportline.getTextstil() != null)
381                     textweight = reportline.getTextstil();
382 
383                 if (textstil.compareTo("italic") != 0)
384                     textstil = "normal";
385 
386                 if (textweight.compareTo("bold") != 0)
387                     textweight = "normal";
388 
389                 String contentsalign = "right";
390                 if (reportline.getWertalign() != null)
391                     contentsalign = reportline.getWertalign();
392 
393                 String contentsposition = "right";
394                 if (reportline.getWertposition() != null)
395                     contentsposition = reportline.getWertposition();
396 
397                 String contentsstil = "normal";
398                 if (reportline.getWertstil() != null)
399                     contentsstil = reportline.getWertstil();
400 
401                 String contentsweight = "normal";
402                 if (reportline.getWertstil() != null)
403                     contentsweight = reportline.getWertstil();
404 
405                 if (contentsstil.compareTo("italic") != 0)
406                     contentsstil = "normal";
407 
408                 if (contentsweight.compareTo("bold") != 0)
409                     contentsweight = "normal";
410 
411                 String elementname = ergebnis.getFeldname();
412                 String elementtext = feldbeschreibung.getKurzbeschreibung();
413                 String elementwert = ergebnis.getStringWert();
414                 String elementsymbol = feldbeschreibung.getGroessenkennzeichen().trim();
415                 Element contents = null;
416                 Element value = null;
417                 Element symbol = null;
418 
419                 String remembersectiontitle = null;
420                 if(section != null)
421                 	remembersectiontitle = section.attributeValue("title");
422                 else
423                 	remembersectiontitle = null;
424 
425                 if (reportline.getWiederholung() != null && reportline.getWiederholung().booleanValue() == true)
426                 {
427                     if (reportline.getWiederholungstyp() != null && reportline.getWiederholungstyp().compareTo("Quartal") == 0)
428                     {
429                     	section = page.addElement("section").addAttribute("title", feldbeschreibung.getKurzbeschreibung()).addAttribute("quarter", quartal.toString()).addAttribute("group", "0").addAttribute("groupname", "Administration");
430 
431                     	elementname = feldbeschreibung.getKurzbeschreibung();
432                     	elementtext = feldbeschreibung.getBeschreibung();
433 
434                         element = section.addElement("element");
435                         name = element.addElement("name").addText(elementname);
436                         text = element.addElement("text").addAttribute("align", "center").addAttribute("style", "normal").addAttribute("weight", "bold").addAttribute("size", "0").addText(elementtext);
437 
438                     	section = page.addElement("section").addAttribute("title", feldbeschreibung.getKurzbeschreibung()).addAttribute("quarter", quartal.toString()).addAttribute("group", "0").addAttribute("groupname", "Administration");
439 
440                     	ArrayList lines = new ArrayList();
441                         lines.add(0, reportline);
442                     	
443                     	int i = 1;
444                         while (reportlinesiterator.hasNext())
445                         {
446                         	reportline = (Reporterzeugung) reportlinesiterator.next();
447                             
448                             if(reportline.getSektionende().equals(Boolean.TRUE) || reportline.getSeitenende().equals(Boolean.TRUE))
449                             {
450                             	lines.add(i, reportline);
451                             	break;
452                             }
453                             else
454                             {
455                             	lines.add(i, reportline);
456 	                            i++;
457                             }
458                         }
459 
460                     	elementname = "";
461                     	elementtext = "";
462 
463                         element = section.addElement("element");
464                         name = element.addElement("name").addText(elementname);
465                         text = element.addElement("text").addAttribute("align", textalign).addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(elementtext);
466 
467                         for(int j = 0; j < lines.size(); j++)
468                         {
469                         	reportline = (Reporterzeugung) lines.get(j);
470                         	
471                         	feldnamen = dief.sucheFeldnameBenutzer(projektnummer, reportline.getFeldname());
472                             feldnameniterator = feldnamen.iterator();
473                             feldname = null;
474                             
475                             if (feldnameniterator.hasNext())
476                             {
477                             	feldname = (Ergebnissdaten_Feldnamen) feldnameniterator.next();
478                             }
479 
480                             feldbeschreibungen = diefb.sucheKombination(projektnummer, feldname.getFeldnummer(), feldname.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer(), feldname.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsnummer(), sprachnummer);
481                             feldbeschreibungsiterator = feldbeschreibungen.iterator();
482                             feldbeschreibung = null;
483 
484                             if (feldbeschreibungsiterator.hasNext())
485                             {
486                                 feldbeschreibung = (Ergebnissdaten_Feldbeschreibungen) feldbeschreibungsiterator.next();
487                             }
488 
489                             if (reportline.getFeldbedingungstartquatal() != null && reportline.getFeldbedingungendquartal() != null)
490                             {
491                                 for (int quart = reportline.getFeldbedingungstartquatal().intValue(); quart <= reportline.getFeldbedingungendquartal().intValue(); quart++)
492                                 {
493                                    	elementname = "Quartal " + quart;
494                                 	elementtext = "Quartal " + quart;
495 
496                                     element = section.addElement("element");
497                                     name = element.addElement("name").addText(elementname);
498                                     text = element.addElement("text").addAttribute("align", "center").addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(elementtext);
499                                 }
500                             }
501                             else
502                             {
503                                 elementname = feldbeschreibung.getKurzbeschreibung();
504                             	elementtext = feldbeschreibung.getKurzbeschreibung();
505 
506                                 element = section.addElement("element");
507                                 name = element.addElement("name").addText(elementname);
508                                 text = element.addElement("text").addAttribute("align", "center").addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(elementtext);
509                             }
510                         }
511                         element.addAttribute("linebreak", "true");
512 
513                         Collection gruppen = dipg.sucheProjektnummer(projektnummer);
514                         Iterator gruppeniterator = gruppen.iterator();
515                         Projektgruppen grp = null;
516 
517                         while (gruppeniterator.hasNext())
518                         {
519                         	grp = (Projektgruppen) gruppeniterator.next();
520 
521                             if (grp.getAktiv().booleanValue() == false || grp.getGruppenname().compareTo("Default") == 0 || grp.getGruppenname().compareTo("Projektleiter") == 0 || grp.getGruppenname().compareTo("Administratorgruppe") == 0)
522                             	gruppeniterator.remove();
523                         }
524 
525                         gruppeniterator = gruppen.iterator();
526 
527                         while (gruppeniterator.hasNext())
528                         {
529                         	reportline = (Reporterzeugung) lines.get(0);
530                         	
531                         	feldnamen = dief.sucheFeldnameBenutzer(projektnummer, reportline.getFeldname());
532                             feldnameniterator = feldnamen.iterator();
533                             feldname = null;
534                             
535                             if (feldnameniterator.hasNext())
536                             {
537                             	feldname = (Ergebnissdaten_Feldnamen) feldnameniterator.next();
538                             }
539 
540                             feldbeschreibungen = diefb.sucheKombination(projektnummer, feldname.getFeldnummer(), feldname.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer(), feldname.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsnummer(), sprachnummer);
541                             feldbeschreibungsiterator = feldbeschreibungen.iterator();
542                             feldbeschreibung = null;
543 
544                             if (feldbeschreibungsiterator.hasNext())
545                             {
546                                 feldbeschreibung = (Ergebnissdaten_Feldbeschreibungen) feldbeschreibungsiterator.next();
547                             }
548 
549                             section = page.addElement("section").addAttribute("title", feldbeschreibung.getKurzbeschreibung()).addAttribute("quarter", quartal.toString()).addAttribute("group", "0").addAttribute("groupname", "Administration");
550                             
551                         	grp = (Projektgruppen) gruppeniterator.next();
552 
553                             elementname = grp.getGruppenname();
554                         	elementtext = grp.getGruppenname();
555 
556                             element = section.addElement("element");
557                             name = element.addElement("name").addText(elementname);
558                             text = element.addElement("text").addAttribute("align", "left").addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(elementtext);
559 
560                             for(int j = 0; j < lines.size(); j++)
561                             {
562                                 reportline = (Reporterzeugung) lines.get(j);
563                             	
564                                 feldnamen = dief.sucheFeldnameBenutzer(projektnummer, reportline.getFeldname());
565                                 feldnameniterator = feldnamen.iterator();
566                                 feldname = null;
567                                 
568                                 if (feldnameniterator.hasNext())
569                                 {
570                                     feldname = (Ergebnissdaten_Feldnamen) feldnameniterator.next();
571                                 }
572 
573                                 feldbeschreibungen = diefb.sucheKombination(projektnummer, feldname.getFeldnummer(), feldname.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer(), feldname.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsnummer(), sprachnummer);
574                                 feldbeschreibungsiterator = feldbeschreibungen.iterator();
575                                 feldbeschreibung = null;
576 
577                                 if (feldbeschreibungsiterator.hasNext())
578                                 {
579                                     feldbeschreibung = (Ergebnissdaten_Feldbeschreibungen) feldbeschreibungsiterator.next();
580                                 }
581 
582                                 if (reportline.getFeldbedingungstartquatal() != null && reportline.getFeldbedingungendquartal() != null)
583                                 {
584                                     for (int quart = reportline.getFeldbedingungstartquatal().intValue(); quart <= reportline.getFeldbedingungendquartal().intValue(); quart++)
585                                     {
586                                     	Ergebniss ergebnisI = (Ergebniss) die.sucheKombination_Feld(projektnummer, grp.getGruppennummer(), new Integer(quart), feldname.getFeldnummer());
587 
588                                         if(ergebnisI != null)
589                                         {
590                                             elementname = ergebnisI.getFeldname();
591                                             elementtext = feldbeschreibung.getKurzbeschreibung();
592                                             elementwert = ergebnisI.getStringWert();
593                                             elementsymbol = feldbeschreibung.getGroessenkennzeichen().trim();
594 
595                                             element = section.addElement("element");
596                                             name = element.addElement("name").addText(grp.getGruppenname().toString() + " Q" + quart);
597                                             text = element.addElement("text").addAttribute("align", textalign).addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(grp.getGruppenname().toString() + " Q" + quart);
598                                             if (reportline.getWertanzeigen() != null && reportline.getWertanzeigen().booleanValue() == true)
599                                             {
600                                                 contents = element.addElement("contents").addAttribute("align", contentsalign).addAttribute("position", contentsposition).addAttribute("style", contentsstil).addAttribute("weight", contentsweight).addAttribute("size", "0");
601                                                 value = contents.addElement("value").addText(elementwert);
602 
603                                                 if (reportline.getWertkennzeichenanzeigen() != null && reportline.getWertkennzeichenanzeigen().booleanValue() == true)
604                                                     symbol = contents.addElement("symbol").addText(elementsymbol);
605                                             }
606                                         }
607                                     }
608                                 }
609                                 else
610                                 {
611                                     Ergebniss ergebnisI = (Ergebniss) die.sucheKombination_Feld(projektnummer, grp.getGruppennummer(), grp.getProjekte().getAktuellesQuartal(), feldname.getFeldnummer());
612 
613                                     elementname = ergebnisI.getFeldname();
614                                     elementtext = feldbeschreibung.getKurzbeschreibung();
615                                     elementwert = ergebnisI.getStringWert();
616                                     elementsymbol = feldbeschreibung.getGroessenkennzeichen().trim();
617 
618                                     element = section.addElement("element");
619                                     name = element.addElement("name").addText(elementname);
620                                     text = element.addElement("text").addAttribute("align", textalign).addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(elementtext);
621                                     if (reportline.getWertanzeigen() != null && reportline.getWertanzeigen().booleanValue() == true)
622                                     {
623                                         contents = element.addElement("contents").addAttribute("align", contentsalign).addAttribute("position", contentsposition).addAttribute("style", contentsstil).addAttribute("weight", contentsweight).addAttribute("size", "0");
624                                         value = contents.addElement("value").addText(elementwert);
625 
626                                         if (reportline.getWertkennzeichenanzeigen() != null && reportline.getWertkennzeichenanzeigen().booleanValue() == true)
627                                             symbol = contents.addElement("symbol").addText(elementsymbol);
628                                     }
629                                 }
630                             }
631                             
632                             element.addAttribute("linebreak", "true");
633                         }
634                     }
635                     else if (reportline.getWiederholungstyp() != null && reportline.getWiederholungstyp().compareTo("Unternehmen") == 0)
636                     {
637                         Projektgruppen pg = (Projektgruppen) dipg.sucheGruppennummer(gruppennummer);
638                         if (pg.getAktiv().booleanValue() != false && pg.getProjekte().getAktiv().booleanValue() != false && pg.getGruppenname().compareTo("Projektleiter") != 0 && pg.getGruppenname().compareTo("Default") != 0 && pg.getGruppenname().compareTo("Administratorgruppe") != 0)
639                         {
640                             if (remembersectiontitle != null && sectionchange)
641                             {
642                                 section = page.addElement("section").addAttribute("title", remembersectiontitle).addAttribute("group", gruppennummer.toString()).addAttribute("groupname", projektgruppe.getGruppenname().toString());
643                                 sectionchange = false;
644                             }
645                             else if (sectionchange)
646                             {
647                                 section = page.addElement("section").addAttribute("title", "Sektion").addAttribute("group", gruppennummer.toString()).addAttribute("groupname", projektgruppe.getGruppenname().toString());
648                                 sectionchange = false;
649                             }
650                         }
651 
652                         if (reportline.getFeldbedingung() != null && reportline.getFeldbedingungtyp() != null && reportline.getFeldbedingungwert() != null)
653                         {
654                             ergebnis = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, quartal, reportline.getFeldbedingung());
655 
656                             Collection ergebnisse = die.sucheKombination_Feld(projektnummer, quartal, feldname.getFeldnummer());
657                             Iterator ergebnisiterator = ergebnisse.iterator();
658 
659                             while (ergebnisiterator.hasNext())
660                             {
661                                 Ergebniss test = (Ergebniss) ergebnisiterator.next();
662 
663                                 Projektgruppen testgruppe = (Projektgruppen) dipg.sucheGruppennummer(test.getGruppennummer());
664                                 if (testgruppe.getAktiv().booleanValue() == false || testgruppe.getProjekte().getAktiv().booleanValue() == false || testgruppe.getGruppenname().compareTo("Projektleiter") == 0 || testgruppe.getGruppenname().compareTo("Default") == 0 || testgruppe.getGruppenname().compareTo("Administratorgruppe") == 0)
665                                     ergebnisiterator.remove();
666                             }
667 
668                             ergebnisiterator = ergebnisse.iterator();
669 
670                             while (ergebnisiterator.hasNext())
671                             {
672                                 Ergebniss ergebnisI = (Ergebniss) ergebnisiterator.next();
673 
674                                 Iterator sectioniterator = page.elementIterator("section");
675 
676                                 while (sectioniterator.hasNext())
677                                 {
678                                     section = (Element) sectioniterator.next();
679 
680                                     if (section.attribute("group") != null && section.attribute("group").getStringValue().compareTo(ergebnisI.getGruppennummer().toString()) == 0)
681                                     {
682                                         break;
683                                     }
684 
685                                     section = null;
686                                 }
687 
688                                 if (reportline.getFeldbedingungtyp().compareTo("Double") == 0)
689                                 {
690                                     if (((Double) ergebnis.getObjectWert()).compareTo(new Double(reportline.getFeldbedingungwert())) == 0)
691                                     {
692                                         elementname = ergebnisI.getFeldname();
693                                         elementtext = feldbeschreibung.getKurzbeschreibung();
694                                         elementwert = ergebnisI.getStringWert();
695                                         elementsymbol = feldbeschreibung.getGroessenkennzeichen().trim();
696 
697                                         Projektgruppen ergebnisIprojektgruppe = (Projektgruppen) dipg.sucheGruppennummer(ergebnisI.getGruppennummer());
698 
699                                         if (section == null && remembersectiontitle != null)
700                                         {
701                                             section = page.addElement("section").addAttribute("title", remembersectiontitle).addAttribute("group", ergebnisI.getGruppennummer().toString()).addAttribute("groupname", ergebnisIprojektgruppe.getGruppenname().toString());
702                                         }
703                                         else if (section == null && remembersectiontitle == null)
704                                         {
705                                             section = page.addElement("section").addAttribute("title", "").addAttribute("group", ergebnisI.getGruppennummer().toString()).addAttribute("groupname", ergebnisIprojektgruppe.getGruppenname().toString());
706                                         }
707 
708                                         element = section.addElement("element");
709                                         name = element.addElement("name").addText(elementname);
710                                         text = element.addElement("text").addAttribute("align", textalign).addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(elementtext);
711                                         if (reportline.getWertanzeigen() != null && reportline.getWertanzeigen().booleanValue() == true)
712                                         {
713                                             contents = element.addElement("contents").addAttribute("align", contentsalign).addAttribute("position", contentsposition).addAttribute("style", contentsstil).addAttribute("weight", contentsweight).addAttribute("size", "0");
714                                             value = contents.addElement("value").addText(elementwert);
715 
716                                             if (reportline.getWertkennzeichenanzeigen() != null && reportline.getWertkennzeichenanzeigen().booleanValue() == true)
717                                                 symbol = contents.addElement("symbol").addText(elementsymbol);
718                                         }
719                                     }
720                                 }
721                                 else if (reportline.getFeldbedingungtyp().compareTo("Integer") == 0)
722                                 {
723                                     if (((Integer) ergebnis.getObjectWert()).compareTo(new Integer(reportline.getFeldbedingungwert())) >= 0)
724                                     {
725                                         elementname = ergebnisI.getFeldname();
726                                         elementtext = feldbeschreibung.getKurzbeschreibung();
727                                         elementwert = ergebnisI.getStringWert();
728                                         elementsymbol = feldbeschreibung.getGroessenkennzeichen().trim();
729 
730                                         Projektgruppen ergebnisIprojektgruppe = (Projektgruppen) dipg.sucheGruppennummer(ergebnisI.getGruppennummer());
731 
732                                         if (section == null && remembersectiontitle != null)
733                                         {
734                                             section = page.addElement("section").addAttribute("title", remembersectiontitle).addAttribute("group", ergebnisI.getGruppennummer().toString()).addAttribute("groupname", ergebnisIprojektgruppe.getGruppenname().toString());
735                                         }
736                                         else if (section == null && remembersectiontitle == null)
737                                         {
738                                             section = page.addElement("section").addAttribute("title", "").addAttribute("group", ergebnisI.getGruppennummer().toString()).addAttribute("groupname", ergebnisIprojektgruppe.getGruppenname().toString());
739                                         }
740 
741                                         element = section.addElement("element");
742                                         name = element.addElement("name").addText(elementname);
743                                         text = element.addElement("text").addAttribute("align", textalign).addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(elementtext);
744                                         if (reportline.getWertanzeigen() != null && reportline.getWertanzeigen().booleanValue() == true)
745                                         {
746                                             contents = element.addElement("contents").addAttribute("align", contentsalign).addAttribute("position", contentsposition).addAttribute("style", contentsstil).addAttribute("weight", contentsweight).addAttribute("size", "0");
747                                             value = contents.addElement("value").addText(elementwert);
748 
749                                             if (reportline.getWertkennzeichenanzeigen() != null && reportline.getWertkennzeichenanzeigen().booleanValue() == true)
750                                                 symbol = contents.addElement("symbol").addText(elementsymbol);
751                                         }
752                                     }
753                                 }
754                             }
755                         }
756                         else
757                         {
758                             Collection ergebnisse = die.sucheKombination_Feld(projektnummer, quartal, feldname.getFeldnummer());
759                             Iterator ergebnisiterator = ergebnisse.iterator();
760 
761                             while (ergebnisiterator.hasNext())
762                             {
763                                 Ergebniss test = (Ergebniss) ergebnisiterator.next();
764 
765                                 Projektgruppen testgruppe = (Projektgruppen) dipg.sucheGruppennummer(test.getGruppennummer());
766                                 if (testgruppe.getAktiv().booleanValue() == false || testgruppe.getProjekte().getAktiv().booleanValue() == false || testgruppe.getGruppenname().compareTo("Projektleiter") == 0 || testgruppe.getGruppenname().compareTo("Default") == 0 || testgruppe.getGruppenname().compareTo("Administratorgruppe") == 0)
767                                     ergebnisiterator.remove();
768                             }
769 
770                             ergebnisiterator = ergebnisse.iterator();
771 
772                             while (ergebnisiterator.hasNext())
773                             {
774                                 Ergebniss ergebnisI = (Ergebniss) ergebnisiterator.next();
775 
776                                 Iterator sectioniterator = page.elementIterator("section");
777 
778                                 while (sectioniterator.hasNext())
779                                 {
780                                     section = (Element) sectioniterator.next();
781 
782                                     if (section.attribute("group") != null && section.attribute("group").getStringValue().compareTo(ergebnisI.getGruppennummer().toString()) == 0)
783                                     {
784                                         break;
785                                     }
786 
787                                     section = null;
788                                 }
789 
790                                 elementname = ergebnisI.getFeldname();
791                                 elementtext = feldbeschreibung.getKurzbeschreibung();
792                                 elementwert = ergebnisI.getStringWert();
793                                 elementsymbol = feldbeschreibung.getGroessenkennzeichen().trim();
794 
795                                 Projektgruppen ergebnisIprojektgruppe = (Projektgruppen) dipg.sucheGruppennummer(ergebnisI.getGruppennummer());
796 
797                                 if (section == null && remembersectiontitle != null)
798                                 {
799                                     section = page.addElement("section").addAttribute("title", remembersectiontitle).addAttribute("group", ergebnisI.getGruppennummer().toString()).addAttribute("groupname", ergebnisIprojektgruppe.getGruppenname().toString());
800                                 }
801                                 else if (section == null && remembersectiontitle == null)
802                                 {
803                                     section = page.addElement("section").addAttribute("title", "").addAttribute("group", ergebnisI.getGruppennummer().toString()).addAttribute("groupname", ergebnisIprojektgruppe.getGruppenname().toString());
804                                 }
805 
806                                 element = section.addElement("element");
807                                 name = element.addElement("name").addText(elementname);
808                                 text = element.addElement("text").addAttribute("align", textalign).addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(elementtext);
809                                 if (reportline.getWertanzeigen() != null && reportline.getWertanzeigen().booleanValue() == true)
810                                 {
811                                     contents = element.addElement("contents").addAttribute("align", contentsalign).addAttribute("position", contentsposition).addAttribute("style", contentsstil).addAttribute("weight", contentsweight).addAttribute("size", "0");
812                                     value = contents.addElement("value").addText(elementwert);
813 
814                                     if (reportline.getWertkennzeichenanzeigen() != null && reportline.getWertkennzeichenanzeigen().booleanValue() == true)
815                                         symbol = contents.addElement("symbol").addText(elementsymbol);
816                                 }
817                             }
818                         }
819                     }
820                     else if (reportline.getWiederholungstyp() != null && reportline.getWiederholungstyp().compareTo("Beides") == 0)
821                     {
822                         Projektgruppen pg = (Projektgruppen) dipg.sucheGruppennummer(gruppennummer);
823                         if (pg.getAktiv().booleanValue() != false && pg.getProjekte().getAktiv().booleanValue() != false && pg.getGruppenname().compareTo("Projektleiter") != 0 && pg.getGruppenname().compareTo("Default") != 0 && pg.getGruppenname().compareTo("Administratorgruppe") != 0)
824                         {
825                             if (remembersectiontitle != null && sectionchange)
826                             {
827                                 section = page.addElement("section").addAttribute("title", remembersectiontitle).addAttribute("group", gruppennummer.toString()).addAttribute("groupname", projektgruppe.getGruppenname().toString()).addAttribute("quarter", quartal.toString());
828                                 sectionchange = false;
829                             }
830                             else if (sectionchange)
831                             {
832                                 section = page.addElement("section").addAttribute("title", "Sektion").addAttribute("group", gruppennummer.toString()).addAttribute("groupname", projektgruppe.getGruppenname().toString()).addAttribute("quarter", quartal.toString());
833                                 sectionchange = false;
834                             }
835                         }
836 
837                         if (reportline.getFeldbedingung() != null && reportline.getFeldbedingungtyp() != null && reportline.getFeldbedingungwert() != null && reportline.getFeldbedingungstartquatal() != null && reportline.getFeldbedingungendquartal() != null)
838                         {
839                             for (int quart = reportline.getFeldbedingungstartquatal().intValue(); quart <= reportline.getFeldbedingungendquartal().intValue(); quart++)
840                             {
841                                 ergebnis = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, new Integer(quart), reportline.getFeldbedingung());
842 
843                                 Collection ergebnisse = die.sucheKombination_Feld(projektnummer, new Integer(quart), feldname.getFeldnummer());
844                                 Iterator ergebnisiterator = ergebnisse.iterator();
845 
846                                 while (ergebnisiterator.hasNext())
847                                 {
848                                     Ergebniss test = (Ergebniss) ergebnisiterator.next();
849 
850                                     Projektgruppen testgruppe = (Projektgruppen) dipg.sucheGruppennummer(test.getGruppennummer());
851                                     if (testgruppe.getAktiv().booleanValue() == false || testgruppe.getProjekte().getAktiv().booleanValue() == false || testgruppe.getGruppenname().compareTo("Projektleiter") == 0 || testgruppe.getGruppenname().compareTo("Default") == 0 || testgruppe.getGruppenname().compareTo("Administratorgruppe") == 0)
852                                         ergebnisiterator.remove();
853                                 }
854 
855                                 ergebnisiterator = ergebnisse.iterator();
856 
857                                 while (ergebnisiterator.hasNext())
858                                 {
859                                     Ergebniss ergebnisI = (Ergebniss) ergebnisiterator.next();
860 
861                                     Iterator sectioniterator = page.elementIterator("section");
862 
863                                     while (sectioniterator.hasNext())
864                                     {
865                                         section = (Element) sectioniterator.next();
866 
867                                         if (section.attribute("group") != null && section.attribute("group").getStringValue().compareTo(ergebnisI.getGruppennummer().toString()) == 0 && section.attribute("quarter") != null && section.attribute("quarter").getStringValue().compareTo(ergebnisI.getQuartal().toString()) == 0)
868                                         {
869                                             break;
870                                         }
871 
872                                         section = null;
873                                     }
874 
875                                     if (reportline.getFeldbedingungtyp().compareTo("Double") == 0)
876                                     {
877                                         if (((Double) ergebnis.getObjectWert()).compareTo(new Double(reportline.getFeldbedingungwert())) == 0)
878                                         {
879                                             elementname = ergebnisI.getFeldname();
880                                             elementtext = feldbeschreibung.getKurzbeschreibung();
881                                             elementwert = ergebnisI.getStringWert();
882                                             elementsymbol = feldbeschreibung.getGroessenkennzeichen().trim();
883 
884                                             Projektgruppen ergebnisIprojektgruppe = (Projektgruppen) dipg.sucheGruppennummer(ergebnisI.getGruppennummer());
885 
886                                             if (section == null && remembersectiontitle != null)
887                                             {
888                                                 section = page.addElement("section").addAttribute("title", remembersectiontitle).addAttribute("group", ergebnisI.getGruppennummer().toString()).addAttribute("groupname", ergebnisIprojektgruppe.getGruppenname().toString()).addAttribute("quarter", ergebnisI.getQuartal().toString());
889                                             }
890                                             else if (section == null && remembersectiontitle == null)
891                                             {
892                                                 section = page.addElement("section").addAttribute("title", "").addAttribute("group", ergebnisI.getGruppennummer().toString()).addAttribute("groupname", ergebnisIprojektgruppe.getGruppenname().toString()).addAttribute("quarter", ergebnisI.getQuartal().toString());
893                                             }
894 
895                                             element = section.addElement("element");
896                                             name = element.addElement("name").addText(elementname);
897                                             text = element.addElement("text").addAttribute("align", textalign).addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(elementtext);
898                                             if (reportline.getWertanzeigen() != null && reportline.getWertanzeigen().booleanValue() == true)
899                                             {
900                                                 contents = element.addElement("contents").addAttribute("align", contentsalign).addAttribute("position", contentsposition).addAttribute("style", contentsstil).addAttribute("weight", contentsweight).addAttribute("size", "0");
901                                                 value = contents.addElement("value").addText(elementwert);
902 
903                                                 if (reportline.getWertkennzeichenanzeigen() != null && reportline.getWertkennzeichenanzeigen().booleanValue() == true)
904                                                     symbol = contents.addElement("symbol").addText(elementsymbol);
905                                             }
906                                         }
907                                     }
908                                     else if (reportline.getFeldbedingungtyp().compareTo("Integer") == 0)
909                                     {
910                                         if (((Integer) ergebnis.getObjectWert()).compareTo(new Integer(reportline.getFeldbedingungwert())) >= 0)
911                                         {
912                                             elementname = ergebnisI.getFeldname();
913                                             elementtext = feldbeschreibung.getKurzbeschreibung();
914                                             elementwert = ergebnisI.getStringWert();
915                                             elementsymbol = feldbeschreibung.getGroessenkennzeichen().trim();
916 
917                                             Projektgruppen ergebnisIprojektgruppe = (Projektgruppen) dipg.sucheGruppennummer(ergebnisI.getGruppennummer());
918 
919                                             if (section == null && remembersectiontitle != null)
920                                             {
921                                                 section = page.addElement("section").addAttribute("title", remembersectiontitle).addAttribute("group", ergebnisI.getGruppennummer().toString()).addAttribute("groupname", ergebnisIprojektgruppe.getGruppenname().toString()).addAttribute("quarter", ergebnisI.getQuartal().toString());
922                                             }
923                                             else if (section == null && remembersectiontitle == null)
924                                             {
925                                                 section = page.addElement("section").addAttribute("title", "").addAttribute("group", ergebnisI.getGruppennummer().toString()).addAttribute("groupname", ergebnisIprojektgruppe.getGruppenname().toString()).addAttribute("quarter", ergebnisI.getQuartal().toString());
926                                             }
927 
928                                             element = section.addElement("element");
929                                             name = element.addElement("name").addText(elementname);
930                                             text = element.addElement("text").addAttribute("align", textalign).addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(elementtext);
931                                             if (reportline.getWertanzeigen() != null && reportline.getWertanzeigen().booleanValue() == true)
932                                             {
933                                                 contents = element.addElement("contents").addAttribute("align", contentsalign).addAttribute("position", contentsposition).addAttribute("style", contentsstil).addAttribute("weight", contentsweight).addAttribute("size", "0");
934                                                 value = contents.addElement("value").addText(elementwert);
935 
936                                                 if (reportline.getWertkennzeichenanzeigen() != null && reportline.getWertkennzeichenanzeigen().booleanValue() == true)
937                                                     symbol = contents.addElement("symbol").addText(elementsymbol);
938                                             }
939                                         }
940                                     }
941                                 }
942                             }
943                         }
944                         else
945                         {
946                             Collection ergebnisse = die.sucheKombination_Feld(projektnummer, quartal, feldname.getFeldnummer());
947                             Iterator ergebnisiterator = ergebnisse.iterator();
948 
949                             while (ergebnisiterator.hasNext())
950                             {
951                                 Ergebniss test = (Ergebniss) ergebnisiterator.next();
952 
953                                 Projektgruppen testgruppe = (Projektgruppen) dipg.sucheGruppennummer(test.getGruppennummer());
954                                 if (testgruppe.getAktiv().booleanValue() == false || testgruppe.getProjekte().getAktiv().booleanValue() == false || testgruppe.getGruppenname().compareTo("Projektleiter") == 0 || testgruppe.getGruppenname().compareTo("Default") == 0 || testgruppe.getGruppenname().compareTo("Administratorgruppe") == 0)
955                                     ergebnisiterator.remove();
956                             }
957 
958                             ergebnisiterator = ergebnisse.iterator();
959 
960                             while (ergebnisiterator.hasNext())
961                             {
962                                 Ergebniss ergebnisI = (Ergebniss) ergebnisiterator.next();
963 
964                                 Iterator sectioniterator = page.elementIterator("section");
965 
966                                 while (sectioniterator.hasNext())
967                                 {
968                                     section = (Element) sectioniterator.next();
969 
970                                     if (section.attribute("group") != null && section.attribute("group").getStringValue().compareTo(ergebnisI.getGruppennummer().toString()) == 0 && section.attribute("quarter") != null && section.attribute("quarter").getStringValue().compareTo(ergebnisI.getQuartal().toString()) == 0)
971                                     {
972                                         break;
973                                     }
974 
975                                     section = null;
976                                 }
977 
978                                 elementname = ergebnisI.getFeldname();
979                                 elementtext = feldbeschreibung.getKurzbeschreibung();
980                                 elementwert = ergebnisI.getStringWert();
981                                 elementsymbol = feldbeschreibung.getGroessenkennzeichen().trim();
982 
983                                 Projektgruppen ergebnisIprojektgruppe = (Projektgruppen) dipg.sucheGruppennummer(ergebnisI.getGruppennummer());
984 
985                                 if (section == null && remembersectiontitle != null)
986                                 {
987                                     section = page.addElement("section").addAttribute("title", remembersectiontitle).addAttribute("group", ergebnisI.getGruppennummer().toString()).addAttribute("groupname", ergebnisIprojektgruppe.getGruppenname().toString()).addAttribute("quarter", ergebnisI.getQuartal().toString());
988                                 }
989                                 else if (section == null && remembersectiontitle == null)
990                                 {
991                                     section = page.addElement("section").addAttribute("title", "").addAttribute("group", ergebnisI.getGruppennummer().toString()).addAttribute("groupname", ergebnisIprojektgruppe.getGruppenname().toString()).addAttribute("quarter", ergebnisI.getQuartal().toString());
992                                 }
993 
994                                 element = section.addElement("element");
995                                 name = element.addElement("name").addText(elementname);
996                                 text = element.addElement("text").addAttribute("align", textalign).addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(elementtext);
997                                 if (reportline.getWertanzeigen() != null && reportline.getWertanzeigen().booleanValue() == true)
998                                 {
999                                     contents = element.addElement("contents").addAttribute("align", contentsalign).addAttribute("position", contentsposition).addAttribute("style", contentsstil).addAttribute("weight", contentsweight).addAttribute("size", "0");
1000                                     value = contents.addElement("value").addText(elementwert);
1001 
1002                                     if (reportline.getWertkennzeichenanzeigen() != null && reportline.getWertkennzeichenanzeigen().booleanValue() == true)
1003                                         symbol = contents.addElement("symbol").addText(elementsymbol);
1004                                 }
1005                             }
1006                         }
1007                     }
1008                 }
1009                 else
1010                 {
1011                     if (feldbeschreibung.getBeschreibung() != null && sectionchange)
1012                     {
1013                         section = page.addElement("section").addAttribute("title", feldbeschreibung.getBeschreibung());
1014                         sectionchange = false;
1015                     }
1016                     else if (sectionchange)
1017                     {
1018                         section = page.addElement("section").addAttribute("title", "Sektion");
1019                         sectionchange = false;
1020                     }
1021 
1022                     element = section.addElement("element");
1023                     name = element.addElement("name").addText(elementname);
1024                     text = element.addElement("text").addAttribute("align", textalign).addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(elementtext);
1025                     if (reportline.getWertanzeigen() != null && reportline.getWertanzeigen().booleanValue() == true)
1026                     {
1027                         contents = element.addElement("contents").addAttribute("align", contentsalign).addAttribute("position", contentsposition).addAttribute("style", contentsstil).addAttribute("weight", contentsweight).addAttribute("size", "0");
1028                         value = contents.addElement("value").addText(elementwert);
1029 
1030                         if (reportline.getWertkennzeichenanzeigen() != null && reportline.getWertkennzeichenanzeigen().booleanValue() == true)
1031                             symbol = contents.addElement("symbol").addText(elementsymbol);
1032                     }
1033                 }
1034             }
1035             else if (reportline.getText() != null && reportline.getText().compareTo("") != 0)
1036             {
1037                 if (log.isDebugEnabled())
1038                 {
1039                     log.debug("  - T  " + reportline.getText());
1040                 }
1041 
1042                 String textalign = "left";
1043                 if (reportline.getTextalign() != null)
1044                     textalign = reportline.getTextalign();
1045 
1046                 String textstil = "normal";
1047                 if (reportline.getTextstil() != null)
1048                     textstil = reportline.getTextstil();
1049 
1050                 String textweight = "normal";
1051                 if (reportline.getTextstil() != null)
1052                     textweight = reportline.getTextstil();
1053 
1054                 if (textstil.compareTo("italic") != 0)
1055                     textstil = "normal";
1056 
1057                 if (textweight.compareTo("bold") != 0)
1058                     textweight = "normal";
1059 
1060                 String remembersectiontitle = section.attributeValue("title");
1061 
1062                 if (sectionchange)
1063                 {
1064                     remembersectiontitle = reportline.getText();
1065                 }
1066 
1067                 if (reportline.getWiederholungstyp() != null && reportline.getWiederholungstyp().compareTo("Quartal") == 0)
1068                 {
1069                     Projektgruppen pg = (Projektgruppen) dipg.sucheGruppennummer(gruppennummer);
1070 
1071                     if (pg.getAktiv().booleanValue() != false && pg.getProjekte().getAktiv().booleanValue() != false && pg.getGruppenname().compareTo("Projektleiter") != 0 && pg.getGruppenname().compareTo("Default") != 0 && pg.getGruppenname().compareTo("Administratorgruppe") != 0)
1072                     {
1073                         if (remembersectiontitle != null && sectionchange)
1074                         {
1075                             section = page.addElement("section").addAttribute("title", remembersectiontitle).addAttribute("quarter", quartal.toString());
1076                             sectionchange = false;
1077                         }
1078                         else if (sectionchange)
1079                         {
1080                             section = page.addElement("section").addAttribute("title", "Sektion").addAttribute("quarter", quartal.toString());
1081                             sectionchange = false;
1082                         }
1083                     }
1084 
1085                     for (int quart = reportline.getFeldbedingungstartquatal().intValue(); quart <= reportline.getFeldbedingungendquartal().intValue(); quart++)
1086                     {
1087                         Iterator sectioniterator = page.elementIterator("section");
1088 
1089                         while (sectioniterator.hasNext())
1090                         {
1091                             section = (Element) sectioniterator.next();
1092 
1093                             if (section.attribute("quarter") != null && section.attribute("quarter").getStringValue().compareTo(quart + "") == 0)
1094                             {
1095                                 break;
1096                             }
1097 
1098                             section = null;
1099                         }
1100 
1101                         if (section == null && remembersectiontitle != null)
1102                         {
1103                             section = page.addElement("section").addAttribute("title", remembersectiontitle).addAttribute("quarter", quart + "");
1104                         }
1105                         else if (section == null && remembersectiontitle == null)
1106                         {
1107                             section = page.addElement("section").addAttribute("title", "").addAttribute("quarter", quart + "");
1108                         }
1109 
1110                         element = section.addElement("element");
1111                         name = element.addElement("name").addText(reportline.getText());
1112                         text = element.addElement("text").addAttribute("align", textalign).addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(reportline.getText());
1113                     }
1114                 }
1115                 else if (reportline.getWiederholungstyp() != null && reportline.getWiederholungstyp().compareTo("Unternehmen") == 0)
1116                 {
1117                     Projektgruppen pg = (Projektgruppen) dipg.sucheGruppennummer(gruppennummer);
1118 
1119                     if (pg.getAktiv().booleanValue() != false && pg.getProjekte().getAktiv().booleanValue() != false && pg.getGruppenname().compareTo("Projektleiter") != 0 && pg.getGruppenname().compareTo("Default") != 0 && pg.getGruppenname().compareTo("Administratorgruppe") != 0)
1120                     {
1121                         if (remembersectiontitle != null && sectionchange)
1122                         {
1123                             section = page.addElement("section").addAttribute("title", remembersectiontitle).addAttribute("group", gruppennummer.toString()).addAttribute("groupname", projektgruppe.getGruppenname().toString());
1124                             sectionchange = false;
1125                         }
1126                         else if (sectionchange)
1127                         {
1128                             section = page.addElement("section").addAttribute("title", "Sektion").addAttribute("group", gruppennummer.toString()).addAttribute("groupname", projektgruppe.getGruppenname().toString());
1129                             sectionchange = false;
1130                         }
1131                     }
1132 
1133                     Collection projektgruppen = dipg.sucheProjektnummer(projektnummer);
1134                     Iterator projektgruppeniterator = projektgruppen.iterator();
1135 
1136                     while (projektgruppeniterator.hasNext())
1137                     {
1138                         Projektgruppen testgruppe = (Projektgruppen) projektgruppeniterator.next();
1139 
1140                         if (testgruppe.getAktiv().booleanValue() == false || testgruppe.getProjekte().getAktiv().booleanValue() == false || testgruppe.getGruppenname().compareTo("Projektleiter") == 0 || testgruppe.getGruppenname().compareTo("Default") == 0 || testgruppe.getGruppenname().compareTo("Administratorgruppe") == 0)
1141                             projektgruppeniterator.remove();
1142                     }
1143 
1144                     projektgruppeniterator = projektgruppen.iterator();
1145 
1146                     while (projektgruppeniterator.hasNext())
1147                     {
1148 
1149                         Projektgruppen projektgruppeTemp = (Projektgruppen) projektgruppeniterator.next();
1150 
1151                         if (projektgruppeTemp.getAktiv().booleanValue() == true)
1152                         {
1153                             Iterator sectioniterator = page.elementIterator("section");
1154 
1155                             while (sectioniterator.hasNext())
1156                             {
1157                                 section = (Element) sectioniterator.next();
1158 
1159                                 if (section.attribute("group") != null && section.attribute("group").getStringValue().compareTo(projektgruppeTemp.getGruppennummer().toString()) == 0)
1160                                 {
1161                                     break;
1162                                 }
1163 
1164                                 section = null;
1165                             }
1166 
1167                             if (section == null && remembersectiontitle != null)
1168                             {
1169                                 section = page.addElement("section").addAttribute("title", remembersectiontitle).addAttribute("group", projektgruppeTemp.getGruppennummer().toString()).addAttribute("groupname", projektgruppeTemp.getGruppenname().toString());
1170                             }
1171                             else if (section == null && remembersectiontitle == null)
1172                             {
1173                                 section = page.addElement("section").addAttribute("title", "").addAttribute("group", projektgruppeTemp.getGruppennummer().toString()).addAttribute("groupname", projektgruppeTemp.getGruppenname().toString());
1174                             }
1175 
1176                             element = section.addElement("element");
1177                             name = element.addElement("name").addText(reportline.getText());
1178                             text = element.addElement("text").addAttribute("align", textalign).addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(reportline.getText());
1179                         }
1180                     }
1181                 }
1182                 else if (reportline.getWiederholungstyp() != null && reportline.getWiederholungstyp().compareTo("Beides") == 0)
1183                 {
1184                     Projektgruppen pg = (Projektgruppen) dipg.sucheGruppennummer(gruppennummer);
1185 
1186                     if (pg.getAktiv().booleanValue() != false && pg.getProjekte().getAktiv().booleanValue() != false && pg.getGruppenname().compareTo("Projektleiter") != 0 && pg.getGruppenname().compareTo("Default") != 0 && pg.getGruppenname().compareTo("Administratorgruppe") != 0)
1187                     {
1188                         if (remembersectiontitle != null && sectionchange)
1189                         {
1190                             section = page.addElement("section").addAttribute("title", remembersectiontitle).addAttribute("group", gruppennummer.toString()).addAttribute("groupname", projektgruppe.getGruppenname().toString()).addAttribute("quarter", quartal.toString());
1191                             sectionchange = false;
1192                         }
1193                         else if (sectionchange)
1194                         {
1195                             section = page.addElement("section").addAttribute("title", "Sektion").addAttribute("group", gruppennummer.toString()).addAttribute("groupname", projektgruppe.getGruppenname().toString()).addAttribute("quarter", quartal.toString());
1196                             sectionchange = false;
1197                         }
1198                     }
1199 
1200                     Collection projektgruppen = dipg.sucheProjektnummer(projektnummer);
1201                     Iterator projektgruppeniterator = projektgruppen.iterator();
1202 
1203                     while (projektgruppeniterator.hasNext())
1204                     {
1205                         Projektgruppen testgruppe = (Projektgruppen) projektgruppeniterator.next();
1206 
1207                         if (testgruppe.getAktiv().booleanValue() == false || testgruppe.getProjekte().getAktiv().booleanValue() == false || testgruppe.getGruppenname().compareTo("Projektleiter") == 0 || testgruppe.getGruppenname().compareTo("Default") == 0 || testgruppe.getGruppenname().compareTo("Administratorgruppe") == 0)
1208                             projektgruppeniterator.remove();
1209                     }
1210 
1211                     projektgruppeniterator = projektgruppen.iterator();
1212 
1213                     while (projektgruppeniterator.hasNext())
1214                     {
1215                         Projektgruppen projektgruppeTemp = (Projektgruppen) projektgruppeniterator.next();
1216 
1217                         if (projektgruppeTemp.getAktiv().booleanValue() == true)
1218                         {
1219                             for (int quart = reportline.getFeldbedingungstartquatal().intValue(); quart <= reportline.getFeldbedingungendquartal().intValue(); quart++)
1220                             {
1221                                 Iterator sectioniterator = page.elementIterator("section");
1222 
1223                                 while (sectioniterator.hasNext())
1224                                 {
1225                                     section = (Element) sectioniterator.next();
1226 
1227                                     if (section.attribute("group") != null && section.attribute("group").getStringValue().compareTo(projektgruppeTemp.getGruppennummer().toString()) == 0 && section.attribute("quarter") != null && section.attribute("quarter").getStringValue().compareTo(quart + "") == 0)
1228                                     {
1229                                         break;
1230                                     }
1231 
1232                                     section = null;
1233                                 }
1234 
1235                                 if (section == null && remembersectiontitle != null)
1236                                 {
1237                                     section = page.addElement("section").addAttribute("title", remembersectiontitle).addAttribute("group", projektgruppeTemp.getGruppennummer().toString()).addAttribute("groupname", projektgruppeTemp.getGruppenname().toString()).addAttribute("quarter", quart + "");
1238                                 }
1239                                 else if (section == null && remembersectiontitle == null)
1240                                 {
1241                                     section = page.addElement("section").addAttribute("title", "").addAttribute("group", projektgruppeTemp.getGruppennummer().toString()).addAttribute("groupname", projektgruppeTemp.getGruppenname().toString()).addAttribute("quarter", quart + "");
1242                                 }
1243 
1244                                 element = section.addElement("element");
1245                                 name = element.addElement("name").addText(reportline.getText());
1246                                 text = element.addElement("text").addAttribute("align", textalign).addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(reportline.getText());
1247                             }
1248                         }
1249                     }
1250                 }
1251                 else
1252                 {
1253                     if (sectionchange)
1254                     {
1255                         section = page.addElement("section").addAttribute("title", reportline.getText());
1256                         sectionchange = false;
1257                     }
1258 
1259                     element = section.addElement("element");
1260                     name = element.addElement("name").addText(reportline.getText());
1261                     text = element.addElement("text").addAttribute("align", textalign).addAttribute("style", textstil).addAttribute("weight", textweight).addAttribute("size", "0").addText(reportline.getText());
1262                 }
1263             }
1264 
1265             if (reportline.getSektionende() != null && reportline.getSektionende().booleanValue() == true)
1266             {
1267                 sectionchange = true;
1268             }
1269 
1270             if ((reportline.getSeitenende() != null && reportline.getSeitenende().booleanValue() == true) && reportname.getBezeichnung() != null)
1271             {
1272                 page = root.addElement("page").addAttribute("title", reportname.getBezeichnung()).addAttribute("project", reportname.getProjekte().getProjektname()).addAttribute("group", gruppennummer.toString()).addAttribute("groupname", projektgruppe.getGruppenname().toString()).addAttribute("quarter", quartal.toString());
1273             }
1274             else if ((reportline.getSeitenende() != null && reportline.getSeitenende().booleanValue() == true))
1275             {
1276                 page = root.addElement("page").addAttribute("title", "Seite").addAttribute("project", reportname.getProjekte().getProjektname()).addAttribute("group", gruppennummer.toString()).addAttribute("groupname", projektgruppe.getGruppenname().toString()).addAttribute("quarter", quartal.toString());
1277             }
1278         }
1279 
1280         if (log.isDebugEnabled())
1281         {
1282             log.debug(" Erzeugung XML Dokument abgeschlossen");
1283         }
1284 
1285         return document;
1286     }
1287 }