/*
* $Id: SynapseImpl.java,v 1.2 2002/09/16 08:05:02 jkl Exp $
*
* Copyright (c) 2002 Njet Communications Ltd. All Rights Reserved.
*
* Use is subject to license terms, as defined in
* Anvil Sofware License, Version 1.1. See LICENSE
* file, or http://njet.org/license-1.1.txt
*/
package anvil.brain;
import java.util.Enumeration;
import java.util.ArrayList;
import anvil.java.util.Hashlist;
import anvil.script.Namespace;
import anvil.java.util.BindingEnumeration;
import anvil.core.Any;
import anvil.server.OperationFailedException;
/**
* class SynapseImpl
*
* @author: Jani Lehtim�ki
*/
public class SynapseImpl
{
protected Synapse _facade;
protected Brain _brain;
protected long _id;
protected String _name;
protected String _type;
protected boolean _changed = false;
protected Hashlist _variables = new Hashlist();
protected Hashlist _dimensions = new Hashlist();
public SynapseImpl(Brain brain, long id, String type, String name)
{
_brain = brain;
_id = id;
_name = name;
_type = type;
}
public Synapse getFacade()
{
return _facade;
}
public void setFacade(Synapse facade)
{
_facade = facade;
}
public boolean isChanged()
{
return _changed;
}
public Brain getBrain()
{
return _brain;
}
public long getId()
{
return _id;
}
public String getType()
{
return _type;
}
public String getName()
{
return _name;
}
public void setType(String type)
{
_type = type;
_changed = true;
}
public void setName(String name)
{
_name = name;
_changed = true;
}
public BindingEnumeration getVariables()
{
return _variables.keysAndElements();
}
public Any getVariable(String name)
{
Any value = (Any)_variables.get(name);
return value != null ? value : Any.UNDEFINED;
}
public Any setVariable(String name, Any value)
{
_variables.put(name, value);
_changed = true;
return value;
}
public Any checkVariable(String name)
{
return getVariable(name);
}
public boolean deleteVariable(String name)
{
if (_variables.remove(name) != null) {
_changed = true;
return true;
} else {
return false;
}
}
public Enumeration getDimensions()
{
return _dimensions.elements();
}
public Dimension getDimension(String name)
{
return (Dimension)_dimensions.get(name);
}
public synchronized Dimension getOrCreateDimension(String name)
{
Dimension dim = (Dimension)_dimensions.get(name);
if (dim == null) {
dim = new Dimension(this, name, true);
_dimensions.put(name, dim);
_changed = true;
}
return dim;
}
public synchronized Dimension createDimension(String name)
{
Dimension dim = new Dimension(this, name, true);
_dimensions.put(name, dim);
_changed = true;
return dim;
}
void addDimension(Dimension dimension)
{
_dimensions.put(dimension.getName(), dimension);
_changed = true;
}
public synchronized Dimension removeDimension(String name)
{
Dimension dimension = (Dimension)_dimensions.remove(name);
if (dimension != null) {
_changed = true;
}
return dimension;
}
public synchronized void remove()
{
_variables.clear();
Enumeration e = _dimensions.elements();
while(e.hasMoreElements()) {
Dimension dim = (Dimension)e.nextElement();
dim.remove();
}
}
public synchronized void commit() throws OperationFailedException
{
try {
_brain.save(this);
_changed = false;
} catch (Throwable t) {
throw new OperationFailedException(t);
}
}
}
/*
*/