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 }