package org.jactr.tools.analysis.production.relationships;
/*
* default logging
*/
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import java.util.TreeMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jactr.io.antlr3.misc.ASTSupport;
import org.jactr.tools.analysis.production.endstates.BufferEndStates;
public class ProductionRelationships
{
/**
* Logger definition
*/
static private final transient Log LOGGER = LogFactory
.getLog(ProductionRelationships.class);
private Map<String, IRelationship> _tailRelationships;
private Map<String, IRelationship> _headRelationships;
private String _productionName;
private BufferEndStates _endStates;
public ProductionRelationships(String productionName,
BufferEndStates endStates)
{
_productionName = productionName;
_endStates = endStates;
_tailRelationships = new TreeMap<String, IRelationship>();
_headRelationships = new TreeMap<String, IRelationship>();
}
public void addRelationship(IRelationship relationship)
{
String refName = ASTSupport.getName(relationship.getHeadProduction())
.toLowerCase();
String queryName = ASTSupport.getName(relationship.getTailProduction())
.toLowerCase();
if (_endStates.getProduction() == relationship.getHeadProduction())
_tailRelationships.put(queryName, relationship);
if (_endStates.getProduction() == relationship.getTailProduction())
_headRelationships.put(refName, relationship);
}
public Collection<IRelationship> getHeadRelationships()
{
return Collections.unmodifiableCollection(_headRelationships.values());
}
public Collection<IRelationship> getTailRelationships()
{
return Collections.unmodifiableCollection(_tailRelationships.values());
}
public BufferEndStates getEndStates()
{
return _endStates;
}
}