2 * Copyright (C) 2015 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.cdm
.api
.application
;
11 import java
.util
.ArrayList
;
12 import java
.util
.HashSet
;
13 import java
.util
.List
;
20 public class CdmDataChangeService
implements ICdmDataChangeService
{
22 protected final Set
<ICdmChangeListener
> listeners
;
24 private final List
<CdmChangeEvent
> currentEvents
;
26 public CdmDataChangeService() {
27 listeners
= new HashSet
<ICdmChangeListener
>();
28 currentEvents
= new ArrayList
<CdmChangeEvent
>();
32 public void register(ICdmChangeListener listener
) {
33 listeners
.add(listener
);
37 public void unregister(ICdmChangeListener listener
) {
38 listeners
.remove(listener
);
42 public void addEvent(CdmChangeEvent event
) {
43 currentEvents
.add(event
);
47 public void fireCurrentChangeEvents(boolean async
) {
49 for(CdmChangeEvent event
: currentEvents
) {
50 fireChangeEvent(event
,async
);
53 currentEvents
.clear();
58 public void fireChangeEvent(final CdmChangeEvent event
, boolean async
) {
60 for(final ICdmChangeListener listener
: listeners
) {
61 listener
.onChange(event
);
68 currentEvents
.clear();