Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
blob: fe1c21c038f7e71df3daadd8bf252439da76890f (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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
/********************************************************************************
 * Copyright (c) 2002, 2006 IBM Corporation. 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
 * 
 * Initial Contributors:
 * The following IBM employees contributed to the Remote System Explorer
 * component that contains this file: David McKnight, Kushal Munir, 
 * Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson, 
 * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
 * 
 * Contributors:
 * {Name} (company) - description of contribution.
 ********************************************************************************/

package org.eclipse.rse.files.ui.resources;

import java.util.HashMap;
import java.util.Map;

/**
 * Objects of this type contain marker information.
 */
public class SystemRemoteMarkerInfo implements ISystemRemoteMarkerSetElement, Cloneable {



	// undefined static id
	protected static final long UNDEFINED_ID = -1;
	
	// marker identifier
	protected long id = UNDEFINED_ID;
	
	// marker type
	protected String type = null;;
	
	// marker attributes
	protected Map attributes = null;
	
	// marker creation type
	protected long creationTime = 0;
	
	/**
	 * Constructor for SystemRemoteMarkerInfo.
	 */
	public SystemRemoteMarkerInfo() {
		super();
	}
	
	/**
	 * Set the marker id.
	 * @param the id
	 */
	public void setId(long id) {
		this.id = id;
	}
	
	/**
	 * @see org.eclipse.rse.files.ui.resources.ISystemRemoteMarkerSetElement#getId()
	 */
	public long getId() {
		return id;
	}
	
	/**
	 * Set the type.
	 * @param the marker type
	 */
	public void setType(String type) {
		this.type = type;
	}
	
	/**
	 * Get the type.
	 * @return the marker type
	 */
	public String getType() {
		return type;
	}

	/**
	 * Set the attributes.
	 * @param the attributes
	 */
	public void setAttributes(Map attributes) {
		this.attributes = attributes;
	}
	
	/**
	 * Get the attributes.
	 * @return the attributes
	 */
	public Map getAttributes() {
		return getAttributes(true);
	}
	
	/**
	 * Get the attributes.
	 * @param specify whether to return a copy or the actual map
	 * @return the attribute map
	 */
	public Map getAttributes(boolean makeCopy) {
		
		if (attributes == null) {
			return null;
		}
		
		if (makeCopy) {
			HashMap newAttributes = new HashMap();
			newAttributes.putAll(attributes);
			return newAttributes;
		}
		else {
			return attributes;	
		}
	}
	
	/**
	 * Set the creation time.
	 * @param the creation time
	 */
	public void setCreationTime(long creationTime) {
		this.creationTime = creationTime;
	}
	
	/**
	 * Get the creation time.
	 * @return the creation time
	 */
	public long getCreationTime() {
		return creationTime;
	}
	
	/**
	 * @see java.lang.Object#clone()
	 */
	protected Object clone() throws CloneNotSupportedException {
		SystemRemoteMarkerInfo copy = (SystemRemoteMarkerInfo)(super.clone());
		copy.setAttributes(getAttributes());
		return copy;
	}
	
	/**
	 * Get attribute values given the attribute names.
	 * @param the array of attribute names
	 * @return the array of attribute values
	 */
	public Object[] getAttributes(String[] attributeNames) {
		Object[] result = new Object[attributeNames.length];
		
		for (int i = 0; i < attributeNames.length; i++)
			result[i] = getAttribute(attributeNames[i]);
		
		return result;
	}
	
	/**
	 * Get the attribute value given the attribute name.
	 * @param the attribute name
	 * @return the attribute value
	 */
	public Object getAttribute(String attributeName) {
		
		if (attributes == null) {
			return null;
		}
		else {
			return attributes.get(attributeName);
		}
	}
	
	/**
	 * Checks if attribute value is valid.
	 * @param the attribute value
	 * @return true if value is null, or a String, or an Integer, or a Boolean
	 */ 
	protected static boolean isValidAttributeValue(Object value) {
		return (value == null || value instanceof String || value instanceof Integer || value instanceof Boolean);
	}
	
	/**
	 * Set the value of an attribute.
	 * @param the attribute name
	 * @param the value of the attribute
	 */
	public void setAttribute(String attributeName, Object value) {
	
		if (!isValidAttributeValue(value)) {
			return;
		}
	
		if (attributes == null) {
			
			if (value == null) {
				return;
			}
			else {
				attributes = new HashMap();
				attributes.put(attributeName, value);
			}
		}
		else {
			
			if (value == null) {
				attributes.remove(attributeName);
				
				if (attributes.isEmpty()) {
					attributes = null;
				}
			}
			else {
				attributes.put(attributeName, value);
			}
		}
	}

	/**
	 * Set the values of an array of attributes
	 * @param the attribute names
	 * @param the attribute values
	 */
	public void setAttributes(String[] attributeNames, Object[] values) {
		
		if (!(attributeNames.length == values.length)) {
			return;
		}
		
		for (int i = 0; i < attributeNames.length; i++) {
			setAttribute(attributeNames[i], values[i]);
		}
	}
}

Back to the top