001package com.avaje.ebean.delegate; 002 003import com.avaje.ebean.EbeanServer; 004import com.avaje.ebean.Filter; 005import com.avaje.ebean.Query; 006import com.avaje.ebean.SqlQuery; 007 008import java.util.Set; 009 010/** 011 * Wraps an underlying EbeanServer. 012 * <p> 013 * Can you used for testing purposes when you want to create a test double that 014 * only replaces some of the underlying functionality of the EbeanServer. 015 */ 016public class DelegateQuery { 017 018 protected EbeanServer delegate; 019 020 protected EbeanServer owner; 021 022 /** 023 * Construct with a EbeanServer to delegate to by default. 024 * <p> 025 * This delegate will be used on all method calls that are not overwritten. 026 */ 027 public DelegateQuery(EbeanServer delegate, EbeanServer owner) { 028 this.delegate = delegate; 029 this.owner = owner; 030 } 031 032 public <T> Query<T> delegateToThisServer(Query<T> sourceQuery) { 033 034 return DelegateOrmQuery.copy(sourceQuery, owner); 035 } 036 037 public <T> Query<T> createQuery(Class<T> beanType) { 038 return delegateToThisServer(delegate.createQuery(beanType)); 039 } 040 041 public <T> Query<T> find(Class<T> beanType) { 042 return delegateToThisServer(delegate.find(beanType)); 043 } 044 045 public <T> Filter<T> filter(Class<T> beanType) { 046 return delegate.filter(beanType); 047 } 048 049 public SqlQuery createSqlQuery(String sql) { 050 return delegate.createSqlQuery(sql); 051 } 052 053 public <T> T getReference(Class<T> beanType, Object id) { 054 return delegate.getReference(beanType, id); 055 } 056 057 public <T> Set<String> validateQuery(Query<T> query) { 058 return delegate.validateQuery(query); 059 } 060 061 public <T> Query<T> createQuery(Class<T> beanType, String eql) { 062 return delegate.createQuery(beanType, eql); 063 } 064 065 public <T> Query<T> createNamedQuery(Class<T> beanType, String namedQuery) { 066 return delegate.createNamedQuery(beanType, namedQuery); 067 } 068}