blob: f53896fa53bd0ee36ebb340e0f2df91a0e5c558a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 The Regents of the University of California.
* This material was produced under U.S. Government contract W-7405-ENG-36
* for Los Alamos National Laboratory, which is operated by the University
* of California for the U.S. Department of Energy. The U.S. Government has
* rights to use, reproduce, and distribute this software. NEITHER THE
* GOVERNMENT NOR THE UNIVERSITY MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR
* ASSUMES ANY LIABILITY FOR THE USE OF THIS SOFTWARE. If software is modified
* to produce derivative works, such modified software should be clearly marked,
* so as not to confuse it with the version available from LANL.
*
* Additionally, 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
*
* LA-CC 04-115
*******************************************************************************/
package org.eclipse.ptp.rmsystem;
import org.eclipse.ui.IMemento;
public abstract class AbstractResourceManagerConfiguration implements IResourceManagerConfiguration {
static public class CommonConfig {
private final String name;
private final String description;
private final String uniqueName;
public CommonConfig() {
this("", "", generateUniqueName());
}
public CommonConfig(String name, String desc, String uniqueName) {
this.name = name;
this.description = desc;
this.uniqueName = uniqueName;
}
public String getDescription() {
return description;
}
public String getName() {
return name;
}
public String getUniqueName() {
return uniqueName;
}
}
private static final String TAG_DESCRIPTION = "description"; //$NON-NLS-1$
private static final String TAG_NAME = "name"; //$NON-NLS-1$
private static final String TAG_UNIQUE_NAME = "uniqName"; //$NON-NLS-1$
private static final String TAG_FACTORY_ID = "factoryId"; //$NON-NLS-1$
/**
* @param factory
* @param memento
* @return
*/
public static CommonConfig loadCommon(IResourceManagerFactory factory,
IMemento memento) {
String factoryId = memento.getString(TAG_FACTORY_ID);
if (!factoryId.equals(factory.getId())) {
throw new IllegalStateException("Incompatable factory with factoryId"
+ " stored id" + factoryId
+ ", factory id:" + factory.getId());
}
String name = memento.getString(TAG_NAME);
String desc = memento.getString(TAG_DESCRIPTION);
String uniqueName = memento.getString(TAG_UNIQUE_NAME);
return new CommonConfig(name, desc, uniqueName);
}
protected static String generateUniqueName() {
long time = System.currentTimeMillis();
return "RMID:" + Long.toString(time);
}
private String description;
private String name;
private final String resourceManagerId;
private final String resourceManagerType;
private final String uniqueName;
private final IResourceManagerFactory factory;
/**
* @param name
* @param description
* @param factory
*/
public AbstractResourceManagerConfiguration(CommonConfig commonConfig,
IResourceManagerFactory factory) {
this.name = commonConfig.getName();
this.description = commonConfig.getDescription();
this.resourceManagerId = factory.getId();
this.resourceManagerType = factory.getName();
this.uniqueName = commonConfig.getUniqueName();
this.factory = factory;
}
/* (non-Javadoc)
* @see java.lang.Object#clone()
*/
@Override
public Object clone() {
return null;
}
/* (non-Javadoc)
* @see org.eclipse.ptp.rmsystem.IResourceManagerConfiguration#getDescription()
*/
public String getDescription() {
return description;
}
/**
* Get the factory for this configuration
*
* @return factory
*/
public IResourceManagerFactory getFactory() {
return factory;
}
/* (non-Javadoc)
* @see org.eclipse.ptp.rmsystem.IResourceManagerConfiguration#getName()
*/
public String getName() {
return name;
}
/* (non-Javadoc)
* @see org.eclipse.ptp.rmsystem.IResourceManagerConfiguration#getResourceManagerId()
*/
public String getResourceManagerId() {
return resourceManagerId;
}
/* (non-Javadoc)
* @see org.eclipse.ptp.rmsystem.IResourceManagerConfiguration#getType()
*/
public String getType() {
return resourceManagerType;
}
/* (non-Javadoc)
* @see org.eclipse.ptp.rmsystem.IResourceManagerConfiguration#getUniqueName()
*/
public String getUniqueName() {
return uniqueName;
}
/**
* Save the common parts of this config then save the rest
* @param memento
*/
public void save(IMemento memento) {
memento.putString(TAG_FACTORY_ID, getResourceManagerId());
memento.putString(TAG_NAME, getName());
memento.putString(TAG_DESCRIPTION, getDescription());
memento.putString(TAG_UNIQUE_NAME, getUniqueName());
}
/* (non-Javadoc)
* @see org.eclipse.ptp.rmsystem.IResourceManagerConfiguration#setDescription(java.lang.String)
*/
public void setDescription(String description) {
this.description = description;
}
/* (non-Javadoc)
* @see org.eclipse.ptp.rmsystem.IResourceManagerConfiguration#setName(java.lang.String)
*/
public void setName(String name) {
this.name = name;
}
}