package io.ebeaninternal.server.query; import io.ebean.CacheMode; import io.ebean.CountDistinctOrder; import io.ebean.DtoQuery; import io.ebean.Expression; import io.ebean.ExpressionFactory; import io.ebean.ExpressionList; import io.ebean.FetchConfig; import io.ebean.FetchGroup; import io.ebean.FetchPath; import io.ebean.FutureIds; import io.ebean.FutureList; import io.ebean.FutureRowCount; import io.ebean.OrderBy; import io.ebean.PagedList; import io.ebean.PersistenceContextScope; import io.ebean.ProfileLocation; import io.ebean.Query; import io.ebean.QueryIterator; import io.ebean.QueryType; import io.ebean.RawSql; import io.ebean.Transaction; import io.ebean.UpdateQuery; import io.ebean.Version; import io.ebean.service.SpiFetchGroupQuery; import io.ebeaninternal.server.querydefn.OrmQueryDetail; import io.ebeaninternal.server.querydefn.SpiFetchGroup; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.sql.Connection; import java.sql.Timestamp; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.function.Consumer; import java.util.function.Predicate; /** * Implementation of FetchGroup query for use to create FetchGroup via query beans. */ class DefaultFetchGroupQuery implements SpiFetchGroupQuery { private static final FetchConfig FETCH_CACHE = new FetchConfig().cache(); private static final FetchConfig FETCH_QUERY = new FetchConfig().query(); private static final FetchConfig FETCH_LAZY = new FetchConfig().lazy(); private OrmQueryDetail detail = new OrmQueryDetail(); @Override public FetchGroup buildFetchGroup() { return new DFetchGroup<>(detail); } @Override public Query select(String columns) { detail.select(columns); return this; } @Override public Query select(FetchGroup fetchGroup) { this.detail = ((SpiFetchGroup) fetchGroup).detail(); return this; } @Override public Query fetch(String property) { return fetch(property, null, null); } @Override public Query fetchQuery(String property) { return fetch(property, null, FETCH_QUERY); } @Override public Query fetchCache(String property) { return fetch(property, null, FETCH_CACHE); } @Override public Query fetchLazy(String property) { return fetch(property, null, FETCH_LAZY); } @Override public Query fetch(String property, FetchConfig joinConfig) { return fetch(property, null, joinConfig); } @Override public Query fetch(String property, String columns) { return fetch(property, columns, null); } @Override public Query fetchQuery(String property, String columns) { return fetch(property, columns, FETCH_QUERY); } @Override public Query fetchCache(String property, String columns) { return fetch(property, columns, FETCH_CACHE); } @Override public Query fetchLazy(String property, String columns) { return fetch(property, columns, FETCH_LAZY); } @Override public Query fetch(String property, String columns, FetchConfig config) { detail.fetch(property, columns, config); return this; } @Override public Query setProfileId(int profileId) { return this; } @Override public Query setProfileLocation(ProfileLocation profileLocation) { return this; } @Override public Query setLabel(String label) { return this; } // Everything else deemed invalid @Override public Query copy() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setRawSql(RawSql rawSql) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query asOf(Timestamp asOf) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query asDraft() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public DtoQuery asDto(Class dtoClass) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public UpdateQuery asUpdate() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public void cancel() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setPersistenceContextScope(PersistenceContextScope scope) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setDocIndexName(String indexName) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public ExpressionFactory getExpressionFactory() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public boolean isAutoTuned() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setAutoTune(boolean autoTune) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setAllowLoadErrors() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setLazyLoadBatchSize(int lazyLoadBatchSize) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setIncludeSoftDeletes() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setDisableReadAuditing() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query apply(FetchPath fetchPath) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query usingTransaction(Transaction transaction) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query usingConnection(Connection connection) { throw new RuntimeException("Not allowed on fetch group query "); } @Nonnull @Override public List findIds() { throw new RuntimeException("Not allowed on fetch group query "); } @Nonnull @Override public QueryIterator findIterate() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public void findEach(Consumer consumer) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public void findEachWhile(Predicate consumer) { throw new RuntimeException("Not allowed on fetch group query "); } @Nonnull @Override public List findList() { throw new RuntimeException("Not allowed on fetch group query "); } @Nonnull @Override public Set findSet() { throw new RuntimeException("Not allowed on fetch group query "); } @Nonnull @Override public Map findMap() { throw new RuntimeException("Not allowed on fetch group query "); } @Nonnull @Override public List findSingleAttributeList() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public A findSingleAttribute() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public boolean isCountDistinct() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public boolean exists() { throw new RuntimeException("Not allowed on fetch group query "); } @Nullable @Override public T findOne() { throw new RuntimeException("Not allowed on fetch group query "); } @Nonnull @Override public Optional findOneOrEmpty() { throw new RuntimeException("Not allowed on fetch group query "); } @Nonnull @Override public List> findVersions() { throw new RuntimeException("Not allowed on fetch group query "); } @Nonnull @Override public List> findVersionsBetween(Timestamp start, Timestamp end) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public int delete() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public int delete(Transaction transaction) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public int update() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public int update(Transaction transaction) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public int findCount() { throw new RuntimeException("Not allowed on fetch group query "); } @Nonnull @Override public FutureRowCount findFutureCount() { throw new RuntimeException("Not allowed on fetch group query "); } @Nonnull @Override public FutureIds findFutureIds() { throw new RuntimeException("Not allowed on fetch group query "); } @Nonnull @Override public FutureList findFutureList() { throw new RuntimeException("Not allowed on fetch group query "); } @Nonnull @Override public PagedList findPagedList() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setParameter(String name, Object value) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setParameter(int position, Object value) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setId(Object id) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Object getId() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query where(Expression expression) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public ExpressionList where() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public ExpressionList text() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public ExpressionList filterMany(String propertyName) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public ExpressionList having() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query having(Expression addExpressionToHaving) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query orderBy(String orderByClause) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query order(String orderByClause) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public OrderBy order() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public OrderBy orderBy() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setOrder(OrderBy orderBy) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setOrderBy(OrderBy orderBy) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setDistinct(boolean isDistinct) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setCountDistinct(CountDistinctOrder orderBy) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public int getFirstRow() { return 0; } @Override public Query setFirstRow(int firstRow) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public int getMaxRows() { return 0; } @Override public Query setMaxRows(int maxRows) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setMapKey(String mapKey) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setBeanCacheMode(CacheMode beanCacheMode) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setUseQueryCache(CacheMode queryCacheMode) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setUseDocStore(boolean useDocStore) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setReadOnly(boolean readOnly) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setLoadBeanCache(boolean loadBeanCache) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setTimeout(int secs) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setBufferFetchSizeHint(int fetchSize) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public String getGeneratedSql() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query forUpdate() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query forUpdateNoWait() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query forUpdateSkipLocked() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public boolean isForUpdate() { return false; } @Override public ForUpdate getForUpdateMode() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query alias(String alias) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setBaseTable(String baseTable) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Class getBeanType() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setInheritType(Class type) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Class getInheritType() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public QueryType getQueryType() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query setDisableLazyLoading(boolean disableLazyLoading) { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Set validate() { throw new RuntimeException("Not allowed on fetch group query "); } @Override public Query orderById(boolean orderById) { throw new RuntimeException("Not allowed on fetch group query "); } }