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
;
21 public class CdmDataChangeService
implements ICdmDataChangeService
{
23 protected final Set
<ICdmChangeListener
> listeners
;
25 private final List
<CdmChangeEvent
> currentEvents
;
27 public CdmDataChangeService() {
28 listeners
= new HashSet
<ICdmChangeListener
>();
29 currentEvents
= new ArrayList
<CdmChangeEvent
>();
33 * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#register(eu.etaxonomy.cdm.api.application.ICdmChangeListener)
36 public void register(ICdmChangeListener listener
) {
37 listeners
.add(listener
);
41 * @see eu.etaxonomy.cdm.api.application.ICdmDataChangeService#unregister(eu.etaxonomy.cdm.api.application.ICdmChangeListener)
44 public void unregister(ICdmChangeListener listener
) {
45 listeners
.remove(listener
);
49 * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#addEvent(eu.etaxonomy.cdm.api.application.CdmChangeEvent)
52 public void addEvent(CdmChangeEvent event
) {
53 currentEvents
.add(event
);
57 * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#fireCurrentChangeEvents(boolean)
60 public void fireCurrentChangeEvents(boolean async
) {
62 for(CdmChangeEvent event
: currentEvents
) {
63 fireChangeEvent(event
,async
);
66 currentEvents
.clear();
73 * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#fireChangeEvent(eu.etaxonomy.cdm.api.application.CdmChangeEvent, boolean)
76 public void fireChangeEvent(final CdmChangeEvent event
, boolean async
) {
78 for(final ICdmChangeListener listener
: listeners
) {
79 listener
.onChange(event
);
84 * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#clear()
89 currentEvents
.clear();