// Gewichtungen �berpr�fen
Double gewichtung = 0.0;
Iterator it = list.iterator();
while (it.hasNext()) {
NutzenkriteriumLine nl = (NutzenkriteriumLine) it.next();
Integer nutzenkriteriumId = nl.getNutzenkriteriumId();
logger.debug("nutzenkrtieriumId=" + nutzenkriteriumId);
String g = nl.getGewichtung();
logger.debug("Gewichtung: " + g);
try {
gewichtung += new Double(g);
} catch (Exception e) {}
}
logger.debug("Total gewichtungen: " + gewichtung);
if (gewichtung < 99.999 || gewichtung > 100.0001) {
errors.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("errors.gewichtung.failure"));
return false;
}
/*
// Gewichtungen �berpr�fen
Iterator it = list.iterator();
ArrayList<Double> gewichtungsListe = new ArrayList<Double>();
HashMap<Integer, ArrayList<Double>> gewichtungen = new HashMap<Integer, ArrayList<Double>>();
Double kategorieGewichtung = 0.0;
boolean isFirst = true;
Integer tmpKategorieId = null;
while (it.hasNext()) {
NutzenkriteriumLine nl = (NutzenkriteriumLine) it.next();
Integer kategorieId = nl.getKategorieId();
Integer nutzenkriteriumId = nl.getNutzenkriteriumId();
logger.debug("kategorieId=" + kategorieId);
logger.debug("nutzenkrtieriumId=" + nutzenkriteriumId);
// Gewichtung (muss pro Kategorie 100% ergeben)
String g = nl.getGewichtung();
logger.debug("Gewichtung: " + g);
// Gewichtung f�r die selbe Kategorie in eine Liste stellen
if (isFirst || kategorieId == null) {
isFirst = false;
tmpKategorieId = kategorieId;
try {
gewichtungsListe.add(new Double(g));
} catch (Exception e) {}
}
// N�chste Kategorie
else {
gewichtungen.put(tmpKategorieId, gewichtungsListe);
gewichtungsListe = new ArrayList<Double>();
tmpKategorieId = kategorieId;
try {
gewichtungsListe.add(new Double(g));
} catch (Exception e) {}
}
// kategorieGewichtung
String kg = nl.getKategorieGewichtung();
logger.debug("Gewichtung Kategorie: " + kg);
try {
kategorieGewichtung += new Double(kg);
} catch (Exception e) {}
}
it = gewichtungen.keySet().iterator();
while (it.hasNext()) {
Integer key = (Integer) it.next();
gewichtungsListe = gewichtungen.get(key);
Double gewichtung = 0.0;
for (Double d : gewichtungsListe) {
gewichtung += d;
}
logger.debug("Total gewichtungen: " + gewichtung);
if (gewichtung < 99.999 || gewichtung > 100) {
errors.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("errors.gewichtung.failure"));
return false;
}
}
logger.debug("Total gewichtungen Kategorie: " + kategorieGewichtung);
if (kategorieGewichtung < 99.999 || kategorieGewichtung > 100) {
errors.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("errors.gewichtung.failure"));
return false;
}*/
// Ben�tigte ids holen
HttpSession session = request.getSession();
Integer customizingId =
(Integer) session.getAttribute(Constants.CUSTOMIZING_ID);
Integer naOpNuId = cService.getNaOpNuId(request, customizingId);
// Allf�llige indirekte Gewichtungen l�schen
Auswahlfeld a = new Auswahlfeld();
a.setNutzenattraktivitaetOperativerNutzenId(naOpNuId);
aService.deleteGewichtungen(a);
// Gewichtung speichern
it = list.iterator();
while (it.hasNext()) {
NutzenkriteriumLine nl = (NutzenkriteriumLine) it.next();
Nutzenkriterium n = new Nutzenkriterium();
n.setNutzenkriteriumId(nl.getNutzenkriteriumId());
n.setNutzenattraktivitaetOperativerNutzenId(naOpNuId);
n.setGewichtung(new Double(nl.getGewichtung()));
dao.updateAssignmentGewichtung(n);
// Gewichtung der Kategorien speichern
Integer kategorieId = nl.getKategorieId();
if (kategorieId != null) {
Double g = null;
try {
g = new Double(nl.getKategorieGewichtung());
} catch (Exception e) {}
Kategorie k = new Kategorie();
k.setGewichtung(g);
k.setKategorieId(nl.getKategorieId());
k.setNutzenattraktivitaetOperativerNutzenId(naOpNuId);
kService.updateAssignment(k);
}
}