// Projekt ist gegeben. Dann müssen auch die Ziffern stimmen:
final ProjektDO projekt = projektDao.getById(obj.getProjektId()); // Bei Neuanlage ist Projekt nicht wirklich gebunden.
if (projekt.getNummernkreis() != obj.getNummernkreis()
|| projekt.getBereich() != obj.getBereich()
|| projekt.getNummer() != obj.getTeilbereich()) {
throw new UserException("Inkonsistenz bei Kost2: "
+ obj.getNummernkreis()
+ "."
+ obj.getBereich()
+ "."
+ obj.getTeilbereich()
+ " != "
+ projekt.getNummernkreis()
+ "."
+ projekt.getBereich()
+ "."
+ projekt.getNummer()
+ " (Projekt)");
}
} else if (obj.getNummernkreis() == 4 || obj.getNummernkreis() == 5) {
throw new UserException("fibu.kost2.error.projektNeededForNummernkreis");
}
List<Kost2DO> list = null;
final String sql = "from Kost2DO k where k.nummernkreis = ? and k.bereich = ? and k.teilbereich = ? and k.kost2Art.id = ?";
if (obj.getId() == null) {
// New kost entry
list = getHibernateTemplate().find(sql,
new Object[] { obj.getNummernkreis(), obj.getBereich(), obj.getTeilbereich(), obj.getKost2ArtId()});
} else {
// kost entry already exists. Check maybe changed:
list = getHibernateTemplate().find(sql + " and pk <> ?",
new Object[] { obj.getNummernkreis(), obj.getBereich(), obj.getTeilbereich(), obj.getKost2ArtId(), obj.getId()});
}
if (CollectionUtils.isNotEmpty(list) == true) {
throw new UserException("fibu.kost.error.collision");
}
}