All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.querydsl.core.Join Maven / Gradle / Ivy

package com.querydsl.core;

import java.util.Collection;

import com.querydsl.core.types.CollectionExpression;
import com.querydsl.core.types.EntityPath;
import com.querydsl.core.types.Expression;
import com.querydsl.core.types.MapExpression;
import com.querydsl.core.types.Path;
import com.querydsl.core.types.Predicate;

public class Join {
  private final JoinType type;
  private final Expression target;
  private Path alias;
  private Predicate[] predicates;
  private boolean fetchJoin;

  private Join(JoinType type, Expression target) {
    this(type, target, null);
  }

  private Join(JoinType type, Expression target, Path alias) {
    this.type = type;
    this.target = target;
    this.alias = alias;
  }

  public static Join innerJoin(EntityPath entityPath) {
    return new Join(JoinType.INNERJOIN, entityPath);
  }

  public static Join innerJoin(EntityPath entityPath, Path alias) {
    return new Join(JoinType.INNERJOIN, entityPath, alias);
  }

  public static Join innerJoin(CollectionExpression, ?> collectionExpression) {
    return new Join(JoinType.INNERJOIN, collectionExpression);
  }

  public static Join innerJoin(CollectionExpression, ?> collectionExpression, Path alias) {
    return new Join(JoinType.INNERJOIN, collectionExpression, alias);
  }

  public static Join innerJoin(MapExpression mapExpression) {
    return new Join(JoinType.INNERJOIN, mapExpression);
  }

  public static Join innerJoin(MapExpression mapExpression, Path alias) {
    return new Join(JoinType.INNERJOIN, mapExpression, alias);
  }

  public static Join leftJoin(EntityPath entityPath) {
    return new Join(JoinType.LEFTJOIN, entityPath);
  }

  public static Join leftJoin(EntityPath entityPath, Path alias) {
    return new Join(JoinType.LEFTJOIN, entityPath, alias);
  }

  public static Join leftJoin(CollectionExpression, ?> collectionExpression) {
    return new Join(JoinType.LEFTJOIN, collectionExpression);
  }

  public static Join leftJoin(CollectionExpression, ?> collectionExpression, Path alias) {
    return new Join(JoinType.LEFTJOIN, collectionExpression, alias);
  }

  public static Join leftJoin(MapExpression mapExpression) {
    return new Join(JoinType.LEFTJOIN, mapExpression);
  }

  public static Join leftJoin(MapExpression mapExpression, Path alias) {
    return new Join(JoinType.LEFTJOIN, mapExpression, alias);
  }

  public static Join rightJoin(EntityPath entityPath) {
    return new Join(JoinType.RIGHTJOIN, entityPath);
  }

  public static Join rightJoin(EntityPath entityPath, Path alias) {
    return new Join(JoinType.RIGHTJOIN, entityPath, alias);
  }

  public static Join rightJoin(CollectionExpression, ?> collectionExpression) {
    return new Join(JoinType.RIGHTJOIN, collectionExpression);
  }

  public static Join rightJoin(CollectionExpression, ?> collectionExpression, Path alias) {
    return new Join(JoinType.RIGHTJOIN, collectionExpression, alias);
  }

  public static Join rightJoin(MapExpression mapExpression) {
    return new Join(JoinType.RIGHTJOIN, mapExpression);
  }

  public static Join rightJoin(MapExpression mapExpression, Path alias) {
    return new Join(JoinType.RIGHTJOIN, mapExpression, alias);
  }

  public Join on(Predicate... conditions) {
    this.predicates = conditions;
    return this;
  }

  public Join fetchJoin() {
    this.fetchJoin = true;
    return this;
  }

  public JoinType getJoinType() {
    return type;
  }

  public boolean isFetchJoin() {
    return fetchJoin;
  }

  public Predicate[] getPredicates() {
    return predicates;
  }

  public Path getAlias() {
    return alias;
  }

  public Expression getTarget() {
    return target;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy