Log in Help
Print
Homereleasesgate-5.1-beta2-build3402-ALLpluginsObsoleteMontreal_Transducersrccaumontrealiroraligatejape 〉 JdmAttribute.java
 
/*
 *  JdmAttribute.java
 *
 *  Copyright (c) 1998-2001, The University of Sheffield.
 *
 *  This file is part of GATE (see http://gate.ac.uk/), and is free
 *  software, licenced under the GNU Library General Public License,
 *  Version 2, June 1991 (in the distribution as file licence.html,
 *  and also available at http://gate.ac.uk/gate/licence.html).
 * 
 *  Kalina Bontcheva, 23/02/2000
 *
 *  Modifications by Luc Plamondon, Universit� de Montr�al, 20/11/03:
 *  -Added a third field to hold a equality/difference/etc. operator read
 *   from the grammar.
 *
 *  $Id$
 *
 *  Description:  This is JDM aimed at repeating the functionality of GDM
 */

package ca.umontreal.iro.rali.gate.jape;

import gate.*;
import gate.util.*;
import java.io.Serializable;

/**
  * THIS CLASS SHOULDN'T BE HERE. Please let's all ignore it, and maybe
  * it will go away.
  * <P>
  * Implements the TIPSTER and GDM API for attributes.
  * Test code in <code>testAttributes</code> class. <P>
  * The JdmAttribute class would accept all java serialisable classes, all
  * jdm classes and also all user-defined classes provided they implement
  * the Serializable interface. This restriction is necessary  since Jdm
  * uses Java serialisation to ensure object persistency. However, making
  * classes serialisable is usually quite straightforward. <P>
  * @author Kalina Bontcheva
*/
public class JdmAttribute implements Serializable {

  /** Debug flag */
  private static final boolean DEBUG = false;

  private String name;
  private Object value;
  private int operator = JapeConstants.EQUAL;

  protected JdmAttribute() {
  }

  /** Create a tuple for an attribute: (name, value, operator). 
    * Operator is JapeConstants.EQUAL by default.
    * <p> This constructor should be called when the attribute is part of an annotation in the
    * document.  When the attribute is part of a constraint in a grammar, use
    * JdmAttribute(name, value, operator).
    * @param name name of the attribute
    * @param value value of the attribute
    */
  public JdmAttribute(String name, Object value) {
    this.name = name; this.value = value;
  }

  /** Create a tuple that describes an attribute: (name, value, operator).
    * <p> This constructor should be called when the attribute is part of a constraint in a grammar.
    * When the attribute is part of an annotation in the document, use JdmAttribute(name, value);
    * @param name name of the attribute
    * @param value value of the attribute
    * @param operator see JapeConstants (EQUAL, NOT_EQUAL...)
    */
  public JdmAttribute(String name, Object value, int operator) {
    this.name = name; this.value = value; this.operator = operator;
  }


  /** throws JdmException when the value isn't one of the types we know
    * how to store, i.e., a serialisable or Jdm class.
    */
  public JdmAttribute(JdmAttribute jdmAttr) {
    String name = jdmAttr.getName();
    Object value = jdmAttr.getValue();
    int operator = jdmAttr.getOperator();
  }

  public String getName() {
    return name;
  }

  public Object getValue() {
    return value;
  }

  public String getValueType() {
    return value.getClass().getName();
  }

  public int getOperator() {
    return operator;
  }

  public boolean equals(Object obj) {
    JdmAttribute a = (JdmAttribute) obj;
    return a.getName().equals(name) && a.getValue().equals(value) && a.getOperator() == operator;
  }

  public String toString() {
     return "JdmAttr: name=" + name + "; operator=" + operator + "; value=" + value.toString();

  }

} // class JdmAttribute