1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.fhw.cabaweb.calculation;
20
21 import java.util.ArrayList;
22 import java.util.Collection;
23 import java.util.Iterator;
24
25 import java.io.IOException;
26 import java.util.Properties;
27
28 import javax.mail.AuthenticationFailedException;
29 import javax.mail.MessagingException;
30 import javax.mail.SendFailedException;
31 import javax.mail.internet.AddressException;
32
33 import org.apache.commons.logging.Log;
34 import org.apache.commons.logging.LogFactory;
35 import org.apache.struts.util.MessageResources;
36
37 import org.fhw.cabaweb.calculation.common.CommonCalculation;
38 import org.fhw.cabaweb.calculation.threads.BerechneBewertung;
39 import org.fhw.cabaweb.calculation.threads.BerechneHauptwerte;
40 import org.fhw.cabaweb.calculation.threads.BerechneVollUndGrenzkosten;
41 import org.fhw.cabaweb.calculation.threads.CheckEntscheidungen;
42 import org.fhw.cabaweb.calculation.threads.Lock;
43 import org.fhw.cabaweb.data.DataInterfaceErgebnissdaten;
44 import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenDouble;
45 import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenInteger;
46 import org.fhw.cabaweb.data.DataInterfaceGruppenmitglieder;
47 import org.fhw.cabaweb.data.DataInterfaceProjekte;
48 import org.fhw.cabaweb.data.DataInterfaceProjektgruppen;
49 import org.fhw.cabaweb.data.constants.Constants;
50 import org.fhw.cabaweb.data.dataobjects.Ergebniss;
51 import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
52 import org.fhw.cabaweb.ojb.dataobjects.Projekte;
53 import org.fhw.cabaweb.ojb.dataobjects.Projektgruppen;
54 import org.fhw.cabaweb.tools.MailUtilities;
55 import org.fhw.cabaweb.tools.StringUtilities;
56
57 /***
58 * Klasse für Tests auf eclipse Ebene ohne den Application Server (Tomcat).
59 *
60 * @author <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
61 * @version Version 1.0 01.09.2004
62 */
63 class TestDemo
64 {
65 /*** Commons Logging Instanz */
66 private static Log log = LogFactory.getLog("org.fhw.cabaweb.calculation");
67 public static void main(String[] args)
68 {
69
70 Integer projektnummer = new Integer(2);
71 Integer quartal = new Integer(0);
72 Integer gruppennummer = new Integer(17);
73 Integer reportnummer = new Integer(1);
74 Integer sprachnummer = new Integer(1);
75 Integer artDerBerechnung = new Integer(1);
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113 switch (artDerBerechnung.intValue())
114 {
115 case -99 :
116 ResetQuartalStart(projektnummer);
117 break;
118 case -1 :
119 ResetQuartal(projektnummer);
120 break;
121 case 0 :
122 log.info(" DO NOTHING : " + projektnummer);
123 break;
124 case 1 :
125 BerechneQuartal(projektnummer);
126 break;
127 }
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239 }
240
241 /***
242 * Berechnet ein Quartal für die übergebene Projektnummer
243 *
244 * @param projektnummer Die Projektnummer
245 */
246 public synchronized static void BerechneQuartal(Integer projektnummer)
247 {
248 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
249 DataInterfaceProjekte dip = new DataInterfaceProjekte();
250 boolean rueckgabewert = false;
251 Projekte projekt = (Projekte) dip.sucheProjektnummer(projektnummer);
252 Integer quartal = projekt.getAktuellesQuartal();
253
254 if (log.isDebugEnabled())
255 {
256 log.debug(" Berechne Quartal " + (quartal.intValue() + 1));
257 }
258
259 if (quartal.intValue() == -1)
260 {
261 Startwerte.StartwerteEintragen(projektnummer);
262 }
263 else
264 {
265 CheckEntscheidungen(projektnummer, new Integer(quartal.intValue() + 1));
266 }
267
268 ErstelleIndices(projektnummer, new Integer(quartal.intValue() + 1));
269
270 BerechneWerte(projektnummer, quartal);
271
272 projekt.setAktuellesQuartal(new Integer(quartal.intValue() + 1));
273
274 rueckgabewert = dip.editieren(projekt);
275
276 if (rueckgabewert == false)
277 {
278 SendStatusMail(projektnummer, new Integer(quartal.intValue() + 1), 1, false);
279 log.error(" Weiterschaltung des Quartals fehlgeschlagen");
280 }
281 else
282 {
283 SendStatusMail(projektnummer, new Integer(quartal.intValue() + 1), 1, true);
284 }
285 }
286
287 /***
288 * Setzt um ein Quartal für die übergebene Projektnummer zurück
289 *
290 * @param projektnummer Die Projektnummer
291 */
292 private synchronized static void ResetQuartal(Integer projektnummer)
293 {
294 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
295 DataInterfaceProjekte dip = new DataInterfaceProjekte();
296 boolean rueckgabewert = false;
297 Projekte projekt = (Projekte) dip.sucheProjektnummer(projektnummer);
298 Integer quartal = projekt.getAktuellesQuartal();
299
300 if (log.isDebugEnabled())
301 {
302 log.debug(" Reset Quartal nach " + (quartal.intValue() - 1));
303 }
304
305 if (quartal.intValue() >= -1)
306 {
307 quartal = new Integer(quartal.intValue() - 1);
308 }
309
310 projekt.setAktuellesQuartal(quartal);
311
312 rueckgabewert = dip.editieren(projekt);
313
314 if (rueckgabewert == false)
315 {
316 SendStatusMail(projektnummer, new Integer(quartal.intValue() + 1), -1, false);
317 log.error(" Reset des Quartals fehlgeschlagen");
318 }
319 else
320 {
321 SendStatusMail(projektnummer, new Integer(quartal.intValue() + 1), -1, true);
322 }
323 }
324
325 /***
326 * Setzt auf das Quartal -1 für die übergebene Projektnummer zurück
327 *
328 * @param projektnummer Die Projektnummer
329 */
330 private synchronized static void ResetQuartalStart(Integer projektnummer)
331 {
332 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
333 DataInterfaceProjekte dip = new DataInterfaceProjekte();
334 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
335 DataInterfaceErgebnissdatenDouble died = new DataInterfaceErgebnissdatenDouble();
336 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
337 DataInterfaceErgebnissdatenInteger diei = new DataInterfaceErgebnissdatenInteger();
338 boolean rueckgabewert = false;
339 Projekte projekt = (Projekte) dip.sucheProjektnummer(projektnummer);
340
341 if (log.isDebugEnabled())
342 {
343 log.debug(" Reset Quartal nach -1");
344 }
345
346 projekt.setAktuellesQuartal(new Integer(-1));
347
348 rueckgabewert = dip.editieren(projekt);
349
350 if (rueckgabewert == false)
351 {
352 log.error(" Reset des Quartals fehlgeschlagen");
353 }
354
355 if (log.isDebugEnabled())
356 {
357 log.debug(" Loeschen der DOUBLE Ergebnisse");
358 }
359
360 Collection ergebnisse = died.sucheKombination(projektnummer, null, null);
361 Iterator ergebnisiterator = ergebnisse.iterator();
362
363 while (ergebnisiterator.hasNext())
364 {
365 rueckgabewert = died.loeschen(ergebnisiterator.next());
366
367 if (rueckgabewert == false)
368 {
369 log.error(" Loeschen DOUBLE Ergebnis fehlgeschlagen");
370 }
371 }
372
373 if (log.isDebugEnabled())
374 {
375 log.debug(" Loeschen der INTEGER Ergebnisse");
376 }
377
378 ergebnisse = diei.sucheKombination(projektnummer, null, null);
379 ergebnisiterator = ergebnisse.iterator();
380
381 while (ergebnisiterator.hasNext())
382 {
383 rueckgabewert = diei.loeschen(ergebnisiterator.next());
384
385 if (rueckgabewert == false)
386 {
387 log.error(" Loeschen INTEGER Ergebnis fehlgeschlagen");
388 }
389 }
390
391 Startwerte.StartwerteEintragen(projektnummer);
392
393 SendStatusMail(projektnummer, new Integer(-1), -99, true);
394 }
395
396 /***
397 * Checkt die Entscheidungen des Unterenehmens und übernimmt sie im Zweifelsfall aus dem VorQuartal.
398 *
399 * @param projektnummer Die Projektnummer
400 */
401 private synchronized static void CheckEntscheidungen(Integer projektnummer, Integer quartal)
402 {
403 if (log.isDebugEnabled())
404 {
405 log.debug(" CheckEntscheidungen");
406 }
407
408 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
409 DataInterfaceProjektgruppen dipg = new DataInterfaceProjektgruppen();
410
411 Collection projektgruppen = dipg.sucheProjektnummer(projektnummer);
412 Iterator projektgruppeniterator = projektgruppen.iterator();
413
414 while (projektgruppeniterator.hasNext())
415 {
416 Projektgruppen projektgruppe = (Projektgruppen) projektgruppeniterator.next();
417
418 if (projektgruppe.getAktiv().booleanValue() == false || projektgruppe.getGruppenname().compareTo("Default") == 0 || projektgruppe.getGruppenname().compareTo("Projektleiter") == 0 || projektgruppe.getGruppenname().compareTo("Administratorgruppe") == 0)
419 projektgruppeniterator.remove();
420 }
421
422 projektgruppeniterator = projektgruppen.iterator();
423
424 Lock lock = new Lock(projektgruppen.size());
425
426 while (projektgruppeniterator.hasNext())
427 {
428 Projektgruppen projektgruppe = (Projektgruppen) projektgruppeniterator.next();
429 Integer gruppennummer = projektgruppe.getGruppennummer();
430
431 CheckEntscheidungen mt = new CheckEntscheidungen(lock, projektnummer, gruppennummer, quartal);
432 mt.setName("P " + projektnummer + " - G " + gruppennummer + " - Q " + quartal);
433 mt.setPriority(3);
434 mt.start();
435 }
436
437 while (lock.getFinishSemaphore() > 0)
438 {
439 synchronized (lock)
440 {
441 try
442 {
443 Thread.sleep(25);
444
445 if (lock.getSemaphore() == projektgruppen.size())
446 {
447 lock.notifyAll();
448 }
449 }
450 catch (Exception e)
451 {
452 log.error(e.getMessage(), e);
453 }
454 }
455 }
456 }
457
458 /***
459 * Berechnet die Werte für das Projekt und das angegebene Quartal
460 *
461 * @param projektnummer Die Projektnummer
462 * @param quartal Das Quartal
463 */
464 private synchronized static void BerechneWerte(Integer projektnummer, Integer quartal)
465 {
466 if (log.isDebugEnabled())
467 {
468 log.debug(" BerechneHauptwerte");
469 }
470
471 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
472 DataInterfaceProjektgruppen dipg = new DataInterfaceProjektgruppen();
473
474 Collection projektgruppen = dipg.sucheProjektnummer(projektnummer);
475 Iterator projektgruppeniterator = projektgruppen.iterator();
476
477 while (projektgruppeniterator.hasNext())
478 {
479 Projektgruppen projektgruppe = (Projektgruppen) projektgruppeniterator.next();
480
481 if (projektgruppe.getAktiv().booleanValue() == false || projektgruppe.getGruppenname().compareTo("Default") == 0 || projektgruppe.getGruppenname().compareTo("Projektleiter") == 0 || projektgruppe.getGruppenname().compareTo("Administratorgruppe") == 0)
482 projektgruppeniterator.remove();
483 }
484
485 projektgruppeniterator = projektgruppen.iterator();
486
487 Lock lock = new Lock(projektgruppen.size());
488
489 while (projektgruppeniterator.hasNext())
490 {
491 Projektgruppen projektgruppe = (Projektgruppen) projektgruppeniterator.next();
492 Integer gruppennummer = projektgruppe.getGruppennummer();
493
494 BerechneHauptwerte mt = new BerechneHauptwerte(lock, projektnummer, gruppennummer, quartal);
495 mt.setName("P " + projektnummer + " - G " + gruppennummer + " - Q " + quartal);
496 mt.setPriority(3);
497 mt.start();
498 }
499
500 while (lock.getFinishSemaphore() > 0)
501 {
502 synchronized (lock)
503 {
504 try
505 {
506 Thread.sleep(25);
507
508 if (lock.getSemaphore() == projektgruppen.size())
509 {
510 lock.notifyAll();
511 }
512 }
513 catch (Exception e)
514 {
515 log.error(e.getMessage(), e);
516 }
517 }
518 }
519
520 if (log.isDebugEnabled())
521 {
522 log.debug("BerechneVollUndGrenzkosten");
523 }
524
525 projektgruppeniterator = projektgruppen.iterator();
526 lock.setFinishSemaphore(projektgruppen.size());
527
528 while (projektgruppeniterator.hasNext())
529 {
530 Projektgruppen projektgruppe = (Projektgruppen) projektgruppeniterator.next();
531 Integer gruppennummer = projektgruppe.getGruppennummer();
532
533 BerechneVollUndGrenzkosten mt = new BerechneVollUndGrenzkosten(lock, projektnummer, gruppennummer, quartal);
534 mt.setName("P " + projektnummer + " - G " + gruppennummer + " - Q " + quartal);
535 mt.setPriority(3);
536 mt.start();
537 }
538
539 while (lock.getFinishSemaphore() > 0)
540 {
541 synchronized (lock)
542 {
543 try
544 {
545
546 Thread.sleep(25);
547
548 if (lock.getSemaphore() == projektgruppen.size())
549 {
550 lock.notifyAll();
551 }
552 }
553 catch (Exception e)
554 {
555 log.error(e.getMessage(), e);
556 }
557 }
558 }
559
560 if (log.isDebugEnabled())
561 {
562 log.debug("BerechneBewertung");
563 }
564
565 projektgruppeniterator = projektgruppen.iterator();
566 lock.setFinishSemaphore(projektgruppen.size());
567
568 while (projektgruppeniterator.hasNext())
569 {
570 Projektgruppen projektgruppe = (Projektgruppen) projektgruppeniterator.next();
571 Integer gruppennummer = projektgruppe.getGruppennummer();
572
573 BerechneBewertung mt = new BerechneBewertung(lock, projektnummer, gruppennummer, quartal);
574 mt.setName("P " + projektnummer + " - G " + gruppennummer + " - Q " + quartal);
575 mt.setPriority(3);
576 mt.start();
577 }
578
579 while (lock.getFinishSemaphore() > 0)
580 {
581 synchronized (lock)
582 {
583 try
584 {
585
586 Thread.sleep(25);
587
588 if (lock.getSemaphore() == projektgruppen.size())
589 {
590 lock.notifyAll();
591 }
592 }
593 catch (Exception e)
594 {
595 log.error(e.getMessage(), e);
596 }
597 }
598 }
599 }
600
601 /***
602 * Berechnet die Indices für das Projekt und das angegebene Quartal
603 *
604 * @param projektnummer Die Projektnummer
605 * @param quartal Das Quartal
606 */
607 private synchronized static void ErstelleIndices(Integer projektnummer, Integer quartal)
608 {
609 if (log.isDebugEnabled())
610 {
611 log.debug("ErstelleIndices");
612 }
613
614 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
615 DataInterfaceProjektgruppen dipg = new DataInterfaceProjektgruppen();
616 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
617 DataInterfaceErgebnissdaten die = new DataInterfaceErgebnissdaten();
618
619 Collection projektgruppen = dipg.sucheProjektnummer(projektnummer);
620 Iterator projektgruppeniterator = projektgruppen.iterator();
621
622 Double inflation = new Double(0.0);
623 Double inflationVorhersage = new Double(0.0);
624 Double lohnerhoehung = new Double(0.0);
625 Double lohnerhoehungVorhersage = new Double(0.0);
626 Double saison = new Double(0.0);
627 Double saisonVorhersage = new Double(0.0);
628 Double konjunktur = new Double(0.0);
629 Double konjunkturVorhersage = new Double(0.0);
630
631 while (projektgruppeniterator.hasNext())
632 {
633 Projektgruppen projektgruppe = (Projektgruppen) projektgruppeniterator.next();
634
635 if (projektgruppe.getAktiv().booleanValue() == false || projektgruppe.getGruppenname().compareTo("Default") == 0 || projektgruppe.getGruppenname().compareTo("Projektleiter") == 0 || projektgruppe.getGruppenname().compareTo("Administratorgruppe") == 0)
636 projektgruppeniterator.remove();
637 }
638
639 projektgruppeniterator = projektgruppen.iterator();
640
641 if (projektgruppeniterator.hasNext())
642 {
643 Projektgruppen projektgruppe = (Projektgruppen) projektgruppeniterator.next();
644 Integer gruppennummer = projektgruppe.getGruppennummer();
645
646 inflation = ErstelleIndices.Inflation(projektnummer, gruppennummer, quartal);
647 inflationVorhersage = ErstelleIndices.InflationVorhersage(projektnummer, gruppennummer, quartal);
648 lohnerhoehung = ErstelleIndices.Lohnerhoehung(projektnummer, gruppennummer, quartal);
649 lohnerhoehungVorhersage = ErstelleIndices.LohnerhoehungVorhersage(projektnummer, gruppennummer, quartal);
650 saison = ErstelleIndices.Saison(projektnummer, gruppennummer, quartal);
651 saisonVorhersage = ErstelleIndices.SaisonVorhersage(projektnummer, gruppennummer, quartal);
652 konjunktur = ErstelleIndices.Konjunktur(projektnummer, gruppennummer, quartal);
653 konjunkturVorhersage = ErstelleIndices.KonjunkturVorhersage(projektnummer, gruppennummer, quartal);
654 }
655
656 projektgruppeniterator = projektgruppen.iterator();
657
658 while (projektgruppeniterator.hasNext())
659 {
660 Projektgruppen projektgruppe = (Projektgruppen) projektgruppeniterator.next();
661 Integer gruppennummer = projektgruppe.getGruppennummer();
662
663 ArrayList aktuellesQuartal = (ArrayList) die.sucheQuartal(projektnummer, gruppennummer, quartal);
664 Ergebniss ergebnis = null;
665
666
667
668 ergebnis = CommonCalculation.SucheErgebnissFeldname(aktuellesQuartal, Constants.EF_GRUNDDATENINFLATIONSRATE_KEY);
669 ergebnis.setObjectWert(inflation);
670 CommonCalculation.WertEintragen(ergebnis, gruppennummer, quartal);
671
672
673
674 ergebnis = CommonCalculation.SucheErgebnissFeldname(aktuellesQuartal, Constants.EF_GRUNDDATENINFLATIONSRATEVORHERSAGE_KEY);
675 ergebnis.setObjectWert(inflationVorhersage);
676 CommonCalculation.WertEintragen(ergebnis, gruppennummer, quartal);
677
678
679
680 ergebnis = CommonCalculation.SucheErgebnissFeldname(aktuellesQuartal, Constants.EF_GRUNDDATENLOHNERHOEHUNG_KEY);
681 ergebnis.setObjectWert(lohnerhoehung);
682 CommonCalculation.WertEintragen(ergebnis, gruppennummer, quartal);
683
684
685
686 ergebnis = CommonCalculation.SucheErgebnissFeldname(aktuellesQuartal, Constants.EF_GRUNDDATENLOHNERHOEHUNGVORHERSAGE_KEY);
687 ergebnis.setObjectWert(lohnerhoehungVorhersage);
688 CommonCalculation.WertEintragen(ergebnis, gruppennummer, quartal);
689
690
691
692 ergebnis = CommonCalculation.SucheErgebnissFeldname(aktuellesQuartal, Constants.EF_GRUNDDATENSAISONINDEX_KEY);
693 ergebnis.setObjectWert(saison);
694 CommonCalculation.WertEintragen(ergebnis, gruppennummer, quartal);
695
696
697
698 ergebnis = CommonCalculation.SucheErgebnissFeldname(aktuellesQuartal, Constants.EF_GRUNDDATENSAISONINDEXVORHERSAGE_KEY);
699 ergebnis.setObjectWert(saisonVorhersage);
700 CommonCalculation.WertEintragen(ergebnis, gruppennummer, quartal);
701
702
703
704 ergebnis = CommonCalculation.SucheErgebnissFeldname(aktuellesQuartal, Constants.EF_GRUNDDATENKONJUNKTURINDEX_KEY);
705 ergebnis.setObjectWert(konjunktur);
706 CommonCalculation.WertEintragen(ergebnis, gruppennummer, quartal);
707
708
709
710 ergebnis = CommonCalculation.SucheErgebnissFeldname(aktuellesQuartal, Constants.EF_GRUNDDATENKONJUNKURINDEXVORHERSAGE_KEY);
711 ergebnis.setObjectWert(konjunkturVorhersage);
712 CommonCalculation.WertEintragen(ergebnis, gruppennummer, quartal);
713 }
714 }
715
716 /***
717 * Verschickt eMails mit Information über die erfolgte Berechnung.
718 *
719 * @param projektnummer Die Projektnummer
720 * @param quartal Das Quartal
721 * @param artDerBerechnung Die Art der Berechnung (-99, -1, 0, 1)
722 * @param success War der Vorgang erfolgreich (true/false)
723 */
724 private synchronized static void SendStatusMail(Integer projektnummer, Integer quartal, int artDerBerechnung, boolean success)
725 {
726 if (log.isDebugEnabled())
727 {
728 log.debug("Email");
729 }
730
731 Properties properties = StringUtilities.getPropertiesFromFile("cabaweb.properties");
732
733 String smtphost = properties.getProperty("SMTPHost");
734 String smtpport = properties.getProperty("SMTPPort");
735 String smtpuser = properties.getProperty("SMTPUser");
736 String smtppassword = properties.getProperty("SMTPPassword");
737 String absenderadresse = properties.getProperty("AbsenderAdresse");
738 String adminadresse = properties.getProperty("AdminAdresse");
739 String absoluteURL = properties.getProperty("AbsoluteURL");
740
741 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
742 DataInterfaceGruppenmitglieder dig = new DataInterfaceGruppenmitglieder();
743
744 Collection gruppenmitglieder = dig.sucheProjektnummer(projektnummer);
745 Iterator gruppenmitgliederiterator = gruppenmitglieder.iterator();
746
747 while (gruppenmitgliederiterator.hasNext())
748 {
749 Gruppenmitglieder gruppenmitglied = (Gruppenmitglieder) gruppenmitgliederiterator.next();
750
751 if (gruppenmitglied.getAktiv().booleanValue() == false || gruppenmitglied.getProjektgruppe().getAktiv().booleanValue() == false || gruppenmitglied.getProjektgruppe().getProjekte().getAktiv().booleanValue() == false || gruppenmitglied.getProjektgruppe().getGruppenname().compareTo("Default") == 0)
752 gruppenmitgliederiterator.remove();
753 }
754
755 gruppenmitgliederiterator = gruppenmitglieder.iterator();
756
757 MessageResources grpmessages = MessageResources.getMessageResources("org.fhw.cabaweb.webfrontend.resources.CalculationResources");
758
759 String subject = null;
760 String mailbody = null;
761 String successString = null;
762
763 while (gruppenmitgliederiterator.hasNext())
764 {
765 Gruppenmitglieder gruppenmitglied = (Gruppenmitglieder) gruppenmitgliederiterator.next();
766
767 try
768 {
769 if (success)
770 successString = grpmessages.getMessage("description.successful");
771 else
772 successString = grpmessages.getMessage("description.failure");
773
774 switch (artDerBerechnung)
775 {
776 case -99 :
777 subject = grpmessages.getMessage("message.de.emailsubject.reset", gruppenmitglied.getProjektgruppe().getProjekte().getProjektname(), quartal, successString);
778 mailbody = grpmessages.getMessage("message.de.emailtext.reset", gruppenmitglied.getProjektgruppe().getProjekte().getProjektname(), quartal, successString) + "\n\n";
779 mailbody += "\n-----------------------------------------------------------------\n";
780 mailbody += grpmessages.getMessage("message.en.emailtext.reset", gruppenmitglied.getProjektgruppe().getProjekte().getProjektname(), quartal, successString) + "\n\n";
781 MailUtilities.sendMail(smtphost, smtpport, smtpuser, smtppassword, absenderadresse, gruppenmitglied.getMitgliedsemailadresse(), null, subject, mailbody);
782 break;
783 case -1 :
784 subject = grpmessages.getMessage("message.de.emailsubject.reset", gruppenmitglied.getProjektgruppe().getProjekte().getProjektname(), quartal, successString);
785 mailbody = grpmessages.getMessage("message.de.emailtext.reset", gruppenmitglied.getProjektgruppe().getProjekte().getProjektname(), quartal, successString) + "\n\n";
786 mailbody += "\n-----------------------------------------------------------------\n";
787 mailbody += grpmessages.getMessage("message.en.emailtext.reset", gruppenmitglied.getProjektgruppe().getProjekte().getProjektname(), quartal, successString) + "\n\n";
788 MailUtilities.sendMail(smtphost, smtpport, smtpuser, smtppassword, absenderadresse, gruppenmitglied.getMitgliedsemailadresse(), null, subject, mailbody);
789 break;
790 case 0 :
791 subject = "";
792 break;
793 case 1 :
794 subject = grpmessages.getMessage("message.de.emailsubject.calc", gruppenmitglied.getProjektgruppe().getProjekte().getProjektname(), quartal, successString);
795 mailbody = grpmessages.getMessage("message.de.emailtext.calc", gruppenmitglied.getProjektgruppe().getProjekte().getProjektname(), quartal, successString, absoluteURL) + "\n\n";
796 mailbody += "\n-----------------------------------------------------------------\n";
797 mailbody += grpmessages.getMessage("message.en.emailtext.calc", gruppenmitglied.getProjektgruppe().getProjekte().getProjektname(), quartal, successString, absoluteURL) + "\n\n";
798 MailUtilities.sendMail(smtphost, smtpport, smtpuser, smtppassword, absenderadresse, gruppenmitglied.getMitgliedsemailadresse(), null, subject, mailbody);
799 break;
800 }
801 }
802 catch (IOException ex)
803 {
804 log.error(MailUtilities.SendErrorMailToAdmin("IOException - Failure sending mail to " + gruppenmitglied.getMitgliedsemailadresse(), ex.getLocalizedMessage()));
805 log.error(" IOException - Failure sending mail to " + gruppenmitglied.getMitgliedsemailadresse(), ex);
806 }
807 catch (AuthenticationFailedException ex)
808 {
809 log.error(MailUtilities.SendErrorMailToAdmin("AuthenticationFailedException - Failure sending mail to " + gruppenmitglied.getMitgliedsemailadresse(), ex.getLocalizedMessage()));
810 log.error(" AuthenticationFailedException - Failure sending mail to " + gruppenmitglied.getMitgliedsemailadresse(), ex);
811 }
812 catch (SendFailedException ex)
813 {
814 log.error(MailUtilities.SendErrorMailToAdmin("SendFailedException - Failure sending mail to " + gruppenmitglied.getMitgliedsemailadresse(), ex.getLocalizedMessage()));
815 log.error(" SendFailedException - Failure sending mail to " + gruppenmitglied.getMitgliedsemailadresse(), ex);
816 }
817 catch (AddressException ex)
818 {
819 log.error(MailUtilities.SendErrorMailToAdmin("AddressException - Failure sending mail to " + gruppenmitglied.getMitgliedsemailadresse(), ex.getLocalizedMessage()));
820 log.error(" AddressException - Failure sending mail to " + gruppenmitglied.getMitgliedsemailadresse(), ex);
821 }
822 catch (MessagingException ex)
823 {
824 log.error(MailUtilities.SendErrorMailToAdmin("MessagingException - Failure sending mail to " + gruppenmitglied.getMitgliedsemailadresse(), ex.getLocalizedMessage()));
825 log.error(" MessagingException - Failure sending mail to " + gruppenmitglied.getMitgliedsemailadresse(), ex);
826 }
827 }
828 }
829 }