Project

General

Profile

Download (3.73 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
 * @created 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
	public void clear() {
42
		dataChangeMap.clear();
43
	}
44

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

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

    
59
	/* (non-Javadoc)
60
	 * @see java.util.Map#entrySet()
61
	 */
62
	public Set entrySet() {
63
		return dataChangeMap.entrySet();
64
	}
65

    
66
	/* (non-Javadoc)
67
	 * @see java.util.Map#get(java.lang.Object)
68
	 */
69
	public Vector<CdmDataChangeEvent> get(Object key) {
70
		return dataChangeMap.get(key);
71
	}
72
	
73
	/**
74
	 * Returns events by type
75
	 * 
76
	 * @param type
77
	 * @return
78
	 */
79
	public Vector<CdmDataChangeEvent> getEvents(EventType type){
80
		return dataChangeMap.get(type);
81
	}
82

    
83
	/* (non-Javadoc)
84
	 * @see java.util.Map#isEmpty()
85
	 */
86
	public boolean isEmpty() {
87
		return dataChangeMap.isEmpty();
88
	}
89

    
90
	/* (non-Javadoc)
91
	 * @see java.util.Map#keySet()
92
	 */
93
	public Set keySet() {
94
		return dataChangeMap.keySet();
95
	}
96
	
97
	public void add(EventType type, CdmDataChangeEvent event){
98
		Vector<CdmDataChangeEvent> vector = getEvents(type);
99
		
100
		// lazy initialising the vectors
101
		if(vector == null){
102
			vector = new Vector<CdmDataChangeEvent>();
103
		}
104
		
105
		vector.add(event);
106
		
107
		dataChangeMap.put(type, vector);
108
	}
109

    
110

    
111
	/* (non-Javadoc)
112
	 * @see java.util.Map#remove(java.lang.Object)
113
	 */
114
	public Vector<CdmDataChangeEvent> remove(Object key) {
115
		return dataChangeMap.remove(key);
116
	}
117

    
118
	/* (non-Javadoc)
119
	 * @see java.util.Map#size()
120
	 */
121
	public int size() {
122
		return dataChangeMap.size();
123
	}
124
	
125
	public int sizeByEventType(EventType type){
126
		Vector<CdmDataChangeEvent> vector = getEvents(type);
127
		return vector == null ? 0 : vector.size();
128
	}
129

    
130
	/* (non-Javadoc)
131
	 * @see java.util.Map#values()
132
	 */
133
	public Collection<Vector<CdmDataChangeEvent>> values() {
134
		return dataChangeMap.values();
135
	}
136
	
137
	/**
138
	 * Returns all change events stored in this change map
139
	 * 
140
	 * @return
141
	 */
142
	public Collection<CdmDataChangeEvent> getAllEvents(){
143
		Collection<CdmDataChangeEvent> values = new HashSet<CdmDataChangeEvent>();
144
		for (EventType type : EventType.values()){
145
			if(dataChangeMap.get(type) != null){
146
				for(CdmDataChangeEvent event : dataChangeMap.get(type)){
147
					values.add(event);
148
				}
149
			}
150
		}
151
		return values;
152
	}
153

    
154
	/* (non-Javadoc)
155
	 * @see java.util.Map#put(java.lang.Object, java.lang.Object)
156
	 */
157
	public Vector<CdmDataChangeEvent> put(EventType key,
158
			Vector<CdmDataChangeEvent> value) {
159
		return dataChangeMap.put(key, value);
160
	}
161

    
162
	/* (non-Javadoc)
163
	 * @see java.util.Map#putAll(java.util.Map)
164
	 */
165
	public void putAll(
166
			Map<? extends EventType, ? extends Vector<CdmDataChangeEvent>> t) {
167
		dataChangeMap.putAll(t);
168
	}
169
}
(3-3/20)