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