// NaOpNu Objekt anhand der UID's holen
Long naOpNuUID = naUID;
if(naUID == null || naUID == 0)
naOpNuUID = opNuUID;
NaOpNu naOpNu = dao.getByUID(naOpNuUID);
if(customizingId == null || naOpNu == null)
return;
Integer naOpNuId = naOpNu.getNutzenattraktivitaetOperativerNutzenId();
Integer mandantId = naOpNu.getMandantId();
logger.debug("customizingId=" + naOpNu.getCustomizingId());
logger.debug("naOpNuId=" + naOpNuId);
logger.debug("mandantId=" + mandantId);
naOpNu.setEmail(email);
// Stufen holen
Integer stufen = form.getStufen();
logger.debug("Anzahl stufen: " + stufen);
Integer gewichtungsstufen = form.getGewichtungsstufen();
logger.debug("Anzahl gewichtungsstufen: " + gewichtungsstufen);
AutoGrowingList l = form.getNaOpNuLines();
Iterator it = l.iterator();
Double values = 0.0;
boolean fragebogenGewichtung = false;
while (it.hasNext()) {
NaOpNuLine line = (NaOpNuLine) it.next();
if (line != null) {
Integer nId = line.getNutzenkriteriumId();
logger.debug("nutzenkriteriumId=" + nId);
// Level der Abstufung holen
Integer levelAbstufung = line.getAbstufung();
logger.debug("Level der Abstufung: " + levelAbstufung);
Double valueAbstufung = Constants.NA_OP_NU_MATRIX[stufen - 2][levelAbstufung - 1];
logger.debug("Constants.NA_OP_NU_MATRIX["
+ (stufen - 2) + "][" + (levelAbstufung - 1) + "] = "
+ valueAbstufung);
// Level der Gewichtung holen
Integer levelGewichtung = line.getGewichtung();
logger.debug("Level der Gewichtung: " + levelGewichtung);
// Bei Gewichtung �ber Fragebogen
if (levelGewichtung != null) {
fragebogenGewichtung = true;
Double valueGewichtung = Constants.NA_OP_NU_MATRIX[stufen - 2][levelAbstufung - 1];
logger.debug("Constants.NA_OP_NU_MATRIX["
+ (stufen - 2) + "][" + (levelAbstufung - 1) + "] = "
+ valueGewichtung);
values += valueAbstufung * valueGewichtung / 3;
}
// Bei direkter Gewichtung
else {
logger.debug("Direkte Gewichtung");
// Nutzenkriterium holen
Nutzenkriterium n = new Nutzenkriterium();
n.setNutzenkriteriumId(nId);
n.setNutzenattraktivitaetOperativerNutzenId(naOpNuId);
n.setMandantId(mandantId);
n = nService.getAssignmentById(n);
Double gewichtung = null;
if (n == null) {
logger.error("Nutzenkriterium null!");
return;
}
else if ((gewichtung = n.getGewichtung()) == null) {
logger.error("Direkte Gewichtung null!");
return;
}
else {
// direkte Gewichtung berechnen
Double kategorieGewichtung = n.getKategorieGewichtung() / 100;
logger.debug("kategorieGewichtung=" + kategorieGewichtung);
logger.debug("gewichtung=" + gewichtung);
Double value = valueAbstufung * (gewichtung * kategorieGewichtung / 100);
values += value;
logger.debug("Berechnung: " + valueAbstufung
+ " * " + "(" + gewichtung + " * " + kategorieGewichtung +
" / " + 100 + ") = " + value);
}
}
}
}
// Arithmetisches Mittel bei Gewichtung �ber Fragebogen
if (fragebogenGewichtung)
values = values / l.size();
// Resultat speichern
naOpNu.setResultat(values);
dao.insertNaOpNuResultat(naOpNu);
}