package prefuse.visual.expression; import java.util.logging.Logger; import prefuse.data.Tuple; import prefuse.data.expression.AbstractExpression; import prefuse.data.expression.Expression; import prefuse.data.expression.Function; import prefuse.data.expression.ObjectLiteral; /** * Abstract base class for Expression instances dealing with data groups * within a Visualization. Maintains an Expression that serves as the * paremter to this Function; this Expression should return a valid * group name when evaluated on a given Tuple. * * @author <a href="http://jheer.org">jeffrey heer</a> */ public abstract class GroupExpression extends AbstractExpression implements Function { private static final Logger s_logger = Logger.getLogger(GroupExpression.class.getName()); protected Expression m_group; /** * Create a new GroupExpression. */ protected GroupExpression() { m_group = null; } /** * Create a new GroupExpression over the given group name. * @param group the data group name */ protected GroupExpression(String group) { m_group = new ObjectLiteral(group); } /** * Evaluate the group name expression for the given Tuple * @param t the input Tuple to the group name expression * @return the String result of the expression */ protected String getGroup(Tuple t) { String group = (String)m_group.get(t); if ( group == null ) { s_logger.warning("Null group lookup"); } return group; } /** * Attempts to add the given expression as the group expression. * @see prefuse.data.expression.Function#addParameter(prefuse.data.expression.Expression) */ public void addParameter(Expression e) { if ( m_group == null ) m_group = e; else throw new IllegalStateException( "This function takes only 1 parameter."); } /** * @see prefuse.data.expression.Function#getParameterCount() */ public int getParameterCount() { return 1; } /** * @see java.lang.Object#toString() */ public String toString() { return getName()+"("+m_group+")"; } } // end of class GroupExpression