package org.jactr.core.slot;
/*
* default logging
*/
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import java.util.TreeMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class UniqueSlotContainer implements IUniqueSlotContainer
{
/**
* Logger definition
*/
static private final transient Log LOGGER = LogFactory
.getLog(UniqueSlotContainer.class);
private Map<String, ISlot> _slotMap;
public UniqueSlotContainer()
{
_slotMap = new TreeMap<String, ISlot>();
}
public UniqueSlotContainer(IUniqueSlotContainer container)
{
this();
for(ISlot slot : container.getSlots())
addSlot(slot);
}
public ISlot getSlot(String slotName)
{
return _slotMap.get(slotName.toLowerCase());
}
protected ISlot createSlot(ISlot slot)
{
return new BasicSlot(slot.getName(), slot.getValue());
}
public void addSlot(ISlot slot)
{
_slotMap.put(slot.getName().toLowerCase(), createSlot(slot));
}
public Collection<? extends ISlot> getSlots()
{
return getSlots(null);
}
public Collection<ISlot> getSlots(Collection<ISlot> slots)
{
if(slots==null)
slots = new ArrayList<ISlot>(_slotMap.size());
slots.addAll(_slotMap.values());
return slots;
}
public void removeSlot(ISlot slot)
{
_slotMap.remove(slot.getName().toLowerCase());
}
}