package features.domain;
import java.util.ArrayList;
import java.util.List;
import joist.domain.DomainObject;
import joist.domain.orm.queries.Alias;
import joist.domain.orm.queries.JoinClause;
import joist.domain.orm.queries.columns.AliasColumn;
import joist.domain.orm.queries.columns.ForeignKeyAliasColumn;
import joist.domain.orm.queries.columns.IdAliasColumn;
import joist.domain.orm.queries.columns.LongAliasColumn;
import joist.domain.orm.queries.columns.StringAliasColumn;
public class InheritanceBBottomAlias extends Alias<InheritanceBBottom> {
private final List<AliasColumn<InheritanceBBottom, ?, ?>> columns = new ArrayList<AliasColumn<InheritanceBBottom, ?, ?>>();
private final IdAliasColumn<InheritanceBBottom> subClassId = new IdAliasColumn<InheritanceBBottom>(this, "id", null);
public final StringAliasColumn<InheritanceBBottom> bottomName = new StringAliasColumn<InheritanceBBottom>(this, "bottom_name", InheritanceBBottomCodegen.Shims.bottomName);
private final InheritanceBMiddleAlias baseAlias;
public final StringAliasColumn<InheritanceBMiddle> middleName;
public final IdAliasColumn<InheritanceBRoot> id;
public final StringAliasColumn<InheritanceBRoot> name;
public final LongAliasColumn<InheritanceBRoot> version;
public InheritanceBBottomAlias() {
this("ibb0", null, true);
}
public InheritanceBBottomAlias(String alias) {
this(alias, null, true);
}
public InheritanceBBottomAlias(String alias, InheritanceBMiddleAlias baseAlias, boolean addSubClasses) {
super(InheritanceBBottom.class, "inheritance_b_bottom", alias);
this.baseAlias = (baseAlias != null) ? baseAlias : new InheritanceBMiddleAlias(alias + "_b", null, false);
this.columns.add(this.bottomName);
this.middleName = this.baseAlias.middleName;
this.id = this.baseAlias.id;
this.name = this.baseAlias.name;
this.version = this.baseAlias.version;
}
public List<AliasColumn<InheritanceBBottom, ?, ?>> getColumns() {
return this.columns;
}
public IdAliasColumn<InheritanceBRoot> getIdColumn() {
return this.id;
}
public LongAliasColumn<InheritanceBRoot> getVersionColumn() {
return this.version;
}
public IdAliasColumn<InheritanceBBottom> getSubClassIdColumn() {
return this.subClassId;
}
public Alias<InheritanceBMiddle> getBaseClassAlias() {
return this.baseAlias;
}
public int getOrder() {
return 11;
}
public <T extends DomainObject> JoinClause<T, InheritanceBBottom> on(ForeignKeyAliasColumn<T, InheritanceBBottom> on) {
return new JoinClause<T, InheritanceBBottom>("INNER JOIN", this, on);
}
public <T extends DomainObject> JoinClause<T, InheritanceBBottom> leftOn(ForeignKeyAliasColumn<T, InheritanceBBottom> on) {
return new JoinClause<T, InheritanceBBottom>("LEFT OUTER JOIN", this, on);
}
}