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.calculation;
21  
22  import java.util.Collection;
23  import java.util.Iterator;
24  import java.util.Random;
25  
26  import org.apache.commons.logging.Log;
27  import org.apache.commons.logging.LogFactory;
28  import org.fhw.cabaweb.data.DataInterfaceErgebnissdaten;
29  import org.fhw.cabaweb.data.DataInterfaceVoreinstellungen;
30  import org.fhw.cabaweb.data.constants.Constants;
31  import org.fhw.cabaweb.data.dataobjects.Ergebniss;
32  import org.fhw.cabaweb.data.dataobjects.Voreinstellung;
33  import org.fhw.cabaweb.math.Common;
34  
35  /***
36   * Die Klasse erstellt die n&ouml;tigen Indices (Konjunktur, Saison, Inflation, Lohnerh&ouml;hung).
37   *
38   * @author  <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
39   * @version Version 1.0 15.08-03.09.2004
40   */
41  public final class ErstelleIndices
42  {
43      /*** Commons Logging Instanz */
44      private static Log log = LogFactory.getLog("org.fhw.cabaweb.calculation.ErstelleIndices");
45  
46      /*** Commons Logging Instanz */
47      private static Random randomize = new Random(System.currentTimeMillis());
48  
49      /* ----- Konstruktoren / Destruktoren ----- */
50  
51      /***
52       * Standardkonstruktor der nicht zug&auml;nglich sein soll, da dies eine Utility Klasse ist
53       */
54      protected ErstelleIndices()
55      {
56          throw new UnsupportedOperationException(); // Aufrufe aus eventuellen SubKlassen verhindern
57      }
58  
59      /***
60       * Ermittelt den aktuellen Inflationswert, und gibt ihn zur&uuml;ck.
61       *
62       * @param projektnummer Die Projektnummer
63       * @param gruppennummer Die Gruppennummer
64       * @param quartal Das Quartal
65       * @return Die Inflation
66       */
67      public static final Double Inflation(Integer projektnummer, Integer gruppennummer, Integer quartal)
68      {
69          Double inflation = new Double(0.0);
70  
71          /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
72          DataInterfaceErgebnissdaten die = new DataInterfaceErgebnissdaten();
73          /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
74          DataInterfaceVoreinstellungen div = new DataInterfaceVoreinstellungen();
75  
76          Collection voreinstellungen = div.sucheKombination_Untergruppierung(projektnummer, Constants.VUG_REALINFLATION_KEY);
77          Iterator voreinstellungenIterator = voreinstellungen.iterator();
78          Voreinstellung voreinstellung = null;
79  
80          boolean ausVoreinstellungenGelesen = false;
81  
82          while (voreinstellungenIterator.hasNext())
83          {
84              voreinstellung = (Voreinstellung) voreinstellungenIterator.next();
85  
86              if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEINFALTIONQ0) == 0 && quartal.intValue() == 0)
87              {
88                  inflation = (Double) voreinstellung.getWertObject();
89                  ausVoreinstellungenGelesen = true;
90                  break;
91              }
92              else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEINFALTIONQ1) == 0 && quartal.intValue() == 1)
93              {
94                  inflation = (Double) voreinstellung.getWertObject();
95                  ausVoreinstellungenGelesen = true;
96                  break;
97              }
98              else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEINFALTIONQ2) == 0 && quartal.intValue() == 2)
99              {
100                 inflation = (Double) voreinstellung.getWertObject();
101                 ausVoreinstellungenGelesen = true;
102                 break;
103             }
104             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEINFALTIONQ3) == 0 && quartal.intValue() == 3)
105             {
106                 inflation = (Double) voreinstellung.getWertObject();
107                 ausVoreinstellungenGelesen = true;
108                 break;
109             }
110             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEINFALTIONQ4) == 0 && quartal.intValue() == 4)
111             {
112                 inflation = (Double) voreinstellung.getWertObject();
113                 ausVoreinstellungenGelesen = true;
114                 break;
115             }
116             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEINFALTIONQ5) == 0 && quartal.intValue() == 5)
117             {
118                 inflation = (Double) voreinstellung.getWertObject();
119                 ausVoreinstellungenGelesen = true;
120                 break;
121             }
122             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEINFALTIONQ6) == 0 && quartal.intValue() == 6)
123             {
124                 inflation = (Double) voreinstellung.getWertObject();
125                 ausVoreinstellungenGelesen = true;
126                 break;
127             }
128             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEINFALTIONQ7) == 0 && quartal.intValue() == 7)
129             {
130                 inflation = (Double) voreinstellung.getWertObject();
131                 ausVoreinstellungenGelesen = true;
132                 break;
133             }
134             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEINFALTIONQ8) == 0 && quartal.intValue() == 8)
135             {
136                 inflation = (Double) voreinstellung.getWertObject();
137                 ausVoreinstellungenGelesen = true;
138                 break;
139             }
140         }
141 
142         if (ausVoreinstellungenGelesen == false)
143         {
144             Ergebniss ergebniss_1 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, new Integer(quartal.intValue() - 1), Constants.EF_GRUNDDATENINFLATIONSRATEVORHERSAGE_KEY);
145             Ergebniss ergebniss_2 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, quartal, Constants.EF_GRUNDDATENINFLATIONSRATE_KEY);
146 
147             if (ergebniss_2 != null && ergebniss_2.getObjectWert() != null && ergebniss_2.getObjectWert() != null)
148             {
149                 inflation = (Double) ergebniss_2.getObjectWert();
150             }
151             else if (ergebniss_1 != null && ergebniss_1.getObjectWert() != null && quartal.intValue() > 0)
152             {
153                 inflation = new Double(Math.abs((randomize.nextDouble() * 100.0) % (((Double) ergebniss_1.getObjectWert()).intValue() + 1.0)));
154             }
155             else if (quartal.intValue() > 0)
156             {
157                 inflation = new Double(Math.abs((randomize.nextDouble() * 100.0) % 2.5));
158             }
159             else
160             {
161                 inflation = new Double(0.0);
162             }
163 
164             if (log.isDebugEnabled())
165             {
166                 log.debug(" Inflation : '" + inflation.toString() + "'");
167             }
168         }
169 
170         inflation = new Double(Common.aufZweiNachkommastellenRunden(inflation.doubleValue()));
171 
172         return inflation;
173     }
174 
175     /***
176      * Ermittelt die Vorhersage des Inflationswertes f&uuml;r das n&auml;chste Quartal, und gibt ihn zur&uuml;ck.
177      *
178      * @param projektnummer Die Projektnummer
179      * @param gruppennummer Die Gruppennummer
180      * @param quartal Das Quartal
181      * @return Die Inflationsvorhersage
182      */
183     public static final Double InflationVorhersage(Integer projektnummer, Integer gruppennummer, Integer quartal)
184     {
185         Double inflationVorhersage = new Double(0.0);
186 
187         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
188         DataInterfaceErgebnissdaten die = new DataInterfaceErgebnissdaten();
189         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
190         DataInterfaceVoreinstellungen div = new DataInterfaceVoreinstellungen();
191 
192         Collection voreinstellungen = div.sucheKombination_Untergruppierung(projektnummer, Constants.VUG_VORHERSAGEINFLATIONSRATE_KEY);
193         Iterator voreinstellungenIterator = voreinstellungen.iterator();
194         Voreinstellung voreinstellung = null;
195 
196         boolean ausVoreinstellungenGelesen = false;
197 
198         while (voreinstellungenIterator.hasNext())
199         {
200             voreinstellung = (Voreinstellung) voreinstellungenIterator.next();
201 
202             if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEINFLATIONQ1) == 0 && quartal.intValue() == 0)
203             {
204                 inflationVorhersage = (Double) voreinstellung.getWertObject();
205                 ausVoreinstellungenGelesen = true;
206                 break;
207             }
208             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEINFLATIONQ2) == 0 && quartal.intValue() == 1)
209             {
210                 inflationVorhersage = (Double) voreinstellung.getWertObject();
211                 ausVoreinstellungenGelesen = true;
212                 break;
213             }
214             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEINFLATIONQ3) == 0 && quartal.intValue() == 2)
215             {
216                 inflationVorhersage = (Double) voreinstellung.getWertObject();
217                 ausVoreinstellungenGelesen = true;
218                 break;
219             }
220             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEINFLATIONQ4) == 0 && quartal.intValue() == 3)
221             {
222                 inflationVorhersage = (Double) voreinstellung.getWertObject();
223                 ausVoreinstellungenGelesen = true;
224                 break;
225             }
226             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEINFLATIONQ5) == 0 && quartal.intValue() == 4)
227             {
228                 inflationVorhersage = (Double) voreinstellung.getWertObject();
229                 ausVoreinstellungenGelesen = true;
230                 break;
231             }
232             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEINFLATIONQ6) == 0 && quartal.intValue() == 5)
233             {
234                 inflationVorhersage = (Double) voreinstellung.getWertObject();
235                 ausVoreinstellungenGelesen = true;
236                 break;
237             }
238             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEINFLATIONQ7) == 0 && quartal.intValue() == 6)
239             {
240                 inflationVorhersage = (Double) voreinstellung.getWertObject();
241                 ausVoreinstellungenGelesen = true;
242                 break;
243             }
244             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEINFLATIONQ8) == 0 && quartal.intValue() == 7)
245             {
246                 inflationVorhersage = (Double) voreinstellung.getWertObject();
247                 ausVoreinstellungenGelesen = true;
248                 break;
249             }
250         }
251 
252         if (ausVoreinstellungenGelesen == false)
253         {
254             Ergebniss voreinstellung_1 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, quartal, Constants.EF_GRUNDDATENINFLATIONSRATE_KEY);
255             Ergebniss voreinstellung_2 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, quartal, Constants.EF_GRUNDDATENINFLATIONSRATEVORHERSAGE_KEY);
256 
257             if (voreinstellung_2 != null && voreinstellung_2.getObjectWert() != null)
258             {
259                 inflationVorhersage = (Double) voreinstellung_2.getObjectWert();
260             }
261             else if (voreinstellung_1 != null && voreinstellung_1.getObjectWert() != null && quartal.intValue() > 0)
262             {
263                 inflationVorhersage = new Double(Math.abs((randomize.nextDouble() * 100.0) % (((Double) voreinstellung_1.getObjectWert()).intValue() + 1.0)));
264             }
265             else if (quartal.intValue() > 0)
266             {
267                 inflationVorhersage = new Double(Math.abs((randomize.nextDouble() * 100.0) % 2.0));
268             }
269             else
270             {
271                 inflationVorhersage = new Double(0.0);
272             }
273 
274             if (log.isDebugEnabled())
275             {
276                 log.debug(" Inflation V : '" + inflationVorhersage.toString() + "'");
277             }
278         }
279 
280         inflationVorhersage = new Double(Common.aufZweiNachkommastellenRunden(inflationVorhersage.doubleValue()));
281 
282         return inflationVorhersage;
283     }
284 
285     /***
286      * Ermittelt den aktuellen Lohnerhoehungswert, und gibt ihn zur&uuml;ck.
287      *
288      * @param projektnummer Die Projektnummer
289      * @param gruppennummer Die Gruppennummer
290      * @param quartal Das Quartal
291      * @return Die Lohnerhoehung
292      */
293     public static final Double Lohnerhoehung(Integer projektnummer, Integer gruppennummer, Integer quartal)
294     {
295         Double lohnerhoehung = new Double(0.0);
296 
297         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
298         DataInterfaceErgebnissdaten die = new DataInterfaceErgebnissdaten();
299         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
300         DataInterfaceVoreinstellungen div = new DataInterfaceVoreinstellungen();
301 
302         Collection voreinstellungen = div.sucheKombination_Untergruppierung(projektnummer, Constants.VUG_REALLOHNERHOEHUNG_KEY);
303         Iterator voreinstellungenIterator = voreinstellungen.iterator();
304         Voreinstellung voreinstellung = null;
305 
306         boolean ausVoreinstellungenGelesen = false;
307 
308         while (voreinstellungenIterator.hasNext())
309         {
310             voreinstellung = (Voreinstellung) voreinstellungenIterator.next();
311 
312             if (voreinstellung.getFeldname().compareTo(Constants.VF_REALELOHNERHOEHUNGQ0) == 0 && quartal.intValue() == 0)
313             {
314                 lohnerhoehung = (Double) voreinstellung.getWertObject();
315                 ausVoreinstellungenGelesen = true;
316                 break;
317             }
318             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALELOHNERHOEHUNGQ1) == 0 && quartal.intValue() == 1)
319             {
320                 lohnerhoehung = (Double) voreinstellung.getWertObject();
321                 ausVoreinstellungenGelesen = true;
322                 break;
323             }
324             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALELOHNERHOEHUNGQ2) == 0 && quartal.intValue() == 2)
325             {
326                 lohnerhoehung = (Double) voreinstellung.getWertObject();
327                 ausVoreinstellungenGelesen = true;
328                 break;
329             }
330             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALELOHNERHOEHUNGQ3) == 0 && quartal.intValue() == 3)
331             {
332                 lohnerhoehung = (Double) voreinstellung.getWertObject();
333                 ausVoreinstellungenGelesen = true;
334                 break;
335             }
336             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALELOHNERHOEHUNGQ4) == 0 && quartal.intValue() == 4)
337             {
338                 lohnerhoehung = (Double) voreinstellung.getWertObject();
339                 ausVoreinstellungenGelesen = true;
340                 break;
341             }
342             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALELOHNERHOEHUNGQ5) == 0 && quartal.intValue() == 5)
343             {
344                 lohnerhoehung = (Double) voreinstellung.getWertObject();
345                 ausVoreinstellungenGelesen = true;
346                 break;
347             }
348             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALELOHNERHOEHUNGQ6) == 0 && quartal.intValue() == 6)
349             {
350                 lohnerhoehung = (Double) voreinstellung.getWertObject();
351                 ausVoreinstellungenGelesen = true;
352                 break;
353             }
354             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALELOHNERHOEHUNGQ7) == 0 && quartal.intValue() == 7)
355             {
356                 lohnerhoehung = (Double) voreinstellung.getWertObject();
357                 ausVoreinstellungenGelesen = true;
358                 break;
359             }
360             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALELOHNERHOEHUNGQ8) == 0 && quartal.intValue() == 8)
361             {
362                 lohnerhoehung = (Double) voreinstellung.getWertObject();
363                 ausVoreinstellungenGelesen = true;
364                 break;
365             }
366         }
367 
368         if (ausVoreinstellungenGelesen == false)
369         {
370             Ergebniss voreinstellung_1 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, new Integer(quartal.intValue() - 1), Constants.EF_GRUNDDATENLOHNERHOEHUNGVORHERSAGE_KEY);
371             Ergebniss voreinstellung_2 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, quartal, Constants.EF_GRUNDDATENLOHNERHOEHUNG_KEY);
372 
373             double lohnerhoehungjanein = randomize.nextDouble();
374 
375             if (log.isDebugEnabled())
376             {
377                 log.debug(" LOHNERHÖHUNG ?? -> '" + lohnerhoehungjanein + "'");
378             }
379 
380             if (voreinstellung_2 != null && voreinstellung_2.getObjectWert() != null && ((Double) voreinstellung_2.getObjectWert()).doubleValue() > 0.0)
381             {
382                 lohnerhoehung = (Double) voreinstellung_2.getObjectWert();
383 
384                 if (log.isDebugEnabled())
385                 {
386                     log.debug(" Bereits Wert vorhanden : " + lohnerhoehung + " Q " + quartal.intValue());
387                 }
388             }
389             else if (voreinstellung_1 != null && voreinstellung_1.getObjectWert() != null && quartal.intValue() > 0)
390             {
391                 if (((Double) voreinstellung_1.getObjectWert()).intValue() >= 0.0 && lohnerhoehungjanein > 0.25)
392                     lohnerhoehung = new Double(Math.abs((randomize.nextDouble() * 100.0) % (((Double) voreinstellung_1.getObjectWert()).intValue() + 2.5)));
393                 else
394                     lohnerhoehung = new Double(0.0);
395 
396                 if (log.isDebugEnabled())
397                 {
398                     log.debug(" Setze Wert : " + lohnerhoehung + " Q " + quartal.intValue());
399                 }
400             }
401             else if (quartal.intValue() > 0 && lohnerhoehungjanein > 0.75)
402             {
403                 lohnerhoehung = new Double(Math.abs((randomize.nextDouble() * 100.0) % 10.0));
404 
405                 if (log.isDebugEnabled())
406                 {
407                     log.debug(" Quartal grösser 0, keine Vorhersage vorhanden, Setze Wert  : " + lohnerhoehung);
408                 }
409             }
410             else
411             {
412                 lohnerhoehung = new Double(0.0);
413 
414                 if (log.isDebugEnabled())
415                 {
416                     log.debug(" Setze Wert : 0.0");
417                 }
418             }
419 
420             if (log.isDebugEnabled())
421             {
422                 log.debug(" Lohnerhöhung : '" + lohnerhoehung.toString() + "'");
423             }
424         }
425 
426         lohnerhoehung = new Double(Common.aufZweiNachkommastellenRunden(lohnerhoehung.doubleValue()));
427 
428         return lohnerhoehung;
429     }
430 
431     /***
432      * Ermittelt die Vorhersage des Inflationswertes f&uuml;r das n&auml;chste Quartal, und gibt ihn zur&uuml;ck.
433      *
434      * @param projektnummer Die Projektnummer
435      * @param gruppennummer Die Gruppennummer
436      * @param quartal Das Quartal
437      * @return Die Inflationsvorhersage
438      */
439     public static final Double LohnerhoehungVorhersage(Integer projektnummer, Integer gruppennummer, Integer quartal)
440     {
441         Double lohnerhoehungVorhersage = new Double(0.0);
442 
443         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
444         DataInterfaceErgebnissdaten die = new DataInterfaceErgebnissdaten();
445         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
446         DataInterfaceVoreinstellungen div = new DataInterfaceVoreinstellungen();
447 
448         Collection voreinstellungen = div.sucheKombination_Untergruppierung(projektnummer, Constants.VUG_VORHERSAGELOHNERHOEHUNG_KEY);
449         Iterator voreinstellungenIterator = voreinstellungen.iterator();
450         Voreinstellung voreinstellung = null;
451 
452         boolean ausVoreinstellungenGelesen = false;
453 
454         while (voreinstellungenIterator.hasNext())
455         {
456             voreinstellung = (Voreinstellung) voreinstellungenIterator.next();
457 
458             if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGELOHNERHOEHUNGQ1) == 0 && quartal.intValue() == 0)
459             {
460                 lohnerhoehungVorhersage = (Double) voreinstellung.getWertObject();
461                 ausVoreinstellungenGelesen = true;
462                 break;
463             }
464             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGELOHNERHOEHUNGQ2) == 0 && quartal.intValue() == 1)
465             {
466                 lohnerhoehungVorhersage = (Double) voreinstellung.getWertObject();
467                 ausVoreinstellungenGelesen = true;
468                 break;
469             }
470             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGELOHNERHOEHUNGQ3) == 0 && quartal.intValue() == 2)
471             {
472                 lohnerhoehungVorhersage = (Double) voreinstellung.getWertObject();
473                 ausVoreinstellungenGelesen = true;
474                 break;
475             }
476             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGELOHNERHOEHUNGQ4) == 0 && quartal.intValue() == 3)
477             {
478                 lohnerhoehungVorhersage = (Double) voreinstellung.getWertObject();
479                 ausVoreinstellungenGelesen = true;
480                 break;
481             }
482             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGELOHNERHOEHUNGQ5) == 0 && quartal.intValue() == 4)
483             {
484                 lohnerhoehungVorhersage = (Double) voreinstellung.getWertObject();
485                 ausVoreinstellungenGelesen = true;
486                 break;
487             }
488             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGELOHNERHOEHUNGQ6) == 0 && quartal.intValue() == 5)
489             {
490                 lohnerhoehungVorhersage = (Double) voreinstellung.getWertObject();
491                 ausVoreinstellungenGelesen = true;
492                 break;
493             }
494             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGELOHNERHOEHUNGQ7) == 0 && quartal.intValue() == 6)
495             {
496                 lohnerhoehungVorhersage = (Double) voreinstellung.getWertObject();
497                 ausVoreinstellungenGelesen = true;
498                 break;
499             }
500             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGELOHNERHOEHUNGQ8) == 0 && quartal.intValue() == 7)
501             {
502                 lohnerhoehungVorhersage = (Double) voreinstellung.getWertObject();
503                 ausVoreinstellungenGelesen = true;
504                 break;
505             }
506         }
507 
508         if (ausVoreinstellungenGelesen == false)
509         {
510             Ergebniss voreinstellung_1 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, quartal, Constants.EF_GRUNDDATENLOHNERHOEHUNG_KEY);
511             Ergebniss voreinstellung_2 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, quartal, Constants.EF_GRUNDDATENLOHNERHOEHUNGVORHERSAGE_KEY);
512 
513             double lohnerhoehungjanein = randomize.nextDouble();
514 
515             if (log.isDebugEnabled())
516             {
517                 log.debug(" LOHNERHÖHUNG ?? -> '" + lohnerhoehungjanein + "'");
518             }
519 
520             if (voreinstellung_2 != null && voreinstellung_2.getObjectWert() != null && ((Double) voreinstellung_2.getObjectWert()).doubleValue() > 0.0)
521             {
522                 lohnerhoehungVorhersage = (Double) voreinstellung_2.getObjectWert();
523 
524                 if (log.isDebugEnabled())
525                 {
526                     log.debug(" Bereits Wert vorhanden : " + lohnerhoehungVorhersage + " Q " + quartal.intValue());
527                 }
528             }
529             else if (voreinstellung_1 != null && voreinstellung_1.getObjectWert() != null && quartal.intValue() > 0)
530             {
531                 if (((Double) voreinstellung_1.getObjectWert()).intValue() <= 0.0 && lohnerhoehungjanein > 0.67)
532                     lohnerhoehungVorhersage = new Double(Math.abs((randomize.nextDouble() * 100.0) % (((Double) voreinstellung_1.getObjectWert()).intValue() + 15.0)));
533                 else
534                     lohnerhoehungVorhersage = new Double(0.0);
535 
536                 if (log.isDebugEnabled())
537                 {
538                     log.debug(" Setze Wert : " + lohnerhoehungVorhersage + " Q " + quartal.intValue());
539                 }
540             }
541             else if (quartal.intValue() > 0 && lohnerhoehungjanein > 0.50)
542             {
543                 lohnerhoehungVorhersage = new Double(Math.abs((randomize.nextDouble() * 100.0) % 10.0));
544 
545                 if (log.isDebugEnabled())
546                 {
547                     log.debug(" Quartal grösser 0, keine Vorhersage vorhanden, Setze Wert  : " + lohnerhoehungVorhersage);
548                 }
549             }
550             else
551             {
552                 lohnerhoehungVorhersage = new Double(0.0);
553 
554                 if (log.isDebugEnabled())
555                 {
556                     log.debug(" Setze Wert : 0.0");
557                 }
558             }
559 
560             if (log.isDebugEnabled())
561             {
562                 log.debug(" Lohnerhöhung V : '" + lohnerhoehungVorhersage.toString() + "'");
563             }
564         }
565 
566         lohnerhoehungVorhersage = new Double(Common.aufZweiNachkommastellenRunden(lohnerhoehungVorhersage.doubleValue()));
567 
568         return lohnerhoehungVorhersage;
569     }
570 
571     /***
572      * Ermittelt den aktuellen Saisonindex, und gibt ihn zur&uuml;ck.
573      *
574      * @param projektnummer Die Projektnummer
575      * @param gruppennummer Die Gruppennummer
576      * @param quartal Das Quartal
577      * @return Der Saisonindex
578      */
579     public static final Double Saison(Integer projektnummer, Integer gruppennummer, Integer quartal)
580     {
581         Double saison = new Double(0.0);
582 
583         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
584         DataInterfaceErgebnissdaten die = new DataInterfaceErgebnissdaten();
585         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
586         DataInterfaceVoreinstellungen div = new DataInterfaceVoreinstellungen();
587 
588         Collection voreinstellungen = div.sucheKombination_Untergruppierung(projektnummer, Constants.VUG_REALSAISON_KEY);
589         Iterator voreinstellungenIterator = voreinstellungen.iterator();
590         Voreinstellung voreinstellung = null;
591 
592         boolean ausVoreinstellungenGelesen = false;
593 
594         while (voreinstellungenIterator.hasNext())
595         {
596             voreinstellung = (Voreinstellung) voreinstellungenIterator.next();
597 
598             if (voreinstellung.getFeldname().compareTo(Constants.VF_REALESAISONQ0) == 0 && quartal.intValue() == 0)
599             {
600                 saison = (Double) voreinstellung.getWertObject();
601                 ausVoreinstellungenGelesen = true;
602                 break;
603             }
604             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALESAISONQ1) == 0 && quartal.intValue() == 1)
605             {
606                 saison = (Double) voreinstellung.getWertObject();
607                 ausVoreinstellungenGelesen = true;
608                 break;
609             }
610             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALESAISONQ2) == 0 && quartal.intValue() == 2)
611             {
612                 saison = (Double) voreinstellung.getWertObject();
613                 ausVoreinstellungenGelesen = true;
614                 break;
615             }
616             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALESAISONQ3) == 0 && quartal.intValue() == 3)
617             {
618                 saison = (Double) voreinstellung.getWertObject();
619                 ausVoreinstellungenGelesen = true;
620                 break;
621             }
622             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALESAISONQ4) == 0 && quartal.intValue() == 4)
623             {
624                 saison = (Double) voreinstellung.getWertObject();
625                 ausVoreinstellungenGelesen = true;
626                 break;
627             }
628             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALESAISONQ5) == 0 && quartal.intValue() == 5)
629             {
630                 saison = (Double) voreinstellung.getWertObject();
631                 ausVoreinstellungenGelesen = true;
632                 break;
633             }
634             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALESAISONQ6) == 0 && quartal.intValue() == 6)
635             {
636                 saison = (Double) voreinstellung.getWertObject();
637                 ausVoreinstellungenGelesen = true;
638                 break;
639             }
640             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALESAISONQ7) == 0 && quartal.intValue() == 7)
641             {
642                 saison = (Double) voreinstellung.getWertObject();
643                 ausVoreinstellungenGelesen = true;
644                 break;
645             }
646             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALESAISONQ8) == 0 && quartal.intValue() == 8)
647             {
648                 saison = (Double) voreinstellung.getWertObject();
649                 ausVoreinstellungenGelesen = true;
650                 break;
651             }
652         }
653 
654         if (ausVoreinstellungenGelesen == false)
655         {
656             Ergebniss voreinstellung_1 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, new Integer(quartal.intValue() - 1), Constants.EF_GRUNDDATENLOHNERHOEHUNGVORHERSAGE_KEY);
657             Ergebniss voreinstellung_2 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, quartal, Constants.EF_GRUNDDATENLOHNERHOEHUNG_KEY);
658 
659             if (voreinstellung_2 != null && voreinstellung_2.getObjectWert() != null && ((Double) voreinstellung_2.getObjectWert()).doubleValue() > 0.0)
660             {
661                 saison = (Double) voreinstellung_2.getObjectWert();
662 
663                 if (log.isDebugEnabled())
664                 {
665                     log.debug(" Bereits Wert vorhanden : " + saison + " Q " + quartal.intValue());
666                 }
667             }
668             else if (voreinstellung_1 != null && voreinstellung_1.getObjectWert() != null && quartal.intValue() > 0)
669             {
670                 saison = new Double(((randomize.nextDouble() * 100.0) % (((Double) voreinstellung_1.getObjectWert()).intValue() + 2.5)) + 90.0);
671 
672                 if (log.isDebugEnabled())
673                 {
674                     log.debug(" Setze Wert : " + saison + " Q " + quartal.intValue());
675                 }
676             }
677             else if (quartal.intValue() > 0)
678             {
679                 saison = new Double(Math.abs((randomize.nextDouble() * 100.0) % 20.0) + 90.0);
680 
681                 if (log.isDebugEnabled())
682                 {
683                     log.debug(" Quartal grösser 0, keine Vorhersage vorhanden, Setze Wert  : " + saison);
684                 }
685             }
686             else
687             {
688                 saison = new Double(100.0);
689 
690                 if (log.isDebugEnabled())
691                 {
692                     log.debug(" Setze Wert : 100.0");
693                 }
694             }
695 
696             if (log.isDebugEnabled())
697             {
698                 log.debug(" Saisonindex : '" + saison.toString() + "'");
699             }
700         }
701 
702         saison = new Double(Common.aufZweiNachkommastellenRunden(saison.doubleValue()));
703 
704         return saison;
705     }
706 
707     /***
708      * Ermittelt die Vorhersage des Saisonindexes f&uuml;r das n&auml;chste Quartal, und gibt ihn zur&uuml;ck.
709      *
710      * @param projektnummer Die Projektnummer
711      * @param gruppennummer Die Gruppennummer
712      * @param quartal Das Quartal
713      * @return Der Saisonindex
714      */
715     public static final Double SaisonVorhersage(Integer projektnummer, Integer gruppennummer, Integer quartal)
716     {
717         Double saisonVorhersage = new Double(0.0);
718 
719         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
720         DataInterfaceErgebnissdaten die = new DataInterfaceErgebnissdaten();
721         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
722         DataInterfaceVoreinstellungen div = new DataInterfaceVoreinstellungen();
723 
724         Collection voreinstellungen = div.sucheKombination_Untergruppierung(projektnummer, Constants.VUG_VORHERSAGESAISON_KEY);
725         Iterator voreinstellungenIterator = voreinstellungen.iterator();
726         Voreinstellung voreinstellung = null;
727 
728         boolean ausVoreinstellungenGelesen = false;
729 
730         while (voreinstellungenIterator.hasNext())
731         {
732             voreinstellung = (Voreinstellung) voreinstellungenIterator.next();
733 
734             if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGESAISONQ1) == 0 && quartal.intValue() == 0)
735             {
736                 saisonVorhersage = (Double) voreinstellung.getWertObject();
737                 ausVoreinstellungenGelesen = true;
738                 break;
739             }
740             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGESAISONQ2) == 0 && quartal.intValue() == 1)
741             {
742                 saisonVorhersage = (Double) voreinstellung.getWertObject();
743                 ausVoreinstellungenGelesen = true;
744                 break;
745             }
746             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGESAISONQ3) == 0 && quartal.intValue() == 2)
747             {
748                 saisonVorhersage = (Double) voreinstellung.getWertObject();
749                 ausVoreinstellungenGelesen = true;
750                 break;
751             }
752             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGESAISONQ4) == 0 && quartal.intValue() == 3)
753             {
754                 saisonVorhersage = (Double) voreinstellung.getWertObject();
755                 ausVoreinstellungenGelesen = true;
756                 break;
757             }
758             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGESAISONQ5) == 0 && quartal.intValue() == 4)
759             {
760                 saisonVorhersage = (Double) voreinstellung.getWertObject();
761                 ausVoreinstellungenGelesen = true;
762                 break;
763             }
764             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGESAISONQ6) == 0 && quartal.intValue() == 5)
765             {
766                 saisonVorhersage = (Double) voreinstellung.getWertObject();
767                 ausVoreinstellungenGelesen = true;
768                 break;
769             }
770             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGESAISONQ7) == 0 && quartal.intValue() == 6)
771             {
772                 saisonVorhersage = (Double) voreinstellung.getWertObject();
773                 ausVoreinstellungenGelesen = true;
774                 break;
775             }
776             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGESAISONQ8) == 0 && quartal.intValue() == 7)
777             {
778                 saisonVorhersage = (Double) voreinstellung.getWertObject();
779                 ausVoreinstellungenGelesen = true;
780                 break;
781             }
782         }
783 
784         if (ausVoreinstellungenGelesen == false)
785         {
786             Ergebniss voreinstellung_1 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, quartal, Constants.EF_GRUNDDATENSAISONINDEX_KEY);
787             Ergebniss voreinstellung_2 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, quartal, Constants.EF_GRUNDDATENSAISONINDEXVORHERSAGE_KEY);
788 
789             if (voreinstellung_2 != null && voreinstellung_2.getObjectWert() != null && ((Double) voreinstellung_2.getObjectWert()).doubleValue() > 0.0)
790             {
791                 saisonVorhersage = (Double) voreinstellung_2.getObjectWert();
792 
793                 if (log.isDebugEnabled())
794                 {
795                     log.debug(" Bereits Wert vorhanden : " + saisonVorhersage + " Q " + quartal.intValue());
796                 }
797             }
798             else if (voreinstellung_1 != null && voreinstellung_1.getObjectWert() != null && quartal.intValue() > 0)
799             {
800                 saisonVorhersage = new Double(((randomize.nextDouble() * 100.0) % (((Double) voreinstellung_1.getObjectWert()).intValue() + 2.5)) + 90.0);
801 
802                 if (log.isDebugEnabled())
803                 {
804                     log.debug(" Setze Wert : " + saisonVorhersage + " Q " + quartal.intValue());
805                 }
806             }
807             else if (quartal.intValue() > 0)
808             {
809                 saisonVorhersage = new Double(Math.abs((randomize.nextDouble() * 100.0) % 20.0) + 90.0);
810 
811                 if (log.isDebugEnabled())
812                 {
813                     log.debug(" Quartal grösser 0, keine Vorhersage vorhanden, Setze Wert  : " + saisonVorhersage);
814                 }
815             }
816             else
817             {
818                 saisonVorhersage = new Double(100.0);
819 
820                 if (log.isDebugEnabled())
821                 {
822                     log.debug(" Setze Wert : 100.0");
823                 }
824             }
825 
826             if (log.isDebugEnabled())
827             {
828                 log.debug(" Saisonindex V : '" + saisonVorhersage.toString() + "'");
829             }
830         }
831 
832         saisonVorhersage = new Double(Common.aufZweiNachkommastellenRunden(saisonVorhersage.doubleValue()));
833 
834         return saisonVorhersage;
835     }
836 
837     /***
838      * Ermittelt den aktuellen Konjunkturindex, und gibt ihn zur&uuml;ck.
839      *
840      * @param projektnummer Die Projektnummer
841      * @param gruppennummer Die Gruppennummer
842      * @param quartal Das Quartal
843      * @return Der Konjunkturindex
844      */
845     public static final Double Konjunktur(Integer projektnummer, Integer gruppennummer, Integer quartal)
846     {
847         Double konjunktur = new Double(0.0);
848 
849         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
850         DataInterfaceErgebnissdaten die = new DataInterfaceErgebnissdaten();
851         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
852         DataInterfaceVoreinstellungen div = new DataInterfaceVoreinstellungen();
853 
854         Collection voreinstellungen = div.sucheKombination_Untergruppierung(projektnummer, Constants.VUG_REALKONJUNKTUR_KEY);
855         Iterator voreinstellungenIterator = voreinstellungen.iterator();
856         Voreinstellung voreinstellung = null;
857 
858         boolean ausVoreinstellungenGelesen = false;
859 
860         while (voreinstellungenIterator.hasNext())
861         {
862             voreinstellung = (Voreinstellung) voreinstellungenIterator.next();
863 
864             if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEKONJUNKTURQ0) == 0 && quartal.intValue() == 0)
865             {
866                 konjunktur = (Double) voreinstellung.getWertObject();
867                 ausVoreinstellungenGelesen = true;
868                 break;
869             }
870             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEKONJUNKTURQ1) == 0 && quartal.intValue() == 1)
871             {
872                 konjunktur = (Double) voreinstellung.getWertObject();
873                 ausVoreinstellungenGelesen = true;
874                 break;
875             }
876             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEKONJUNKTURQ2) == 0 && quartal.intValue() == 2)
877             {
878                 konjunktur = (Double) voreinstellung.getWertObject();
879                 ausVoreinstellungenGelesen = true;
880                 break;
881             }
882             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEKONJUNKTURQ3) == 0 && quartal.intValue() == 3)
883             {
884                 konjunktur = (Double) voreinstellung.getWertObject();
885                 ausVoreinstellungenGelesen = true;
886                 break;
887             }
888             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEKONJUNKTURQ4) == 0 && quartal.intValue() == 4)
889             {
890                 konjunktur = (Double) voreinstellung.getWertObject();
891                 ausVoreinstellungenGelesen = true;
892                 break;
893             }
894             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEKONJUNKTURQ5) == 0 && quartal.intValue() == 5)
895             {
896                 konjunktur = (Double) voreinstellung.getWertObject();
897                 ausVoreinstellungenGelesen = true;
898                 break;
899             }
900             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEKONJUNKTURQ6) == 0 && quartal.intValue() == 6)
901             {
902                 konjunktur = (Double) voreinstellung.getWertObject();
903                 ausVoreinstellungenGelesen = true;
904                 break;
905             }
906             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEKONJUNKTURQ7) == 0 && quartal.intValue() == 7)
907             {
908                 konjunktur = (Double) voreinstellung.getWertObject();
909                 ausVoreinstellungenGelesen = true;
910                 break;
911             }
912             else if (voreinstellung.getFeldname().compareTo(Constants.VF_REALEKONJUNKTURQ8) == 0 && quartal.intValue() == 8)
913             {
914                 konjunktur = (Double) voreinstellung.getWertObject();
915                 ausVoreinstellungenGelesen = true;
916                 break;
917             }
918         }
919 
920         if (ausVoreinstellungenGelesen == false)
921         {
922             Ergebniss voreinstellung_1 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, new Integer(quartal.intValue() - 1), Constants.EF_GRUNDDATENLOHNERHOEHUNGVORHERSAGE_KEY);
923             Ergebniss voreinstellung_2 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, quartal, Constants.EF_GRUNDDATENLOHNERHOEHUNG_KEY);
924 
925             if (voreinstellung_2 != null && voreinstellung_2.getObjectWert() != null && ((Double) voreinstellung_2.getObjectWert()).doubleValue() > 0.0)
926             {
927                 konjunktur = (Double) voreinstellung_2.getObjectWert();
928 
929                 if (log.isDebugEnabled())
930                 {
931                     log.debug(" Bereits Wert vorhanden : " + konjunktur + " Q " + quartal.intValue());
932                 }
933             }
934             else if (voreinstellung_1 != null && voreinstellung_1.getObjectWert() != null && quartal.intValue() > 0)
935             {
936                 konjunktur = new Double(((randomize.nextDouble() * 100.0) % (((Double) voreinstellung_1.getObjectWert()).intValue() + 2.5)) + 90.0);
937 
938                 if (log.isDebugEnabled())
939                 {
940                     log.debug(" Setze Wert : " + konjunktur + " Q " + quartal.intValue());
941                 }
942             }
943             else if (quartal.intValue() > 0)
944             {
945                 konjunktur = new Double(Math.abs((randomize.nextDouble() * 100.0) % 20.0) + 90.0);
946 
947                 if (log.isDebugEnabled())
948                 {
949                     log.debug(" Quartal grösser 0, keine Vorhersage vorhanden, Setze Wert  : " + konjunktur);
950                 }
951             }
952             else
953             {
954                 konjunktur = new Double(100.0);
955 
956                 if (log.isDebugEnabled())
957                 {
958                     log.debug(" Setze Wert : 100.0");
959                 }
960             }
961 
962             if (log.isDebugEnabled())
963             {
964                 log.debug(" Konjunkturindex : '" + konjunktur.toString() + "'");
965             }
966         }
967 
968         konjunktur = new Double(Common.aufZweiNachkommastellenRunden(konjunktur.doubleValue()));
969 
970         return konjunktur;
971     }
972 
973     /***
974      * Ermittelt die Vorhersage des Konjunkturindexes f&uuml;r das n&auml;chste Quartal, und gibt ihn zur&uuml;ck.
975      *
976      * @param projektnummer Die Projektnummer
977      * @param gruppennummer Die Gruppennummer
978      * @param quartal Das Quartal
979      * @return Der Konjunkturindex
980      */
981     public static final Double KonjunkturVorhersage(Integer projektnummer, Integer gruppennummer, Integer quartal)
982     {
983         Double konjunkturVorhersage = new Double(0.0);
984 
985         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
986         DataInterfaceErgebnissdaten die = new DataInterfaceErgebnissdaten();
987         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
988         DataInterfaceVoreinstellungen div = new DataInterfaceVoreinstellungen();
989 
990         Collection voreinstellungen = div.sucheKombination_Untergruppierung(projektnummer, Constants.VUG_VORHERSAGEKONJUNKTUR_KEY);
991         Iterator voreinstellungenIterator = voreinstellungen.iterator();
992         Voreinstellung voreinstellung = null;
993 
994         boolean ausVoreinstellungenGelesen = false;
995 
996         while (voreinstellungenIterator.hasNext())
997         {
998             voreinstellung = (Voreinstellung) voreinstellungenIterator.next();
999 
1000             if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEKONJUNKTURQ1) == 0 && quartal.intValue() == 0)
1001             {
1002                 konjunkturVorhersage = (Double) voreinstellung.getWertObject();
1003                 ausVoreinstellungenGelesen = true;
1004                 break;
1005             }
1006             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEKONJUNKTURQ2) == 0 && quartal.intValue() == 1)
1007             {
1008                 konjunkturVorhersage = (Double) voreinstellung.getWertObject();
1009                 ausVoreinstellungenGelesen = true;
1010                 break;
1011             }
1012             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEKONJUNKTURQ3) == 0 && quartal.intValue() == 2)
1013             {
1014                 konjunkturVorhersage = (Double) voreinstellung.getWertObject();
1015                 ausVoreinstellungenGelesen = true;
1016                 break;
1017             }
1018             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEKONJUNKTURQ4) == 0 && quartal.intValue() == 3)
1019             {
1020                 konjunkturVorhersage = (Double) voreinstellung.getWertObject();
1021                 ausVoreinstellungenGelesen = true;
1022                 break;
1023             }
1024             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEKONJUNKTURQ5) == 0 && quartal.intValue() == 4)
1025             {
1026                 konjunkturVorhersage = (Double) voreinstellung.getWertObject();
1027                 ausVoreinstellungenGelesen = true;
1028                 break;
1029             }
1030             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEKONJUNKTURQ6) == 0 && quartal.intValue() == 5)
1031             {
1032                 konjunkturVorhersage = (Double) voreinstellung.getWertObject();
1033                 ausVoreinstellungenGelesen = true;
1034                 break;
1035             }
1036             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEKONJUNKTURQ7) == 0 && quartal.intValue() == 6)
1037             {
1038                 konjunkturVorhersage = (Double) voreinstellung.getWertObject();
1039                 ausVoreinstellungenGelesen = true;
1040                 break;
1041             }
1042             else if (voreinstellung.getFeldname().compareTo(Constants.VF_VORHERSAGEKONJUNKTURQ8) == 0 && quartal.intValue() == 7)
1043             {
1044                 konjunkturVorhersage = (Double) voreinstellung.getWertObject();
1045                 ausVoreinstellungenGelesen = true;
1046                 break;
1047             }
1048         }
1049 
1050         if (ausVoreinstellungenGelesen == false)
1051         {
1052             Ergebniss voreinstellung_1 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, quartal, Constants.EF_GRUNDDATENSAISONINDEX_KEY);
1053             Ergebniss voreinstellung_2 = (Ergebniss) die.sucheKombination_Feld(projektnummer, gruppennummer, quartal, Constants.EF_GRUNDDATENSAISONINDEXVORHERSAGE_KEY);
1054 
1055             if (voreinstellung_2 != null && voreinstellung_2.getObjectWert() != null && ((Double) voreinstellung_2.getObjectWert()).doubleValue() > 0.0)
1056             {
1057                 konjunkturVorhersage = (Double) voreinstellung_2.getObjectWert();
1058 
1059                 if (log.isDebugEnabled())
1060                 {
1061                     log.debug(" Bereits Wert vorhanden : " + konjunkturVorhersage + " Q " + quartal.intValue());
1062                 }
1063             }
1064             else if (voreinstellung_1 != null && voreinstellung_1.getObjectWert() != null && quartal.intValue() >= 0)
1065             {
1066                 konjunkturVorhersage = new Double(((randomize.nextDouble() * 100.0) % (((Double) voreinstellung_1.getObjectWert()).intValue() + 2.5)) + 90.0);
1067 
1068                 if (log.isDebugEnabled())
1069                 {
1070                     log.debug(" Setze Wert : " + konjunkturVorhersage + " Q " + quartal.intValue());
1071                 }
1072             }
1073             else if (quartal.intValue() >= 0)
1074             {
1075                 konjunkturVorhersage = new Double(Math.abs((randomize.nextDouble() * 100.0) % 20.0) + 90.0);
1076 
1077                 if (log.isDebugEnabled())
1078                 {
1079                     log.debug(" Quartal grösser 0, keine Vorhersage vorhanden, Setze Wert  : " + konjunkturVorhersage);
1080                 }
1081             }
1082             else
1083             {
1084                 konjunkturVorhersage = new Double(100.0);
1085 
1086                 if (log.isDebugEnabled())
1087                 {
1088                     log.debug(" Setze Wert : 100.0");
1089                 }
1090             }
1091 
1092             if (log.isDebugEnabled())
1093             {
1094                 log.debug(" Konjunkturindex V : '" + konjunkturVorhersage.toString() + "'");
1095             }
1096         }
1097 
1098         konjunkturVorhersage = new Double(Common.aufZweiNachkommastellenRunden(konjunkturVorhersage.doubleValue()));
1099 
1100         return konjunkturVorhersage;
1101     }
1102 }