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 InheritanceASubOneAlias extends Alias<InheritanceASubOne> {
private final List<AliasColumn<InheritanceASubOne, ?, ?>> columns = new ArrayList<AliasColumn<InheritanceASubOne, ?, ?>>();
private final IdAliasColumn<InheritanceASubOne> subClassId = new IdAliasColumn<InheritanceASubOne>(this, "id", null);
public final StringAliasColumn<InheritanceASubOne> one = new StringAliasColumn<InheritanceASubOne>(this, "one", InheritanceASubOneCodegen.Shims.one);
public final ForeignKeyAliasColumn<InheritanceASubOne, InheritanceAThing> inheritanceAThing = new ForeignKeyAliasColumn<InheritanceASubOne, InheritanceAThing>(this, "inheritance_a_thing_id", InheritanceASubOneCodegen.Shims.inheritanceAThingId);
private final InheritanceABaseAlias baseAlias;
public final IdAliasColumn<InheritanceABase> id;
public final StringAliasColumn<InheritanceABase> name;
public final LongAliasColumn<InheritanceABase> version;
public final ForeignKeyAliasColumn<InheritanceABase, InheritanceAOwner> inheritanceAOwner;
public InheritanceASubOneAlias() {
this("iaso0", null, true);
}
public InheritanceASubOneAlias(String alias) {
this(alias, null, true);
}
public InheritanceASubOneAlias(String alias, InheritanceABaseAlias baseAlias, boolean addSubClasses) {
super(InheritanceASubOne.class, "inheritance_a_sub_one", alias);
this.baseAlias = (baseAlias != null) ? baseAlias : new InheritanceABaseAlias(alias + "_b", null, false);
this.columns.add(this.one);
this.columns.add(this.inheritanceAThing);
this.id = this.baseAlias.id;
this.name = this.baseAlias.name;
this.version = this.baseAlias.version;
this.inheritanceAOwner = this.baseAlias.inheritanceAOwner;
}
public List<AliasColumn<InheritanceASubOne, ?, ?>> getColumns() {
return this.columns;
}
public IdAliasColumn<InheritanceABase> getIdColumn() {
return this.id;
}
public LongAliasColumn<InheritanceABase> getVersionColumn() {
return this.version;
}
public IdAliasColumn<InheritanceASubOne> getSubClassIdColumn() {
return this.subClassId;
}
public Alias<InheritanceABase> getBaseClassAlias() {
return this.baseAlias;
}
public int getOrder() {
return 6;
}
public <T extends DomainObject> JoinClause<T, InheritanceASubOne> on(ForeignKeyAliasColumn<T, InheritanceASubOne> on) {
return new JoinClause<T, InheritanceASubOne>("INNER JOIN", this, on);
}
public <T extends DomainObject> JoinClause<T, InheritanceASubOne> leftOn(ForeignKeyAliasColumn<T, InheritanceASubOne> on) {
return new JoinClause<T, InheritanceASubOne>("LEFT OUTER JOIN", this, on);
}
}