3 * Copyright (C) 2015 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.cdm
.api
.application
;
12 import java
.util
.ArrayList
;
13 import java
.util
.HashSet
;
14 import java
.util
.List
;
22 public class CdmDataChangeService
implements ICdmDataChangeService
{
24 protected final Set
<ICdmChangeListener
> listeners
;
26 private final List
<CdmChangeEvent
> currentEvents
;
28 public CdmDataChangeService() {
29 listeners
= new HashSet
<ICdmChangeListener
>();
30 currentEvents
= new ArrayList
<CdmChangeEvent
>();
34 * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#register(eu.etaxonomy.cdm.api.application.ICdmChangeListener)
37 public void register(ICdmChangeListener listener
) {
38 listeners
.add(listener
);
42 * @see eu.etaxonomy.cdm.api.application.ICdmDataChangeService#unregister(eu.etaxonomy.cdm.api.application.ICdmChangeListener)
45 public void unregister(ICdmChangeListener listener
) {
46 listeners
.remove(listener
);
50 * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#addEvent(eu.etaxonomy.cdm.api.application.CdmChangeEvent)
53 public void addEvent(CdmChangeEvent event
) {
54 currentEvents
.add(event
);
58 * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#fireCurrentChangeEvents(boolean)
61 public void fireCurrentChangeEvents(boolean async
) {
63 for(CdmChangeEvent event
: currentEvents
) {
64 fireChangeEvent(event
,async
);
67 currentEvents
.clear();
74 * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#fireChangeEvent(eu.etaxonomy.cdm.api.application.CdmChangeEvent, boolean)
77 public void fireChangeEvent(final CdmChangeEvent event
, boolean async
) {
79 for(final ICdmChangeListener listener
: listeners
) {
80 listener
.onChange(event
);
85 * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#clear()
90 currentEvents
.clear();