Project

General

Profile

Download (4 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.cdm.persistence.hibernate;
11

    
12
import java.util.Collection;
13
import java.util.HashMap;
14
import java.util.HashSet;
15
import java.util.Map;
16
import java.util.Set;
17
import java.util.Vector;
18

    
19
import org.apache.log4j.Logger;
20

    
21
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent.EventType;
22

    
23
/**
24
 * @author n.hoffman
25
 * @since 09.04.2009
26
 * @version 1.0
27
 */
28
public class CdmDataChangeMap  implements Map<EventType, Vector<CdmDataChangeEvent>>{
29
	private static final Logger logger = Logger
30
			.getLogger(CdmDataChangeMap.class);
31

    
32
	private Map<EventType, Vector<CdmDataChangeEvent>> dataChangeMap;
33

    
34
	public CdmDataChangeMap(){
35
		dataChangeMap = new HashMap<EventType, Vector<CdmDataChangeEvent>>();
36
	}
37

    
38
	/* (non-Javadoc)
39
	 * @see java.util.Map#clear()
40
	 */
41
	@Override
42
    public void clear() {
43
		dataChangeMap.clear();
44
	}
45

    
46
	/* (non-Javadoc)
47
	 * @see java.util.Map#containsKey(java.lang.Object)
48
	 */
49
	@Override
50
    public boolean containsKey(Object key) {
51
		return dataChangeMap.containsKey(key);
52
	}
53

    
54
	/* (non-Javadoc)
55
	 * @see java.util.Map#containsValue(java.lang.Object)
56
	 */
57
	@Override
58
    public boolean containsValue(Object value) {
59
		return dataChangeMap.containsValue(value);
60
	}
61

    
62
	/* (non-Javadoc)
63
	 * @see java.util.Map#entrySet()
64
	 */
65
	@Override
66
    public Set entrySet() {
67
		return dataChangeMap.entrySet();
68
	}
69

    
70
	/* (non-Javadoc)
71
	 * @see java.util.Map#get(java.lang.Object)
72
	 */
73
	@Override
74
    public Vector<CdmDataChangeEvent> get(Object key) {
75
		return dataChangeMap.get(key);
76
	}
77

    
78
	/**
79
	 * Returns events by type
80
	 *
81
	 * @param type
82
	 * @return never null
83
	 */
84
	public Vector<CdmDataChangeEvent> getEvents(EventType type){
85
		Vector<CdmDataChangeEvent> vector = dataChangeMap.get(type);
86
		if(vector == null){
87
		    vector = new Vector<>(0);
88
		}
89
        return vector;
90
	}
91

    
92
	/* (non-Javadoc)
93
	 * @see java.util.Map#isEmpty()
94
	 */
95
	@Override
96
    public boolean isEmpty() {
97
		return dataChangeMap.isEmpty();
98
	}
99

    
100
	/* (non-Javadoc)
101
	 * @see java.util.Map#keySet()
102
	 */
103
	@Override
104
    public Set keySet() {
105
		return dataChangeMap.keySet();
106
	}
107

    
108
	public void add(EventType type, CdmDataChangeEvent event){
109
		Vector<CdmDataChangeEvent> vector = getEvents(type);
110

    
111
		// lazy initialising the vectors
112
		if(vector == null){
113
			vector = new Vector<CdmDataChangeEvent>();
114
		}
115

    
116
		vector.add(event);
117

    
118
		dataChangeMap.put(type, vector);
119
	}
120

    
121

    
122
	/* (non-Javadoc)
123
	 * @see java.util.Map#remove(java.lang.Object)
124
	 */
125
	@Override
126
    public Vector<CdmDataChangeEvent> remove(Object key) {
127
		return dataChangeMap.remove(key);
128
	}
129

    
130
	/* (non-Javadoc)
131
	 * @see java.util.Map#size()
132
	 */
133
	@Override
134
    public int size() {
135
		return dataChangeMap.size();
136
	}
137

    
138
	public int sizeByEventType(EventType type){
139
		Vector<CdmDataChangeEvent> vector = getEvents(type);
140
		return vector == null ? 0 : vector.size();
141
	}
142

    
143
	/* (non-Javadoc)
144
	 * @see java.util.Map#values()
145
	 */
146
	@Override
147
    public Collection<Vector<CdmDataChangeEvent>> values() {
148
		return dataChangeMap.values();
149
	}
150

    
151
	/**
152
	 * Returns all change events stored in this change map
153
	 *
154
	 * @return
155
	 */
156
	public Collection<CdmDataChangeEvent> getAllEvents(){
157
		Collection<CdmDataChangeEvent> values = new HashSet<CdmDataChangeEvent>();
158
		for (EventType type : EventType.values()){
159
			if(dataChangeMap.get(type) != null){
160
				for(CdmDataChangeEvent event : dataChangeMap.get(type)){
161
					values.add(event);
162
				}
163
			}
164
		}
165
		return values;
166
	}
167

    
168
	/* (non-Javadoc)
169
	 * @see java.util.Map#put(java.lang.Object, java.lang.Object)
170
	 */
171
	@Override
172
    public Vector<CdmDataChangeEvent> put(EventType key,
173
			Vector<CdmDataChangeEvent> value) {
174
		return dataChangeMap.put(key, value);
175
	}
176

    
177
	/* (non-Javadoc)
178
	 * @see java.util.Map#putAll(java.util.Map)
179
	 */
180
	@Override
181
    public void putAll(
182
			Map<? extends EventType, ? extends Vector<CdmDataChangeEvent>> t) {
183
		dataChangeMap.putAll(t);
184
	}
185
}
(3-3/23)