From 4c1c9aef6fe5b08a636d456488146d34b79959d0 Mon Sep 17 00:00:00 2001 From: Athou Date: Thu, 4 Jul 2013 21:32:34 +0200 Subject: [PATCH] cleaner way of deleting relationships --- .../java/com/commafeed/backend/dao/FeedDAO.java | 17 +---------------- .../java/com/commafeed/backend/model/Feed.java | 12 ++++++++++-- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/commafeed/backend/dao/FeedDAO.java b/src/main/java/com/commafeed/backend/dao/FeedDAO.java index 8351e1e3..8cd53359 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedDAO.java @@ -1,7 +1,6 @@ package com.commafeed.backend.dao; import java.util.Date; -import java.util.Iterator; import java.util.List; import javax.ejb.Stateless; @@ -17,7 +16,6 @@ import org.apache.commons.lang.StringUtils; import com.commafeed.backend.feeds.FeedUtils; import com.commafeed.backend.model.Feed; -import com.commafeed.backend.model.FeedEntry; import com.commafeed.backend.model.FeedSubscription; import com.commafeed.backend.model.FeedSubscription_; import com.commafeed.backend.model.Feed_; @@ -118,20 +116,7 @@ public class FeedDAO extends GenericDAO { List list = q.getResultList(); int deleted = list.size(); - for (Feed feed : list) { - for (FeedEntry entry : feed.getEntries()) { - Iterator it = entry.getFeeds().iterator(); - while (it.hasNext()) { - Feed f = it.next(); - if (f.getId().equals(feed.getId())) { - it.remove(); - } - } - em.merge(entry); - } - feed.getEntries().clear(); - delete(feed); - } + delete(list); return deleted; } diff --git a/src/main/java/com/commafeed/backend/model/Feed.java b/src/main/java/com/commafeed/backend/model/Feed.java index 4aacf5f2..db514129 100644 --- a/src/main/java/com/commafeed/backend/model/Feed.java +++ b/src/main/java/com/commafeed/backend/model/Feed.java @@ -8,6 +8,7 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; +import javax.persistence.PreRemove; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; @@ -33,10 +34,10 @@ public class Feed extends AbstractModel { @Column(length = 40, nullable = false) private String urlHash; - + @Column(length = 2048, nullable = false) private String normalizedUrl; - + @Column(length = 40, nullable = false) private String normalizedUrlHash; @@ -144,6 +145,13 @@ public class Feed extends AbstractModel { @Transient private boolean urgent; + @PreRemove + private void removeEntriesFromFeed() { + for (FeedEntry entry : entries) { + entry.getFeeds().remove(this); + } + } + public Feed() { }