Skip to main content
summaryrefslogtreecommitdiffstats
blob: 79d570d386d1c7a18d96cfea07cf53845c459b20 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/*******************************************************************************
 * Copyright (c) 2004, 2008 John Anvik and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     John Anvik - initial API and implementation
 *******************************************************************************/

package org.eclipse.mylyn.internal.bugzilla.core.history;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

/**
 * @author John Anvik
 */
public class TaskHistory implements Iterable<TaskRevision>, Serializable {

	private static final long serialVersionUID = 1724420130243724426L;

	private final List<StatusEvent> statusEvents;

	private final List<ResolutionEvent> resolutionEvents;

	private final List<AssignmentEvent> assignmentEvents;

	private final List<TaskRevision> otherEvents;

	private final List<AttachmentEvent> attachmentEvents;

	public TaskHistory() {
		this.statusEvents = new ArrayList<StatusEvent>();
		this.resolutionEvents = new ArrayList<ResolutionEvent>();
		this.assignmentEvents = new ArrayList<AssignmentEvent>();
		this.attachmentEvents = new ArrayList<AttachmentEvent>();
		this.otherEvents = new ArrayList<TaskRevision>();
	}

	public void addEvent(TaskRevision event) {
		if (event instanceof StatusEvent) {
			this.statusEvents.add((StatusEvent) event);
			return;
		}

		if (event instanceof ResolutionEvent) {
			this.resolutionEvents.add((ResolutionEvent) event);
			return;
		}

		if (event instanceof AssignmentEvent) {
			this.assignmentEvents.add((AssignmentEvent) event);
			return;
		}

		if (event instanceof AttachmentEvent) {
			this.attachmentEvents.add((AttachmentEvent) event);
			return;
		}
		this.otherEvents.add(event);
	}

	private List<TaskRevision> getEvents() {
		List<TaskRevision> events = new ArrayList<TaskRevision>();
		events.addAll(this.statusEvents);
		events.addAll(this.resolutionEvents);
		events.addAll(this.assignmentEvents);
		events.addAll(this.attachmentEvents);
		events.addAll(this.otherEvents);
		Collections.sort(events);
		return events;
	}

	public Iterator<TaskRevision> iterator() {
		return getEvents().iterator();
	}

	public int size() {
		return this.otherEvents.size() + this.statusEvents.size() + this.resolutionEvents.size()
				+ this.assignmentEvents.size();
	}

	@Override
	public String toString() {
		StringBuffer sb = new StringBuffer();
		for (Object event : this) {
			sb.append(event);
			sb.append("\n"); //$NON-NLS-1$
		}
		return sb.toString();
	}

	public List<StatusEvent> getStatusEvents() {
		return statusEvents;
	}

	public List<ResolutionEvent> getResolutionEvents() {
		return resolutionEvents;
	}

	public List<TaskRevision> getOtherEvents() {
		return otherEvents;
	}

	public List<AttachmentEvent> getAttachmentEvents() {
		return attachmentEvents;
	}

	public List<AssignmentEvent> getAssignmentEvents() {
		return assignmentEvents;
	}

}

Back to the top