summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/tickets
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2014-04-25 23:52:30 -0400
committerJames Moger <james.moger@gitblit.com>2014-05-01 14:27:28 -0400
commitce048e750f7ae986dddfc8ab9b57750114d2b7b9 (patch)
tree05c085d9fdfaf00109a31fd98ef12f41012b2357 /src/main/java/com/gitblit/tickets
parent16ef06d210bec7dd5b44d82f70d9f7bb9e4dbf6f (diff)
downloadgitblit-ce048e750f7ae986dddfc8ab9b57750114d2b7b9.tar.gz
gitblit-ce048e750f7ae986dddfc8ab9b57750114d2b7b9.zip
Create and update milestone pages with rename support
Diffstat (limited to 'src/main/java/com/gitblit/tickets')
-rw-r--r--src/main/java/com/gitblit/tickets/ITicketService.java31
-rw-r--r--src/main/java/com/gitblit/tickets/TicketLabel.java7
-rw-r--r--src/main/java/com/gitblit/tickets/TicketMilestone.java4
3 files changed, 35 insertions, 7 deletions
diff --git a/src/main/java/com/gitblit/tickets/ITicketService.java b/src/main/java/com/gitblit/tickets/ITicketService.java
index c2f3283e..e1a377a6 100644
--- a/src/main/java/com/gitblit/tickets/ITicketService.java
+++ b/src/main/java/com/gitblit/tickets/ITicketService.java
@@ -49,6 +49,7 @@ import com.gitblit.models.TicketModel.Field;
import com.gitblit.models.TicketModel.Patchset;
import com.gitblit.models.TicketModel.Status;
import com.gitblit.tickets.TicketIndexer.Lucene;
+import com.gitblit.utils.DeepCopier;
import com.gitblit.utils.DiffUtils;
import com.gitblit.utils.DiffUtils.DiffStat;
import com.gitblit.utils.StringUtils;
@@ -556,9 +557,10 @@ public abstract class ITicketService {
public TicketMilestone getMilestone(RepositoryModel repository, String milestone) {
for (TicketMilestone ms : getMilestones(repository)) {
if (ms.name.equalsIgnoreCase(milestone)) {
+ TicketMilestone tm = DeepCopier.copy(ms);
String q = QueryBuilder.q(Lucene.rid.matches(repository.getRID())).and(Lucene.milestone.matches(milestone)).build();
- ms.tickets = indexer.queryFor(q, 1, 0, Lucene.number.name(), true);
- return ms;
+ tm.tickets = indexer.queryFor(q, 1, 0, Lucene.number.name(), true);
+ return tm;
}
}
return null;
@@ -639,6 +641,21 @@ public abstract class ITicketService {
* @since 1.4.0
*/
public synchronized boolean renameMilestone(RepositoryModel repository, String oldName, String newName, String createdBy) {
+ return renameMilestone(repository, oldName, newName, createdBy, true);
+ }
+
+ /**
+ * Renames a milestone.
+ *
+ * @param repository
+ * @param oldName
+ * @param newName
+ * @param createdBy
+ * @param send ticket notifications
+ * @return true if successful
+ * @since 1.6.0
+ */
+ public synchronized boolean renameMilestone(RepositoryModel repository, String oldName, String newName, String createdBy, boolean notify) {
if (StringUtils.isEmpty(newName)) {
throw new IllegalArgumentException("new milestone can not be empty!");
}
@@ -651,7 +668,7 @@ public abstract class ITicketService {
config.setString(MILESTONE, newName, STATUS, milestone.status.name());
config.setString(MILESTONE, newName, COLOR, milestone.color);
if (milestone.due != null) {
- config.setString(MILESTONE, milestone.name, DUE,
+ config.setString(MILESTONE, newName, DUE,
new SimpleDateFormat(DUE_DATE_PATTERN).format(milestone.due));
}
config.save();
@@ -663,9 +680,13 @@ public abstract class ITicketService {
Change change = new Change(createdBy);
change.setField(Field.milestone, newName);
TicketModel ticket = updateTicket(repository, qr.number, change);
- notifier.queueMailing(ticket);
+ if (notify && ticket.isOpen()) {
+ notifier.queueMailing(ticket);
+ }
+ }
+ if (notify) {
+ notifier.sendAll();
}
- notifier.sendAll();
return true;
} catch (IOException e) {
diff --git a/src/main/java/com/gitblit/tickets/TicketLabel.java b/src/main/java/com/gitblit/tickets/TicketLabel.java
index 686ce88b..a7f0ebec 100644
--- a/src/main/java/com/gitblit/tickets/TicketLabel.java
+++ b/src/main/java/com/gitblit/tickets/TicketLabel.java
@@ -30,14 +30,17 @@ public class TicketLabel implements Serializable {
private static final long serialVersionUID = 1L;
- public final String name;
+ public String name;
public String color;
public List<QueryResult> tickets;
-
public TicketLabel(String name) {
+ setName(name);
+ }
+
+ public void setName(String name) {
this.name = name;
this.color = StringUtils.getColor(name);
}
diff --git a/src/main/java/com/gitblit/tickets/TicketMilestone.java b/src/main/java/com/gitblit/tickets/TicketMilestone.java
index c6b4fcca..680615a9 100644
--- a/src/main/java/com/gitblit/tickets/TicketMilestone.java
+++ b/src/main/java/com/gitblit/tickets/TicketMilestone.java
@@ -37,6 +37,10 @@ public class TicketMilestone extends TicketLabel {
super(name);
status = Status.Open;
}
+
+ public void setDue(Date due) {
+ this.due = due;
+ }
public int getProgress() {
int total = getTotalTickets();