package fr.openwide.core.jpa.querydsl.group; import org.javatuples.Triplet; import com.querydsl.core.types.ConstructorExpression; import com.querydsl.core.types.Expression; /** * A triplet of (Table) row, column and value * * @param <R> Table row type * @param <C> Table column type * @param <V> Table value type */ public final class QTriplet<R, C, V> extends ConstructorExpression<Triplet<R, C, V>> { private static final long serialVersionUID = -1943990903548916056L; public static <R, C, V> QTriplet<R, C, V> create(Expression<R> row, Expression<C> column, Expression<V> value) { return new QTriplet<R, C, V>(row, column, value); } @SuppressWarnings({"unchecked", "rawtypes" }) public QTriplet(Expression<R> row, Expression<C> column, Expression<V> value) { super((Class) Triplet.class, new Class<?>[]{Object.class, Object.class, Object.class}, row, column, value); } public boolean equals(Expression<?> rowExpr, Expression<?> columnExpr, Expression<?> valueExpr) { return getArgs().get(0).equals(rowExpr) && getArgs().get(1).equals(columnExpr) && getArgs().get(2).equals(valueExpr) ; } public boolean equals(Expression<?> rowExpr, Expression<?> columnExpr, Class<?> valueType) { return getArgs().get(0).equals(rowExpr) && getArgs().get(1).equals(columnExpr) && valueType.isAssignableFrom(getArgs().get(2).getType()); } }