From 667163976e4e51fc3ebf191525e44d97c8a724dc Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 01 May 2014 14:31:18 -0400
Subject: [PATCH] Overdue labeling, notify changed tickets control

---
 src/main/java/com/gitblit/tickets/ITicketService.java |   38 +++++++++++++++++++++++++++++---------
 1 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/gitblit/tickets/ITicketService.java b/src/main/java/com/gitblit/tickets/ITicketService.java
index cce805e..3261ca9 100644
--- a/src/main/java/com/gitblit/tickets/ITicketService.java
+++ b/src/main/java/com/gitblit/tickets/ITicketService.java
@@ -651,11 +651,12 @@
 	 * @param oldName
 	 * @param newName
 	 * @param createdBy
-	 * @param send ticket notifications
+	 * @param notifyOpenTickets
 	 * @return true if successful
 	 * @since 1.6.0
 	 */
-	public synchronized boolean renameMilestone(RepositoryModel repository, String oldName, String newName, String createdBy, boolean notify) {
+	public synchronized boolean renameMilestone(RepositoryModel repository, String oldName,
+			String newName, String createdBy, boolean notifyOpenTickets) {
 		if (StringUtils.isEmpty(newName)) {
 			throw new IllegalArgumentException("new milestone can not be empty!");
 		}
@@ -680,11 +681,11 @@
 				Change change = new Change(createdBy);
 				change.setField(Field.milestone, newName);
 				TicketModel ticket = updateTicket(repository, qr.number, change);
-				if (notify && ticket.isOpen()) {
+				if (notifyOpenTickets && ticket.isOpen()) {
 					notifier.queueMailing(ticket);
 				}
 			}
-			if (notify) {
+			if (notifyOpenTickets) {
 				notifier.sendAll();
 			}
 
@@ -709,6 +710,21 @@
 	 * @since 1.4.0
 	 */
 	public synchronized boolean deleteMilestone(RepositoryModel repository, String milestone, String createdBy) {
+		return deleteMilestone(repository, milestone, createdBy, true);
+	}
+
+	/**
+	 * Deletes a milestone.
+	 *
+	 * @param repository
+	 * @param milestone
+	 * @param createdBy
+	 * @param notifyOpenTickets
+	 * @return true if successful
+	 * @since 1.6.0
+	 */
+	public synchronized boolean deleteMilestone(RepositoryModel repository, String milestone,
+			String createdBy, boolean notifyOpenTickets) {
 		if (StringUtils.isEmpty(milestone)) {
 			throw new IllegalArgumentException("milestone can not be empty!");
 		}
@@ -722,14 +738,18 @@
 
 			milestonesCache.remove(repository.name);
 
+			TicketNotifier notifier = createNotifier();
 			for (QueryResult qr : tm.tickets) {
-				if (qr.isOpen()) {
-					// reset the milestone only for open tickets
-					Change change = new Change(createdBy);
-					change.setField(Field.milestone, "");
-					TicketModel ticket = updateTicket(repository, qr.number, change);
+				Change change = new Change(createdBy);
+				change.setField(Field.milestone, "");
+				TicketModel ticket = updateTicket(repository, qr.number, change);
+				if (notifyOpenTickets && ticket.isOpen()) {
+					notifier.queueMailing(ticket);
 				}
 			}
+			if (notifyOpenTickets) {
+				notifier.sendAll();
+			}
 			return true;
 		} catch (IOException e) {
 			log.error("failed to delete milestone " + milestone + " in " + repository, e);

--
Gitblit v1.9.1