View Javadoc

1   /*
2    * This file is a part of CAST project.
3    * (c) Copyright 2007, AGH University of Science & Technology
4    * https://caribou.iisg.agh.edu.pl/trac/cast
5    *
6    * Licensed under the Eclipse Public License, Version 1.0 (the "License").
7    * You may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    * http://www.eclipse.org/legal/epl-v10.html
10   */
11  /*
12   * File: ObservablePersistenceProvider.java
13   * Created: 2009-08-12
14   * Author: tmilos
15   * $Id$
16   */
17  
18  package pl.edu.agh.cast.data.persistence;
19  
20  import java.beans.PropertyChangeListener;
21  import java.util.Collection;
22  import java.util.Map;
23  import java.util.UUID;
24  
25  import org.eclipse.core.runtime.IProgressMonitor;
26  
27  import pl.edu.agh.cast.data.model.IDataSet;
28  import pl.edu.agh.cast.data.model.IElement;
29  import pl.edu.agh.cast.data.model.presentation.IPresentationDataSet;
30  import pl.edu.agh.cast.data.model.presentation.IPresentationElement;
31  import pl.edu.agh.cast.data.model.property.PropertyChangeProviderHelper;
32  
33  /**
34   * Observable provider implementation.
35   *
36   * @author AGH CAST Team
37   */
38  public class ObservablePersistenceProvider extends AbstractPersistenceProviderDecorator implements
39          IObservablePersistenceProvider {
40  
41  	private PropertyChangeProviderHelper pcpHelper = new PropertyChangeProviderHelper(this);
42  
43  	/**
44  	 * Constructor.
45  	 *
46  	 * @param provider
47  	 *            actual persistence provider
48  	 */
49  	public ObservablePersistenceProvider(IPersistenceProvider provider) {
50  		super(provider);
51  	}
52  
53  	// BEGIN Property Change Support
54  
55  	/**
56  	 * {@inheritDoc}
57  	 *
58  	 * @see pl.edu.agh.cast.data.model.property.IPropertyChangeProvider
59  	 *      #addPropertyChangeListener(java.beans.PropertyChangeListener)
60  	 */
61  	@Override
62  	public final void addPropertyChangeListener(PropertyChangeListener listener) {
63  		pcpHelper.addPropertyChangeListener(listener);
64  	}
65  
66  	/**
67  	 * {@inheritDoc}
68  	 *
69  	 * @see pl.edu.agh.cast.data.model.property.IPropertyChangeProvider
70  	 *      #removePropertyChangeListener(java.beans.PropertyChangeListener)
71  	 */
72  	@Override
73  	public final void removePropertyChangeListener(PropertyChangeListener listener) {
74  		pcpHelper.removePropertyChangeListener(listener);
75  	}
76  
77  	/**
78  	 * Fires the property change event.
79  	 *
80  	 * @param property
81  	 *            the name of the property
82  	 * @param oldValue
83  	 *            the old value of the property
84  	 * @param newValue
85  	 *            the new value of the property
86  	 *
87  	 * @see pl.edu.agh.cast.data.model.property.PropertyChangeProviderHelper#firePropertyChange(java.lang.String,
88  	 *      java.lang.Object, java.lang.Object)
89  	 */
90  	protected final void firePropertyChange(String property, Object oldValue, Object newValue) {
91  		pcpHelper.firePropertyChange(property, oldValue, newValue);
92  	}
93  
94  	// END Property Change Support
95  
96  	// BEGIN Decorated Methods
97  
98  	/**
99  	 * {@inheritDoc}
100 	 *
101 	 * @see pl.edu.agh.cast.data.persistence.AbstractPersistenceProviderDecorator#destroy()
102 	 */
103 	@Override
104 	public void destroy() {
105 		super.destroy();
106 		firePropertyChange(Events.DESTORYED_EVENT, null, this);
107 	}
108 
109 	/**
110 	 * {@inheritDoc}
111 	 *
112 	 * @see pl.edu.agh.cast.data.persistence.AbstractPersistenceProviderDecorator#initialize()
113 	 */
114 	@Override
115 	public void initialize() {
116 		super.initialize();
117 		firePropertyChange(Events.INITIALIZED_EVENT, this, null);
118 	}
119 
120 	/**
121 	 * {@inheritDoc}
122 	 *
123 	 * @see pl.edu.agh.cast.data.persistence.IPersistenceProvider#saveDataSet(pl.edu.agh.cast.data.model.IDataSet)
124 	 */
125 	@Override
126 	public UUID saveDataSet(IDataSet<? extends IElement> dataSet) {
127 		UUID id = super.saveDataSet(dataSet);
128 		firePropertyChange(Events.NEW_DATA_SET_EVENT, null, id);
129 		return id;
130 	}
131 
132 	/**
133 	 * {@inheritDoc}
134 	 *
135 	 * @see pl.edu.agh.cast.data.persistence.AbstractPersistenceProviderDecorator
136 	 *      #saveDataSet(pl.edu.agh.cast.data.model.IDataSet, org.eclipse.core.runtime.IProgressMonitor)
137 	 */
138 	@Override
139 	public UUID saveDataSet(IDataSet<? extends IElement> dataSet, IProgressMonitor monitor) {
140 		UUID id = super.saveDataSet(dataSet, monitor);
141 		firePropertyChange(Events.NEW_DATA_SET_EVENT, null, id);
142 		return id;
143 	}
144 
145 	/**
146 	 * {@inheritDoc}
147 	 *
148 	 * @see pl.edu.agh.cast.data.persistence.AbstractPersistenceProviderDecorator#saveDataSets(java.util.Collection)
149 	 */
150 	@Override
151 	public Map<UUID, UUID> saveDataSets(Collection<IDataSet<? extends IElement>> dataSets) {
152 		Map<UUID, UUID> dsIdMap = super.saveDataSets(dataSets);
153 		firePropertyChange(Events.NEW_DATA_SETS_EVENT, null, dsIdMap);
154 		return dsIdMap;
155 	}
156 
157 	/**
158 	 * {@inheritDoc}
159 	 *
160 	 * @see pl.edu.agh.cast.data.persistence.AbstractPersistenceProviderDecorator#saveDataSets(java.util.Collection,
161 	 *      org.eclipse.core.runtime.IProgressMonitor)
162 	 */
163 	@Override
164 	public Map<UUID, UUID> saveDataSets(Collection<IDataSet<? extends IElement>> dataSets, IProgressMonitor monitor) {
165 		Map<UUID, UUID> dsIdMap = super.saveDataSets(dataSets, monitor);
166 		firePropertyChange(Events.NEW_DATA_SETS_EVENT, null, dsIdMap);
167 		return dsIdMap;
168 	}
169 
170 	/**
171 	 * {@inheritDoc}
172 	 *
173 	 * @see pl.edu.agh.cast.data.persistence.AbstractPersistenceProviderDecorator
174 	 *      #saveDiagram(pl.edu.agh.cast.data.model.presentation.IPresentationDataSet)
175 	 */
176 	@Override
177 	public <T extends IPresentationDataSet<? extends IPresentationElement<? extends IElement>>> T saveDiagram(
178 	        T presentationDataSet) {
179 		T savedDataSet = super.saveDiagram(presentationDataSet);
180 		firePropertyChange(Events.DIAGRAM_SAVED_EVENT, null, savedDataSet);
181 		return savedDataSet;
182 	}
183 
184 	/**
185 	 * {@inheritDoc}
186 	 *
187 	 * @see pl.edu.agh.cast.data.persistence.AbstractPersistenceProviderDecorator
188 	 *      #saveDiagram(pl.edu.agh.cast.data.model.presentation.IPresentationDataSet,
189 	 *      org.eclipse.core.runtime.IProgressMonitor)
190 	 */
191 	@Override
192 	public <T extends IPresentationDataSet<? extends IPresentationElement<? extends IElement>>> T saveDiagram(
193 	        T presentationDataSet, IProgressMonitor monitor) {
194 		T savedDataSet = super.saveDiagram(presentationDataSet, monitor);
195 		firePropertyChange(Events.DIAGRAM_SAVED_EVENT, null, savedDataSet);
196 		return savedDataSet;
197 	}
198 
199 	/**
200 	 * {@inheritDoc}
201 	 *
202 	 * @see pl.edu.agh.cast.data.persistence.IPersistenceProvider#renameDataSet(java.util.UUID, java.lang.String)
203 	 */
204 	@Override
205 	public UUID renameDataSet(UUID id, String newName) {
206 		UUID newId = super.renameDataSet(id, newName);
207 		firePropertyChange(Events.NEW_DATA_SET_EVENT, null, id);
208 		return newId;
209 	}
210 
211 	// END Decorated Methods
212 
213 }