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.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&uuml;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 }