package org.jactr.core.module.procedural.map.instance;
/*
* default logging
*/
import java.util.Collection;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jactr.core.module.procedural.map.template.IInstantiationMapTemplate;
import org.jactr.core.production.IProduction;
public abstract class AbstractInstantiationMap<T> implements IInstaniationMap<T>
{
/**
* Logger definition
*/
static private final transient Log LOGGER = LogFactory
.getLog(AbstractInstantiationMap.class);
final private T _root;
final private IInstantiationMapTemplate<T> _template;
final private IInstaniationMap _parent;
private boolean _activated = false;
protected AbstractInstantiationMap(T root, IInstantiationMapTemplate<T> template,
IInstaniationMap parent)
{
_root = root;
_template = template;
_parent = parent;
}
public IInstantiationMapTemplate<T> getTemplate()
{
return _template;
}
public IInstaniationMap getParent()
{
return _parent;
}
public T getRoot()
{
return _root;
}
public ProductionTable getProductionTable()
{
return null;
}
public boolean isActivated()
{
return _activated;
}
public void activate()
{
if (isActivated()) throw new IllegalStateException("Already activated");
_activated = true;
}
public void deactivate()
{
if(!isActivated()) throw new IllegalStateException("Already deactivated");
_activated = false;
}
protected void dirty(IProduction production)
{
getProductionTable().setDirty(production, true);
}
protected void dirty(Collection<IProduction> productions)
{
ProductionTable table = getProductionTable();
for (IProduction prod : productions)
table.setDirty(prod, true);
}
}