Project

General

Profile

« Previous | Next » 

Revision 5c9343bd

Added by Cherian Mathew about 9 years ago

CdmTransientEntityCacher : comments and cleanup
MockCdmEntitySessionManager, MockCdmEntitySession : implementing new interface methods
renamed ISessionEventListener to ICdmEntitySessionEnabled
ICdmEntitySession, CdmEntitySession : added methods to register session observer and add change events
ICdmEntitySessionManager, CdmEntitySessionManager : added getActiveSession method
CdmServerInfo :: added possiblity to connect directly to dev eclipse cdm server

View differences:

eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/CdmEntitySession.java
16 16
import org.apache.poi.ss.formula.functions.T;
17 17

  
18 18
import eu.etaxonomy.cdm.model.common.CdmBase;
19
import eu.etaxonomy.cdm.model.common.ICdmBase;
20
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent;
21
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent.EventType;
22
import eu.etaxonomy.cdm.persistence.hibernate.CdmPostDataChangeObservableListener;
19 23
import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher;
20 24

  
21 25

  
......
32 36
public class CdmEntitySession implements ICdmEntitySession  {
33 37

  
34 38

  
35
	private CdmEntitySessionManager cdmEntitySessionManager;
39
	private final CdmEntitySessionManager cdmEntitySessionManager;
36 40

  
37
	private final ISessionEventListener sessionOwner;
41
	private final ICdmEntitySessionEnabled sessionOwner;
38 42

  
39 43
	private final CdmTransientEntityCacher cdmTransientEntityCacher;
40 44

  
45
	private final List<ICdmEntitySessionEnabled> changeObservers;
46

  
41 47
	private final List<T> rootEntities;
42 48

  
43
	CdmEntitySession(ISessionEventListener sessionOwner, CdmEntitySessionManager cdmEntitySessionManager) {
49
	CdmEntitySession(ICdmEntitySessionEnabled sessionOwner, CdmEntitySessionManager cdmEntitySessionManager) {
44 50
		this.sessionOwner = sessionOwner;
45 51
		this.cdmTransientEntityCacher = new CdmTransientEntityCacher(sessionOwner, cdmEntitySessionManager);
46 52
		this.rootEntities = new ArrayList<T>();
47

  
53
		this.cdmEntitySessionManager = cdmEntitySessionManager;
54
		this.changeObservers = new ArrayList<ICdmEntitySessionEnabled>();
48 55
		cdmEntitySessionManager.addToOwnerSessionMap(sessionOwner, this);
49 56
	}
50 57

  
......
86 93
//		}
87 94
	}
88 95

  
96
    /**
97
     * Register to get updated after any interaction with the datastore
98
     */
99
	@Override
100
    public void registerForDataStoreChanges(ICdmEntitySessionEnabled observer) {
101
        CdmPostDataChangeObservableListener.getDefault().register(observer);
102
    }
103

  
104
    /**
105
     * Register to get updated after any interaction with the datastore
106
     */
107
	@Override
108
    public void unregisterForDataStoreChanges(ICdmEntitySessionEnabled observer) {
109
        CdmPostDataChangeObservableListener.getDefault().unregister(observer);
110
    }
111

  
89 112

  
113

  
114
	@Override
90 115
	public void bind() {
91 116
	    cdmEntitySessionManager.bind(sessionOwner);
92 117
	}
......
97 122
	public void dispose() {
98 123
		rootEntities.clear();
99 124
		cdmTransientEntityCacher.dispose();
125
		for(ICdmEntitySessionEnabled observer : changeObservers) {
126
		    CdmPostDataChangeObservableListener.getDefault().unregister(observer);
127
		}
128
		changeObservers.clear();
100 129
	}
101 130

  
102 131

  
132
    /* (non-Javadoc)
133
     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#commit()
134
     */
135
    @Override
136
    public void addEvent(ICdmBase cdmBase, EventType eventType) {
137
        CdmDataChangeEvent cdce = CdmDataChangeEvent.NewInstance((CdmBase)cdmBase, EventType.UPDATE);
138
        CdmPostDataChangeObservableListener.getDefault().notifyObservers(cdce);
139
    }
140

  
141

  
142
    /* (non-Javadoc)
143
     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#notify(java.util.Collection, eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent.EventType)
144
     */
145
    @Override
146
    public <T extends ICdmBase> void addEvent(Collection <T> cdmBases, EventType eventType) {
147
        for(ICdmBase cdmBase : cdmBases) {
148
            CdmDataChangeEvent cdce = CdmDataChangeEvent.NewInstance((CdmBase)cdmBase, EventType.UPDATE);
149
            CdmPostDataChangeObservableListener.getDefault().notifyObservers(cdce);
150
        }
151

  
152
    }
153

  
154
    /* (non-Javadoc)
155
     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#commit()
156
     */
157
    @Override
158
    public void commit() {
159
        CdmPostDataChangeObservableListener.getDefault().delayedNotify();
160
    }
161

  
162

  
163

  
103 164

  
104 165

  
105 166
}

Also available in: Unified diff