.createQuery("select s from Schlagwort s where s.name = :name");
for (String formularSchlagwort : wörter) {
formularSchlagwort = formularSchlagwort.trim();
if (formularSchlagwort.length() > 0) {
Schlagwort schlagwort;
q.setParameter("name", formularSchlagwort);
@SuppressWarnings("unchecked")
List<Schlagwort> selectedSchlagworts = q.getResultList();
if (selectedSchlagworts.size() == 0) {
// Schlagwort ist neu in der Datenbank
schlagwort = new Schlagwort(formularSchlagwort);
} else {
schlagwort = selectedSchlagworts.get(0);
}
if (!archivaleSchlagwörter.contains(schlagwort)) {
schlagwort = entityManager.merge(schlagwort);
archivaleSchlagwörter.add(schlagwort);
List<Archivale> archivalien = schlagwort.getArchivalien();
archivalien.add(aktuellesArchivale);
}
// bearbeitete archivaleSchlagwörter markierten
// weil die dann unten nicht gelöscht werden dürfen
schlagwort.setMarked(true);
}
}
// nicht markierte archivaleSchlagwörter löschen
for (int i = archivaleSchlagwörter.size(); i > 0; i--) {
Schlagwort archivaleSchlagwort = archivaleSchlagwörter.get(i - 1);
if (!archivaleSchlagwort.isMarked()) {
archivaleSchlagwort.getArchivalien().remove(aktuellesArchivale);
archivaleSchlagwörter.remove(i - 1);
}
}
// speichere in den Compass-Index