1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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ü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 }