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.Iterator;
27 import java.util.Locale;
28
29 import org.apache.commons.beanutils.PropertyUtils;
30 import org.apache.commons.logging.Log;
31 import org.apache.commons.logging.LogFactory;
32 import org.fhw.cabaweb.data.abstracts.AbstractDataInterface;
33 import org.fhw.cabaweb.data.dataobjects.Voreinstellung;
34 import org.fhw.cabaweb.math.Common;
35 import org.fhw.cabaweb.ojb.dataobjects.Projekte;
36 import org.fhw.cabaweb.ojb.dataobjects.Sprachen;
37 import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_Double;
38 import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_Feldbeschreibungen;
39 import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_Feldnamen;
40 import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_Gruppierungsnamen;
41 import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_Integer;
42 import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_String;
43 import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_Untergruppierungsnamen;
44
45 /***
46 * Klasse für die Kapselung der Datenzugriffe auf die Double Voreinstellungen
47 *
48 * @author <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
49 * @version Version 1.0 13.05-22.07.2004
50 */
51 public class DataInterfaceVoreinstellungen extends AbstractDataInterface
52 {
53 /***
54 * The <code>Log</code> instance for this application.
55 */
56 private Log log = LogFactory.getLog("org.fhw.cabaweb.data");
57
58 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
59 private DataInterfaceVoreinstellungenFeldnamen divfn;
60 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
61 private DataInterfaceVoreinstellungenFeldbeschreibungen divfb;
62 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
63 private DataInterfaceVoreinstellungenGruppierungsnamen divgn;
64 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
65 private DataInterfaceVoreinstellungenUntergruppierungsnamen divugn;
66 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
67 private DataInterfaceVoreinstellungenDouble divd;
68 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
69 private DataInterfaceVoreinstellungenInteger divi;
70 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
71 private DataInterfaceVoreinstellungenString divs;
72 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
73 private DataInterfaceProjekte dip;
74 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
75 private DataInterfaceSprachen dis;
76
77 /*** Konstruktor
78 * benutzt den Konstruktor der Superklasse und initialisiert das useCase Objekt
79 */
80 public DataInterfaceVoreinstellungen()
81 {
82 super();
83 }
84
85 /*** Konstruktor
86 * benutzt den Konstruktor der Superklasse und initialisiert das useCase Objekt
87 *
88 * @param locale Die Locale (Sprache)
89 */
90 public DataInterfaceVoreinstellungen(Locale locale)
91 {
92 super(locale);
93 }
94
95 /***
96 * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#setUp()
97 */
98 protected final void setUp()
99 {
100 super.setUp();
101
102 divfn = new DataInterfaceVoreinstellungenFeldnamen();
103 divfb = new DataInterfaceVoreinstellungenFeldbeschreibungen();
104 divgn = new DataInterfaceVoreinstellungenGruppierungsnamen();
105 divugn = new DataInterfaceVoreinstellungenUntergruppierungsnamen();
106 divd = new DataInterfaceVoreinstellungenDouble();
107 divi = new DataInterfaceVoreinstellungenInteger();
108 divs = new DataInterfaceVoreinstellungenString();
109 dip = new DataInterfaceProjekte();
110 dis = new DataInterfaceSprachen();
111 }
112
113 /***
114 * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#tearDown()
115 */
116 protected final void tearDown()
117 {
118 super.tearDown();
119 }
120
121 /***
122 * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#erzeugen(java.lang.Object)
123 * Findet hier keine Anwendung - Leerer Methoden-Stub
124 *
125 * Funktionen :
126 * @see org.fhw.cabaweb.data.DataInterfaceVoreinstellungen#editieren(java.lang.Integer, java.lang.String)
127 *
128 * @return false
129 */
130 public boolean erzeugen(Object arg)
131 {
132 return false;
133 }
134
135 /***
136 * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#editieren(java.lang.Object)
137 * Findet hier keine Anwendung - Leerer Methoden-Stub
138 *
139 * Funktionen :
140 * @see org.fhw.cabaweb.data.DataInterfaceVoreinstellungen#editieren(java.lang.Integer, java.lang.String)
141 *
142 * @return false
143 */
144 public boolean editieren(Object arg)
145 {
146 return false;
147 }
148
149 /***
150 * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#loeschen(java.lang.Object)
151 * Findet hier keine Anwendung - Leerer Methoden-Stub
152 *
153 * Funktionen :
154 * @see org.fhw.cabaweb.data.DataInterfaceVoreinstellungen#editieren(java.lang.Integer, java.lang.String)
155 *
156 * @return false
157 */
158 public boolean loeschen(Object arg)
159 {
160 return false;
161 }
162
163 /***
164 * Umsetzen der Daten des gelieferten Objects und Delegation der weiteren
165 * Verarbeitung an die OJB Klassen.
166 *
167 * @param feldnummer Die Feldnummer
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, String arg)
172 {
173 boolean returnvalue = false;
174
175 setUp();
176
177 try
178 {
179 Voreinstellungen_Feldnamen field = (Voreinstellungen_Feldnamen) divfn.sucheFeldnummer(feldnummer);
180
181 if (field != null)
182 {
183
184 Integer pn = field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer();
185
186 if (field.getTabellenname().compareTo("Voreinstellungen_Double") == 0)
187 {
188 Voreinstellungen_Double line = (Voreinstellungen_Double) divd.sucheProjektnummer(pn);
189
190 if (line != null)
191 {
192 PropertyUtils.setProperty(line, field.getFeldname(), new Double((String) arg));
193
194 returnvalue = divd.editieren(line);
195 }
196 else
197 {
198 line = new Voreinstellungen_Double((Projekte) dip.sucheProjektnummer(pn));
199 PropertyUtils.setProperty(line, field.getFeldname(), new Double((String) arg));
200
201 returnvalue = divd.erzeugen(line);
202 }
203 }
204 else if (field.getTabellenname().compareTo("Voreinstellungen_Integer") == 0)
205 {
206 Voreinstellungen_Integer line = (Voreinstellungen_Integer) divi.sucheProjektnummer(pn);
207
208 if (line != null)
209 {
210 PropertyUtils.setProperty(line, field.getFeldname(), new Integer((String) arg));
211
212 returnvalue = divi.editieren(line);
213 }
214 else
215 {
216 line = new Voreinstellungen_Integer((Projekte) dip.sucheProjektnummer(pn));
217 PropertyUtils.setProperty(line, field.getFeldname(), new Integer((String) arg));
218
219 returnvalue = divi.erzeugen(line);
220 }
221 }
222 else if (field.getTabellenname().compareTo("Voreinstellungen_String") == 0)
223 {
224 Voreinstellungen_String line = (Voreinstellungen_String) divs.sucheProjektnummer(pn);
225
226 if (line != null)
227 {
228 PropertyUtils.setProperty(line, field.getFeldname(), (String) arg);
229
230 returnvalue = divs.editieren(line);
231 }
232 else
233 {
234 line = new Voreinstellungen_String((Projekte) dip.sucheProjektnummer(pn));
235 PropertyUtils.setProperty(line, field.getFeldname(), (String) arg);
236
237 returnvalue = divs.erzeugen(line);
238 }
239 }
240 }
241 }
242 catch (IllegalAccessException e)
243 {
244 log.error("IllegalAccessException");
245 log.error(e.getStackTrace());
246 }
247 catch (InvocationTargetException e)
248 {
249 log.error("InvocationTargetException");
250 log.error(e.getStackTrace());
251 }
252 catch (NoSuchMethodException e)
253 {
254 log.error("NoSuchMethodException");
255 log.error(e.getStackTrace());
256 }
257
258 tearDown();
259
260 return returnvalue;
261 }
262
263 /***
264 * Sucht alle Voreinstellungen anhand der Projektnummer
265 * und gibt alle in Frage kommenden Daten als Hashmap zurück
266 *
267 * @param projektnummer Die Projektnummer als Integer
268 * @return Eine Hashmap aller Voreinstellungen Daten mit den Feldnamen_Benutzer als HashMap Keys
269 */
270 public Collection sucheProjekt(Integer projektnummer)
271 {
272 ArrayList resultat = new ArrayList();
273
274 setUp();
275
276 try
277 {
278 Collection fields = divfn.sucheProjektnummer(projektnummer);
279 Iterator iter = fields.iterator();
280 Voreinstellungen_Feldnamen field = null;
281
282 Voreinstellungen_Double line1 = (Voreinstellungen_Double) divd.sucheProjektnummer(projektnummer);
283 Voreinstellungen_Integer line2 = (Voreinstellungen_Integer) divi.sucheProjektnummer(projektnummer);
284 Voreinstellungen_String line3 = (Voreinstellungen_String) divs.sucheProjektnummer(projektnummer);
285
286 if (line1 == null || line2 == null || line3 == null)
287 {
288
289 boolean l1e = false;
290 boolean l2e = false;
291 boolean l3e = false;
292
293 if (line1 == null)
294 {
295 l1e = divi.erzeugen(new Voreinstellungen_Integer((Projekte) dip.sucheProjektnummer(projektnummer)));
296 }
297 if (line2 == null)
298 {
299 l2e = divd.erzeugen(new Voreinstellungen_Double((Projekte) dip.sucheProjektnummer(projektnummer)));
300 }
301 if (line3 == null)
302 {
303 l3e = divs.erzeugen(new Voreinstellungen_String((Projekte) dip.sucheProjektnummer(projektnummer)));
304 }
305
306 if (l1e == true)
307 {
308 line1 = (Voreinstellungen_Double) divd.sucheProjektnummer(projektnummer);
309 }
310
311 if (l2e == true)
312 {
313 line2 = (Voreinstellungen_Integer) divi.sucheProjektnummer(projektnummer);
314 }
315
316 if (l2e == true)
317 {
318 line3 = (Voreinstellungen_String) divs.sucheProjektnummer(projektnummer);
319 }
320 }
321
322 Sprachen sprache = null;
323 Collection sprachen = dis.sucheSprachname(this.locale.getDisplayLanguage());
324 Iterator sprachiterator = sprachen.iterator();
325
326 if (sprachiterator.hasNext())
327 {
328 sprache = (Sprachen) sprachiterator.next();
329 }
330
331 if (log.isDebugEnabled())
332 {
333 log.debug(" Found '" + fields.size() + "' Field names.");
334 }
335
336 while (iter.hasNext())
337 {
338 field = (Voreinstellungen_Feldnamen) iter.next();
339
340 if (log.isDebugEnabled())
341 {
342 log.debug(" Field : '" + field.toString() + "'");
343 }
344
345 if (field != null && field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer().compareTo(projektnummer) == 0)
346 {
347 resultat.add(createVoreinstellung(field, line1, line2, line3, sprache));
348 }
349 }
350 }
351 catch (IllegalAccessException e)
352 {
353 log.error("IllegalAccessException");
354 log.error(e.getStackTrace());
355 }
356 catch (InvocationTargetException e)
357 {
358 log.error("InvocationTargetException");
359 log.error(e.getStackTrace());
360 }
361 catch (NoSuchMethodException e)
362 {
363 log.error("NoSuchMethodException");
364 log.error(e.getStackTrace());
365 }
366
367 tearDown();
368
369 return resultat;
370 }
371
372 /***
373 * Sucht alle Voreinstellungen anhand der Projektnummer und der Gruppierungsnummer
374 * und gibt alle in Frage kommenden Daten als Hashmap zurück
375 *
376 * @param projektnummer Die Projektnummer als Integer
377 * @param gruppierungsnummer Die Gruppierungsnummer
378 * @return Eine Hashmap aller Voreinstellungen Daten mit den Feldnamen_Benutzer als HashMap Keys
379 */
380 public Collection sucheKombination_Gruppierung(Integer projektnummer, Integer gruppierungsnummer)
381 {
382 ArrayList resultat = new ArrayList();
383
384 setUp();
385
386 try
387 {
388 Collection fields = divfn.sucheGruppierungsnummer(gruppierungsnummer);
389 Iterator iter = fields.iterator();
390 Voreinstellungen_Feldnamen field = null;
391
392 Voreinstellungen_Double line1 = (Voreinstellungen_Double) divd.sucheProjektnummer(projektnummer);
393 Voreinstellungen_Integer line2 = (Voreinstellungen_Integer) divi.sucheProjektnummer(projektnummer);
394 Voreinstellungen_String line3 = (Voreinstellungen_String) divs.sucheProjektnummer(projektnummer);
395
396 if (line1 == null || line2 == null || line3 == null)
397 {
398
399 boolean l1e = false;
400 boolean l2e = false;
401 boolean l3e = false;
402
403 if (line1 == null)
404 {
405 l1e = divi.erzeugen(new Voreinstellungen_Integer((Projekte) dip.sucheProjektnummer(projektnummer)));
406 }
407 if (line2 == null)
408 {
409 l2e = divd.erzeugen(new Voreinstellungen_Double((Projekte) dip.sucheProjektnummer(projektnummer)));
410 }
411 if (line3 == null)
412 {
413 l3e = divs.erzeugen(new Voreinstellungen_String((Projekte) dip.sucheProjektnummer(projektnummer)));
414 }
415
416 if (l1e == true)
417 {
418 line1 = (Voreinstellungen_Double) divd.sucheProjektnummer(projektnummer);
419 }
420
421 if (l2e == true)
422 {
423 line2 = (Voreinstellungen_Integer) divi.sucheProjektnummer(projektnummer);
424 }
425
426 if (l2e == true)
427 {
428 line3 = (Voreinstellungen_String) divs.sucheProjektnummer(projektnummer);
429 }
430 }
431
432 Sprachen sprache = null;
433 Collection sprachen = dis.sucheSprachname(this.locale.getDisplayLanguage());
434 Iterator sprachiterator = sprachen.iterator();
435
436 if (sprachiterator.hasNext())
437 {
438 sprache = (Sprachen) sprachiterator.next();
439 }
440
441 if (log.isDebugEnabled())
442 {
443 log.debug(" Found '" + fields.size() + "' Field names.");
444 }
445
446 while (iter.hasNext())
447 {
448 field = (Voreinstellungen_Feldnamen) iter.next();
449
450 if (log.isDebugEnabled())
451 {
452 log.debug(" Field : '" + field.toString() + "'");
453 }
454
455 if (field != null && field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer().compareTo(projektnummer) == 0)
456 {
457 resultat.add(createVoreinstellung(field, line1, line2, line3, sprache));
458 }
459 }
460 }
461 catch (IllegalAccessException e)
462 {
463 log.error("IllegalAccessException");
464 log.error(e.getStackTrace());
465 }
466 catch (InvocationTargetException e)
467 {
468 log.error("InvocationTargetException");
469 log.error(e.getStackTrace());
470 }
471 catch (NoSuchMethodException e)
472 {
473 log.error("NoSuchMethodException");
474 log.error(e.getStackTrace());
475 }
476
477 tearDown();
478
479 return resultat;
480 }
481
482 /***
483 * Sucht alle Voreinstellungen anhand der Projektnummer und des Gruppierungsnamen
484 * und gibt alle in Frage kommenden Daten als Hashmap zurück
485 *
486 * @param projektnummer Die Projektnummer als Integer
487 * @param gruppierungsname Der Gruppierungsname
488 * @return Eine Hashmap aller Voreinstellungen Daten mit den Feldnamen_Benutzer als HashMap Keys
489 */
490 public Collection sucheKombination_Gruppierung(Integer projektnummer, String gruppierungsname)
491 {
492 Collection resultat = null;
493
494 setUp();
495
496 Integer gruppierungsnummer = null;
497 Collection gruppierungen = divgn.sucheGruppierungsname(projektnummer, gruppierungsname);
498 Iterator iter = gruppierungen.iterator();
499
500 if (gruppierungen.size() == 1)
501 {
502 gruppierungsnummer = ((Voreinstellungen_Gruppierungsnamen) iter.next()).getGruppierungsnummer();
503 }
504
505 if (gruppierungsnummer != null)
506 {
507 resultat = sucheKombination_Gruppierung(projektnummer, gruppierungsnummer);
508 }
509
510 tearDown();
511
512 return resultat;
513 }
514
515 /***
516 * Sucht alle Voreinstellungen anhand der Projektnummer und der Untergruppierungsnummer
517 * und gibt alle in Frage kommenden Daten als Hashmap zurück
518 *
519 * @param projektnummer Die Projektnummer als Integer
520 * @param untergruppierungsnummer Die Untergruppierungsnummer
521 * @return Eine Hashmap aller Voreinstellungen Daten mit den Feldnamen_Benutzer als HashMap Keys
522 */
523 public Collection sucheKombination_Untergruppierung(Integer projektnummer, Integer untergruppierungsnummer)
524 {
525 ArrayList resultat = new ArrayList();
526
527 setUp();
528
529 try
530 {
531 Collection fields = divfn.sucheUntergruppierungsnummer(untergruppierungsnummer);
532 Iterator iter = fields.iterator();
533 Voreinstellungen_Feldnamen field = null;
534
535 Voreinstellungen_Double line1 = (Voreinstellungen_Double) divd.sucheProjektnummer(projektnummer);
536 Voreinstellungen_Integer line2 = (Voreinstellungen_Integer) divi.sucheProjektnummer(projektnummer);
537 Voreinstellungen_String line3 = (Voreinstellungen_String) divs.sucheProjektnummer(projektnummer);
538
539 if (line1 == null || line2 == null || line3 == null)
540 {
541
542 boolean l1e = false;
543 boolean l2e = false;
544 boolean l3e = false;
545
546 if (line1 == null)
547 {
548 l1e = divi.erzeugen(new Voreinstellungen_Integer((Projekte) dip.sucheProjektnummer(projektnummer)));
549 }
550 if (line2 == null)
551 {
552 l2e = divd.erzeugen(new Voreinstellungen_Double((Projekte) dip.sucheProjektnummer(projektnummer)));
553 }
554 if (line3 == null)
555 {
556 l3e = divs.erzeugen(new Voreinstellungen_String((Projekte) dip.sucheProjektnummer(projektnummer)));
557 }
558
559 if (l1e == true)
560 {
561 line1 = (Voreinstellungen_Double) divd.sucheProjektnummer(projektnummer);
562 }
563
564 if (l2e == true)
565 {
566 line2 = (Voreinstellungen_Integer) divi.sucheProjektnummer(projektnummer);
567 }
568
569 if (l2e == true)
570 {
571 line3 = (Voreinstellungen_String) divs.sucheProjektnummer(projektnummer);
572 }
573 }
574
575 Sprachen sprache = null;
576 Collection sprachen = dis.sucheSprachname(this.locale.getDisplayLanguage());
577 Iterator sprachiterator = sprachen.iterator();
578
579 if (sprachiterator.hasNext())
580 {
581 sprache = (Sprachen) sprachiterator.next();
582 }
583
584 if (log.isDebugEnabled())
585 {
586 log.debug(" Found '" + fields.size() + "' Field names.");
587 }
588
589 while (iter.hasNext())
590 {
591 field = (Voreinstellungen_Feldnamen) iter.next();
592
593 if (log.isDebugEnabled())
594 {
595 log.debug(" Field : '" + field.toString() + "'");
596 }
597
598 if (field != null && field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer().compareTo(projektnummer) == 0)
599 {
600 resultat.add(createVoreinstellung(field, line1, line2, line3, sprache));
601 }
602 }
603 }
604 catch (IllegalAccessException e)
605 {
606 log.error("IllegalAccessException");
607 log.error(e.getStackTrace());
608 }
609 catch (InvocationTargetException e)
610 {
611 log.error("InvocationTargetException");
612 log.error(e.getStackTrace());
613 }
614 catch (NoSuchMethodException e)
615 {
616 log.error("NoSuchMethodException");
617 log.error(e.getStackTrace());
618 }
619
620 tearDown();
621
622 return resultat;
623 }
624
625 /***
626 * Sucht alle Voreinstellungen anhand der Projektnummer und des Untergruppierungsname
627 * und gibt alle in Frage kommenden Daten als Hashmap zurück
628 *
629 * @param projektnummer Die Projektnummer als Integer
630 * @param untergruppierungsname Der Untergruppierungsname
631 * @return Eine Hashmap aller Voreinstellungen Daten mit den Feldnamen_Benutzer als HashMap Keys
632 */
633 public Collection sucheKombination_Untergruppierung(Integer projektnummer, String untergruppierungsname)
634 {
635 Collection resultat = null;
636
637 setUp();
638
639 Integer untergruppierungsnummer = null;
640 Collection untergruppierungen = divugn.sucheUntergruppierungsname(projektnummer, untergruppierungsname);
641 Iterator iter = untergruppierungen.iterator();
642
643 if (untergruppierungen.size() == 1)
644 {
645 untergruppierungsnummer = ((Voreinstellungen_Untergruppierungsnamen) iter.next()).getUntergruppierungsnummer();
646 }
647
648 if (untergruppierungsnummer != null)
649 {
650 resultat = sucheKombination_Untergruppierung(projektnummer, untergruppierungsnummer);
651 }
652
653 tearDown();
654
655 return resultat;
656 }
657
658 /***
659 * Sucht alle Voreinstellungen anhand der Projektnummer und der Feldnummer
660 * und gibt alle in Frage kommenden Daten als Hashmap zurück
661 *
662 * @param projektnummer Die Projektnummer als Integer
663 * @param feldnummer Die Feldnummer
664 * @return Ein Object mit dem Feldinhalt (String, Integer oder Double)
665 */
666 public Object sucheKombination_Feld(Integer projektnummer, Integer feldnummer)
667 {
668 Object resultat = null;
669
670 setUp();
671
672 try
673 {
674 Voreinstellungen_Feldnamen field = (Voreinstellungen_Feldnamen) divfn.sucheFeldnummer(feldnummer);
675
676 Voreinstellungen_Double line1 = (Voreinstellungen_Double) divd.sucheProjektnummer(projektnummer);
677 Voreinstellungen_Integer line2 = (Voreinstellungen_Integer) divi.sucheProjektnummer(projektnummer);
678 Voreinstellungen_String line3 = (Voreinstellungen_String) divs.sucheProjektnummer(projektnummer);
679
680 if (line1 == null || line2 == null || line3 == null)
681 {
682
683 boolean l1e = false;
684 boolean l2e = false;
685 boolean l3e = false;
686
687 if (line1 == null)
688 {
689 l1e = divi.erzeugen(new Voreinstellungen_Integer((Projekte) dip.sucheProjektnummer(projektnummer)));
690 }
691 if (line2 == null)
692 {
693 l2e = divd.erzeugen(new Voreinstellungen_Double((Projekte) dip.sucheProjektnummer(projektnummer)));
694 }
695 if (line3 == null)
696 {
697 l3e = divs.erzeugen(new Voreinstellungen_String((Projekte) dip.sucheProjektnummer(projektnummer)));
698 }
699
700 if (l1e == true)
701 {
702 line1 = (Voreinstellungen_Double) divd.sucheProjektnummer(projektnummer);
703 }
704
705 if (l2e == true)
706 {
707 line2 = (Voreinstellungen_Integer) divi.sucheProjektnummer(projektnummer);
708 }
709
710 if (l2e == true)
711 {
712 line3 = (Voreinstellungen_String) divs.sucheProjektnummer(projektnummer);
713 }
714 }
715
716 Sprachen sprache = null;
717 Collection sprachen = dis.sucheSprachname(this.locale.getDisplayLanguage());
718 Iterator sprachiterator = sprachen.iterator();
719
720 if (sprachiterator.hasNext())
721 {
722 sprache = (Sprachen) sprachiterator.next();
723 }
724
725 if (field != null && field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer().compareTo(projektnummer) == 0)
726 {
727 resultat = createVoreinstellung(field, line1, line2, line3, sprache);
728 }
729 }
730 catch (IllegalAccessException e)
731 {
732 log.error("IllegalAccessException");
733 log.error(e.getStackTrace());
734 }
735 catch (InvocationTargetException e)
736 {
737 log.error("InvocationTargetException");
738 log.error(e.getStackTrace());
739 }
740 catch (NoSuchMethodException e)
741 {
742 log.error("NoSuchMethodException");
743 log.error(e.getStackTrace());
744 }
745
746 tearDown();
747
748 return resultat;
749 }
750
751 /***
752 * Sucht alle Voreinstellungen anhand der Projektnummer und des Feldnamens Benutzer
753 * und gibt alle in Frage kommenden Daten als Hashmap zurück
754 *
755 * @param projektnummer Die Projektnummer als Integer
756 * @param feldnamebenutzer Der Feldname Benutzer
757 * @return Ein Object mit dem Feldinhalt (String, Integer oder Double)
758 */
759 public Object sucheKombination_Feld(Integer projektnummer, String feldnamebenutzer)
760 {
761 Object resultat = null;
762
763 setUp();
764
765 Integer feldnummer = null;
766 Collection feldnamen = divfn.sucheFeldnameBenutzer(projektnummer, feldnamebenutzer);
767 Iterator iter = feldnamen.iterator();
768
769 if (feldnamen.size() == 1)
770 {
771 feldnummer = ((Voreinstellungen_Feldnamen) iter.next()).getFeldnummer();
772 }
773
774 if (feldnummer != null)
775 {
776 resultat = sucheKombination_Feld(projektnummer, feldnummer);
777 }
778
779 tearDown();
780
781 return resultat;
782 }
783
784 /***
785 * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#sucheObjekt(java.lang.Object)
786 * Findet hier keine Anwendung - Leerer Methoden-Stub
787 *
788 * @return null
789 */
790 protected Object sucheObjekt(Object arg)
791 {
792 return null;
793 }
794
795 /***
796 * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#sucheObjekte(java.lang.Object)
797 * Findet hier keine Anwendung - Leerer Methoden-Stub
798 *
799 * @return null
800 */
801 protected Collection sucheObjekte(Object arg)
802 {
803 return null;
804 }
805
806 /***
807 * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#sucheAlle()
808 */
809 public Collection sucheAlle()
810 {
811 ArrayList resultat = new ArrayList();
812
813 setUp();
814
815 try
816 {
817 Collection fields = divfn.sucheAlle();
818 Iterator iter = fields.iterator();
819 Voreinstellungen_Feldnamen field = null;
820
821 Sprachen sprache = null;
822 Collection sprachen = dis.sucheSprachname(this.locale.getDisplayLanguage());
823 Iterator sprachiterator = sprachen.iterator();
824
825 if (sprachiterator.hasNext())
826 {
827 sprache = (Sprachen) sprachiterator.next();
828 }
829
830 if (log.isDebugEnabled())
831 {
832 log.debug(" Found '" + fields.size() + "' Field names.");
833 }
834
835 while (iter.hasNext())
836 {
837 field = (Voreinstellungen_Feldnamen) iter.next();
838 Integer pn = field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer();
839 Voreinstellungen_Double line1 = (Voreinstellungen_Double) divd.sucheProjektnummer(pn);
840 Voreinstellungen_Integer line2 = (Voreinstellungen_Integer) divi.sucheProjektnummer(pn);
841 Voreinstellungen_String line3 = (Voreinstellungen_String) divs.sucheProjektnummer(pn);
842
843 if (log.isDebugEnabled())
844 {
845 log.debug(" Field : '" + field.toString() + "'");
846 }
847
848 resultat.add(createVoreinstellung(field, line1, line2, line3, sprache));
849 }
850 }
851 catch (IllegalAccessException e)
852 {
853 log.error("IllegalAccessException");
854 log.error(e.getStackTrace());
855 }
856 catch (InvocationTargetException e)
857 {
858 log.error("InvocationTargetException");
859 log.error(e.getStackTrace());
860 }
861 catch (NoSuchMethodException e)
862 {
863 log.error("NoSuchMethodException");
864 log.error(e.getStackTrace());
865 }
866
867 tearDown();
868
869 return resultat;
870 }
871
872 /***
873 * Prüft den Feld- und Tabellennamen, holt den entsprechenden Feldinhalt und erstellt ein Voreinstellungen Datenobjekt
874 *
875 * @param field Der Feldname
876 * @param line1 Die Line aus der Double Tabelle
877 * @param line2 Die Line aus der Integer Tabelle
878 * @param line3 Die Line aus der String Tabelle
879 * @param sprache Die aktuelle Sprache
880 *
881 * @return Voreinstellung Datenobjekt
882 *
883 * @throws IllegalAccessException
884 * @throws InvocationTargetException
885 * @throws NoSuchMethodException
886 */
887 private Voreinstellung createVoreinstellung(Voreinstellungen_Feldnamen field, Voreinstellungen_Double line1, Voreinstellungen_Integer line2, Voreinstellungen_String line3, Sprachen sprache) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
888 {
889 Voreinstellung rueckgabwert = null;
890 Voreinstellung voreinstellung = null;
891
892 Integer sprachnummer = null;
893
894 if (sprache != null)
895 {
896 sprachnummer = sprache.getSprachnummer();
897 }
898
899 if (field != null)
900 {
901 if (log.isDebugEnabled())
902 {
903 log.debug(" TABELLE '" + field.getTabellenname() + "'");
904 if (line1 != null)
905 {
906 log.debug(" LINE 1 '" + line1.toString() + "'");
907 }
908 if (line2 != null)
909 {
910 log.debug(" LINE 2 '" + line2.toString() + "'");
911 }
912 if (line3 != null)
913 {
914 log.debug(" LINE 3 '" + line3.toString() + "'");
915 }
916 log.debug(" CREATE P '" + field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer() + "'");
917 log.debug(" F '" + field.getFeldnummer() + "'");
918 log.debug(" G '" + field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getGruppierungsnummer() + "'");
919 log.debug(" U '" + field.getVoreinstellungen_untergruppierungsnamen().getUntergruppierungsnummer() + "'");
920 log.debug(" S '" + sprachnummer + "'");
921 }
922
923 if (field.getTabellenname().compareTo("Voreinstellungen_Double") == 0)
924 {
925 Collection fielddescriptions =
926 divfb.sucheKombination(
927 field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer(),
928 field.getFeldnummer(),
929 field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getGruppierungsnummer(),
930 field.getVoreinstellungen_untergruppierungsnamen().getUntergruppierungsnummer(),
931 sprachnummer);
932 Iterator fielddescriptioniterator = fielddescriptions.iterator();
933 Voreinstellungen_Feldbeschreibungen fielddescription = null;
934
935 if (fielddescriptioniterator.hasNext())
936 {
937 fielddescription = (Voreinstellungen_Feldbeschreibungen) fielddescriptioniterator.next();
938
939 if (log.isDebugEnabled())
940 {
941 log.debug(" Fielddescription : '" + fielddescription.toString() + "'");
942 }
943 }
944
945 if (line1 != null)
946 {
947 Double value = (Double) PropertyUtils.getProperty(line1, field.getFeldname());
948
949 if (value == null)
950 value = new Double(0.0);
951
952 String formatedvalue = value.toString();
953
954 if (fielddescription != null)
955 {
956 if (fielddescription.getAnzeigeformat().compareTo("") == 0)
957 fielddescription.setAnzeigeformat("0");
958
959 DecimalFormat formatieren = null;
960
961 switch (Integer.parseInt(fielddescription.getAnzeigeformat()))
962 {
963 case -1000 :
964 formatieren = new DecimalFormat("#,##0;-#,##0");
965 formatedvalue = formatieren.format(Common.aufIntegerDurchEinTausendAufrunden(value.doubleValue()));
966 break;
967 case 0 :
968 formatieren = new DecimalFormat("#,##0;-#,##0");
969 formatedvalue = formatieren.format(value.doubleValue());
970 break;
971 case 1 :
972 formatieren = new DecimalFormat("#,##0.0;-#,##0.0");
973 formatedvalue = formatieren.format(value.doubleValue());
974 break;
975 case 2 :
976 formatieren = new DecimalFormat("#,##0.00;-#,##0.00");
977 formatedvalue = formatieren.format(value.doubleValue());
978 break;
979 case 3 :
980 formatieren = new DecimalFormat("#,##0.000;-#,##0.000");
981 formatedvalue = formatieren.format(value.doubleValue());
982 break;
983 case 10 :
984 formatieren = new DecimalFormat("#,##0.0000000000;-#,##0.0000000000");
985 formatedvalue = formatieren.format(value.doubleValue());
986 break;
987 default :
988 formatedvalue = value.toString();
989 break;
990 }
991 }
992
993 voreinstellung =
994 new Voreinstellung(
995 field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer(),
996 field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getGruppierungsname(),
997 field.getVoreinstellungen_untergruppierungsnamen().getUntergruppierungsname(),
998 field.getFeldnummer(),
999 field.getFeldname_benutzer(),
1000 field.getTabellenname(),
1001 formatedvalue,
1002 fielddescription.getGroessenkennzeichen().trim(),
1003 value);
1004
1005 if (log.isDebugEnabled())
1006 {
1007 log.debug(" Voreinstellung '" + voreinstellung.toString() + "'");
1008 }
1009
1010 rueckgabwert = voreinstellung;
1011 }
1012 }
1013 else if (field.getTabellenname().compareTo("Voreinstellungen_Integer") == 0)
1014 {
1015 Collection fielddescriptions =
1016 divfb.sucheKombination(
1017 field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer(),
1018 field.getFeldnummer(),
1019 field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getGruppierungsnummer(),
1020 field.getVoreinstellungen_untergruppierungsnamen().getUntergruppierungsnummer(),
1021 sprachnummer);
1022 Iterator fielddescriptioniterator = fielddescriptions.iterator();
1023 Voreinstellungen_Feldbeschreibungen fielddescription = null;
1024
1025 if (fielddescriptioniterator.hasNext())
1026 {
1027 fielddescription = (Voreinstellungen_Feldbeschreibungen) fielddescriptioniterator.next();
1028
1029 if (log.isDebugEnabled())
1030 {
1031 log.debug(" Fielddescription : '" + fielddescription.toString() + "'");
1032 }
1033 }
1034
1035 if (line2 != null)
1036 {
1037 Integer value = (Integer) PropertyUtils.getProperty(line2, field.getFeldname());
1038
1039 if (value == null)
1040 value = new Integer(0);
1041
1042 String formatedvalue = value.toString();
1043
1044 if (fielddescription != null)
1045 {
1046 if (fielddescription.getAnzeigeformat().compareTo("") == 0)
1047 fielddescription.setAnzeigeformat("0");
1048
1049 DecimalFormat formatieren = null;
1050
1051 switch (Integer.parseInt(fielddescription.getAnzeigeformat()))
1052 {
1053 case -1000 :
1054 formatieren = new DecimalFormat("#,##0;-#,##0");
1055 formatedvalue = formatieren.format(Common.aufIntegerDurchEinTausendAufrunden(value.doubleValue()));
1056 break;
1057 case 0 :
1058 formatieren = new DecimalFormat("#,##0;-#,##0");
1059 formatedvalue = formatieren.format(value.doubleValue());
1060 break;
1061 case 1 :
1062 formatieren = new DecimalFormat("#,##0.0;-#,##0.0");
1063 formatedvalue = formatieren.format(value.doubleValue());
1064 break;
1065 case 2 :
1066 formatieren = new DecimalFormat("#,##0.00;-#,##0.00");
1067 formatedvalue = formatieren.format(value.doubleValue());
1068 break;
1069 case 3 :
1070 formatieren = new DecimalFormat("#,##0.000;-#,##0.000");
1071 formatedvalue = formatieren.format(value.doubleValue());
1072 break;
1073 case 10 :
1074 formatieren = new DecimalFormat("#,##0.0000000000;-#,##0.0000000000");
1075 formatedvalue = formatieren.format(value.doubleValue());
1076 break;
1077 default :
1078 formatedvalue = value.toString();
1079 break;
1080 }
1081 }
1082
1083 voreinstellung =
1084 new Voreinstellung(
1085 field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer(),
1086 field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getGruppierungsname(),
1087 field.getVoreinstellungen_untergruppierungsnamen().getUntergruppierungsname(),
1088 field.getFeldnummer(),
1089 field.getFeldname_benutzer(),
1090 field.getTabellenname(),
1091 formatedvalue,
1092 fielddescription.getGroessenkennzeichen().trim(),
1093 value);
1094
1095 if (log.isDebugEnabled())
1096 {
1097 log.debug(" Voreinstellung '" + voreinstellung.toString() + "'");
1098 }
1099
1100 rueckgabwert = voreinstellung;
1101 }
1102 }
1103 else if (field.getTabellenname().compareTo("Voreinstellungen_String") == 0)
1104 {
1105 if (line3 != null)
1106 {
1107 String value = (String) PropertyUtils.getProperty(line3, field.getFeldname());
1108
1109 if (value == null)
1110 value = new String("");
1111
1112 String formatedvalue = value.toString();
1113
1114 voreinstellung =
1115 new Voreinstellung(
1116 field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer(),
1117 field.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getGruppierungsname(),
1118 field.getVoreinstellungen_untergruppierungsnamen().getUntergruppierungsname(),
1119 field.getFeldnummer(),
1120 field.getFeldname_benutzer(),
1121 field.getTabellenname(),
1122 formatedvalue,
1123 "",
1124 value);
1125
1126 if (log.isDebugEnabled())
1127 {
1128 log.debug(" Voreinstellung '" + voreinstellung.toString() + "'");
1129 }
1130
1131 rueckgabwert = voreinstellung;
1132 }
1133 }
1134 }
1135
1136 return rueckgabwert;
1137 }
1138
1139 /***
1140 * @see org.fhw.cabaweb.data.abstracts.AbstractDataInterface#clearCache()
1141 */
1142 public boolean clearCache()
1143 {
1144 boolean rueckgabewert = true;
1145 return rueckgabewert;
1146 }
1147 }