Open Source Repository

Home /hibernate/hibernate-3.2.4.ga | Repository Home


org/hibernate/hql/ast/tree/Node.java
package org.hibernate.hql.ast.tree;

import antlr.collections.AST;
import antlr.Token;
import org.hibernate.util.StringHelper;
import org.hibernate.engine.SessionFactoryImplementor;

/**
 * Base node class for use by Hibernate within its AST trees.
 *
 @author Joshua Davis
 @author Steve Ebersole
 */
public class Node extends antlr.CommonAST {
  private String filename;
  private int line;
  private int column;
  private int textLength;

  public Node() {
    super();
  }

  public Node(Token tok) {
    super(tok);  // This will call initialize(tok)!
  }

  /**
   * Retrieve the text to be used for rendering this particular node.
   *
   @param sessionFactory The session factory
   @return The text to use for rendering
   */
  public String getRenderText(SessionFactoryImplementor sessionFactory) {
    // The basic implementation is to simply use the node's text
    return getText();
  }

  public void initialize(Token tok) {
    super.initialize(tok);
    filename = tok.getFilename();
    line = tok.getLine();
    column = tok.getColumn();
    String text = tok.getText();
    textLength = StringHelper.isEmpty(text: text.length();
  }

  public void initialize(AST t) {
    super.initialize);
    if instanceof Node ) {
      Node n = (Node)t;
      filename = n.filename;
      line = n.line;
      column = n.column;
      textLength = n.textLength;
    }
  }

  public String getFilename() {
    return filename;
  }

  public int getLine() {
    return line;
  }

  public int getColumn() {
    return column;
  }

  public int getTextLength() {
    return textLength;
  }
}