package org.jactr.modules.pm.common.memory.event;
/*
* default logging
*/
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.commonreality.identifier.IIdentifier;
import org.jactr.core.chunk.IChunk;
import org.jactr.core.event.AbstractACTREvent;
import org.jactr.core.runtime.ACTRRuntime;
import org.jactr.modules.pm.common.memory.IActivePerceptListener;
import org.jactr.modules.pm.common.memory.IPerceptualMemory;
public class ActivePerceptEvent extends
AbstractACTREvent<IPerceptualMemory, IActivePerceptListener>
{
/**
* Logger definition
*/
static private final transient Log LOGGER = LogFactory
.getLog(ActivePerceptEvent.class);
static public enum Type {
NEW, UPDATED, REMOVED, REENCODED
};
final private Type _type;
final private IIdentifier _perceptIdentifier;
final private IChunk _currentEncoding;
private IChunk _oldEncoding;
public ActivePerceptEvent(IPerceptualMemory source, Type type,
IIdentifier perceptIdentifier, IChunk currentEncoding)
{
super(source, ACTRRuntime.getRuntime().getClock(
source.getModule().getModel()).getTime());
_perceptIdentifier = perceptIdentifier;
_type = type;
_currentEncoding = currentEncoding;
}
/**
* for reencode
*
* @param source
* @param perceptIdentifier
* @param currentEncoding
* @param oldEncoding
*/
public ActivePerceptEvent(IPerceptualMemory source,
IIdentifier perceptIdentifier, IChunk currentEncoding, IChunk oldEncoding)
{
this(source, Type.REENCODED, perceptIdentifier, currentEncoding);
_oldEncoding = oldEncoding;
}
public IIdentifier getPerceptIdentifier()
{
return _perceptIdentifier;
}
public IChunk getCurrentEncoding()
{
return _currentEncoding;
}
public IChunk getOldEncoding()
{
return _oldEncoding;
}
public Type getType()
{
return _type;
}
@Override
public void fire(IActivePerceptListener listener)
{
switch (getType())
{
case NEW:
listener.newPercept(_perceptIdentifier, _currentEncoding);
break;
case UPDATED:
listener.updated(_perceptIdentifier, _currentEncoding);
break;
case REMOVED:
listener.removed(_perceptIdentifier, _currentEncoding);
break;
case REENCODED:
listener.reencoded(_perceptIdentifier, _oldEncoding, _currentEncoding);
break;
}
}
}