package edu.umd.rhsmith.diads.meater.core.config.container;
import org.apache.commons.configuration.HierarchicalConfiguration;
import edu.umd.rhsmith.diads.meater.core.app.MEaterConfigurationException;
import edu.umd.rhsmith.diads.meater.core.config.ConfigUnit;
import edu.umd.rhsmith.diads.meater.core.config.setup.ops.SetupConsoleOperation;
import edu.umd.rhsmith.diads.meater.core.config.setup.ops.component.RenameInstanceOperation;
public abstract class InstanceConfig extends ConfigUnit {
public static final String DEFAULT_INSTANCE_NAME = "untitled";
public static final String CKEY_INSTANCE_NAME = "instanceName";
public static final String DEFAULT_INSTANCE_TYPE_NAME = "Unit";
private String instanceTypeName;
private String instanceName;
private SetupConsoleOperation creationOperation;
public InstanceConfig() {
super();
this.instanceTypeName = DEFAULT_INSTANCE_TYPE_NAME;
this.instanceName = DEFAULT_INSTANCE_NAME;
this.registerSetupConsoleOperation(new RenameInstanceOperation(this));
}
/*
* --------------------------------
* General getters/setters
* --------------------------------
*/
public final String getRegisteredTypeName() {
return instanceTypeName;
}
final void setRegisteredTypeName(String registeredTypeName) {
if (registeredTypeName == null) {
throw new NullPointerException();
}
this.instanceTypeName = registeredTypeName;
}
public String getInstanceName() {
return this.instanceName;
}
public void setInstanceName(String instanceName) {
if (instanceName == null) {
throw new NullPointerException();
}
this.instanceName = instanceName;
}
/*
* --------------------------------
* UI
* --------------------------------
*/
@Override
public String getUiName() {
return String.format("%s - %s", this.getRegisteredTypeName(), this
.getInstanceName());
}
@Override
public String getUiDescription() {
return super.getUiDescription();
}
/*
* --------------------------------
* Config operations
* --------------------------------
*/
@Override
protected void loadInternalConfigurationFrom(
HierarchicalConfiguration config)
throws MEaterConfigurationException {
this.setInstanceName(config.getString(CKEY_INSTANCE_NAME, this
.getInstanceName()));
}
@Override
protected void saveInternalConfigurationTo(
HierarchicalConfiguration config)
throws MEaterConfigurationException {
config.setProperty(CKEY_INSTANCE_NAME, this.getInstanceName());
}
/*
* --------------------------------
* Setup operations
* --------------------------------
*/
public final SetupConsoleOperation getCreationSetupConsoleOperation() {
return creationOperation;
}
public final void setCreationSetupConsoleOperation(
SetupConsoleOperation creationOperation) {
this.creationOperation = creationOperation;
}
/*
* --------------------------------
* Messages
* --------------------------------
*/
}