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: TransparentPersistenceProvider.java
13   * Created: 2009-08-28
14   * Author: tmilos
15   * $Id$
16   */
17  
18  package pl.edu.agh.cast.data.persistence;
19  
20  import pl.edu.agh.cast.data.persistence.runtime.RuntimePersistenceProvider;
21  
22  /**
23   * A persistence provider implementation which allows for transparent substitution of underlying actual provider.
24   *
25   * @author AGH CAST Team
26   */
27  public final class TransparentPersistenceProvider extends ObservablePersistenceProvider {
28  
29  	// BEGIN Constructors
30  
31  	/**
32  	 * Constructor.
33  	 */
34  	public TransparentPersistenceProvider() {
35  		super(new RuntimePersistenceProvider());
36  		getProvider().initialize();
37  		firePropertyChange(IObservablePersistenceProvider.Events.INITIALIZED_EVENT, getProvider(), null);
38  	}
39  
40  	// END Constructors
41  
42  	// BEGIN Getters & Setters
43  
44  	/**
45  	 * Sets the actual persistence provider.
46  	 *
47  	 * <p>
48  	 * If the given provider is <code>null</code> then a new instance of {@link RuntimePersistenceProvider} is used.
49  	 *
50  	 * <p>
51  	 * If the new provider is different from the current one, the current one is destroyed and the new one is set and
52  	 * initialized. This results in two events being fired:
53  	 * <ul>
54  	 * <li>{@link IObservablePersistenceProvider.Events#DESTORYED_EVENT}</li>
55  	 * <li>{@link IObservablePersistenceProvider.Events#INITIALIZED_EVENT}</li>
56  	 * </ul>
57  	 *
58  	 * @param provider
59  	 *            the new provider to set
60  	 */
61  	public void setActualProvider(IPersistenceProvider provider) {
62  		if (provider == null) {
63  			provider = new RuntimePersistenceProvider();
64  		}
65  		if (getProvider() != provider) {
66  			getProvider().destroy();
67  			firePropertyChange(IObservablePersistenceProvider.Events.DESTORYED_EVENT, getProvider(), null);
68  			setProvider(provider);
69  			getProvider().initialize();
70  			firePropertyChange(IObservablePersistenceProvider.Events.INITIALIZED_EVENT, getProvider(), null);
71  		}
72  	}
73  
74  	// BEGIN Getters & Setters
75  
76  }