package org.jactr.tools.analysis.production.relationships; /* * default logging */ import java.util.Collection; import java.util.Map; import java.util.TreeMap; import org.antlr.runtime.tree.CommonTree; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class DefaultRelationship implements IRelationship { /** * Logger definition */ static private final transient Log LOGGER = LogFactory .getLog(DefaultRelationship.class); private CommonTree _head; private CommonTree _tail; private Map<String, Double> _scores; private double _averageScore; public DefaultRelationship(CommonTree head, CommonTree tail) { _head = head; _tail = tail; _scores = new TreeMap<String, Double>(); } public CommonTree getHeadProduction() { return _head; } public CommonTree getTailProduction() { return _tail; } public double getScore() { return _averageScore; } public double getScore(String bufferName) { if (_scores.containsKey(bufferName.toLowerCase())) return _scores.get(bufferName.toLowerCase()); return 0; } public void setScore(String bufferName, double score) { _scores.put(bufferName, score); boolean scoreWasPositive = _averageScore >= 0; if (LOGGER.isDebugEnabled()) LOGGER.debug("current score : " + _averageScore + " adding " + score); // if negative, we dont let positive adjust us if (!scoreWasPositive && score > 0) score = 0; if (scoreWasPositive && score < 0) _averageScore = 0; _averageScore = (_averageScore * _scores.size() + score) / (_scores.size() + 1.0); } public void setPositiveRelationships(String bufferName, Collection<IPair> pairs) { } public void setNegativeRelationships(String bufferName, Collection<IPair> pairs) { } public void setAmbiguousRelationships(String bufferName, Collection<IPair> pairs) { } }