package sitris;

import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import java.rmi.RemoteException;

import sitris.Literal;
import sitris.LiteralPK;

/**
 * This Entity EJB represents an RDF Literal.
 @ejb:entity-cmp
 @ejb:ejb-name sitris/Literal
 @ejb:jndi-name ejb/sitris/Literal
 @ejb:finder java.util.Collection findAll()
 @ejb:security-role-ref admin Administrator
 @ejb:permission Teller
 @ejb:transaction Required
 @ejb:use-soft-locking
 @ejb:remote-extends RemoteNode
 @ejb:pk-extends sitris.RemoteNodePK
 ejb:data-object [container] false
  @jboss:table-name literal
  @jboss:create-table true
  @jboss:remove-table true
  @jboss:tuned-updates true
  @jboss:read-only false
 
  @version 0.01
  @author <a href="mailto:volz@aifb.uni-karlsruhe.de">Raphael Volz</a>
*/
public abstract class LiteralBean {

	/**
		Returns the label of this literal
		@ejb:remote-method
		@ejb:persistent-field
		@ejb:transaction Supports
		@jboss:column-name label
		@jboss:sql-type VARCHAR(255)
	*/
	public abstract String getLabel();
	public abstract void setLabel(String label);

	public String label;
	public int hash;

	private void setup(String label) {
		setLabel(label);
		setHash(label.hashCode());
	}

	/**
	  Primary Key of this Literal
	  @ejb:pk-field
	  @ejb:persistent-field
	  @jboss:column-name hash
	*/
	public abstract int getHash();
	public abstract void setHash(int hash);

	public LiteralPK ejbCreate(String label) {
		setup(label);
		return null;
	}

	/**
	Required (EJB Spec 9.2.4) */
	public void ejbPostCreate(String label)
	throws javax.ejb.CreateException
	{
	}

}
