mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-04 15:45:25 +02:00
[api][refactor] refactoring and adding new tracking api for persistence
This commit is contained in:
parent
dcf70fe0b8
commit
b9a672aedc
23 changed files with 847 additions and 536 deletions
|
@ -1,5 +1,5 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2002, 2006 IBM Corporation. All rights reserved.
|
||||
* Copyright (c) 2002, 2007 IBM Corporation. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
|
@ -11,7 +11,7 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.core.filters;
|
||||
|
@ -23,8 +23,10 @@ import java.util.Vector;
|
|||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.resources.IFolder;
|
||||
import org.eclipse.rse.core.RSECorePlugin;
|
||||
import org.eclipse.rse.core.model.IRSEPersistableContainer;
|
||||
import org.eclipse.rse.core.model.ISystemProfile;
|
||||
import org.eclipse.rse.core.model.ISystemRegistry;
|
||||
import org.eclipse.rse.core.model.RSEPersistableObject;
|
||||
import org.eclipse.rse.core.references.IRSEBaseReferencingObject;
|
||||
import org.eclipse.rse.logging.Logger;
|
||||
import org.eclipse.rse.persistence.IRSEPersistenceManager;
|
||||
|
@ -91,7 +93,7 @@ import org.eclipse.rse.persistence.IRSEPersistenceManager;
|
|||
/**
|
||||
* @lastgen class SystemFilterPoolManagerImpl Impl implements SystemFilterPoolManager {}
|
||||
*/
|
||||
public class SystemFilterPoolManager implements ISystemFilterPoolManager {
|
||||
public class SystemFilterPoolManager extends RSEPersistableObject implements ISystemFilterPoolManager {
|
||||
private ISystemFilterPool[] poolArray = null; // cache for performance
|
||||
private ISystemFilterPoolManagerProvider caller = null;
|
||||
private Object poolMgrData;
|
||||
|
@ -103,10 +105,6 @@ public class SystemFilterPoolManager implements ISystemFilterPoolManager {
|
|||
private Logger logger = null;
|
||||
private ISystemProfile _profile;
|
||||
|
||||
// persistence
|
||||
protected boolean _isDirty = true;
|
||||
private boolean _wasRestored = false;
|
||||
|
||||
public static boolean debug = true;
|
||||
|
||||
/**
|
||||
|
@ -1520,25 +1518,6 @@ public class SystemFilterPoolManager implements ISystemFilterPoolManager {
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save all the filter pools to disk.
|
||||
* Uses the save policy specified in this manager's factory method.
|
||||
*/
|
||||
public boolean commit() {
|
||||
IRSEPersistenceManager mgr = RSECorePlugin.getThePersistenceManager();
|
||||
|
||||
return mgr.commit(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save all the filter pools to disk.
|
||||
* Uses the save policy specified in this manager's factory method.
|
||||
*/
|
||||
public boolean commit(ISystemFilterPool pool) {
|
||||
IRSEPersistenceManager mgr = RSECorePlugin.getThePersistenceManager();
|
||||
return mgr.commit(pool);
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore filter pools when all are stored in one file
|
||||
* @param logger The logging object to log errors to
|
||||
|
@ -1742,22 +1721,31 @@ public class SystemFilterPoolManager implements ISystemFilterPoolManager {
|
|||
}
|
||||
}
|
||||
|
||||
public boolean isDirty() {
|
||||
return _isDirty;
|
||||
/**
|
||||
* Save all the filter pools to disk.
|
||||
* Uses the save policy specified in this manager's factory method.
|
||||
*/
|
||||
public boolean commit() {
|
||||
IRSEPersistenceManager mgr = RSECorePlugin.getThePersistenceManager();
|
||||
return mgr.commit(this);
|
||||
}
|
||||
|
||||
public void setDirty(boolean flag) {
|
||||
if (_isDirty != flag) {
|
||||
_isDirty = flag;
|
||||
}
|
||||
/**
|
||||
* Save all the filter pools to disk.
|
||||
* Uses the save policy specified in this manager's factory method.
|
||||
*/
|
||||
public boolean commit(ISystemFilterPool pool) {
|
||||
boolean result = pool.commit();
|
||||
return result;
|
||||
}
|
||||
|
||||
public boolean wasRestored() {
|
||||
return _wasRestored;
|
||||
public IRSEPersistableContainer getPersistableParent() {
|
||||
return _profile;
|
||||
}
|
||||
|
||||
public void setWasRestored(boolean flag) {
|
||||
_wasRestored = flag;
|
||||
|
||||
public IRSEPersistableContainer[] getPersistableChildren() {
|
||||
IRSEPersistableContainer[] result = getSystemFilterPools();
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2002, 2006 IBM Corporation. All rights reserved.
|
||||
* Copyright (c) 2002, 2007 IBM Corporation. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
|
@ -11,7 +11,7 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.core.filters;
|
||||
|
@ -20,6 +20,7 @@ import java.util.Iterator;
|
|||
|
||||
import org.eclipse.core.runtime.IAdaptable;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.rse.core.model.IRSEPersistableContainer;
|
||||
import org.eclipse.rse.core.model.ISystemContainer;
|
||||
import org.eclipse.rse.core.model.ISystemContentsType;
|
||||
import org.eclipse.rse.core.references.IRSEBaseReferencedObject;
|
||||
|
@ -479,11 +480,18 @@ public class SystemFilterReference extends SystemReferencingObject implements IA
|
|||
cachedContents.clear();
|
||||
}
|
||||
}
|
||||
public boolean commit()
|
||||
|
||||
public boolean commit()
|
||||
{
|
||||
// FIXME
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public IRSEPersistableContainer getPersistableParent() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer[] getPersistableChildren() {
|
||||
return new IRSEPersistableContainer[0];
|
||||
}
|
||||
|
||||
}
|
|
@ -12,6 +12,7 @@
|
|||
*
|
||||
* Contributors:
|
||||
* Martin Oberhuber (Wind River) - [175262] IHost.getSystemType() should return IRSESystemType
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.core.model;
|
||||
|
@ -60,6 +61,8 @@ public class DummyHost extends PlatformObject implements IHost
|
|||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String getLocalDefaultUserId()
|
||||
{
|
||||
return null;
|
||||
|
@ -213,7 +216,6 @@ public class DummyHost extends PlatformObject implements IHost
|
|||
|
||||
public void setDirty(boolean flag)
|
||||
{
|
||||
//Auto-generated method stub
|
||||
}
|
||||
|
||||
public boolean commit()
|
||||
|
@ -228,7 +230,27 @@ public class DummyHost extends PlatformObject implements IHost
|
|||
|
||||
public void setWasRestored(boolean flag)
|
||||
{
|
||||
//Auto-generated method stub
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer getPersistableParent() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer[] getPersistableChildren() {
|
||||
return new IRSEPersistableContainer[0];
|
||||
}
|
||||
|
||||
public boolean isTainted() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void beginRestore() {
|
||||
}
|
||||
|
||||
public void endRestore() {
|
||||
}
|
||||
|
||||
public void setTainted(boolean flag) {
|
||||
}
|
||||
|
||||
}
|
|
@ -16,6 +16,7 @@
|
|||
* Uwe Stieber (Wind River) - Dynamic system type provider extensions.
|
||||
* - Moved to package org.eclipse.rse.model for being extendable.
|
||||
* Martin Oberhuber (Wind River) - [175262] IHost.getSystemType() should return IRSESystemType
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.core.model;
|
||||
|
@ -496,22 +497,22 @@ public class Host extends RSEModelObject implements IHost {
|
|||
defaultUserId = newDefaultUserId;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.rse.core.model.RSEModelObject#setDirty(boolean)
|
||||
*/
|
||||
public void setDirty(boolean flag) {
|
||||
super.setDirty(flag);
|
||||
ISystemHostPool myPool = getHostPool();
|
||||
if (myPool != null && flag) {
|
||||
myPool.setDirty(true);
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.rse.core.model.IRSEPersistableContainer#commit()
|
||||
*/
|
||||
public boolean commit() {
|
||||
return RSECorePlugin.getThePersistenceManager().commit(this);
|
||||
ISystemProfile profile = getSystemProfile();
|
||||
boolean result = profile.commit();
|
||||
return result;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer getPersistableParent() {
|
||||
return _profile;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer[] getPersistableChildren() {
|
||||
IConnectorService[] result = getConnectorServices();
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2006 IBM Corporation. All rights reserved.
|
||||
* Copyright (c) 2006, 2007 IBM Corporation. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
|
@ -11,29 +11,21 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* David Dykstal (IBM) - adding new persistence support
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.core.model;
|
||||
|
||||
/**
|
||||
* This is the interface for all objects that contain persistent data.
|
||||
* The objects themselves may not have a persistent form, but can lie in the
|
||||
* persistence heirarchy and be reconstructed when the persistent form is restored.
|
||||
* An example of this is the SytemFilterPoolManager, which is itself not persisted, but
|
||||
* has this interface since it can be reconstructed from its ordering and exists
|
||||
* in the parent chain from SystemFilterPool to SystemProfile.
|
||||
*/
|
||||
public interface IRSEPersistableContainer {
|
||||
/**
|
||||
* An object is dirty if a change has been made to it that requires
|
||||
* it to be persisted.
|
||||
* @return true if the object is dirty
|
||||
*/
|
||||
public boolean isDirty();
|
||||
|
||||
/**
|
||||
* An object is dirty if a change has been made to it that requires
|
||||
* it to be persisted. Objects should usually mark themselves dirty
|
||||
* when a persistable change is made. However, there may be a need
|
||||
* to mark related objects dirty as well.
|
||||
* Setting this value to false should be done only in the persistence
|
||||
* manager after the object has been written to the DOM.
|
||||
* @param flag true if the object must be persisted.
|
||||
*/
|
||||
public void setDirty(boolean flag);
|
||||
|
||||
/**
|
||||
* Request a persistence manager to persist this object.
|
||||
|
@ -49,10 +41,92 @@ public interface IRSEPersistableContainer {
|
|||
public boolean wasRestored();
|
||||
|
||||
/**
|
||||
* The the "restored" state of the object. Only persistence managers
|
||||
* should do this.
|
||||
* Sets the restored state of the object. Only persistence managers
|
||||
* should do this. Persistable objects should be initially created with
|
||||
* this as false and the persistence manager set this to true.
|
||||
* This attribute is "sticky" in the face of most property changes.
|
||||
* It should be set false if the object is renamed or re-parented.
|
||||
* @param flag true if the object was restored.
|
||||
*/
|
||||
public void setWasRestored(boolean flag);
|
||||
|
||||
/**
|
||||
* Notifies the object that it is being restored. Typically this will
|
||||
* suppress any marking of the object as dirty and related objects as
|
||||
* tainted while the restore is taking place. Should be used only by
|
||||
* persistence providers.
|
||||
*/
|
||||
public void beginRestore();
|
||||
|
||||
/**
|
||||
* Notifies the object that it is has been restored. This will
|
||||
* enable the object to be marked as dirty if subsequent changes
|
||||
* are made to it. Should be used only by persistence providers.
|
||||
*/
|
||||
public void endRestore();
|
||||
|
||||
/**
|
||||
* An object is dirty if a change has been made to it that requires
|
||||
* it to be persisted.
|
||||
* @return true if the object is dirty
|
||||
*/
|
||||
public boolean isDirty();
|
||||
|
||||
/**
|
||||
* <p>An object is dirty if a change has been made to it that requires
|
||||
* it to be persisted. Objects should usually mark themselves dirty
|
||||
* when a persistable change is made. However, there may be a need
|
||||
* to mark related objects dirty as well.
|
||||
* <p>Persistable changes are:
|
||||
* <ul>
|
||||
* <li>Any modification of a persistable attribute</li>
|
||||
* <li>A rename</li>
|
||||
* <li>A deletion of a child object</li>
|
||||
* <li>A reordering of the list of child objects</li>
|
||||
* <li>The addition of a child object</li>
|
||||
* </ul>
|
||||
* <p>A rename may also cause a parent to be marked dirty if the
|
||||
* parent refers to the child by name.
|
||||
* <p>Setting this value to false should be done only in the persistence
|
||||
* manager after the object has been written to the DOM.
|
||||
* <p>Marking an object as dirty must cause it and all of its ancestors
|
||||
* in the persistence hierarchy to be marked as tainted.
|
||||
* @param flag true if the object must be persisted.
|
||||
*/
|
||||
public void setDirty(boolean flag);
|
||||
|
||||
/**
|
||||
* An object is tainted if it contains an object that is dirty
|
||||
* somewhere in its containment hierarchy.
|
||||
* @return true if the object is tainted.
|
||||
*/
|
||||
public boolean isTainted();
|
||||
|
||||
/**
|
||||
* Sets the tainted attribute for this object. This should set to
|
||||
* true only by child objects when they have been marked dirty or tainted.
|
||||
* Setting this to true will cause all parent objects in the containment
|
||||
* hierarchy to be marked tainted. Setting this to false will cause all
|
||||
* children to be marked as not tainted.
|
||||
* It should be set to false only by a persistence manager when the
|
||||
* object has been committed.
|
||||
* @param flag the tainted state of the object.
|
||||
*/
|
||||
public void setTainted(boolean flag);
|
||||
|
||||
/**
|
||||
* Retrieve the parent of this object in the persistence containment hierarchy.
|
||||
* This is related to, but not necessarily the same as, the model hierarchy.
|
||||
* @return the parent persistable object. This is null if there is no parent.
|
||||
*/
|
||||
public IRSEPersistableContainer getPersistableParent();
|
||||
|
||||
/**
|
||||
* Retrieves the children of this object in the persistence containment hierarchy.
|
||||
* This is related to, but not necessarily the same as, the model hierarchy.
|
||||
* @return the array of persistable children in the order they are to be stored in the
|
||||
* persistent form. This is an empty array if there are no children.
|
||||
*/
|
||||
public IRSEPersistableContainer[] getPersistableChildren();
|
||||
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2002, 2006 IBM Corporation. All rights reserved.
|
||||
* Copyright (c) 2002, 2007 IBM Corporation. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
|
@ -11,13 +11,14 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.core.model;
|
||||
|
||||
import org.eclipse.rse.core.filters.ISystemFilterPool;
|
||||
import org.eclipse.rse.core.subsystems.ISubSystemConfiguration;
|
||||
import org.eclipse.rse.persistence.IRSEPersistenceProvider;
|
||||
|
||||
//
|
||||
|
||||
|
@ -96,4 +97,21 @@ public interface ISystemProfile extends IRSEModelObject {
|
|||
* Return true if this profile is currently active for this user
|
||||
*/
|
||||
public boolean isActive();
|
||||
|
||||
/**
|
||||
* Each profile is persisted by a persistence provider. This returns the instance of the
|
||||
* persistence provider used for this profile. New profiles will use the default persistence
|
||||
* provider unless one is set by some other means.
|
||||
* @return The persistence provider used for saving and restoring this profile.
|
||||
*/
|
||||
public IRSEPersistenceProvider getPersistenceProvider();
|
||||
|
||||
/**
|
||||
* Sets the persistence provider for the use of this profile. If this is not called then
|
||||
* this profile will be persisted by the default persistence provider. This will typically
|
||||
* be set by either a persistence persistence provider when restoring a profile or by a migration
|
||||
* utility when converting profiles from one form to another.
|
||||
* @param provider the persistence provider to use when saving this profile.
|
||||
*/
|
||||
public void setPersistenceProvider(IRSEPersistenceProvider provider);
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2006 IBM Corporation. All rights reserved.
|
||||
* Copyright (c) 2006, 2007 IBM Corporation. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
|
@ -11,7 +11,7 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.core.model;
|
||||
|
@ -22,7 +22,7 @@ import java.util.Iterator;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class PropertySetContainer implements IPropertySetContainer {
|
||||
public abstract class PropertySetContainer extends RSEPersistableObject implements IPropertySetContainer {
|
||||
private Map _propertySets;
|
||||
|
||||
public PropertySetContainer() {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2006 IBM Corporation. All rights reserved.
|
||||
* Copyright (c) 2006, 2007 IBM Corporation. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
|
@ -11,7 +11,7 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.core.model;
|
||||
|
@ -25,30 +25,6 @@ import org.eclipse.rse.internal.core.model.RSEModelResources;
|
|||
*
|
||||
*/
|
||||
public abstract class RSEModelObject extends PropertySetContainer implements IRSEModelObject {
|
||||
protected boolean _isDirty = true;
|
||||
protected boolean _wasRestored = false;
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.rse.core.persistance.IRSEPersistableContainer#isDirty()
|
||||
*/
|
||||
public final boolean isDirty() {
|
||||
return _isDirty;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.rse.core.persistance.IRSEPersistableContainer#setDirty(boolean)
|
||||
*/
|
||||
public void setDirty(boolean flag) {
|
||||
_isDirty = flag;
|
||||
}
|
||||
|
||||
public final boolean wasRestored() {
|
||||
return _wasRestored;
|
||||
}
|
||||
|
||||
public final void setWasRestored(boolean flag) {
|
||||
_wasRestored = flag;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return RSEModelResources.RESID_MODELOBJECTS_MODELOBJECT_DESCRIPTION;
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
package org.eclipse.rse.core.model;
|
||||
|
||||
public abstract class RSEPersistableObject implements IRSEPersistableContainer {
|
||||
|
||||
private boolean _isDirty = false;
|
||||
private boolean _wasRestored = false;
|
||||
private boolean _isTainted = false;
|
||||
private boolean _restoring = false;
|
||||
|
||||
public RSEPersistableObject() {
|
||||
super();
|
||||
}
|
||||
|
||||
public final boolean isDirty() {
|
||||
return _isDirty;
|
||||
}
|
||||
|
||||
public final void setDirty(boolean flag) {
|
||||
if (!_restoring) {
|
||||
_isDirty = flag;
|
||||
if (flag) {
|
||||
setTainted(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public final void beginRestore() {
|
||||
_restoring = true;
|
||||
}
|
||||
|
||||
public final void endRestore() {
|
||||
_restoring = false;
|
||||
setWasRestored(true);
|
||||
}
|
||||
|
||||
public final boolean wasRestored() {
|
||||
return _wasRestored;
|
||||
}
|
||||
|
||||
public final void setWasRestored(boolean flag) {
|
||||
_wasRestored = flag;
|
||||
}
|
||||
|
||||
public final boolean isTainted() {
|
||||
return _isTainted;
|
||||
}
|
||||
|
||||
public final void setTainted(boolean flag) {
|
||||
if (!_restoring) {
|
||||
_isTainted = flag;
|
||||
if (_isTainted) {
|
||||
IRSEPersistableContainer parent = getPersistableParent();
|
||||
if (parent != null) {
|
||||
parent.setTainted(true);
|
||||
}
|
||||
} else {
|
||||
IRSEPersistableContainer[] children = getPersistableChildren();
|
||||
for (int i = 0; i < children.length; i++) {
|
||||
IRSEPersistableContainer child = children[i];
|
||||
child.setTainted(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -13,6 +13,7 @@
|
|||
* Contributors:
|
||||
* David Dykstal (IBM) - 168977: refactoring IConnectorService and ServerLauncher hierarchies
|
||||
* Martin Oberhuber (Wind River) - [175262] IHost.getSystemType() should return IRSESystemType
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
package org.eclipse.rse.core.subsystems;
|
||||
|
||||
|
@ -23,6 +24,7 @@ import java.util.Vector;
|
|||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.rse.core.RSECorePlugin;
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.core.model.IRSEPersistableContainer;
|
||||
import org.eclipse.rse.core.model.RSEModelObject;
|
||||
|
||||
/**
|
||||
|
@ -118,10 +120,13 @@ public abstract class AbstractConnectorService extends RSEModelObject implements
|
|||
public void setRemoteServerLauncherProperties(IServerLauncherProperties newRemoteServerLauncher) {
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.rse.core.subsystems.IConnectorService#hasRemoteServerLauncherProperties()
|
||||
*/
|
||||
public final boolean hasRemoteServerLauncherProperties() {
|
||||
return getRemoteServerLauncherProperties() != null;
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.rse.core.subsystems.IConnectorService#addCommunicationsListener(org.eclipse.rse.core.subsystems.ICommunicationsListener)
|
||||
*/
|
||||
|
@ -236,7 +241,23 @@ public abstract class AbstractConnectorService extends RSEModelObject implements
|
|||
* @see org.eclipse.rse.core.model.IRSEPersistableContainer#commit()
|
||||
*/
|
||||
public final boolean commit() {
|
||||
return RSECorePlugin.getThePersistenceManager().commit(getHost());
|
||||
return getHost().commit();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.rse.core.model.IRSEPersistableContainer#getPersistableParent()
|
||||
*/
|
||||
public final IRSEPersistableContainer getPersistableParent() {
|
||||
return _host;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer[] getPersistableChildren() {
|
||||
List children = new ArrayList(20);
|
||||
children.add(getRemoteServerLauncherProperties());
|
||||
children.addAll(_registeredSubSystems);
|
||||
IRSEPersistableContainer[] result = new IRSEPersistableContainer[children.size()];
|
||||
children.toArray(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
|
|
@ -10,12 +10,15 @@
|
|||
*
|
||||
* Contributors:
|
||||
* David Dykstal (IBM) - 168977: refactoring IConnectorService and ServerLauncher hierarchies
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
package org.eclipse.rse.core.subsystems;
|
||||
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.core.model.IPropertySet;
|
||||
import org.eclipse.rse.core.model.IRSEPersistableContainer;
|
||||
import org.eclipse.rse.core.model.RSEPersistableObject;
|
||||
|
||||
public abstract class AbstractDelegatingConnectorService implements IDelegatingConnectorService
|
||||
{
|
||||
|
@ -748,5 +751,53 @@ public abstract class AbstractDelegatingConnectorService implements IDelegatingC
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isTainted() {
|
||||
IConnectorService conServ = getRealConnectorService();
|
||||
if (conServ != null)
|
||||
{
|
||||
return conServ.isTainted();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setTainted(boolean flag) {
|
||||
IConnectorService conServ = getRealConnectorService();
|
||||
if (conServ != null)
|
||||
{
|
||||
conServ.setTainted(flag);
|
||||
}
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer getPersistableParent() {
|
||||
return getHost();
|
||||
}
|
||||
|
||||
public void beginRestore() {
|
||||
IConnectorService conServ = getRealConnectorService();
|
||||
if (conServ != null)
|
||||
{
|
||||
conServ.beginRestore();
|
||||
}
|
||||
}
|
||||
|
||||
public void endRestore() {
|
||||
IConnectorService conServ = getRealConnectorService();
|
||||
if (conServ != null)
|
||||
{
|
||||
conServ.endRestore();
|
||||
}
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer[] getPersistableChildren() {
|
||||
IConnectorService conServ = getRealConnectorService();
|
||||
if (conServ != null)
|
||||
{
|
||||
return conServ.getPersistableChildren();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -11,19 +11,19 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.core.filters;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.eclipse.core.resources.IFolder;
|
||||
import org.eclipse.core.runtime.IAdaptable;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.rse.core.RSECorePlugin;
|
||||
import org.eclipse.rse.core.filters.IRSEFilterNamingPolicy;
|
||||
import org.eclipse.rse.core.filters.ISystemFilter;
|
||||
import org.eclipse.rse.core.filters.ISystemFilterConstants;
|
||||
|
@ -33,6 +33,8 @@ import org.eclipse.rse.core.filters.ISystemFilterPoolManager;
|
|||
import org.eclipse.rse.core.filters.ISystemFilterPoolManagerProvider;
|
||||
import org.eclipse.rse.core.filters.ISystemFilterString;
|
||||
import org.eclipse.rse.core.filters.SystemFilterSimple;
|
||||
import org.eclipse.rse.core.model.IRSEPersistableContainer;
|
||||
import org.eclipse.rse.core.model.ISystemProfile;
|
||||
import org.eclipse.rse.core.references.IRSEReferencedObject;
|
||||
import org.eclipse.rse.internal.core.model.RSEModelResources;
|
||||
import org.eclipse.rse.internal.references.SystemReferencedObject;
|
||||
|
@ -1037,7 +1039,7 @@ public class SystemFilter extends SystemReferencedObject implements ISystemFilte
|
|||
public void setType(String newType)
|
||||
{
|
||||
type = newType;
|
||||
_isDirty = true;
|
||||
setDirty(true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1365,7 +1367,27 @@ public class SystemFilter extends SystemReferencedObject implements ISystemFilte
|
|||
|
||||
public boolean commit()
|
||||
{
|
||||
return RSECorePlugin.getThePersistenceManager().commit(this);
|
||||
ISystemProfile profile = getSystemFilterPoolManager().getSystemProfile();
|
||||
boolean result = profile.commit();
|
||||
return result;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer getPersistableParent() {
|
||||
IRSEPersistableContainer result = getParentFilterContainer();
|
||||
return result;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer[] getPersistableChildren() {
|
||||
List children = new ArrayList(20);
|
||||
if (nestedFilters != null) {
|
||||
children.addAll(nestedFilters);
|
||||
}
|
||||
if (filterStringVector != null) {
|
||||
children.addAll(filterStringVector);
|
||||
}
|
||||
IRSEPersistableContainer[] result = new IRSEPersistableContainer[children.size()];
|
||||
children.toArray(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
|
@ -12,6 +12,7 @@
|
|||
*
|
||||
* Contributors:
|
||||
* David Dykstal (IBM) - removing implementation of ISystemFilterSavePolicies, ISystemFilterConstants
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.core.filters;
|
||||
|
@ -31,6 +32,8 @@ import org.eclipse.rse.core.filters.ISystemFilterPool;
|
|||
import org.eclipse.rse.core.filters.ISystemFilterPoolManager;
|
||||
import org.eclipse.rse.core.filters.ISystemFilterPoolManagerProvider;
|
||||
import org.eclipse.rse.core.filters.SystemFilterNamingPolicy;
|
||||
import org.eclipse.rse.core.model.IRSEPersistableContainer;
|
||||
import org.eclipse.rse.core.model.ISystemProfile;
|
||||
import org.eclipse.rse.internal.core.model.RSEModelResources;
|
||||
import org.eclipse.rse.internal.references.SystemPersistableReferencedObject;
|
||||
|
||||
|
@ -1319,7 +1322,17 @@ public class SystemFilterPool extends SystemPersistableReferencedObject
|
|||
|
||||
public boolean commit()
|
||||
{
|
||||
return RSECorePlugin.getThePersistenceManager().commit(this);
|
||||
ISystemProfile profile = getSystemFilterPoolManager().getSystemProfile();
|
||||
boolean result = profile.commit();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public IRSEPersistableContainer getPersistableParent() {
|
||||
return mgr;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer[] getPersistableChildren() {
|
||||
return getSystemFilters();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2002, 2006 IBM Corporation. All rights reserved.
|
||||
* Copyright (c) 2002, 2007 IBM Corporation. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
|
@ -11,7 +11,7 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.core.filters;
|
||||
|
@ -31,6 +31,7 @@ import org.eclipse.rse.core.filters.ISystemFilterPoolReference;
|
|||
import org.eclipse.rse.core.filters.ISystemFilterPoolReferenceManager;
|
||||
import org.eclipse.rse.core.filters.ISystemFilterPoolReferenceManagerProvider;
|
||||
import org.eclipse.rse.core.filters.ISystemFilterReference;
|
||||
import org.eclipse.rse.core.model.IRSEPersistableContainer;
|
||||
import org.eclipse.rse.core.model.ISystemProfile;
|
||||
import org.eclipse.rse.core.model.ISystemRegistry;
|
||||
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||
|
@ -243,4 +244,23 @@ public class SystemFilterPoolReference extends SystemPersistableReferencingObjec
|
|||
return false;
|
||||
// return RSEUIPlugin.getThePersistenceManager().commit(getProvider().);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.rse.core.model.IRSEPersistableContainer#getPersistableParent()
|
||||
*/
|
||||
public IRSEPersistableContainer getPersistableParent() {
|
||||
IRSEPersistableContainer parent = null;
|
||||
ISystemFilterPoolReferenceManagerProvider provider = getProvider();
|
||||
if (provider instanceof IRSEPersistableContainer) {
|
||||
parent = (IRSEPersistableContainer) provider;
|
||||
}
|
||||
return parent;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.rse.core.model.IRSEPersistableContainer#getPersistableChildren()
|
||||
*/
|
||||
public IRSEPersistableContainer[] getPersistableChildren() {
|
||||
return new IRSEPersistableContainer[0];
|
||||
}
|
||||
}
|
|
@ -11,7 +11,7 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.core.filters;
|
||||
|
@ -24,6 +24,7 @@ import org.eclipse.rse.core.filters.ISystemFilterConstants;
|
|||
import org.eclipse.rse.core.filters.ISystemFilterPoolManager;
|
||||
import org.eclipse.rse.core.filters.ISystemFilterPoolManagerProvider;
|
||||
import org.eclipse.rse.core.filters.ISystemFilterString;
|
||||
import org.eclipse.rse.core.model.IRSEPersistableContainer;
|
||||
import org.eclipse.rse.core.model.RSEModelObject;
|
||||
import org.eclipse.rse.core.references.IRSEBaseReferencingObject;
|
||||
import org.eclipse.rse.internal.core.model.RSEModelResources;
|
||||
|
@ -290,7 +291,16 @@ public class SystemFilterString extends RSEModelObject implements ISystemFilterS
|
|||
|
||||
public boolean commit()
|
||||
{
|
||||
return RSECorePlugin.getThePersistenceManager().commit(getParentSystemFilter());
|
||||
boolean result = getParentSystemFilter().commit();
|
||||
return result;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer getPersistableParent() {
|
||||
return parentFilter;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer[] getPersistableChildren() {
|
||||
return new IRSEPersistableContainer[0];
|
||||
}
|
||||
|
||||
}
|
|
@ -12,11 +12,13 @@
|
|||
*
|
||||
* Contributors:
|
||||
* David Dykstal (IBM) - 168977: refactoring IConnectorService and ServerLauncher hierarchies
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.core.subsystems;
|
||||
import org.eclipse.rse.core.RSECorePlugin;
|
||||
import org.eclipse.rse.core.model.IPropertySet;
|
||||
import org.eclipse.rse.core.model.IRSEPersistableContainer;
|
||||
import org.eclipse.rse.core.model.RSEModelObject;
|
||||
import org.eclipse.rse.core.subsystems.IConnectorService;
|
||||
import org.eclipse.rse.core.subsystems.IServerLauncherProperties;
|
||||
|
@ -51,6 +53,14 @@ public abstract class ServerLauncher extends RSEModelObject implements IServerLa
|
|||
{
|
||||
return _connectorService;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer getPersistableParent() {
|
||||
return _connectorService;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer[] getPersistableChildren() {
|
||||
return new IRSEPersistableContainer[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Clone the contents of this server launcher into the given server launcher
|
||||
|
@ -101,7 +111,7 @@ public abstract class ServerLauncher extends RSEModelObject implements IServerLa
|
|||
|
||||
public boolean commit()
|
||||
{
|
||||
return RSECorePlugin.getThePersistenceManager().commit(getConnectorService().getHost());
|
||||
return getConnectorService().getHost().commit();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.persistence;
|
||||
|
@ -31,7 +31,6 @@ import org.eclipse.core.runtime.jobs.Job;
|
|||
import org.eclipse.core.runtime.preferences.IPreferencesService;
|
||||
import org.eclipse.rse.core.RSECorePlugin;
|
||||
import org.eclipse.rse.core.SystemResourceManager;
|
||||
import org.eclipse.rse.core.filters.ISystemFilter;
|
||||
import org.eclipse.rse.core.filters.ISystemFilterPool;
|
||||
import org.eclipse.rse.core.filters.ISystemFilterPoolManager;
|
||||
import org.eclipse.rse.core.filters.ISystemFilterPoolManagerProvider;
|
||||
|
@ -41,7 +40,6 @@ import org.eclipse.rse.core.model.ISystemHostPool;
|
|||
import org.eclipse.rse.core.model.ISystemProfile;
|
||||
import org.eclipse.rse.core.model.ISystemProfileManager;
|
||||
import org.eclipse.rse.core.model.ISystemRegistry;
|
||||
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||
import org.eclipse.rse.internal.persistence.dom.RSEDOMExporter;
|
||||
import org.eclipse.rse.internal.persistence.dom.RSEDOMImporter;
|
||||
import org.eclipse.rse.logging.Logger;
|
||||
|
@ -61,26 +59,8 @@ public class RSEPersistenceManager implements IRSEPersistenceManager {
|
|||
private static final int STATE_IMPORTING = 1;
|
||||
private static final int STATE_EXPORTING = 2;
|
||||
|
||||
private Map loadedProviders = new HashMap(10);
|
||||
private int _currentState = STATE_NONE;
|
||||
private RSEDOMExporter _exporter;
|
||||
private RSEDOMImporter _importer;
|
||||
|
||||
private static IProject remoteSystemsProject = null;
|
||||
public static final String RESOURCE_PROJECT_NAME = "RemoteSystemsConnections"; //$NON-NLS-1$
|
||||
|
||||
// private ISystemRegistry _registry;
|
||||
private ISystemProfileManager _profileManager;
|
||||
|
||||
public RSEPersistenceManager(ISystemRegistry registry) {
|
||||
// _registry = registry;
|
||||
_profileManager = registry.getSystemProfileManager();
|
||||
_exporter = RSEDOMExporter.getInstance();
|
||||
_exporter.setSystemRegistry(registry);
|
||||
_importer = RSEDOMImporter.getInstance();
|
||||
_importer.setSystemRegistry(registry);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the default remote systems project.
|
||||
* @return IProject handle of the project. Use exists() to test existence.
|
||||
|
@ -93,9 +73,116 @@ public class RSEPersistenceManager implements IRSEPersistenceManager {
|
|||
|
||||
return remoteSystemsProject;
|
||||
}
|
||||
private Map loadedProviders = new HashMap(10);
|
||||
|
||||
public void registerRSEPersistenceProvider(String id, IRSEPersistenceProvider provider) {
|
||||
loadedProviders.put(id, provider);
|
||||
private int _currentState = STATE_NONE;
|
||||
private RSEDOMExporter _exporter;
|
||||
|
||||
private RSEDOMImporter _importer;
|
||||
|
||||
public RSEPersistenceManager(ISystemRegistry registry) {
|
||||
// _registry = registry;
|
||||
_exporter = RSEDOMExporter.getInstance();
|
||||
_exporter.setSystemRegistry(registry);
|
||||
_importer = RSEDOMImporter.getInstance();
|
||||
_importer.setSystemRegistry(registry);
|
||||
}
|
||||
|
||||
public boolean commit(ISystemFilterPoolManager filterPoolManager) {
|
||||
if (filterPoolManager.isDirty()) {
|
||||
commit(filterPoolManager.getSystemProfile());
|
||||
filterPoolManager.setDirty(false);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean commit(ISystemHostPool connectionPool) {
|
||||
if (connectionPool.isDirty()) {
|
||||
commit(connectionPool.getSystemProfile());
|
||||
connectionPool.setDirty(false);
|
||||
}
|
||||
/*
|
||||
Host[] connections = connectionPool.getHosts();
|
||||
for (int idx = 0; idx < connections.length; idx++)
|
||||
{
|
||||
if (!saveHost(connectionPool, connections[idx]))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
*/
|
||||
return false; // all persistence should be at profile level
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempt to save single profile to disk.
|
||||
*/
|
||||
public boolean commit(ISystemProfile profile) {
|
||||
if (profile != null) {
|
||||
return save(profile, false);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save all profiles to disk
|
||||
*/
|
||||
public boolean commit(ISystemProfileManager profileManager) {
|
||||
|
||||
ISystemProfile[] profiles = profileManager.getSystemProfiles();
|
||||
for (int idx = 0; idx < profiles.length; idx++) {
|
||||
try {
|
||||
commit(profiles[idx]);
|
||||
} catch (Exception exc) {
|
||||
Logger logger = RSECorePlugin.getDefault().getLogger();
|
||||
String profileName = profiles[idx].getName();
|
||||
String message = "Error saving profile " + profileName; //$NON-NLS-1$
|
||||
logger.logError(message, exc);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.rse.persistence.IRSEPersistenceManager#deleteProfile(java.lang.String)
|
||||
*/
|
||||
public void deleteProfile(final String profileName) {
|
||||
Job job = new Job(Messages.RSEPersistenceManager_DeleteProfileJobName) {
|
||||
protected IStatus run(IProgressMonitor monitor) {
|
||||
IRSEPersistenceProvider provider = getRSEPersistenceProvider();
|
||||
IStatus result = provider.deleteProfile(profileName, monitor);
|
||||
return result;
|
||||
}
|
||||
};
|
||||
job.schedule();
|
||||
}
|
||||
|
||||
private RSEDOM exportRSEDOM(ISystemProfile profile, boolean force) {
|
||||
RSEDOM dom = _exporter.createRSEDOM(profile, force);
|
||||
return dom;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the persistence provider for this workbench configuration.
|
||||
* Several persistence providers may be registered, but only one persistence provider can be used.
|
||||
* This persistence provider's identifier is specified in the org.eclipse.rse.persistenceProvider
|
||||
* preference and can be specified a product's config.ini file.
|
||||
* It is retrieved using the platform's preference service.
|
||||
* If no such preference exists the default "org.eclipse.rse.persistence.PropertyFileProvider"
|
||||
* is used.
|
||||
* @return the default IRSEPersistenceProvider for this installation.
|
||||
*/
|
||||
public IRSEPersistenceProvider getRSEPersistenceProvider() {
|
||||
IPreferencesService service = Platform.getPreferencesService();
|
||||
String qualifier = "org.eclipse.rse"; //$NON-NLS-1$
|
||||
String preferenceName = "persistenceProvider"; //$NON-NLS-1$
|
||||
String defaultProviderName = "org.eclipse.rse.persistence.PropertyFileProvider"; //$NON-NLS-1$
|
||||
String providerName = service.getString(qualifier, preferenceName, defaultProviderName, null);
|
||||
IRSEPersistenceProvider provider = getRSEPersistenceProvider(providerName);
|
||||
return provider;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -137,212 +224,24 @@ public class RSEPersistenceManager implements IRSEPersistenceManager {
|
|||
return provider;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the persistence provider for this workbench configuration.
|
||||
* Several persistence providers may be registered, but only one persistence provider can be used.
|
||||
* This persistence provider's identifier is specified in the org.eclipse.rse.persistenceProvider
|
||||
* preference and can be specified a product's config.ini file.
|
||||
* It is retrieved using the platform's preference service.
|
||||
* If no such preference exists the default "org.eclipse.rse.persistence.PropertyFileProvider"
|
||||
* is used.
|
||||
* @return the default IRSEPersistenceProvider for this installation.
|
||||
*/
|
||||
public IRSEPersistenceProvider getRSEPersistenceProvider() {
|
||||
IPreferencesService service = Platform.getPreferencesService();
|
||||
String qualifier = "org.eclipse.rse"; //$NON-NLS-1$
|
||||
String preferenceName = "persistenceProvider"; //$NON-NLS-1$
|
||||
String defaultProviderName = "org.eclipse.rse.persistence.PropertyFileProvider"; //$NON-NLS-1$
|
||||
String providerName = service.getString(qualifier, preferenceName, defaultProviderName, null);
|
||||
IRSEPersistenceProvider provider = getRSEPersistenceProvider(providerName);
|
||||
return provider;
|
||||
}
|
||||
|
||||
public boolean restore(ISystemProfileManager profileManager) {
|
||||
return load(profileManager);
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore a profile of a given name from disk...
|
||||
*/
|
||||
protected ISystemProfile restoreProfile(ISystemProfileManager mgr, String name) throws Exception {
|
||||
/*
|
||||
* FIXME String fileName = mgr.getRootSaveFileName(name); java.util.List
|
||||
* ext = null;//FIXME
|
||||
* getMOFHelpers().restore(SystemResourceManager.getProfileFolder(name),fileName);
|
||||
* // should be exactly one profile... Iterator iList = ext.iterator();
|
||||
* SystemProfile profile = (SystemProfile)iList.next();
|
||||
* mgr.initialize(profile, name); return profile;
|
||||
*/
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save all profiles to disk
|
||||
*/
|
||||
public boolean commit(ISystemProfileManager profileManager) {
|
||||
|
||||
ISystemProfile[] profiles = profileManager.getSystemProfiles();
|
||||
for (int idx = 0; idx < profiles.length; idx++) {
|
||||
try {
|
||||
commit(profiles[idx]);
|
||||
} catch (Exception exc) {
|
||||
Logger logger = RSECorePlugin.getDefault().getLogger();
|
||||
String profileName = profiles[idx].getName();
|
||||
String message = "Error saving profile " + profileName; //$NON-NLS-1$
|
||||
logger.logError(message, exc);
|
||||
return false;
|
||||
}
|
||||
private RSEDOM importRSEDOM(String domName) {
|
||||
RSEDOM dom = null;
|
||||
IRSEPersistenceProvider provider = getRSEPersistenceProvider();
|
||||
if (provider != null) {
|
||||
dom = provider.loadRSEDOM(domName, null);
|
||||
} else {
|
||||
Logger logger = RSECorePlugin.getDefault().getLogger();
|
||||
logger.logError("Persistence provider is not available.", null); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
return true;
|
||||
return dom;
|
||||
}
|
||||
|
||||
public boolean restore(ISystemHostPool connectionPool) {
|
||||
return false;
|
||||
public synchronized boolean isExporting() {
|
||||
return _currentState == STATE_EXPORTING;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore a connection of a given name from disk...
|
||||
*/
|
||||
protected IHost restoreHost(ISystemHostPool hostPool, String connectionName) throws Exception {
|
||||
/*
|
||||
* FIXME //System.out.println("in SystemConnectionPoolImpl#restore for
|
||||
* connection " + connectionName); String fileName =
|
||||
* getRootSaveFileName(connectionName);
|
||||
* //System.out.println(".......fileName = " + fileName);
|
||||
* //System.out.println(".......folderName = " +
|
||||
* getConnectionFolder(connectionName).getName()); java.util.List ext =
|
||||
* getMOFHelpers().restore(getConnectionFolder(connectionName),fileName);
|
||||
* // should be exactly one profile... Iterator iList = ext.iterator();
|
||||
* SystemConnection connection = (SystemConnection)iList.next(); if
|
||||
* (connection != null) { if
|
||||
* (!connection.getAliasName().equalsIgnoreCase(connectionName)) {
|
||||
* RSEUIPlugin.logDebugMessage(this.getClass().getName(),"Incorrect
|
||||
* alias name found in connections.xmi file for " + connectionName+".
|
||||
* Name was reset"); connection.setAliasName(connectionName); // just in
|
||||
* case! } internalAddConnection(connection); } return connection;
|
||||
*/
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean commit(ISystemHostPool connectionPool) {
|
||||
if (connectionPool.isDirty()) {
|
||||
commit(connectionPool.getSystemProfile());
|
||||
connectionPool.setDirty(false);
|
||||
}
|
||||
/*
|
||||
Host[] connections = connectionPool.getHosts();
|
||||
for (int idx = 0; idx < connections.length; idx++)
|
||||
{
|
||||
if (!saveHost(connectionPool, connections[idx]))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
*/
|
||||
return false; // all persistence should be at profile level
|
||||
}
|
||||
|
||||
public boolean commit(ISystemFilterPoolManager filterPoolManager) {
|
||||
if (filterPoolManager.isDirty()) {
|
||||
commit(filterPoolManager.getSystemProfile());
|
||||
filterPoolManager.setDirty(false);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean commit(ISystemFilterPool filterPool) {
|
||||
if (filterPool.isDirty()) {
|
||||
commit(filterPool.getSystemFilterPoolManager().getSystemProfile());
|
||||
filterPool.setDirty(false);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean restore(ISystemFilterPool filterPool) {
|
||||
//System.out.println("restore filterpool");
|
||||
// DWD function Is this method really needed?
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean commit(ISystemFilter filter) {
|
||||
// System.out.println("commit filter");
|
||||
// DWD function Is this method really needed?
|
||||
/*
|
||||
if (filter.isDirty())
|
||||
{
|
||||
System.out.println("saving filter: "+filter.getName());
|
||||
filter.setDirty(false);
|
||||
}
|
||||
*/
|
||||
/* FIXME
|
||||
//initMOF(); assume caller did this!
|
||||
String fileName = getRootSaveFileName(this);
|
||||
IFolder folder = getFolder(this);
|
||||
getMOFHelpers().save(folder,fileName, this);
|
||||
*/
|
||||
return false;
|
||||
}
|
||||
|
||||
public ISystemFilterPool restoreFilterPool(String name) {
|
||||
//System.out.println("restore filter pool "+name);
|
||||
// DWD function is this method really needed?
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean commit(ISubSystem subSystem) {
|
||||
|
||||
if (subSystem.isDirty()) {
|
||||
// System.out.println("updated " + subSystem.getName());
|
||||
try {
|
||||
// commit everything for now
|
||||
commit(_profileManager);
|
||||
subSystem.setDirty(false);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
// FIXME
|
||||
if (subSystem.isDirty())
|
||||
{
|
||||
System.out.println("saving subsystem: "+subSystem.getName());
|
||||
}
|
||||
*/
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a filter pool manager for a particular SubSystemConfiguration and SystemProfile. Called
|
||||
* "restore" for historcal reasons.
|
||||
* @param profile the profile that will own this ISystemFilterPoolManager. There is one of these per profile.
|
||||
* @param logger the logging object for logging errors. Each ISystemFilterPoolManager has one of these.
|
||||
* @param caller The creator/owner of this ISystemFilterPoolManager, this ends up being a SubSystemConfiguration.
|
||||
* @param name the name of the manager to restore. File name is derived from it when saving to one file.
|
||||
* @return the "restored" manager.
|
||||
*/
|
||||
public ISystemFilterPoolManager restoreFilterPoolManager(ISystemProfile profile, Logger logger, ISystemFilterPoolManagerProvider caller, String name) {
|
||||
SystemFilterPoolManager mgr = SystemFilterPoolManager.createManager(profile);
|
||||
mgr.initialize(logger, caller, name); // core data
|
||||
mgr.setWasRestored(false); // managers are not "restored from disk" since they are not persistent of themselves
|
||||
return mgr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempt to save single profile to disk.
|
||||
*/
|
||||
public boolean commit(ISystemProfile profile) {
|
||||
if (profile != null) {
|
||||
return save(profile, false);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean commit(IHost host) {
|
||||
return commit(host.getSystemProfile());
|
||||
public synchronized boolean isImporting() {
|
||||
return _currentState == STATE_IMPORTING;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -387,6 +286,85 @@ public class RSEPersistenceManager implements IRSEPersistenceManager {
|
|||
return successful;
|
||||
}
|
||||
|
||||
public void registerRSEPersistenceProvider(String id, IRSEPersistenceProvider provider) {
|
||||
loadedProviders.put(id, provider);
|
||||
}
|
||||
|
||||
public boolean restore(ISystemFilterPool filterPool) {
|
||||
//System.out.println("restore filterpool");
|
||||
// DWD function Is this method really needed?
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean restore(ISystemHostPool connectionPool) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean restore(ISystemProfileManager profileManager) {
|
||||
return load(profileManager);
|
||||
}
|
||||
|
||||
public ISystemFilterPool restoreFilterPool(String name) {
|
||||
//System.out.println("restore filter pool "+name);
|
||||
// DWD function is this method really needed?
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a filter pool manager for a particular SubSystemConfiguration and SystemProfile. Called
|
||||
* "restore" for historcal reasons.
|
||||
* @param profile the profile that will own this ISystemFilterPoolManager. There is one of these per profile.
|
||||
* @param logger the logging object for logging errors. Each ISystemFilterPoolManager has one of these.
|
||||
* @param caller The creator/owner of this ISystemFilterPoolManager, this ends up being a SubSystemConfiguration.
|
||||
* @param name the name of the manager to restore. File name is derived from it when saving to one file.
|
||||
* @return the "restored" manager.
|
||||
*/
|
||||
public ISystemFilterPoolManager restoreFilterPoolManager(ISystemProfile profile, Logger logger, ISystemFilterPoolManagerProvider caller, String name) {
|
||||
SystemFilterPoolManager mgr = SystemFilterPoolManager.createManager(profile);
|
||||
mgr.initialize(logger, caller, name); // core data
|
||||
mgr.setWasRestored(false); // managers are not "restored from disk" since they are not persistent of themselves
|
||||
return mgr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore a connection of a given name from disk...
|
||||
*/
|
||||
protected IHost restoreHost(ISystemHostPool hostPool, String connectionName) throws Exception {
|
||||
/*
|
||||
* FIXME //System.out.println("in SystemConnectionPoolImpl#restore for
|
||||
* connection " + connectionName); String fileName =
|
||||
* getRootSaveFileName(connectionName);
|
||||
* //System.out.println(".......fileName = " + fileName);
|
||||
* //System.out.println(".......folderName = " +
|
||||
* getConnectionFolder(connectionName).getName()); java.util.List ext =
|
||||
* getMOFHelpers().restore(getConnectionFolder(connectionName),fileName);
|
||||
* // should be exactly one profile... Iterator iList = ext.iterator();
|
||||
* SystemConnection connection = (SystemConnection)iList.next(); if
|
||||
* (connection != null) { if
|
||||
* (!connection.getAliasName().equalsIgnoreCase(connectionName)) {
|
||||
* RSEUIPlugin.logDebugMessage(this.getClass().getName(),"Incorrect
|
||||
* alias name found in connections.xmi file for " + connectionName+".
|
||||
* Name was reset"); connection.setAliasName(connectionName); // just in
|
||||
* case! } internalAddConnection(connection); } return connection;
|
||||
*/
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore a profile of a given name from disk...
|
||||
*/
|
||||
protected ISystemProfile restoreProfile(ISystemProfileManager mgr, String name) throws Exception {
|
||||
/*
|
||||
* FIXME String fileName = mgr.getRootSaveFileName(name); java.util.List
|
||||
* ext = null;//FIXME
|
||||
* getMOFHelpers().restore(SystemResourceManager.getProfileFolder(name),fileName);
|
||||
* // should be exactly one profile... Iterator iList = ext.iterator();
|
||||
* SystemProfile profile = (SystemProfile)iList.next();
|
||||
* mgr.initialize(profile, name); return profile;
|
||||
*/
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes the RSE model to a DOM and schedules writing of that DOM to disk.
|
||||
* May, in fact, update an existing DOM instead of creating a new one.
|
||||
|
@ -421,47 +399,8 @@ public class RSEPersistenceManager implements IRSEPersistenceManager {
|
|||
return result;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.rse.persistence.IRSEPersistenceManager#deleteProfile(java.lang.String)
|
||||
*/
|
||||
public void deleteProfile(final String profileName) {
|
||||
Job job = new Job(Messages.RSEPersistenceManager_DeleteProfileJobName) {
|
||||
protected IStatus run(IProgressMonitor monitor) {
|
||||
IRSEPersistenceProvider provider = getRSEPersistenceProvider();
|
||||
IStatus result = provider.deleteProfile(profileName, monitor);
|
||||
return result;
|
||||
}
|
||||
};
|
||||
job.schedule();
|
||||
}
|
||||
|
||||
public synchronized boolean isExporting() {
|
||||
return _currentState == STATE_EXPORTING;
|
||||
}
|
||||
|
||||
public synchronized boolean isImporting() {
|
||||
return _currentState == STATE_IMPORTING;
|
||||
}
|
||||
|
||||
private synchronized void setState(int state) {
|
||||
_currentState = state;
|
||||
}
|
||||
|
||||
private RSEDOM exportRSEDOM(ISystemProfile profile, boolean force) {
|
||||
RSEDOM dom = _exporter.createRSEDOM(profile, force);
|
||||
return dom;
|
||||
}
|
||||
|
||||
private RSEDOM importRSEDOM(String domName) {
|
||||
RSEDOM dom = null;
|
||||
IRSEPersistenceProvider provider = getRSEPersistenceProvider();
|
||||
if (provider != null) {
|
||||
dom = provider.loadRSEDOM(domName, null);
|
||||
} else {
|
||||
Logger logger = RSECorePlugin.getDefault().getLogger();
|
||||
logger.logError("Persistence provider is not available.", null); //$NON-NLS-1$
|
||||
}
|
||||
return dom;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2006 IBM Corporation. All rights reserved.
|
||||
* Copyright (c) 2006, 2007 IBM Corporation. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
|
@ -11,23 +11,54 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.persistence;
|
||||
|
||||
import org.eclipse.rse.core.filters.ISystemFilter;
|
||||
import org.eclipse.rse.core.filters.ISystemFilterPool;
|
||||
import org.eclipse.rse.core.filters.ISystemFilterPoolManager;
|
||||
import org.eclipse.rse.core.filters.ISystemFilterPoolManagerProvider;
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.core.model.ISystemHostPool;
|
||||
import org.eclipse.rse.core.model.ISystemProfile;
|
||||
import org.eclipse.rse.core.model.ISystemProfileManager;
|
||||
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||
import org.eclipse.rse.logging.Logger;
|
||||
|
||||
public interface IRSEPersistenceManager {
|
||||
|
||||
public boolean commit(ISystemFilterPoolManager filterPoolManager);
|
||||
|
||||
/**
|
||||
* Save all connections in the connection pool
|
||||
* @param connectionPool
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean commit(ISystemHostPool connectionPool);
|
||||
|
||||
/**
|
||||
* Save this profile
|
||||
* @param profile
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean commit(ISystemProfile profile);
|
||||
|
||||
/**
|
||||
* Save all profiles
|
||||
* @param profileManager
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean commit(ISystemProfileManager profileManager);
|
||||
|
||||
/**
|
||||
* Delete the persistent form of a profile.
|
||||
* @param profileName The name of the profile to delete
|
||||
*/
|
||||
public void deleteProfile(String profileName);
|
||||
|
||||
public boolean isExporting();
|
||||
|
||||
public boolean isImporting();
|
||||
|
||||
/**
|
||||
* Register the persistence provider to be used when saving and restoring RSE doms.
|
||||
* The provider is registered under the provided id.
|
||||
|
@ -37,20 +68,11 @@ public interface IRSEPersistenceManager {
|
|||
public void registerRSEPersistenceProvider(String id, IRSEPersistenceProvider provider);
|
||||
|
||||
/**
|
||||
* Restore all profiles
|
||||
* @param profileManager
|
||||
* @return true if successful
|
||||
* Restore all the filters for the filter pool
|
||||
* @param filterPool
|
||||
* @return true if sucessful
|
||||
*/
|
||||
public boolean restore(ISystemProfileManager profileManager);
|
||||
|
||||
/**
|
||||
* Save all profiles
|
||||
* @param profileManager
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean commit(ISystemProfileManager profileManager);
|
||||
|
||||
public boolean commit(IHost host);
|
||||
public boolean restore(ISystemFilterPool filterPool);
|
||||
|
||||
/**
|
||||
* Restore all connections in the connection pool
|
||||
|
@ -60,34 +82,11 @@ public interface IRSEPersistenceManager {
|
|||
public boolean restore(ISystemHostPool connectionPool);
|
||||
|
||||
/**
|
||||
* Save all connections in the connection pool
|
||||
* @param connectionPool
|
||||
* Restore all profiles
|
||||
* @param profileManager
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean commit(ISystemHostPool connectionPool);
|
||||
|
||||
public boolean commit(ISystemFilterPoolManager filterPoolManager);
|
||||
|
||||
/**
|
||||
* Save all the filters in the filter pool
|
||||
* @param filterPool
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean commit(ISystemFilterPool filterPool);
|
||||
|
||||
/**
|
||||
* Save this filter
|
||||
* @param filter
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean commit(ISystemFilter filter);
|
||||
|
||||
/**
|
||||
* Restore all the filters for the filter pool
|
||||
* @param filterPool
|
||||
* @return true if sucessful
|
||||
*/
|
||||
public boolean restore(ISystemFilterPool filterPool);
|
||||
public boolean restore(ISystemProfileManager profileManager);
|
||||
|
||||
/**
|
||||
* Restore the filter pool
|
||||
|
@ -96,29 +95,5 @@ public interface IRSEPersistenceManager {
|
|||
*/
|
||||
public ISystemFilterPool restoreFilterPool(String name);
|
||||
|
||||
/**
|
||||
* Save this subsystem
|
||||
* @param subSystem
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean commit(ISubSystem subSystem);
|
||||
|
||||
/**
|
||||
* Save this profile
|
||||
* @param profile
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean commit(ISystemProfile profile);
|
||||
|
||||
public ISystemFilterPoolManager restoreFilterPoolManager(ISystemProfile profile, Logger logger, ISystemFilterPoolManagerProvider caller, String name);
|
||||
|
||||
public boolean isExporting();
|
||||
|
||||
public boolean isImporting();
|
||||
|
||||
/**
|
||||
* Delete the persistent form of a profile.
|
||||
* @param profileName The name of the profile to delete
|
||||
*/
|
||||
public void deleteProfile(String profileName);
|
||||
}
|
|
@ -14,6 +14,7 @@
|
|||
* David Dykstal (IBM) - created and used RSEPReferencesManager
|
||||
* - moved SystemsPreferencesManager to a new plugin
|
||||
* Martin Oberhuber (Wind River) - [175262] IHost.getSystemType() should return IRSESystemType
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.model;
|
||||
|
@ -28,6 +29,7 @@ import org.eclipse.rse.core.RSECorePlugin;
|
|||
import org.eclipse.rse.core.RSEPreferencesManager;
|
||||
import org.eclipse.rse.core.model.Host;
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.core.model.IRSEPersistableContainer;
|
||||
import org.eclipse.rse.core.model.ISystemHostPool;
|
||||
import org.eclipse.rse.core.model.ISystemProfile;
|
||||
import org.eclipse.rse.core.model.RSEModelObject;
|
||||
|
@ -508,70 +510,7 @@ public class SystemHostPool extends RSEModelObject implements ISystemHostPool
|
|||
invalidateCache();
|
||||
}
|
||||
|
||||
// -------------------------
|
||||
// SAVE / RESTORE METHODS...
|
||||
// -------------------------
|
||||
/**
|
||||
* Save all connections to disk.
|
||||
* Attempts to save all of them, swallowing exceptions, then at the end throws the last exception caught.
|
||||
*/
|
||||
public boolean commit()
|
||||
{
|
||||
return RSECorePlugin.getThePersistenceManager().commit(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempt to save single connection to disk.
|
||||
*/
|
||||
public void commit(IHost connection)
|
||||
{
|
||||
commit();
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore connections from disk
|
||||
*/
|
||||
protected void restore()
|
||||
throws Exception
|
||||
{
|
||||
//System.out.println("... . in pool.restore ");
|
||||
|
||||
//FIXME
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore a connection of a given name from disk...
|
||||
*/
|
||||
protected IHost restore(String connectionName)
|
||||
throws Exception
|
||||
{
|
||||
/*FIXME
|
||||
//System.out.println("in SystemConnectionPoolImpl#restore for connection " + connectionName);
|
||||
String fileName = getRootSaveFileName(connectionName);
|
||||
//System.out.println(".......fileName = " + fileName);
|
||||
//System.out.println(".......folderName = " + getConnectionFolder(connectionName).getName());
|
||||
java.util.List ext = getMOFHelpers().restore(getConnectionFolder(connectionName),fileName);
|
||||
|
||||
// should be exactly one profile...
|
||||
Iterator iList = ext.iterator();
|
||||
SystemConnection connection = (SystemConnection)iList.next();
|
||||
if (connection != null)
|
||||
{
|
||||
if (!connection.getAliasName().equalsIgnoreCase(connectionName))
|
||||
{
|
||||
RSEUIPlugin.logDebugMessage(this.getClass().getName(),"Incorrect alias name found in connections.xmi file for " + connectionName+". Name was reset");
|
||||
connection.setAliasName(connectionName); // just in case!
|
||||
}
|
||||
internalAddConnection(connection);
|
||||
}
|
||||
return connection;
|
||||
*/
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Return the unqualified save file name with the extension .xmi
|
||||
*/
|
||||
protected static String getSaveFileName(IHost connection)
|
||||
|
@ -596,11 +535,6 @@ public class SystemHostPool extends RSEModelObject implements ISystemHostPool
|
|||
return fileName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public String toString()
|
||||
{
|
||||
if (getName() == null)
|
||||
|
@ -608,6 +542,7 @@ public class SystemHostPool extends RSEModelObject implements ISystemHostPool
|
|||
else
|
||||
return getName();
|
||||
}
|
||||
|
||||
/**
|
||||
* @generated This field/method will be replaced during code generation
|
||||
*/
|
||||
|
@ -651,5 +586,77 @@ public class SystemHostPool extends RSEModelObject implements ISystemHostPool
|
|||
return result.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore connections from disk
|
||||
*/
|
||||
protected void restore()
|
||||
throws Exception
|
||||
{
|
||||
//System.out.println("... . in pool.restore ");
|
||||
|
||||
//FIXME
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore a connection of a given name from disk...
|
||||
*/
|
||||
protected IHost restore(String connectionName)
|
||||
throws Exception
|
||||
{
|
||||
/*FIXME
|
||||
//System.out.println("in SystemConnectionPoolImpl#restore for connection " + connectionName);
|
||||
String fileName = getRootSaveFileName(connectionName);
|
||||
//System.out.println(".......fileName = " + fileName);
|
||||
//System.out.println(".......folderName = " + getConnectionFolder(connectionName).getName());
|
||||
java.util.List ext = getMOFHelpers().restore(getConnectionFolder(connectionName),fileName);
|
||||
|
||||
// should be exactly one profile...
|
||||
Iterator iList = ext.iterator();
|
||||
SystemConnection connection = (SystemConnection)iList.next();
|
||||
if (connection != null)
|
||||
{
|
||||
if (!connection.getAliasName().equalsIgnoreCase(connectionName))
|
||||
{
|
||||
RSEUIPlugin.logDebugMessage(this.getClass().getName(),"Incorrect alias name found in connections.xmi file for " + connectionName+". Name was reset");
|
||||
connection.setAliasName(connectionName); // just in case!
|
||||
}
|
||||
internalAddConnection(connection);
|
||||
}
|
||||
return connection;
|
||||
*/
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* System host pools are not persisted and do not exist in the persistence hierarchy.
|
||||
* @return null
|
||||
*/
|
||||
public IRSEPersistableContainer getPersistableParent() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer[] getPersistableChildren() {
|
||||
return new IRSEPersistableContainer[0];
|
||||
}
|
||||
|
||||
// -------------------------
|
||||
// SAVE / RESTORE METHODS...
|
||||
// -------------------------
|
||||
/**
|
||||
* Save all connections to disk.
|
||||
* Attempts to save all of them, swallowing exceptions, then at the end throws the last exception caught.
|
||||
*/
|
||||
public boolean commit()
|
||||
{
|
||||
return RSECorePlugin.getThePersistenceManager().commit(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempt to save single connection to disk.
|
||||
*/
|
||||
public void commit(IHost connection)
|
||||
{
|
||||
commit();
|
||||
}
|
||||
|
||||
}
|
|
@ -11,7 +11,7 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.model;
|
||||
|
@ -22,12 +22,14 @@ import org.eclipse.core.runtime.Platform;
|
|||
import org.eclipse.rse.core.filters.ISystemFilterPool;
|
||||
import org.eclipse.rse.core.filters.ISystemFilterPoolManager;
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.core.model.IRSEPersistableContainer;
|
||||
import org.eclipse.rse.core.model.ISystemProfile;
|
||||
import org.eclipse.rse.core.model.ISystemProfileManager;
|
||||
import org.eclipse.rse.core.model.ISystemRegistry;
|
||||
import org.eclipse.rse.core.model.RSEModelObject;
|
||||
import org.eclipse.rse.core.subsystems.ISubSystemConfiguration;
|
||||
import org.eclipse.rse.internal.core.model.RSEModelResources;
|
||||
import org.eclipse.rse.persistence.IRSEPersistenceProvider;
|
||||
import org.eclipse.rse.ui.RSEUIPlugin;
|
||||
|
||||
/**
|
||||
|
@ -38,6 +40,7 @@ public class SystemProfile extends RSEModelObject implements ISystemProfile, IAd
|
|||
{
|
||||
|
||||
private ISystemProfileManager mgr;
|
||||
private IRSEPersistenceProvider provider;
|
||||
private boolean active;
|
||||
private String name = null;
|
||||
private boolean defaultPrivate = false;
|
||||
|
@ -100,8 +103,7 @@ public class SystemProfile extends RSEModelObject implements ISystemProfile, IAd
|
|||
}
|
||||
}
|
||||
ISystemFilterPool[] allPools = new ISystemFilterPool[poolsVector.size()];
|
||||
for (int idx=0; idx<allPools.length; idx++)
|
||||
allPools[idx] = (ISystemFilterPool)poolsVector.elementAt(idx);
|
||||
poolsVector.toArray(allPools);
|
||||
return allPools;
|
||||
}
|
||||
|
||||
|
@ -197,5 +199,35 @@ public class SystemProfile extends RSEModelObject implements ISystemProfile, IAd
|
|||
{
|
||||
return RSEUIPlugin.getThePersistenceManager().commit(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* The SystemProfile is the top of the persistence hierarchy.
|
||||
* @return null
|
||||
*/
|
||||
public IRSEPersistableContainer getPersistableParent() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer[] getPersistableChildren() {
|
||||
ISystemFilterPool[] pools = getFilterPools();
|
||||
IHost[] hosts = getHosts();
|
||||
IRSEPersistableContainer[] result = new IRSEPersistableContainer[pools.length + hosts.length];
|
||||
System.arraycopy(pools, 0, result, 0, pools.length);
|
||||
System.arraycopy(hosts, 0, result, pools.length, hosts.length);
|
||||
return result;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.rse.core.model.ISystemProfile#getPersistenceProvider()
|
||||
*/
|
||||
public IRSEPersistenceProvider getPersistenceProvider() {
|
||||
return provider;
|
||||
}
|
||||
|
||||
public void setPersistenceProvider(IRSEPersistenceProvider provider) {
|
||||
this.provider = provider;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -16,6 +16,7 @@
|
|||
* Uwe Stieber (Wind River) - bugfixing
|
||||
* David Dykstal (IBM) - 168977: refactoring IConnectorService and ServerLauncher hierarchies
|
||||
* Martin Oberhuber (Wind River) - [175262] IHost.getSystemType() should return IRSESystemType
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.model;
|
||||
|
@ -2276,7 +2277,7 @@ public class SystemRegistry implements ISystemRegistryUI, ISystemModelChangeEven
|
|||
Display.getDefault().syncExec(fire);
|
||||
|
||||
}
|
||||
RSEUIPlugin.getThePersistenceManager().commit(conn);
|
||||
conn.commit();
|
||||
SystemPreferencesManager.setConnectionNamesOrder(); // update preferences order list
|
||||
|
||||
|
||||
|
@ -2302,7 +2303,7 @@ public class SystemRegistry implements ISystemRegistryUI, ISystemModelChangeEven
|
|||
fireModelChangeEvent(ISystemModelChangeEvents.SYSTEM_RESOURCE_ADDED, ISystemModelChangeEvents.SYSTEM_RESOURCETYPE_SUBSYSTEM, subsystems[j], null);
|
||||
}
|
||||
|
||||
RSEUIPlugin.getThePersistenceManager().commit(host);
|
||||
host.commit();
|
||||
return subsystems;
|
||||
}
|
||||
|
||||
|
@ -3360,7 +3361,7 @@ public class SystemRegistry implements ISystemRegistryUI, ISystemModelChangeEven
|
|||
*/
|
||||
public boolean saveHost(IHost conn)
|
||||
{
|
||||
return RSEUIPlugin.getThePersistenceManager().commit(conn);
|
||||
return conn.commit();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
* David Dykstal (IBM) - 168870: moved SystemPreferencesManager to a new package
|
||||
* David Dykstal (IBM) - 168870: created and used RSEPreferencesManager
|
||||
* Martin Oberhuber (Wind River) - [175262] IHost.getSystemType() should return IRSESystemType
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.core.subsystems;
|
||||
|
@ -46,6 +47,7 @@ import org.eclipse.rse.core.filters.ISystemFilterString;
|
|||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.core.model.IPropertySet;
|
||||
import org.eclipse.rse.core.model.IRSECallback;
|
||||
import org.eclipse.rse.core.model.IRSEPersistableContainer;
|
||||
import org.eclipse.rse.core.model.ISystemModelChangeEvents;
|
||||
import org.eclipse.rse.core.model.ISystemProfile;
|
||||
import org.eclipse.rse.core.model.ISystemRegistry;
|
||||
|
@ -3221,7 +3223,19 @@ public abstract class SubSystem extends RSEModelObject implements IAdaptable, IS
|
|||
|
||||
public boolean commit()
|
||||
{
|
||||
return RSEUIPlugin.getThePersistenceManager().commit(this);
|
||||
ISystemProfile profile = getSystemProfile();
|
||||
boolean result = profile.commit();
|
||||
return result;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer getPersistableParent() {
|
||||
return _host;
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer[] getPersistableChildren() {
|
||||
ISystemFilterPoolReferenceManager manager = getSystemFilterPoolReferenceManager();
|
||||
IRSEPersistableContainer[] result = manager.getReferencedSystemFilterPools();
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
|
@ -15,6 +15,7 @@
|
|||
* David Dykstal (IBM) - 168977: refactoring IConnectorService and ServerLauncher hierarchies
|
||||
* David Dykstal (IBM) - 168870: made use of adapters on the SubSystemConfigurationProxy
|
||||
* Martin Oberhuber (Wind River) - [175262] IHost.getSystemType() should return IRSESystemType
|
||||
* David Dykstal (IBM) - 142806: refactoring persistence framework
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.core.subsystems;
|
||||
|
@ -45,6 +46,7 @@ import org.eclipse.rse.core.filters.ISystemFilterSavePolicies;
|
|||
import org.eclipse.rse.core.filters.ISystemFilterString;
|
||||
import org.eclipse.rse.core.filters.SystemFilterPoolManager;
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.core.model.IRSEPersistableContainer;
|
||||
import org.eclipse.rse.core.model.ISystemModelChangeEvents;
|
||||
import org.eclipse.rse.core.model.ISystemNewConnectionWizardPage;
|
||||
import org.eclipse.rse.core.model.ISystemProfile;
|
||||
|
@ -155,7 +157,7 @@ public abstract class SubSystemConfiguration implements ISubSystemConfiguration
|
|||
protected java.util.List subSystemList = null;
|
||||
protected java.util.List filterPoolManagerList = null;
|
||||
|
||||
protected boolean _isDirty;
|
||||
// protected boolean _isDirty;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -1919,7 +1921,7 @@ public abstract class SubSystemConfiguration implements ISubSystemConfiguration
|
|||
defaultPool.setDefault(true);
|
||||
try
|
||||
{
|
||||
RSEUIPlugin.getThePersistenceManager().commit(defaultPool);
|
||||
defaultPool.commit();
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
|
@ -3030,29 +3032,70 @@ public abstract class SubSystemConfiguration implements ISubSystemConfiguration
|
|||
return Platform.getAdapterManager().getAdapter(this, adapterType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Subsystem configurations are never persisted.
|
||||
* @return false
|
||||
*/
|
||||
public boolean isDirty()
|
||||
{
|
||||
return _isDirty;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Subsystem configurations are never marked dirty. This does nothing.
|
||||
*/
|
||||
public void setDirty(boolean flag)
|
||||
{
|
||||
_isDirty = flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Subsystem configurations are never persisted.
|
||||
* @return false
|
||||
*/
|
||||
public boolean isTainted()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Subsystem configurations are never marked dirty. This does nothing.
|
||||
*/
|
||||
public void setTainted(boolean flag)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Subsystem configurations are never restored since they are not persisted.
|
||||
* @return false
|
||||
*/
|
||||
public boolean wasRestored()
|
||||
{
|
||||
// factories are never restored from disk
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Subsystem configurations are never restored. This does nothing.
|
||||
*/
|
||||
public void setWasRestored(boolean flag)
|
||||
{
|
||||
// dummy impl - not required for factories
|
||||
}
|
||||
|
||||
/**
|
||||
* Subsystem configurations are not persisted.
|
||||
* @return null
|
||||
*/
|
||||
public IRSEPersistableContainer getPersistableParent() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void beginRestore() {
|
||||
}
|
||||
|
||||
public void endRestore() {
|
||||
}
|
||||
|
||||
public IRSEPersistableContainer[] getPersistableChildren() {
|
||||
return new IRSEPersistableContainer[0];
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Reference in a new issue