Open Source Repository

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


org/hibernate/loader/collection/CollectionJoinWalker.java
//$Id: CollectionJoinWalker.java 7627 2005-07-24 06:53:06Z oneovthafew $
package org.hibernate.loader.collection;

import java.util.Map;

import org.hibernate.engine.SessionFactoryImplementor;
import org.hibernate.loader.JoinWalker;
import org.hibernate.util.StringHelper;

/**
 * Superclass of walkers for collection initializers
 
 @see CollectionLoader
 @see OneToManyJoinWalker
 @see BasicCollectionJoinWalker
 @author Gavin King
 */
public abstract class CollectionJoinWalker extends JoinWalker {
  
  public CollectionJoinWalker(SessionFactoryImplementor factory, Map enabledFilters) {
    superfactory, enabledFilters );
  }

  protected StringBuffer whereString(String alias, String[] columnNames, String subselect, int batchSize) {
    if (subselect==null) {
      return super.whereString(alias, columnNames, batchSize);
    }
    else {
      StringBuffer buf = new StringBuffer();
      if (columnNames.length>1buf.append('(');
      buf.appendStringHelper.join(", ", StringHelper.qualify(alias, columnNames) ) );
      if (columnNames.length>1buf.append(')');
      buf.append(" in ")
        .append('(')
        .append(subselect
        .append(')');
      return buf;
    }
  }
}