java/code/src/com/redhat/rhn/common/db/datasource/xml/Errata_queries.xml | 6 ++++ java/code/src/com/redhat/rhn/domain/errata/AbstractErrata.java | 8 +++++ java/code/src/com/redhat/rhn/domain/errata/Errata.java | 8 +++++ java/code/src/com/redhat/rhn/domain/errata/ErrataFactory.java | 1 java/code/src/com/redhat/rhn/frontend/events/CloneErrataAction.java | 3 ++ java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java | 15 ++++++++++ 6 files changed, 41 insertions(+)
New commits: commit d9cff23cbc3f2ec1c7a91897b3cbfe9bc45426c9 Author: Tomas Lestach tlestach@redhat.com Date: Tue May 24 16:05:41 2011 +0200
443126 - introduce notifications for custom errata
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Errata_queries.xml b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Errata_queries.xml index 308cacf..fc8b537 100644 --- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Errata_queries.xml +++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Errata_queries.xml @@ -1166,6 +1166,12 @@ SELECT 1 </query> </write-mode>
+<write-mode name="clear_errata_channel_notification"> + <query params="eid, cid"> + delete from rhnErrataQueue where errata_id = :eid and channel_id = :cid + </query> +</write-mode> + <mode name="list_errata_notification"> <query params="eid"> SELECT errata_id, channel_id, next_action diff --git a/java/code/src/com/redhat/rhn/domain/errata/AbstractErrata.java b/java/code/src/com/redhat/rhn/domain/errata/AbstractErrata.java index c828584..51b0186 100644 --- a/java/code/src/com/redhat/rhn/domain/errata/AbstractErrata.java +++ b/java/code/src/com/redhat/rhn/domain/errata/AbstractErrata.java @@ -610,6 +610,14 @@ public abstract class AbstractErrata extends BaseDomainHelper implements /** * {@inheritDoc} */ + public void addChannelNotification(Channel channelIn, Date dateIn) { + ErrataManager.clearErrataChannelNotifications(this, channelIn); + ErrataManager.addErrataNotification(this, channelIn, dateIn); + } + + /** + * {@inheritDoc} + */ public List getNotificationQueue() { return ErrataManager.listErrataNotifications(this); } diff --git a/java/code/src/com/redhat/rhn/domain/errata/Errata.java b/java/code/src/com/redhat/rhn/domain/errata/Errata.java index 39ffd38..dd610c0 100644 --- a/java/code/src/com/redhat/rhn/domain/errata/Errata.java +++ b/java/code/src/com/redhat/rhn/domain/errata/Errata.java @@ -384,6 +384,14 @@ public interface Errata { void addNotification(Date dateIn);
/** + * Add a new notification for this errata + * in specified channel + * @param channelIn affected channel + * @param dateIn The notify date + */ + void addChannelNotification(Channel channelIn, Date dateIn); + + /** * List errata notifications that are queued * @return list of maps with channel_id and time */ diff --git a/java/code/src/com/redhat/rhn/domain/errata/ErrataFactory.java b/java/code/src/com/redhat/rhn/domain/errata/ErrataFactory.java index f055d18..942c59a 100644 --- a/java/code/src/com/redhat/rhn/domain/errata/ErrataFactory.java +++ b/java/code/src/com/redhat/rhn/domain/errata/ErrataFactory.java @@ -274,6 +274,7 @@ public class ErrataFactory extends HibernateFactory { errata = publish(errata); } errata.addChannel(chan); + errata.addChannelNotification(chan, new Date());
Set<Package> packagesToPush = new HashSet<Package>(); DataResult<PackageOverview> packs; diff --git a/java/code/src/com/redhat/rhn/frontend/events/CloneErrataAction.java b/java/code/src/com/redhat/rhn/frontend/events/CloneErrataAction.java index 8bfbee5..c9fdaa2 100644 --- a/java/code/src/com/redhat/rhn/frontend/events/CloneErrataAction.java +++ b/java/code/src/com/redhat/rhn/frontend/events/CloneErrataAction.java @@ -28,6 +28,7 @@ import org.apache.log4j.Logger;
import java.util.ArrayList; import java.util.Collection; +import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -59,6 +60,7 @@ public class CloneErrataAction if (errata instanceof PublishedClonedErrata) { errata.addChannel(currChan); ErrataCacheManager.insertCacheForChannelErrata(cids, errata); + errata.addChannelNotification(currChan, new Date()); } else { Set<Channel> channelSet = new HashSet<Channel>(); @@ -72,6 +74,7 @@ public class CloneErrataAction msg.getUser().getOrg()); published.setChannels(channelSet); ErrataCacheManager.insertCacheForChannelErrata(cids, published); + published.addChannelNotification(currChan, new Date()); } else { log.debug("Re-publishing clone"); diff --git a/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java b/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java index bff6a2a..57597b2 100644 --- a/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java +++ b/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java @@ -192,6 +192,7 @@ public class ErrataManager extends BaseManager { Channel channel = ChannelManager.lookupByIdAndUser(channelId, user); if (channel != null) { errata.addChannel(channel); + errata.addChannelNotification(channel, new Date()); } }
@@ -1303,6 +1304,20 @@ public class ErrataManager extends BaseManager { }
/** + * Delete all errata notifications for an errata in specified channel + * @param e the errata to clear notifications for + * @param c affected channel + */ + public static void clearErrataChannelNotifications(Errata e, Channel c) { + Map params = new HashMap(); + params.put("eid", e.getId()); + params.put("cid", c.getId()); + WriteMode m = ModeFactory.getWriteMode( + "Errata_queries", "clear_errata_channel_notification"); + m.executeUpdate(params); + } + + /** * List queued errata notifications * @param e the errata * @return list of maps
spacewalk-commits@lists.fedorahosted.org