Project

General

Profile

Download (2.48 KB) Statistics
| Branch: | Tag: | Revision:
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.List;
14

    
15
/**
16
 * @author cmathew
17
 * @date 18 Jun 2015
18
 *
19
 */
20
public class CdmDataChangeService implements ICdmDataChangeService {
21

    
22
    protected final List<ICdmChangeListener> listeners;
23

    
24
    private final List<CdmChangeEvent> currentEvents;
25

    
26
    public CdmDataChangeService() {
27
        listeners = new ArrayList<ICdmChangeListener>();
28
        currentEvents = new ArrayList<CdmChangeEvent>();
29
    }
30

    
31
    /* (non-Javadoc)
32
     * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#register(eu.etaxonomy.cdm.api.application.ICdmChangeListener)
33
     */
34
    @Override
35
    public void register(ICdmChangeListener listener) {
36
        listeners.add(listener);
37
    }
38

    
39
    /* (non-Javadoc)
40
     * @see eu.etaxonomy.cdm.api.application.ICdmDataChangeService#unregister(eu.etaxonomy.cdm.api.application.ICdmChangeListener)
41
     */
42
    @Override
43
    public void unregister(ICdmChangeListener listener) {
44
        listeners.remove(listener);
45
    }
46

    
47
    /* (non-Javadoc)
48
     * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#addEvent(eu.etaxonomy.cdm.api.application.CdmChangeEvent)
49
     */
50
    @Override
51
    public void addEvent(CdmChangeEvent event) {
52
        currentEvents.add(event);
53
    }
54

    
55
    /* (non-Javadoc)
56
     * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#fireCurrentChangeEvents(boolean)
57
     */
58
    @Override
59
    public void fireCurrentChangeEvents(boolean async) {
60
        try {
61
            for(CdmChangeEvent event : currentEvents) {
62
                fireChangeEvent(event,async);
63
            }
64
        } finally {
65
            currentEvents.clear();
66
        }
67
    }
68

    
69

    
70

    
71
    /* (non-Javadoc)
72
     * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#fireChangeEvent(eu.etaxonomy.cdm.api.application.CdmChangeEvent, boolean)
73
     */
74
    @Override
75
    public void fireChangeEvent(final CdmChangeEvent event, boolean async) {
76

    
77
        for(final ICdmChangeListener listener : listeners) {
78
            listener.onChange(event);
79
        }
80
    }
81

    
82
    /* (non-Javadoc)
83
     * @see eu.etaxonomy.taxeditor.store.ICdmDataChangeService#clear()
84
     */
85
    @Override
86
    public void clear() {
87
        listeners.clear();
88
        currentEvents.clear();
89
    }
90

    
91

    
92
}
(6-6/8)