ref #8812 setting NoConnectionReuseStrategy for PoolingHttpClientConnectionManager...
[taxeditor.git] / eu.etaxonomy.taxeditor.cdmlib / src / main / java / eu / etaxonomy / cdm / api / application / CdmDataChangeService.java
1 /**
2 * Copyright (C) 2015 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 package eu.etaxonomy.cdm.api.application;
10
11 import java.util.ArrayList;
12 import java.util.HashSet;
13 import java.util.List;
14 import java.util.Set;
15
16 /**
17 * @author cmathew
18 * @date 18 Jun 2015
19 *
20 */
21 public class CdmDataChangeService implements ICdmDataChangeService {
22
23 protected final Set<ICdmChangeListener> listeners;
24
25 private final List<CdmChangeEvent> currentEvents;
26
27 public CdmDataChangeService() {
28 listeners = new HashSet<ICdmChangeListener>();
29 currentEvents = new ArrayList<CdmChangeEvent>();
30 }
31
32 /* (non-Javadoc)
33 * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#register(eu.etaxonomy.cdm.api.application.ICdmChangeListener)
34 */
35 @Override
36 public void register(ICdmChangeListener listener) {
37 listeners.add(listener);
38 }
39
40 /* (non-Javadoc)
41 * @see eu.etaxonomy.cdm.api.application.ICdmDataChangeService#unregister(eu.etaxonomy.cdm.api.application.ICdmChangeListener)
42 */
43 @Override
44 public void unregister(ICdmChangeListener listener) {
45 listeners.remove(listener);
46 }
47
48 /* (non-Javadoc)
49 * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#addEvent(eu.etaxonomy.cdm.api.application.CdmChangeEvent)
50 */
51 @Override
52 public void addEvent(CdmChangeEvent event) {
53 currentEvents.add(event);
54 }
55
56 /* (non-Javadoc)
57 * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#fireCurrentChangeEvents(boolean)
58 */
59 @Override
60 public void fireCurrentChangeEvents(boolean async) {
61 try {
62 for(CdmChangeEvent event : currentEvents) {
63 fireChangeEvent(event,async);
64 }
65 } finally {
66 currentEvents.clear();
67 }
68 }
69
70
71
72 /* (non-Javadoc)
73 * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#fireChangeEvent(eu.etaxonomy.cdm.api.application.CdmChangeEvent, boolean)
74 */
75 @Override
76 public void fireChangeEvent(final CdmChangeEvent event, boolean async) {
77
78 for(final ICdmChangeListener listener : listeners) {
79 listener.onChange(event);
80 }
81 }
82
83 /* (non-Javadoc)
84 * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#clear()
85 */
86 @Override
87 public void clear() {
88 listeners.clear();
89 currentEvents.clear();
90 }
91
92
93 }