Project

General

Profile

Download (2.51 KB) Statistics
| Branch: | Tag: | Revision:
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
}
(6-6/8)