Project

General

Profile

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

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

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

    
20
import org.apache.log4j.Logger;
21

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

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

    
35
	public CdmDataChangeMap(){
36
		dataChangeMap = new HashMap<EventType, Vector<CdmDataChangeEvent>>();
37
	}
38
	
39
	/* (non-Javadoc)
40
	 * @see java.util.Map#clear()
41
	 */
42
	public void clear() {
43
		dataChangeMap.clear();
44
	}
45

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

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

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

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

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

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

    
111

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

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

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

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

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