/* * Copyright (c) 2010 Mysema Ltd. * All rights reserved. * */ package com.mysema.query; import com.mysema.query.types.ConstructorExpression; import com.mysema.query.types.Expression; public class QProjection extends ConstructorExpression{ private static final long serialVersionUID = -7330905848558102164L; public QProjection(Expression... args) { super(Projection.class, new Class[0], args); } @SuppressWarnings("unchecked") @Override public Projection newInstance(final Object... args){ return new Projection(){ @Override public T get(int index, Class type) { return (T) args[index]; } @Override public T get(Expression expr) { int index = getArgs().indexOf(expr); return index != -1 ? (T) args[index] : null; } @Override public Expression getExpr(Expression expr){ T val = get(expr); return val != null ? SimpleConstant.create(val) : null; } @Override public Expression getExpr(int index, Class type){ T val = (T)args[index]; return val != null ? SimpleConstant.create(val) : null; } @Override public Object[] toArray() { return args; } }; } }