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
8   //version 2.1 of the License, or (at your option) any later version.
9   //
10  //This library is distributed in the hope that it will be useful,
11  //but WITHOUT ANY WARRANTY; without even the implied warranty of
12  //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  //Lesser General Public License for more details.
14  //
15  //You should have received a copy of the GNU Lesser General Public
16  //License along with this library; if not, write to the Free Software
17  //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  ////////////////////////////////////////////////////////////////////////////////
19  
20  package org.fhw.cabaweb.data;
21  
22  import java.lang.reflect.InvocationTargetException;
23  import java.text.DecimalFormat;
24  import java.util.ArrayList;
25  import java.util.Collection;
26  import java.util.Collections;
27  import java.util.Comparator;
28  import java.util.Iterator;
29  import java.util.Locale;
30  
31  import org.apache.commons.beanutils.PropertyUtils;
32  import org.apache.commons.logging.Log;
33  import org.apache.commons.logging.LogFactory;
34  import org.fhw.cabaweb.data.abstracts.AbstractDataInterface;
35  import org.fhw.cabaweb.data.dataobjects.Ergebniss;
36  import org.fhw.cabaweb.math.Common;
37  import org.fhw.cabaweb.ojb.dataobjects.Projektgruppen;
38  import org.fhw.cabaweb.ojb.dataobjects.Sprachen;
39  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Double;
40  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Feldbeschreibungen;
41  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Feldnamen;
42  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Gruppierungsnamen;
43  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Integer;
44  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Untergruppierungsnamen;
45  
46  /***
47   * Klasse f&uuml;r die Kapselung der Datenzugriffe auf die Double Ergebnissdaten
48   *
49   * @author  <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
50   * @version Version 1.0 25.07.2004
51   */
52  public class DataInterfaceErgebnissdaten extends AbstractDataInterface
53  {
54      /***
55       * The <code>Log</code> instance for this application.
56       */
57      private Log log = LogFactory.getLog("org.fhw.cabaweb.data");
58  
59      /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
60      private DataInterfaceErgebnissdatenFeldnamen diefn;
61      /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
62      private DataInterfaceErgebnissdatenFeldbeschreibungen diefb;
63      /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
64      private DataInterfaceErgebnissdatenGruppierungsnamen diegn;
65      /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
66      private DataInterfaceErgebnissdatenUntergruppierungsnamen dieugn;
67      /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
68      private DataInterfaceErgebnissdatenDouble died;
69      /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
70      private DataInterfaceErgebnissdatenInteger diei;
71      /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
72      private DataInterfaceProjektgruppen dipg;
73      /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
74      private DataInterfaceSprachen dis;
75  
76      /*** Konstruktor
77       *  benutzt den Konstruktor der Superklasse und initialisiert das useCase Objekt
78       */
79      public DataInterfaceErgebnissdaten()
80      {
81          super();
82      }
83  
84      /*** Konstruktor
85       *  benutzt den Konstruktor der Superklasse und initialisiert das useCase Objekt
86       *
87       * @param   locale Die Locale (Sprache)
88       */
89      public DataInterfaceErgebnissdaten(Locale locale)
90      {
91          super(locale);
92      }
93  
94      /***
95       *  @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#setUp()
96       */
97      protected final void setUp()
98      {
99          super.setUp();
100 
101         diefn = new DataInterfaceErgebnissdatenFeldnamen();
102         diefb = new DataInterfaceErgebnissdatenFeldbeschreibungen();
103         diegn = new DataInterfaceErgebnissdatenGruppierungsnamen();
104         dieugn = new DataInterfaceErgebnissdatenUntergruppierungsnamen();
105         died = new DataInterfaceErgebnissdatenDouble();
106         diei = new DataInterfaceErgebnissdatenInteger();
107         dipg = new DataInterfaceProjektgruppen();
108         dis = new DataInterfaceSprachen();
109     }
110 
111     /***
112      *  @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#tearDown()
113      */
114     protected final void tearDown()
115     {
116         super.tearDown();
117     }
118 
119     /***
120      * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#erzeugen(java.lang.Object)
121      * Findet hier keine Anwendung - Leerer Methoden-Stub
122      *
123      * Funktionen :
124      * @see org.fhw.cabaweb.data.DataInterfaceErgebnissdaten#editieren(java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.String)
125      *
126      * @return false
127      */
128     public boolean erzeugen(Object arg)
129     {
130         return false;
131     }
132 
133     /***
134      * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#editieren(java.lang.Object)
135      * Findet hier keine Anwendung - Leerer Methoden-Stub
136      *
137      * Funktionen :
138      * @see org.fhw.cabaweb.data.DataInterfaceErgebnissdaten#editieren(java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.String)
139      *
140      * @return false
141      */
142     public boolean editieren(Object arg)
143     {
144         return false;
145     }
146 
147     /***
148      * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#loeschen(java.lang.Object)
149      * Findet hier keine Anwendung - Leerer Methoden-Stub
150      *
151      * Funktionen :
152      * @see org.fhw.cabaweb.data.DataInterfaceErgebnissdaten#editieren(java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.String)
153      *
154      * @return false
155      */
156     public boolean loeschen(Object arg)
157     {
158         return false;
159     }
160 
161     /***
162      * Umsetzen der Daten des gelieferten Objects und Delegation der weiteren
163      * Verarbeitung an die OJB Klassen.
164      *
165      * @param   feldnummer    Die Feldnummer
166      * @param   gruppennummer Die Gruppennummer
167      * @param   quartal       Das Quartal
168      * @param   arg           Das als String gespeicherte Objekt das abgelelgt werden soll
169      * @return  Gibt true zurueck wenn der Vorgang erfolgreich abgeschlossen wurde, sonst false.
170      */
171     public boolean editieren(Integer feldnummer, Integer gruppennummer, Integer quartal, String arg)
172     {
173         boolean returnvalue = false;
174 
175         setUp();
176 
177         try
178         {
179             Ergebnissdaten_Feldnamen field = (Ergebnissdaten_Feldnamen) diefn.sucheFeldnummer(feldnummer);
180 
181             if (field != null)
182             {
183 
184                 Integer pn = field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer();
185 
186                 if (field.getTabellenname().compareTo("Ergebnissdaten_Double") == 0)
187                 {
188                     if (log.isDebugEnabled())
189                     {
190                         log.debug(" Projektnummer : " + pn);
191                         log.debug(" Gruppe        : " + gruppennummer);
192                         log.debug(" Quartal       : " + quartal);
193                         log.debug(" Inhalt        : " + arg);
194                     }
195 
196                     Collection lines = died.sucheKombination(pn, gruppennummer, quartal);
197                     Iterator lineiterator = lines.iterator();
198                     Ergebnissdaten_Double line = null;
199 
200                     if (lineiterator.hasNext())
201                     {
202                         line = (Ergebnissdaten_Double) lineiterator.next();
203                     }
204 
205                     if (line != null)
206                     {
207                         PropertyUtils.setProperty(line, field.getFeldname(), new Double((String) arg));
208 
209                         returnvalue = died.editieren(line);
210                     }
211                     else
212                     {
213                         line = new Ergebnissdaten_Double((Projektgruppen) dipg.sucheGruppennummer(gruppennummer), quartal);
214                         PropertyUtils.setProperty(line, field.getFeldname(), new Double((String) arg));
215 
216                         returnvalue = died.erzeugen(line);
217                     }
218                 }
219                 else if (field.getTabellenname().compareTo("Ergebnissdaten_Integer") == 0)
220                 {
221                     Collection lines = diei.sucheKombination(pn, gruppennummer, quartal);
222                     Iterator lineiterator = lines.iterator();
223                     Ergebnissdaten_Integer line = null;
224 
225                     if (lineiterator.hasNext())
226                     {
227                         line = (Ergebnissdaten_Integer) lineiterator.next();
228                     }
229 
230                     if (line != null)
231                     {
232                         PropertyUtils.setProperty(line, field.getFeldname(), new Integer((String) arg));
233 
234                         returnvalue = diei.editieren(line);
235                     }
236                     else
237                     {
238                         line = new Ergebnissdaten_Integer((Projektgruppen) dipg.sucheGruppennummer(gruppennummer), quartal);
239                         PropertyUtils.setProperty(line, field.getFeldname(), new Integer((String) arg));
240 
241                         returnvalue = diei.erzeugen(line);
242                     }
243                 }
244             }
245         }
246         catch (IllegalAccessException e)
247         {
248             log.error("IllegalAccessException");
249             log.error(e.getStackTrace());
250         }
251         catch (InvocationTargetException e)
252         {
253             log.error("InvocationTargetException");
254             log.error(e.getStackTrace());
255         }
256         catch (NoSuchMethodException e)
257         {
258             log.error("NoSuchMethodException");
259             log.error(e.getStackTrace());
260         }
261 
262         tearDown();
263 
264         return returnvalue;
265     }
266 
267     /***
268      * Sucht alle Ergebnissdaten anhand der Projektnummer
269      * und gibt alle in Frage kommenden Daten als Hashmap zurück
270      *
271      * @param   projektnummer    Die Projektnummer als Integer
272      * @param   gruppennummer    Die Gruppennummer
273      * @param   quartal          Das Quartal
274      * @return  Eine Hashmap aller Ergebnissdaten Daten mit den Feldnamen_Benutzer als HashMap Keys
275      */
276     public Collection sucheProjekt(Integer projektnummer, Integer gruppennummer, Integer quartal)
277     {
278         ArrayList resultat = new ArrayList();
279 
280         setUp();
281 
282         try
283         {
284             Collection fields = diefn.sucheProjektnummer(projektnummer);
285             Iterator iter = fields.iterator();
286             Ergebnissdaten_Feldnamen field = null;
287 
288             Collection line1c = died.sucheKombination(projektnummer, gruppennummer, quartal);
289             Collection line2c = diei.sucheKombination(projektnummer, gruppennummer, quartal);
290 
291             Ergebnissdaten_Double line1 = null;
292             Ergebnissdaten_Integer line2 = null;
293 
294             Iterator line1citerator = line1c.iterator();
295             Iterator line2citerator = line2c.iterator();
296 
297             Projektgruppen projektgruppe = null;
298 
299             if (line1citerator.hasNext())
300             {
301                 line1 = (Ergebnissdaten_Double) line1citerator.next();
302             }
303 
304             if (line2citerator.hasNext())
305             {
306                 line2 = (Ergebnissdaten_Integer) line2citerator.next();
307             }
308 
309             if (line1 == null || line2 == null)
310             {
311                 projektgruppe = (Projektgruppen) dipg.sucheGruppennummer(gruppennummer);
312                 boolean l1e = false;
313                 boolean l2e = false;
314 
315                 if (line1 == null)
316                 {
317                     l1e = diei.erzeugen(new Ergebnissdaten_Integer(projektgruppe, quartal));
318                 }
319                 if (line2 == null)
320                 {
321                     l2e = died.erzeugen(new Ergebnissdaten_Double(projektgruppe, quartal));
322                 }
323 
324                 if (l1e == true)
325                 {
326                     line1c = died.sucheKombination(projektnummer, gruppennummer, quartal);
327                     line1 = null;
328                     line1citerator = line1c.iterator();
329                     if (line1citerator.hasNext())
330                     {
331                         line1 = (Ergebnissdaten_Double) line1citerator.next();
332                     }
333                 }
334 
335                 if (l2e == true)
336                 {
337                     line2c = diei.sucheKombination(projektnummer, gruppennummer, quartal);
338                     line2 = null;
339                     line2citerator = line2c.iterator();
340                     if (line2citerator.hasNext())
341                     {
342                         line2 = (Ergebnissdaten_Integer) line2citerator.next();
343                     }
344                 }
345             }
346 
347             Sprachen sprache = null;
348             Collection sprachen = dis.sucheSprachname(this.locale.getDisplayLanguage());
349             Iterator sprachiterator = sprachen.iterator();
350 
351             if (sprachiterator.hasNext())
352             {
353                 sprache = (Sprachen) sprachiterator.next();
354             }
355 
356             if (log.isDebugEnabled())
357             {
358                 log.debug(" Found '" + fields.size() + "' Field names.");
359             }
360 
361             while (iter.hasNext())
362             {
363                 field = (Ergebnissdaten_Feldnamen) iter.next();
364 
365                 if (log.isDebugEnabled())
366                 {
367                     log.debug(" Field : '" + field.toString() + "'");
368                 }
369                 if (field != null && field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer().compareTo(projektnummer) == 0)
370                 {
371                     resultat.add(createErgebniss(field, line1, line2, sprache));
372                 }
373             }
374         }
375         catch (IllegalAccessException e)
376         {
377             log.error("IllegalAccessException");
378             log.error(e.getStackTrace());
379         }
380         catch (InvocationTargetException e)
381         {
382             log.error("InvocationTargetException");
383             log.error(e.getStackTrace());
384         }
385         catch (NoSuchMethodException e)
386         {
387             log.error("NoSuchMethodException");
388             log.error(e.getStackTrace());
389         }
390 
391         sortErgebniss(resultat);
392 
393         tearDown();
394 
395         return resultat;
396     }
397 
398     /***
399      * Sucht alle Ergebnissdaten anhand der Projektnummer und der Gruppierungsnummer
400      * und gibt alle in Frage kommenden Daten als Hashmap zurück
401      *
402      * @param   projektnummer    Die Projektnummer als Integer
403      * @param   gruppennummer    Die Gruppennummer
404      * @param   quartal          Das Quartal
405      * @param   gruppierungsnummer      Die Gruppierungsnummer
406      * @return  Eine Hashmap aller Ergebnissdaten Daten mit den Feldnamen_Benutzer als HashMap Keys
407      */
408     public Collection sucheKombination_Gruppierung(Integer projektnummer, Integer gruppennummer, Integer quartal, Integer gruppierungsnummer)
409     {
410         ArrayList resultat = new ArrayList();
411 
412         setUp();
413 
414         try
415         {
416             Collection fields = diefn.sucheGruppierungsnummer(gruppierungsnummer);
417             Iterator iter = fields.iterator();
418             Ergebnissdaten_Feldnamen field = null;
419 
420             Collection line1c = died.sucheKombination(projektnummer, gruppennummer, quartal);
421             Collection line2c = diei.sucheKombination(projektnummer, gruppennummer, quartal);
422 
423             Ergebnissdaten_Double line1 = null;
424             Ergebnissdaten_Integer line2 = null;
425 
426             Iterator line1citerator = line1c.iterator();
427             Iterator line2citerator = line2c.iterator();
428 
429             if (line1citerator.hasNext())
430             {
431                 line1 = (Ergebnissdaten_Double) line1citerator.next();
432             }
433 
434             if (line2citerator.hasNext())
435             {
436                 line2 = (Ergebnissdaten_Integer) line2citerator.next();
437             }
438 
439             if (line1 == null || line2 == null)
440             {
441                 Projektgruppen projektgruppe = (Projektgruppen) dipg.sucheGruppennummer(gruppennummer);
442                 boolean l1e = false;
443                 boolean l2e = false;
444 
445                 if (line1 == null)
446                 {
447                     l1e = diei.erzeugen(new Ergebnissdaten_Integer(projektgruppe, quartal));
448                 }
449                 if (line2 == null)
450                 {
451                     l2e = died.erzeugen(new Ergebnissdaten_Double(projektgruppe, quartal));
452                 }
453 
454                 if (l1e == true)
455                 {
456                     line1c = died.sucheKombination(projektnummer, gruppennummer, quartal);
457                     line1 = null;
458                     line1citerator = line1c.iterator();
459                     if (line1citerator.hasNext())
460                     {
461                         line1 = (Ergebnissdaten_Double) line1citerator.next();
462                     }
463                 }
464 
465                 if (l2e == true)
466                 {
467                     line2c = diei.sucheKombination(projektnummer, gruppennummer, quartal);
468                     line2 = null;
469                     line2citerator = line2c.iterator();
470                     if (line2citerator.hasNext())
471                     {
472                         line2 = (Ergebnissdaten_Integer) line2citerator.next();
473                     }
474                 }
475             }
476 
477             Sprachen sprache = null;
478             Collection sprachen = dis.sucheSprachname(this.locale.getDisplayLanguage());
479             Iterator sprachiterator = sprachen.iterator();
480 
481             if (sprachiterator.hasNext())
482             {
483                 sprache = (Sprachen) sprachiterator.next();
484             }
485 
486             if (log.isDebugEnabled())
487             {
488                 log.debug(" Found '" + fields.size() + "' Field names.");
489             }
490 
491             while (iter.hasNext())
492             {
493                 field = (Ergebnissdaten_Feldnamen) iter.next();
494 
495                 if (log.isDebugEnabled() && field != null)
496                 {
497                     log.debug(" Field : '" + field.toString() + "'");
498                 }
499 
500                 if (field != null && field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer().compareTo(projektnummer) == 0)
501                 {
502                     resultat.add(createErgebniss(field, line1, line2, sprache));
503                 }
504             }
505         }
506         catch (IllegalAccessException e)
507         {
508             log.error("IllegalAccessException");
509             log.error(e.getStackTrace());
510         }
511         catch (InvocationTargetException e)
512         {
513             log.error("InvocationTargetException");
514             log.error(e.getStackTrace());
515         }
516         catch (NoSuchMethodException e)
517         {
518             log.error("NoSuchMethodException");
519             log.error(e.getStackTrace());
520         }
521 
522         sortErgebniss(resultat);
523 
524         tearDown();
525 
526         return resultat;
527     }
528 
529     /***
530      * Sucht alle Ergebnissdaten anhand der Projektnummer und des Gruppierungsnamen
531      * und gibt alle in Frage kommenden Daten als Hashmap zurück
532      *
533      * @param   projektnummer    Die Projektnummer als Integer
534      * @param   gruppennummer    Die Gruppennummer
535      * @param   quartal          Das Quartal
536      * @param   gruppierungsname      Der Gruppierungsname
537      * @return  Eine Hashmap aller Ergebnissdaten Daten mit den Feldnamen_Benutzer als HashMap Keys
538      */
539     public Collection sucheKombination_Gruppierung(Integer projektnummer, Integer gruppennummer, Integer quartal, String gruppierungsname)
540     {
541         Collection resultat = null;
542 
543         setUp();
544 
545         Integer gruppierungsnummer = null;
546         Collection gruppierungen = diegn.sucheGruppierungsname(projektnummer, gruppierungsname);
547         Iterator iter = gruppierungen.iterator();
548 
549         if (gruppierungen.size() == 1)
550         {
551             gruppierungsnummer = ((Ergebnissdaten_Gruppierungsnamen) iter.next()).getGruppierungsnummer();
552         }
553 
554         if (gruppierungsnummer != null)
555         {
556             resultat = sucheKombination_Gruppierung(projektnummer, gruppennummer, quartal, gruppierungsnummer);
557         }
558 
559         tearDown();
560 
561         return resultat;
562     }
563 
564     /***
565      * Sucht alle Ergebnissdaten anhand der Projektnummer und der Untergruppierungsnummer
566      * und gibt alle in Frage kommenden Daten als Hashmap zurück
567      *
568      * @param   projektnummer    Die Projektnummer als Integer
569      * @param   gruppennummer    Die Gruppennummer
570      * @param   quartal          Das Quartal
571      * @param   untergruppierungsnummer Die Untergruppierungsnummer
572      * @return  Eine Hashmap aller Ergebnissdaten Daten mit den Feldnamen_Benutzer als HashMap Keys
573      */
574     public Collection sucheKombination_Untergruppierung(Integer projektnummer, Integer gruppennummer, Integer quartal, Integer untergruppierungsnummer)
575     {
576         ArrayList resultat = new ArrayList();
577 
578         setUp();
579 
580         try
581         {
582             Collection fields = diefn.sucheUntergruppierungsnummer(untergruppierungsnummer);
583             Iterator iter = fields.iterator();
584             Ergebnissdaten_Feldnamen field = null;
585 
586             Collection line1c = died.sucheKombination(projektnummer, gruppennummer, quartal);
587             Collection line2c = diei.sucheKombination(projektnummer, gruppennummer, quartal);
588 
589             Ergebnissdaten_Double line1 = null;
590             Ergebnissdaten_Integer line2 = null;
591 
592             Iterator line1citerator = line1c.iterator();
593             Iterator line2citerator = line2c.iterator();
594 
595             if (line1citerator.hasNext())
596             {
597                 line1 = (Ergebnissdaten_Double) line1citerator.next();
598             }
599 
600             if (line2citerator.hasNext())
601             {
602                 line2 = (Ergebnissdaten_Integer) line2citerator.next();
603             }
604 
605             if (line1 == null || line2 == null)
606             {
607                 Projektgruppen projektgruppe = (Projektgruppen) dipg.sucheGruppennummer(gruppennummer);
608                 boolean l1e = false;
609                 boolean l2e = false;
610 
611                 if (line1 == null)
612                 {
613                     l1e = diei.erzeugen(new Ergebnissdaten_Integer(projektgruppe, quartal));
614                 }
615                 if (line2 == null)
616                 {
617                     l2e = died.erzeugen(new Ergebnissdaten_Double(projektgruppe, quartal));
618                 }
619 
620                 if (l1e == true)
621                 {
622                     line1c = died.sucheKombination(projektnummer, gruppennummer, quartal);
623                     line1 = null;
624                     line1citerator = line1c.iterator();
625                     if (line1citerator.hasNext())
626                     {
627                         line1 = (Ergebnissdaten_Double) line1citerator.next();
628                     }
629                 }
630 
631                 if (l2e == true)
632                 {
633                     line2c = diei.sucheKombination(projektnummer, gruppennummer, quartal);
634                     line2 = null;
635                     line2citerator = line2c.iterator();
636                     if (line2citerator.hasNext())
637                     {
638                         line2 = (Ergebnissdaten_Integer) line2citerator.next();
639                     }
640                 }
641             }
642 
643             Sprachen sprache = null;
644             Collection sprachen = dis.sucheSprachname(this.locale.getDisplayLanguage());
645             Iterator sprachiterator = sprachen.iterator();
646 
647             if (sprachiterator.hasNext())
648             {
649                 sprache = (Sprachen) sprachiterator.next();
650             }
651 
652             if (log.isDebugEnabled())
653             {
654                 log.debug(" Found '" + fields.size() + "' Field names.");
655             }
656 
657             while (iter.hasNext())
658             {
659                 field = (Ergebnissdaten_Feldnamen) iter.next();
660 
661                 if (log.isDebugEnabled())
662                 {
663                     log.debug(" Field : '" + field.toString() + "'");
664                 }
665 
666                 if (field != null && field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer().compareTo(projektnummer) == 0)
667                 {
668                     resultat.add(createErgebniss(field, line1, line2, sprache));
669                 }
670             }
671         }
672         catch (IllegalAccessException e)
673         {
674             log.error("IllegalAccessException");
675             log.error(e.getMessage(), e);
676         }
677         catch (InvocationTargetException e)
678         {
679             log.error("InvocationTargetException");
680             log.error(e.getMessage(), e);
681         }
682         catch (NoSuchMethodException e)
683         {
684             log.error("NoSuchMethodException");
685             log.error(e.getMessage(), e);
686         }
687 
688         sortErgebniss(resultat);
689 
690         tearDown();
691 
692         return resultat;
693     }
694 
695     /***
696      * Sucht alle Ergebnissdaten anhand der Projektnummer und des Untergruppierungsname
697      * und gibt alle in Frage kommenden Daten als Hashmap zurück
698      *
699      * @param   projektnummer    Die Projektnummer als Integer
700      * @param   gruppennummer    Die Gruppennummer
701      * @param   quartal          Das Quartal
702      * @param   untergruppierungsname      Der Untergruppierungsname
703      * @return  Eine Hashmap aller Ergebnissdaten Daten mit den Feldnamen_Benutzer als HashMap Keys
704      */
705     public Collection sucheKombination_Untergruppierung(Integer projektnummer, Integer gruppennummer, Integer quartal, String untergruppierungsname)
706     {
707         Collection resultat = null;
708 
709         setUp();
710 
711         Integer untergruppierungsnummer = null;
712         Collection untergruppierungen = dieugn.sucheUntergruppierungsname(projektnummer, untergruppierungsname);
713         Iterator iter = untergruppierungen.iterator();
714 
715         if (untergruppierungen.size() == 1)
716         {
717             untergruppierungsnummer = ((Ergebnissdaten_Untergruppierungsnamen) iter.next()).getUntergruppierungsnummer();
718         }
719 
720         if (untergruppierungsnummer != null)
721         {
722             resultat = sucheKombination_Untergruppierung(projektnummer, gruppennummer, quartal, untergruppierungsnummer);
723         }
724 
725         tearDown();
726 
727         return resultat;
728     }
729 
730     /***
731      * Sucht alle Ergebnissdaten anhand der Projektnummer und der Feldnummer
732      * und gibt alle in Frage kommenden Daten als Hashmap zurück
733      *
734      * @param   projektnummer    Die Projektnummer als Integer
735      * @param   gruppennummer    Die Gruppennummer
736      * @param   quartal          Das Quartal
737      * @param   feldnummer       Die Feldnummer
738      * @return  Ein Object mit dem Feldinhalt (String, Integer oder Double)
739      */
740     public Object sucheKombination_Feld(Integer projektnummer, Integer gruppennummer, Integer quartal, Integer feldnummer)
741     {
742         Object resultat = null;
743 
744         setUp();
745 
746         try
747         {
748             Ergebnissdaten_Feldnamen field = (Ergebnissdaten_Feldnamen) diefn.sucheFeldnummer(feldnummer);
749 
750             Collection line1c = died.sucheKombination(projektnummer, gruppennummer, quartal);
751             Collection line2c = diei.sucheKombination(projektnummer, gruppennummer, quartal);
752 
753             Ergebnissdaten_Double line1 = null;
754             Ergebnissdaten_Integer line2 = null;
755 
756             Iterator line1citerator = line1c.iterator();
757             Iterator line2citerator = line2c.iterator();
758 
759             if (line1citerator.hasNext())
760             {
761                 line1 = (Ergebnissdaten_Double) line1citerator.next();
762             }
763 
764             if (line2citerator.hasNext())
765             {
766                 line2 = (Ergebnissdaten_Integer) line2citerator.next();
767             }
768 
769             if (line1 == null || line2 == null)
770             {
771                 Projektgruppen projektgruppe = (Projektgruppen) dipg.sucheGruppennummer(gruppennummer);
772                 boolean l1e = false;
773                 boolean l2e = false;
774 
775                 if (line1 == null)
776                 {
777                     l1e = diei.erzeugen(new Ergebnissdaten_Integer(projektgruppe, quartal));
778                 }
779                 if (line2 == null)
780                 {
781                     l2e = died.erzeugen(new Ergebnissdaten_Double(projektgruppe, quartal));
782                 }
783 
784                 if (l1e == true)
785                 {
786                     line1c = died.sucheKombination(projektnummer, gruppennummer, quartal);
787                     line1 = null;
788                     line1citerator = line1c.iterator();
789                     if (line1citerator.hasNext())
790                     {
791                         line1 = (Ergebnissdaten_Double) line1citerator.next();
792                     }
793                 }
794 
795                 if (l2e == true)
796                 {
797                     line2c = diei.sucheKombination(projektnummer, gruppennummer, quartal);
798                     line2 = null;
799                     line2citerator = line2c.iterator();
800                     if (line2citerator.hasNext())
801                     {
802                         line2 = (Ergebnissdaten_Integer) line2citerator.next();
803                     }
804                 }
805             }
806 
807             Sprachen sprache = null;
808             Collection sprachen = dis.sucheSprachname(this.locale.getDisplayLanguage());
809             Iterator sprachiterator = sprachen.iterator();
810 
811             if (sprachiterator.hasNext())
812             {
813                 sprache = (Sprachen) sprachiterator.next();
814             }
815 
816             if (field != null && field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer().compareTo(projektnummer) == 0)
817             {
818                 resultat = createErgebniss(field, line1, line2, sprache);
819             }
820         }
821         catch (IllegalAccessException e)
822         {
823             log.error("IllegalAccessException");
824             log.error(e.getMessage(), e);
825         }
826         catch (InvocationTargetException e)
827         {
828             log.error("InvocationTargetException");
829             log.error(e.getMessage(), e);
830         }
831         catch (NoSuchMethodException e)
832         {
833             log.error("NoSuchMethodException");
834             log.error(e.getMessage(), e);
835         }
836 
837         tearDown();
838 
839         return resultat;
840     }
841 
842     /***
843      * Sucht alle Ergebnissdaten anhand der Projektnummer und des Feldnamens Benutzer
844      * und gibt alle in Frage kommenden Daten als Hashmap zurück
845      *
846      * @param   projektnummer    Die Projektnummer als Integer
847      * @param   gruppennummer    Die Gruppennummer
848      * @param   quartal          Das Quartal
849      * @param   feldnamebenutzer Der Feldname Benutzer
850      * @return  Ein Object mit dem Feldinhalt (String, Integer oder Double)
851      */
852     public Object sucheKombination_Feld(Integer projektnummer, Integer gruppennummer, Integer quartal, String feldnamebenutzer)
853     {
854         Object resultat = null;
855 
856         setUp();
857 
858         Integer feldnummer = null;
859         Collection feldnamen = diefn.sucheFeldnameBenutzer(projektnummer, feldnamebenutzer);
860         Iterator iter = feldnamen.iterator();
861 
862         if (feldnamen.size() == 1)
863         {
864             feldnummer = ((Ergebnissdaten_Feldnamen) iter.next()).getFeldnummer();
865         }
866 
867         if (feldnummer != null)
868         {
869             resultat = sucheKombination_Feld(projektnummer, gruppennummer, quartal, feldnummer);
870         }
871 
872         tearDown();
873 
874         return resultat;
875     }
876 
877     /***
878      * Sucht alle Ergebnissdaten anhand der Projektnummer und der Feldnummer
879      * und gibt alle in Frage kommenden Daten als Collection zurück
880      *
881      * @param   projektnummer    Die Projektnummer als Integer
882      * @param   quartal          Das Quartal
883      * @param   feldnummer       Die Feldnummer
884      * @return  Ein Object mit dem Feldinhalt (String, Integer oder Double)
885      */
886     public Collection sucheKombination_Feld(Integer projektnummer, Integer quartal, Integer feldnummer)
887     {
888         ArrayList resultat = new ArrayList();
889 
890         setUp();
891 
892         try
893         {
894             Ergebnissdaten_Feldnamen field = (Ergebnissdaten_Feldnamen) diefn.sucheFeldnummer(feldnummer);
895 
896             Collection ergebnisse_d = died.sucheKombination(projektnummer, null, quartal);
897             Collection ergebnisse_i = diei.sucheKombination(projektnummer, null, quartal);
898             Iterator ergebniss_d_iterator = ergebnisse_d.iterator();
899             Iterator ergebniss_i_iterator = ergebnisse_i.iterator();
900 
901             Ergebnissdaten_Double line1 = null;
902             Ergebnissdaten_Integer line2 = null;
903 
904             if (log.isDebugEnabled())
905             {
906                 log.debug(" D '" + ergebnisse_d.size() + "'");
907                 log.debug(" I '" + ergebnisse_i.size() + "'");
908             }
909 
910             Sprachen sprache = null;
911             Collection sprachen = dis.sucheSprachname(this.locale.getDisplayLanguage());
912             Iterator sprachiterator = sprachen.iterator();
913 
914             if (sprachiterator.hasNext())
915             {
916                 sprache = (Sprachen) sprachiterator.next();
917             }
918 
919             while (ergebniss_d_iterator.hasNext() && ergebniss_i_iterator.hasNext())
920             {
921                 line1 = (Ergebnissdaten_Double) ergebniss_d_iterator.next();
922                 line2 = (Ergebnissdaten_Integer) ergebniss_i_iterator.next();
923 
924                 if (log.isDebugEnabled())
925                 {
926                     log.debug(" Field :   '" + field.toString() + "'");
927                     log.debug("         D '" + line1.getProjektgruppen() + "'");
928                     log.debug("         I '" + line2.getProjektgruppen() + "'");
929                     log.debug("        DH '" + ergebniss_d_iterator.hasNext() + "'");
930                     log.debug("        IH '" + ergebniss_i_iterator.hasNext() + "'");
931                 }
932 
933                 Ergebniss temp = createErgebniss(field, line1, line2, sprache);
934 
935                 resultat.add(temp);
936             }
937         }
938         catch (IllegalAccessException e)
939         {
940             log.error("IllegalAccessException");
941             log.error(e.getMessage(), e);
942         }
943         catch (InvocationTargetException e)
944         {
945             log.error("InvocationTargetException");
946             log.error(e.getMessage(), e);
947         }
948         catch (NoSuchMethodException e)
949         {
950             log.error("NoSuchMethodException");
951             log.error(e.getMessage(), e);
952         }
953         catch (Exception e)
954         {
955             log.error("Exception");
956             log.error(e.getMessage(), e);
957         }
958 
959         tearDown();
960 
961         return resultat;
962     }
963 
964     /***
965      * Sucht alle Ergebnissdaten anhand der Projektnummer und des Feldnamens Benutzer
966      * und gibt alle in Frage kommenden Daten als Collection zurück
967      *
968      * @param   projektnummer    Die Projektnummer als Integer
969      * @param   quartal          Das Quartal
970      * @param   feldnamebenutzer Der Feldname Benutzer
971      * @return  Ein Object mit dem Feldinhalt (String, Integer oder Double)
972      */
973     public Collection sucheKombination_Feld(Integer projektnummer, Integer quartal, String feldnamebenutzer)
974     {
975         Collection resultat = null;
976 
977         setUp();
978 
979         Integer feldnummer = null;
980         Collection feldnamen = diefn.sucheFeldnameBenutzer(projektnummer, feldnamebenutzer);
981         Iterator iter = feldnamen.iterator();
982 
983         if (feldnamen.size() == 1)
984         {
985             feldnummer = ((Ergebnissdaten_Feldnamen) iter.next()).getFeldnummer();
986         }
987 
988         if (feldnummer != null)
989         {
990             resultat = sucheKombination_Feld(projektnummer, quartal, feldnummer);
991         }
992 
993         tearDown();
994 
995         return resultat;
996     }
997 
998     /***
999      * Sucht alle Ergebnissdaten anhand der Projektnummer und der Feldnummer
1000      * und gibt alle in Frage kommenden Daten als Collection zurück
1001      *
1002      * @param   projektnummer    Die Projektnummer als Integer
1003      * @param   gruppennummer    Die Gruppennummer
1004      * @param   feldnummer       Die Feldnummer
1005      * @return  Ein Object mit dem Feldinhalt (String, Integer oder Double)
1006      */
1007     public Collection sucheGruppe_Feld(Integer projektnummer, Integer gruppennummer, Integer feldnummer)
1008     {
1009         ArrayList resultat = new ArrayList();
1010 
1011         setUp();
1012 
1013         try
1014         {
1015             Ergebnissdaten_Feldnamen field = (Ergebnissdaten_Feldnamen) diefn.sucheFeldnummer(feldnummer);
1016 
1017             Collection ergebnisse_d = died.sucheKombination(projektnummer, gruppennummer, null);
1018             Collection ergebnisse_i = diei.sucheKombination(projektnummer, gruppennummer, null);
1019             Iterator ergebniss_d_iterator = ergebnisse_d.iterator();
1020             Iterator ergebniss_i_iterator = ergebnisse_i.iterator();
1021 
1022             Ergebnissdaten_Double line1 = null;
1023             Ergebnissdaten_Integer line2 = null;
1024 
1025             if (log.isDebugEnabled())
1026             {
1027                 log.debug(" D '" + ergebnisse_d.size() + "'");
1028                 log.debug(" I '" + ergebnisse_i.size() + "'");
1029             }
1030 
1031             Sprachen sprache = null;
1032             Collection sprachen = dis.sucheSprachname(this.locale.getDisplayLanguage());
1033             Iterator sprachiterator = sprachen.iterator();
1034 
1035             if (sprachiterator.hasNext())
1036             {
1037                 sprache = (Sprachen) sprachiterator.next();
1038             }
1039 
1040             while (ergebniss_d_iterator.hasNext() && ergebniss_i_iterator.hasNext())
1041             {
1042                 line1 = (Ergebnissdaten_Double) ergebniss_d_iterator.next();
1043                 line2 = (Ergebnissdaten_Integer) ergebniss_i_iterator.next();
1044 
1045                 if (log.isDebugEnabled())
1046                 {
1047                     log.debug(" Field :   '" + field.toString() + "'");
1048                     log.debug("         D '" + line1.getProjektgruppen() + "'");
1049                     log.debug("         I '" + line2.getProjektgruppen() + "'");
1050                     log.debug("        DH '" + ergebniss_d_iterator.hasNext() + "'");
1051                     log.debug("        IH '" + ergebniss_i_iterator.hasNext() + "'");
1052                 }
1053 
1054                 Ergebniss temp = createErgebniss(field, line1, line2, sprache);
1055 
1056                 resultat.add(temp);
1057             }
1058         }
1059         catch (IllegalAccessException e)
1060         {
1061             log.error("IllegalAccessException");
1062             log.error(e.getMessage(), e);
1063         }
1064         catch (InvocationTargetException e)
1065         {
1066             log.error("InvocationTargetException");
1067             log.error(e.getMessage(), e);
1068         }
1069         catch (NoSuchMethodException e)
1070         {
1071             log.error("NoSuchMethodException");
1072             log.error(e.getMessage(), e);
1073         }
1074         catch (Exception e)
1075         {
1076             log.error("Exception");
1077             log.error(e.getMessage(), e);
1078         }
1079 
1080         tearDown();
1081 
1082         return resultat;
1083     }
1084 
1085     /***
1086      * Sucht alle Ergebnissdaten anhand der Projektnummer und des Feldnamens Benutzer
1087      * und gibt alle in Frage kommenden Daten als Collection zurück
1088      *
1089      * @param   projektnummer    Die Projektnummer als Integer
1090      * @param   gruppennummer    Die Gruppennummer
1091      * @param   feldnamebenutzer Der Feldname Benutzer
1092      * @return  Ein Object mit dem Feldinhalt (String, Integer oder Double)
1093      */
1094     public Collection sucheGruppe_Feld(Integer projektnummer, Integer gruppennummer, String feldnamebenutzer)
1095     {
1096         Collection resultat = null;
1097 
1098         setUp();
1099 
1100         Integer feldnummer = null;
1101         Collection feldnamen = diefn.sucheFeldnameBenutzer(projektnummer, feldnamebenutzer);
1102         Iterator iter = feldnamen.iterator();
1103 
1104         if (feldnamen.size() == 1)
1105         {
1106             feldnummer = ((Ergebnissdaten_Feldnamen) iter.next()).getFeldnummer();
1107         }
1108 
1109         if (feldnummer != null)
1110         {
1111             resultat = sucheGruppe_Feld(projektnummer, gruppennummer, feldnummer);
1112         }
1113 
1114         tearDown();
1115 
1116         return resultat;
1117     }
1118 
1119     /***
1120      * Sucht alle Ergebnissdaten anhand der Projektnummer und des Quartals
1121      * und gibt alle in Frage kommenden Daten als Collection zurück
1122      *
1123      * @param   projektnummer    Die Projektnummer als Integer
1124      * @param   gruppennummer    Die Gruppennummer
1125      * @param   quartal          Das Quartal
1126      * @return  Eine Hashmap aller Ergebnissdaten Daten mit den Feldnamen_Benutzer als HashMap Keys
1127      */
1128     public Collection sucheQuartal(Integer projektnummer, Integer gruppennummer, Integer quartal)
1129     {
1130         ArrayList resultat = new ArrayList();
1131 
1132         setUp();
1133 
1134         try
1135         {
1136             Collection fields = diefn.sucheProjektnummer(projektnummer);
1137             Iterator iter = fields.iterator();
1138             Ergebnissdaten_Feldnamen field = null;
1139 
1140             Collection line1c = died.sucheKombination(projektnummer, gruppennummer, quartal);
1141             Collection line2c = diei.sucheKombination(projektnummer, gruppennummer, quartal);
1142 
1143             if (log.isDebugEnabled())
1144             {
1145                 log.debug(" Found D - '" + line1c.size() + "'");
1146                 log.debug(" Found I - '" + line2c.size() + "'");
1147             }
1148 
1149             Ergebnissdaten_Double line1 = null;
1150             Ergebnissdaten_Integer line2 = null;
1151 
1152             Iterator line1citerator = line1c.iterator();
1153             Iterator line2citerator = line2c.iterator();
1154 
1155             if (line1citerator.hasNext())
1156             {
1157                 line1 = (Ergebnissdaten_Double) line1citerator.next();
1158             }
1159 
1160             if (line2citerator.hasNext())
1161             {
1162                 line2 = (Ergebnissdaten_Integer) line2citerator.next();
1163             }
1164 
1165             if (line1 == null || line2 == null)
1166             {
1167                 Projektgruppen projektgruppe = (Projektgruppen) dipg.sucheGruppennummer(gruppennummer);
1168                 boolean l1e = false;
1169                 boolean l2e = false;
1170 
1171                 if (line1 == null)
1172                 {
1173                     l1e = diei.erzeugen(new Ergebnissdaten_Integer(projektgruppe, quartal));
1174                 }
1175                 if (line2 == null)
1176                 {
1177                     l2e = died.erzeugen(new Ergebnissdaten_Double(projektgruppe, quartal));
1178                 }
1179 
1180                 if (l1e == true)
1181                 {
1182                     line1c = died.sucheKombination(projektnummer, gruppennummer, quartal);
1183                     line1 = null;
1184                     line1citerator = line1c.iterator();
1185                     if (line1citerator.hasNext())
1186                     {
1187                         line1 = (Ergebnissdaten_Double) line1citerator.next();
1188                     }
1189                 }
1190 
1191                 if (l2e == true)
1192                 {
1193                     line2c = diei.sucheKombination(projektnummer, gruppennummer, quartal);
1194                     line2 = null;
1195                     line2citerator = line2c.iterator();
1196                     if (line2citerator.hasNext())
1197                     {
1198                         line2 = (Ergebnissdaten_Integer) line2citerator.next();
1199                     }
1200                 }
1201             }
1202 
1203             Sprachen sprache = null;
1204             Collection sprachen = dis.sucheSprachname(this.locale.getDisplayLanguage());
1205             Iterator sprachiterator = sprachen.iterator();
1206 
1207             if (sprachiterator.hasNext())
1208             {
1209                 sprache = (Sprachen) sprachiterator.next();
1210             }
1211 
1212             if (log.isDebugEnabled())
1213             {
1214                 log.debug(" Found '" + fields.size() + "' Field names.");
1215             }
1216 
1217             while (iter.hasNext())
1218             {
1219                 field = (Ergebnissdaten_Feldnamen) iter.next();
1220 
1221                 if (log.isDebugEnabled())
1222                 {
1223                     log.debug(" Field : '" + field.toString() + "'");
1224                 }
1225 
1226                 if (field != null && field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer().compareTo(projektnummer) == 0)
1227                 {
1228                     resultat.add(createErgebniss(field, line1, line2, sprache));
1229                 }
1230             }
1231         }
1232         catch (IllegalAccessException e)
1233         {
1234             log.error("IllegalAccessException");
1235             log.error(e.getMessage(), e);
1236         }
1237         catch (InvocationTargetException e)
1238         {
1239             log.error("InvocationTargetException");
1240             log.error(e.getMessage(), e);
1241         }
1242         catch (NoSuchMethodException e)
1243         {
1244             log.error("NoSuchMethodException");
1245             log.error(e.getMessage(), e);
1246         }
1247 
1248         sortErgebniss(resultat);
1249 
1250         tearDown();
1251 
1252         return resultat;
1253     }
1254 
1255     /***
1256      * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#sucheObjekt(java.lang.Object)
1257      * Findet hier keine Anwendung - Leerer Methoden-Stub
1258      *
1259      * @return null
1260      */
1261     protected Object sucheObjekt(Object arg)
1262     {
1263         return null;
1264     }
1265 
1266     /***
1267      * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#sucheObjekte(java.lang.Object)
1268      * Findet hier keine Anwendung - Leerer Methoden-Stub
1269      *
1270      * @return null
1271      */
1272     protected Collection sucheObjekte(Object arg)
1273     {
1274         return null;
1275     }
1276 
1277     /***
1278      * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#sucheAlle()
1279      */
1280     public Collection sucheAlle()
1281     {
1282         ArrayList resultat = new ArrayList();
1283 
1284         setUp();
1285 
1286         try
1287         {
1288             Collection fields = diefn.sucheAlle();
1289             Iterator iter = fields.iterator();
1290             Ergebnissdaten_Feldnamen field = null;
1291 
1292             Sprachen sprache = null;
1293             Collection sprachen = dis.sucheSprachname(this.locale.getDisplayLanguage());
1294             Iterator sprachiterator = sprachen.iterator();
1295 
1296             if (sprachiterator.hasNext())
1297             {
1298                 sprache = (Sprachen) sprachiterator.next();
1299             }
1300 
1301             if (log.isDebugEnabled())
1302             {
1303                 log.debug(" Found '" + sprache + "' language.");
1304             }
1305 
1306             while (iter.hasNext())
1307             {
1308                 field = (Ergebnissdaten_Feldnamen) iter.next();
1309                 Integer pn = field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer();
1310 
1311                 Collection ergebnisse_d = died.sucheKombination(pn, null, null);
1312                 Collection ergebnisse_i = diei.sucheKombination(pn, null, null);
1313                 Iterator ergebniss_d_iterator = ergebnisse_d.iterator();
1314                 Iterator ergebniss_i_iterator = ergebnisse_i.iterator();
1315 
1316                 if (log.isDebugEnabled())
1317                 {
1318                     log.debug(" D '" + ergebnisse_d.size() + "'");
1319                     log.debug(" I '" + ergebnisse_i.size() + "'");
1320                 }
1321 
1322                 Ergebnissdaten_Double line1;
1323                 Ergebnissdaten_Integer line2;
1324 
1325                 while (ergebniss_d_iterator.hasNext() && ergebniss_i_iterator.hasNext())
1326                 {
1327                     line1 = (Ergebnissdaten_Double) ergebniss_d_iterator.next();
1328                     line2 = (Ergebnissdaten_Integer) ergebniss_i_iterator.next();
1329 
1330                     if (log.isDebugEnabled())
1331                     {
1332                         log.debug(" Field :   '" + field.toString() + "'");
1333                         log.debug("         D '" + line1.getProjektgruppen() + "'");
1334                         log.debug("         I '" + line2.getProjektgruppen() + "'");
1335                         log.debug("        DH '" + ergebniss_d_iterator.hasNext() + "'");
1336                         log.debug("        IH '" + ergebniss_i_iterator.hasNext() + "'");
1337                     }
1338 
1339                     resultat.add(createErgebniss(field, line1, line2, sprache));
1340                 }
1341             }
1342         }
1343         catch (IllegalAccessException e)
1344         {
1345             log.error("IllegalAccessException");
1346             log.error(e.getStackTrace());
1347         }
1348         catch (InvocationTargetException e)
1349         {
1350             log.error("InvocationTargetException");
1351             log.error(e.getStackTrace());
1352         }
1353         catch (NoSuchMethodException e)
1354         {
1355             log.error("NoSuchMethodException");
1356             log.error(e.getStackTrace());
1357         }
1358 
1359         sortErgebniss(resultat);
1360 
1361         tearDown();
1362 
1363         return resultat;
1364     }
1365 
1366     /***
1367      * Prüft den Feld- und Tabellennamen, holt den entsprechenden Feldinhalt und erstellt ein Ergebnissdaten Datenobjekt
1368      *
1369      * @param field     Der Feldname
1370      * @param line1     Die Line aus der Double Tabelle
1371      * @param line2     Die Line aus der Integer Tabelle
1372      * @param sprache   Die aktuelle Sprache
1373      *
1374      * @return Ergebniss Datenobjekt
1375      *
1376      * @throws IllegalAccessException
1377      * @throws InvocationTargetException
1378      * @throws NoSuchMethodException
1379      */
1380     private Ergebniss createErgebniss(Ergebnissdaten_Feldnamen field, Ergebnissdaten_Double line1, Ergebnissdaten_Integer line2, Sprachen sprache) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
1381     {
1382         Ergebniss rueckgabwert = null;
1383         Ergebniss ergebniss = null;
1384 
1385         Integer sprachnummer = null;
1386 
1387         if (sprache != null)
1388         {
1389             sprachnummer = sprache.getSprachnummer();
1390         }
1391 
1392         if (field != null)
1393         {
1394             if (log.isDebugEnabled())
1395             {
1396                 log.debug(" FIELD   P '" + field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer() + "'");
1397                 log.debug("         F '" + field.getFeldnummer() + "'");
1398                 log.debug("         G '" + field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer() + "'");
1399                 log.debug("         U '" + field.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsnummer() + "'");
1400                 log.debug("         S '" + sprachnummer + "'");
1401                 log.debug(" TABELLE   '" + field.getTabellenname() + "'");
1402                 if (line1 != null)
1403                 {
1404                     log.debug(" LINE 1    '" + line1.toString() + "'");
1405                 }
1406                 if (line2 != null)
1407                 {
1408                     log.debug(" LINE 2    '" + line2.toString() + "'");
1409                 }
1410             }
1411 
1412             if (field.getTabellenname().compareTo("Ergebnissdaten_Double") == 0)
1413             {
1414                 Collection fielddescriptions =
1415                     diefb.sucheKombination(field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer(), field.getFeldnummer(), field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer(), field.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsnummer(), sprachnummer);
1416                 Iterator fielddescriptioniterator = fielddescriptions.iterator();
1417                 Ergebnissdaten_Feldbeschreibungen fielddescription = null;
1418 
1419                 if (fielddescriptioniterator.hasNext())
1420                 {
1421                     fielddescription = (Ergebnissdaten_Feldbeschreibungen) fielddescriptioniterator.next();
1422 
1423                     if (log.isDebugEnabled())
1424                     {
1425                         log.debug(" Fielddescription : '" + fielddescription.toString() + "'");
1426                     }
1427                 }
1428 
1429                 if (line1 != null)
1430                 {
1431                     boolean isNull = false;
1432 
1433                     Integer gruppennummer = (Integer) PropertyUtils.getProperty(line1, "projektgruppen.gruppennummer");
1434                     Integer quartal = (Integer) PropertyUtils.getProperty(line1, "quartal");
1435                     Double value = (Double) PropertyUtils.getProperty(line1, field.getFeldname());
1436 
1437                     if (log.isDebugEnabled())
1438                     {
1439                         log.debug(" GRP NR.   '" + gruppennummer + "'");
1440                         log.debug(" QUARTAL   '" + quartal + "'");
1441                     }
1442 
1443                     if (value == null)
1444                     {
1445                         isNull = true;
1446                         value = new Double((double) 0.0);
1447                     }
1448 
1449                     String formatedvalue = value.toString();
1450 
1451                     if (fielddescription != null)
1452                     {
1453                         if (fielddescription.getAnzeigeformat().compareTo("") == 0)
1454                             fielddescription.setAnzeigeformat("0");
1455 
1456                         DecimalFormat formatieren = null;
1457 
1458                         switch (Integer.parseInt(fielddescription.getAnzeigeformat()))
1459                         {
1460                             case -1000 :
1461                                 formatieren = new DecimalFormat("#,##0;-#,##0");
1462                                 formatedvalue = formatieren.format(Common.aufIntegerDurchEinTausendAufrunden(value.doubleValue()));
1463                                 break;
1464                             case 0 :
1465                                 formatieren = new DecimalFormat("#,##0;-#,##0");
1466                                 formatedvalue = formatieren.format(value.doubleValue());
1467                                 break;
1468                             case 1 :
1469                                 formatieren = new DecimalFormat("#,##0.0;-#,##0.0");
1470                                 formatedvalue = formatieren.format(value.doubleValue());
1471                                 break;
1472                             case 2 :
1473                                 formatieren = new DecimalFormat("#,##0.00;-#,##0.00");
1474                                 formatedvalue = formatieren.format(value.doubleValue());
1475                                 break;
1476                             case 3 :
1477                                 formatieren = new DecimalFormat("#,##0.000;-#,##0.000");
1478                                 formatedvalue = formatieren.format(value.doubleValue());
1479                                 break;
1480                             case 10 :
1481                                 formatieren = new DecimalFormat("#,##0.0000000000;-#,##0.0000000000");
1482                                 formatedvalue = formatieren.format(value.doubleValue());
1483                                 break;
1484                             default :
1485                                 formatedvalue = value.toString();
1486                                 break;
1487                         }
1488 
1489                         if (isNull)
1490                         {
1491                             value = null;
1492                             formatedvalue = "";
1493                         }
1494                     }
1495 
1496                     ergebniss =
1497                         new Ergebniss(
1498                             field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer(),
1499                             gruppennummer,
1500                             quartal,
1501                             field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsname(),
1502                             field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer(),
1503                             field.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsname(),
1504                             field.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsnummer(),
1505                             field.getFeldnummer(),
1506                             field.getFeldname_benutzer(),
1507                             field.getReihenfolge(),
1508                             field.getTabellenname(),
1509                             formatedvalue,
1510                             fielddescription.getGroessenkennzeichen().trim(),
1511                             value);
1512 
1513                     if (log.isDebugEnabled())
1514                     {
1515                         log.debug(" Ergebniss '" + ergebniss.toString() + "'");
1516                     }
1517 
1518                     rueckgabwert = ergebniss;
1519                 }
1520             }
1521             else if (field.getTabellenname().compareTo("Ergebnissdaten_Integer") == 0)
1522             {
1523                 Collection fielddescriptions =
1524                     diefb.sucheKombination(field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer(), field.getFeldnummer(), field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer(), field.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsnummer(), sprachnummer);
1525                 Iterator fielddescriptioniterator = fielddescriptions.iterator();
1526                 Ergebnissdaten_Feldbeschreibungen fielddescription = null;
1527 
1528                 if (fielddescriptioniterator.hasNext())
1529                 {
1530                     fielddescription = (Ergebnissdaten_Feldbeschreibungen) fielddescriptioniterator.next();
1531 
1532                     if (log.isDebugEnabled())
1533                     {
1534                         log.debug(" Fielddescription : '" + fielddescription.toString() + "'");
1535                     }
1536                 }
1537 
1538                 if (line2 != null)
1539                 {
1540                     boolean isNull = false;
1541 
1542                     Integer gruppennummer = (Integer) PropertyUtils.getProperty(line2, "projektgruppen.gruppennummer");
1543                     Integer quartal = (Integer) PropertyUtils.getProperty(line2, "quartal");
1544                     Integer value = (Integer) PropertyUtils.getProperty(line2, field.getFeldname());
1545 
1546                     if (value == null)
1547                     {
1548                         isNull = true;
1549                         value = new Integer((int) 0);
1550                     }
1551 
1552                     String formatedvalue = value.toString();
1553 
1554                     if (fielddescription != null)
1555                     {
1556                         if (fielddescription.getAnzeigeformat().compareTo("") == 0)
1557                             fielddescription.setAnzeigeformat("0");
1558 
1559                         DecimalFormat formatieren = null;
1560 
1561                         switch (Integer.parseInt(fielddescription.getAnzeigeformat()))
1562                         {
1563                             case -1000 :
1564                                 formatieren = new DecimalFormat("#,##0;-#,##0");
1565                                 formatedvalue = formatieren.format(Common.aufIntegerDurchEinTausendAufrunden(value.doubleValue()));
1566                                 break;
1567                             case 0 :
1568                                 formatieren = new DecimalFormat("#,##0;-#,##0");
1569                                 formatedvalue = formatieren.format(value.doubleValue());
1570                                 break;
1571                             case 1 :
1572                                 formatieren = new DecimalFormat("#,##0.0;-#,##0.0");
1573                                 formatedvalue = formatieren.format(value.doubleValue());
1574                                 break;
1575                             case 2 :
1576                                 formatieren = new DecimalFormat("#,##0.00;-#,##0.00");
1577                                 formatedvalue = formatieren.format(value.doubleValue());
1578                                 break;
1579                             case 3 :
1580                                 formatieren = new DecimalFormat("#,##0.000;-#,##0.000");
1581                                 formatedvalue = formatieren.format(value.doubleValue());
1582                                 break;
1583                             case 10 :
1584                                 formatieren = new DecimalFormat("#,##0.0000000000;-#,##0.0000000000");
1585                                 formatedvalue = formatieren.format(value.doubleValue());
1586                                 break;
1587                             default :
1588                                 formatedvalue = value.toString();
1589                                 break;
1590                         }
1591 
1592                         if (isNull)
1593                         {
1594                             value = null;
1595                             formatedvalue = "";
1596                         }
1597                     }
1598 
1599                     ergebniss =
1600                         new Ergebniss(
1601                             field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer(),
1602                             gruppennummer,
1603                             quartal,
1604                             field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsname(),
1605                             field.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer(),
1606                             field.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsname(),
1607                             field.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsnummer(),
1608                             field.getFeldnummer(),
1609                             field.getFeldname_benutzer(),
1610                             field.getReihenfolge(),
1611                             field.getTabellenname(),
1612                             formatedvalue,
1613                             fielddescription.getGroessenkennzeichen().trim(),
1614                             value);
1615 
1616                     if (log.isDebugEnabled())
1617                     {
1618                         log.debug(" Ergebniss '" + ergebniss.toString() + "'");
1619                     }
1620 
1621                     rueckgabwert = ergebniss;
1622                 }
1623             }
1624         }
1625 
1626         return rueckgabwert;
1627     }
1628 
1629     /***
1630      * Sortiert die Ergebnisse
1631      *
1632      * @param resultat Zu sortierende ArrayList der Ergebnisse
1633      */
1634     private void sortErgebniss(ArrayList resultat)
1635     {
1636         Comparator ergebnissComparator = new Comparator()
1637         {
1638             public int compare(Object o1, Object o2)
1639             {
1640                 if (o1 == null)
1641                     return 1;
1642                 if (o2 == null)
1643                     return -1;
1644 
1645                 Ergebniss e1 = (Ergebniss) o1;
1646                 Ergebniss e2 = (Ergebniss) o2;
1647 
1648                 if (e1.getProjektnummer().intValue() < e2.getProjektnummer().intValue())
1649                 {
1650                     return -1;
1651                 }
1652                 else if (e2.getProjektnummer().intValue() < e1.getProjektnummer().intValue())
1653                 {
1654                     return 1;
1655                 }
1656 
1657                 if (e1.getGruppennummer().intValue() < e2.getGruppennummer().intValue())
1658                 {
1659                     return -1;
1660                 }
1661                 else if (e2.getGruppennummer().intValue() < e1.getGruppennummer().intValue())
1662                 {
1663                     return 1;
1664                 }
1665 
1666                 if (e1.getQuartal().intValue() < e2.getQuartal().intValue())
1667                 {
1668                     return -1;
1669                 }
1670                 else if (e2.getQuartal().intValue() < e1.getQuartal().intValue())
1671                 {
1672                     return 1;
1673                 }
1674 
1675                 if (e1.getGruppierungsnummer().intValue() < e2.getGruppierungsnummer().intValue())
1676                 {
1677                     return -1;
1678                 }
1679                 else if (e2.getGruppierungsnummer().intValue() < e1.getGruppierungsnummer().intValue())
1680                 {
1681                     return 1;
1682                 }
1683 
1684                 if (e1.getUntergruppierungsnummer().intValue() < e2.getUntergruppierungsnummer().intValue())
1685                 {
1686                     return -1;
1687                 }
1688                 else if (e2.getUntergruppierungsnummer().intValue() < e1.getUntergruppierungsnummer().intValue())
1689                 {
1690                     return 1;
1691                 }
1692 
1693                 if (e1.getReihenfolge().intValue() < e2.getReihenfolge().intValue())
1694                 {
1695                     return -1;
1696                 }
1697                 else if (e1.getReihenfolge().intValue() > e2.getReihenfolge().intValue())
1698                 {
1699                     return 1;
1700                 }
1701 
1702                 return 0;
1703             }
1704         };
1705 
1706         Collections.sort(resultat, ergebnissComparator);
1707     }
1708 
1709     /***
1710      * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#clearCache()
1711      */
1712     public boolean clearCache()
1713     {
1714         boolean rueckgabewert = false;
1715 
1716         return rueckgabewert;
1717     }
1718 }