Open Source Repository

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



org/hibernate/mapping/Join.java
//$Id: Join.java 10040 2006-06-22 19:51:43Z [email protected] $
package org.hibernate.mapping;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;

import org.hibernate.sql.Alias;
import org.hibernate.engine.ExecuteUpdateResultCheckStyle;

/**
 @author Gavin King
 */
public class Join implements Serializable {

  private static final Alias PK_ALIAS = new Alias(15"PK");

  private ArrayList properties = new ArrayList();
  private Table table;
  private KeyValue key;
  private PersistentClass persistentClass;
  private boolean sequentialSelect;
  private boolean inverse;
  private boolean optional;

  // Custom SQL
  private String customSQLInsert;
  private boolean customInsertCallable;
  private ExecuteUpdateResultCheckStyle insertCheckStyle;
  private String customSQLUpdate;
  private boolean customUpdateCallable;
  private ExecuteUpdateResultCheckStyle updateCheckStyle;
  private String customSQLDelete;
  private boolean customDeleteCallable;
  private ExecuteUpdateResultCheckStyle deleteCheckStyle;

  public void addProperty(Property prop) {
    properties.add(prop);
    prop.setPersistentClassgetPersistentClass() );
  }
  public boolean containsProperty(Property prop) {
    return properties.contains(prop);
  }
  public Iterator getPropertyIterator() {
    return properties.iterator();
  }

  public Table getTable() {
    return table;
  }
  public void setTable(Table table) {
    this.table = table;
  }

  public KeyValue getKey() {
    return key;
  }
  public void setKey(KeyValue key) {
    this.key = key;
  }

  public PersistentClass getPersistentClass() {
    return persistentClass;
  }

  public void setPersistentClass(PersistentClass persistentClass) {
    this.persistentClass = persistentClass;
  }

  public void createForeignKey() {
    getKey().createForeignKeyOfEntitypersistentClass.getEntityName() );
  }

  public void createPrimaryKey() {
    //Primary key constraint
    PrimaryKey pk = new PrimaryKey();
    pk.setTable(table);
    pk.setNamePK_ALIAS.toAliasStringtable.getName() ) );
    table.setPrimaryKey(pk);

    pk.addColumnsgetKey().getColumnIterator() );
  }

  public int getPropertySpan() {
    return properties.size();
  }

  public void setCustomSQLInsert(String customSQLInsert, boolean callable, ExecuteUpdateResultCheckStyle checkStyle) {
    this.customSQLInsert = customSQLInsert;
    this.customInsertCallable = callable;
    this.insertCheckStyle = checkStyle;
  }

  public String getCustomSQLInsert() {
    return customSQLInsert;
  }

  public boolean isCustomInsertCallable() {
    return customInsertCallable;
  }

  public ExecuteUpdateResultCheckStyle getCustomSQLInsertCheckStyle() {
    return insertCheckStyle;
  }

  public void setCustomSQLUpdate(String customSQLUpdate, boolean callable, ExecuteUpdateResultCheckStyle checkStyle) {
    this.customSQLUpdate = customSQLUpdate;
    this.customUpdateCallable = callable;
    this.updateCheckStyle = checkStyle;
  }

  public String getCustomSQLUpdate() {
    return customSQLUpdate;
  }

  public boolean isCustomUpdateCallable() {
    return customUpdateCallable;
  }

  public ExecuteUpdateResultCheckStyle getCustomSQLUpdateCheckStyle() {
    return updateCheckStyle;
  }

  public void setCustomSQLDelete(String customSQLDelete, boolean callable, ExecuteUpdateResultCheckStyle checkStyle) {
    this.customSQLDelete = customSQLDelete;
    this.customDeleteCallable = callable;
    this.deleteCheckStyle = checkStyle;
  }

  public String getCustomSQLDelete() {
    return customSQLDelete;
  }

  public boolean isCustomDeleteCallable() {
    return customDeleteCallable;
  }

  public ExecuteUpdateResultCheckStyle getCustomSQLDeleteCheckStyle() {
    return deleteCheckStyle;
  }

  public boolean isSequentialSelect() {
    return sequentialSelect;
  }
  public void setSequentialSelect(boolean deferred) {
    this.sequentialSelect = deferred;
  }

  public boolean isInverse() {
    return inverse;
  }

  public void setInverse(boolean leftJoin) {
    this.inverse = leftJoin;
  }

  public String toString() {
    return getClass().getName() '(' + table.toString() ')';
  }

  public boolean isLazy() {
    Iterator iter = getPropertyIterator();
    while iter.hasNext() ) {
      Property prop = (Propertyiter.next();
      if !prop.isLazy() ) return false;
    }
    return true;
  }

  public boolean isOptional() {
    return optional;
  }
  public void setOptional(boolean nullable) {
    this.optional = nullable;
  }
}