Clubevent Person delete implemented

master
Markus Kreth 7 years ago
parent ff6b6fe353
commit 4b95244f50
  1. 5
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/AbstractDaoImpl.java
  2. 31
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/ClubEventDaoImpl.java

@ -5,6 +5,8 @@ import java.util.List;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -12,9 +14,10 @@ import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.EntityAccessor;
public abstract class AbstractDaoImpl<T extends EntityAccessor> implements IDao<T> { public abstract class AbstractDaoImpl<T extends EntityAccessor> implements IDao<T> {
protected final Logger log = LoggerFactory.getLogger(getClass());
@Autowired @Autowired
protected EntityManager entityManager; protected EntityManager entityManager;
private final Class<T> entityClass; private final Class<T> entityClass;
public AbstractDaoImpl(Class<T> entityClass) { public AbstractDaoImpl(Class<T> entityClass) {

@ -37,27 +37,44 @@ public class ClubEventDaoImpl extends AbstractDaoImpl<ClubEvent> implements Club
@Override @Override
public void addPersons(ClubEvent event, Collection<Person> updated) { public void addPersons(ClubEvent event, Collection<Person> updated) {
List<Person> added = new ArrayList<>(updated); List<Person> added = new ArrayList<>(updated);
List<Person> removed = new ArrayList<>();
Set<Person> current = event.getPersons();
Set<Person> persons2 = event.getPersons(); if (current != null) {
if (persons2 != null) { for (Person p : current) {
added.removeAll(persons2); if (added.contains(p) == false) {
removed.add(p);
}
}
added.removeAll(current);
} else { } else {
persons2 = new HashSet<>(); current = new HashSet<>();
event.setPersons(persons2); event.setPersons(current);
for (Person p : updated) { for (Person p : updated) {
event.add(p); event.add(p);
} }
} }
if (!added.isEmpty()) {
Query insertQuery = entityManager.createNativeQuery( Query insertQuery = entityManager.createNativeQuery(
"INSERT INTO clubevent_has_person (clubevent_id, person_id) VALUES (:eventId,:personId)"); "INSERT INTO clubevent_has_person (clubevent_id, person_id) VALUES (:eventId,:personId)");
for (Person p : added) { for (Person p : added) {
insertQuery.setParameter("eventId", event.getId()); insertQuery.setParameter("eventId", event.getId());
insertQuery.setParameter("personId", p.getId()); insertQuery.setParameter("personId", p.getId());
insertQuery.executeUpdate(); insertQuery.executeUpdate();
} }
persons2.addAll(added); }
if (!removed.isEmpty()) {
Query deleteQuery = entityManager.createNativeQuery(
"DELETE FROM clubevent_has_person WHERE clubevent_id=:eventId AND person_id=:personId");
for (Person p : removed) {
deleteQuery.setParameter("eventId", event.getId());
deleteQuery.setParameter("personId", p.getId());
deleteQuery.executeUpdate();
}
}
current.addAll(added);
current.removeAll(removed);
} }
@Override @Override

Loading…
Cancel
Save