Skip to main content
summaryrefslogtreecommitdiffstats
blob: 963a23ac23d1249fbf989aba380c9b1dfe36001b (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
119
120
121
122
123
124
125
126
127
128
129
130
131
/*******************************************************************************
 * Copyright (c) 2004, 2008 Tasktop Technologies 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:
 *     Tasktop Technologies - initial API and implementation
 *******************************************************************************/

package org.eclipse.mylyn.internal.tasks.core;

import org.eclipse.mylyn.tasks.core.IRepositoryElement;
import org.eclipse.mylyn.tasks.core.ITaskContainer;

/**
 * Immutable. Defines changes to Task List elements.
 * 
 * @author Mik Kersten
 * @since 2.0
 */
public final class TaskContainerDelta {

	public enum Kind {
		/**
		 * One container (source) added to another (target)
		 */
		ADDED,

		/**
		 * One container (source) removed from another (target)
		 */
		REMOVED,

		/**
		 * The internal state of the container (target) has changed, e.g. attributes, summary, priority, etc
		 */
		CONTENT,

		/**
		 * The element has been deleted from the tasklist
		 */
		DELETED,

		/**
		 * The root of the data structure has changed.
		 */
		ROOT
	}

	private final ITaskContainer parent;

	private final IRepositoryElement element;

	private final Kind kind;

	private boolean isTransient;

	/**
	 * @param element
	 *            - object being moved/added/removed, source assumed to be root
	 * @since 3.0
	 */
	public TaskContainerDelta(IRepositoryElement element, Kind kind) {
		this.element = element;
		this.parent = null;
		this.kind = kind;
	}

	/**
	 * @since 3.0
	 */
	public TaskContainerDelta(IRepositoryElement element, ITaskContainer parent, Kind kind) {
		this.element = element;
		this.parent = parent;
		this.kind = kind;
	}

	/**
	 * The <code>target</code> is the container that the <code>source</code> is being moved from/to
	 * 
	 * @since 3.0
	 */
	public ITaskContainer getParent() {
		return parent;
	}

	/**
	 * The element being ADDED or REMOVED wrt the <code>target</code>
	 * 
	 * @since 3.0
	 */
	public IRepositoryElement getElement() {
		return element;
	}

	public Kind getKind() {
		return kind;
	}

	/**
	 * @since 3.0
	 */
	public void setTransient(boolean isTransient) {
		this.isTransient = isTransient;
	}

	/**
	 * @since 3.0
	 */
	public boolean isTransient() {
		return isTransient;
	}

	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append("TaskContainerDelta [parent="); //$NON-NLS-1$
		builder.append(parent);
		builder.append(", element="); //$NON-NLS-1$
		builder.append(element);
		builder.append(", kind="); //$NON-NLS-1$
		builder.append(kind);
		builder.append(", isTransient="); //$NON-NLS-1$
		builder.append(isTransient);
		builder.append("]"); //$NON-NLS-1$
		return builder.toString();
	}

}

Back to the top