From 4d4f8e2c4bab2c7412bbe8e6abfebbcf5929d205 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Mon, 2 May 2022 18:01:25 +1200 Subject: [PATCH] Modify DefaultOrmQuery to have non-final copy() methods to allow ebean-mocker to be updated --- .../server/querydefn/DefaultOrmQuery.java | 483 +++++++++--------- 1 file changed, 241 insertions(+), 242 deletions(-) diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultOrmQuery.java b/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultOrmQuery.java index 1736618dc..df2e1a2aa 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultOrmQuery.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultOrmQuery.java @@ -32,7 +32,7 @@ import java.util.stream.Stream; * Default implementation of an Object Relational query. */ @NonNullApi -public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery { +public class DefaultOrmQuery extends AbstractQuery implements SpiQuery { private static final String DEFAULT_QUERY_NAME = "default"; private static final FetchConfig FETCH_CACHE = FetchConfig.ofCache(); @@ -173,33 +173,32 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< this.detail = new OrmQueryDetail(); } - public void setNativeSql(String nativeSql) { + public final void setNativeSql(String nativeSql) { this.nativeSql = nativeSql; } @Override - public DtoQuery asDto(Class dtoClass) { + public final DtoQuery asDto(Class dtoClass) { return server.findDto(dtoClass, this); } @Override - public UpdateQuery asUpdate() { + public final UpdateQuery asUpdate() { return new DefaultUpdateQuery<>(this); } @Override - public BeanDescriptor getBeanDescriptor() { + public final BeanDescriptor getBeanDescriptor() { return beanDescriptor; } - @Override - public boolean isFindAll() { + public final boolean isFindAll() { return whereExpressions == null && nativeSql == null && rawSql == null; } @Override - public boolean isFindById() { + public final boolean isFindById() { if (id == null && whereExpressions != null) { id = whereExpressions.idEqualTo(beanDescriptor.idName()); if (id != null) { @@ -210,7 +209,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public String profileEventId() { + public final String profileEventId() { switch (mode) { case LAZYLOAD_BEAN: return FIND_ONE_LAZY; @@ -222,23 +221,23 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public String getProfileId() { + public final String getProfileId() { return getPlanLabel(); } @Override - public Query setProfileLocation(ProfileLocation profileLocation) { + public final Query setProfileLocation(ProfileLocation profileLocation) { this.profileLocation = profileLocation; return this; } @Override - public String getLabel() { + public final String getLabel() { return label; } @Override - public String getPlanLabel() { + public final String getPlanLabel() { if (label != null) { return label; } @@ -249,41 +248,41 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public void setProfilePath(String label, String relativePath, ProfileLocation profileLocation) { + public final void setProfilePath(String label, String relativePath, ProfileLocation profileLocation) { this.profileLocation = profileLocation; this.label = ((profileLocation == null) ? label : profileLocation.label()) + "_" + relativePath; } @Override - public Query setLabel(String label) { + public final Query setLabel(String label) { this.label = label; return this; } @Override - public boolean isAutoTunable() { + public final boolean isAutoTunable() { return nativeSql == null && beanDescriptor.isAutoTunable(); } @Override - public Query setUseDocStore(boolean useDocStore) { + public final Query setUseDocStore(boolean useDocStore) { this.useDocStore = useDocStore; return this; } @Override - public boolean isUseDocStore() { + public final boolean isUseDocStore() { return useDocStore; } @Override - public Query apply(FetchPath fetchPath) { + public final Query apply(FetchPath fetchPath) { fetchPath.apply(this); return this; } @Override - public void addSoftDeletePredicate(String softDeletePredicate) { + public final void addSoftDeletePredicate(String softDeletePredicate) { if (softDeletePredicates == null) { softDeletePredicates = new ArrayList<>(); } @@ -291,91 +290,91 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public List getSoftDeletePredicates() { + public final List getSoftDeletePredicates() { return softDeletePredicates; } @Override - public boolean isAsOfBaseTable() { + public final boolean isAsOfBaseTable() { return asOfBaseTable; } @Override - public void setAsOfBaseTable() { + public final void setAsOfBaseTable() { this.asOfBaseTable = true; } @Override - public Query setAllowLoadErrors() { + public final Query setAllowLoadErrors() { this.allowLoadErrors = true; return this; } @Override - public void incrementAsOfTableCount() { + public final void incrementAsOfTableCount() { asOfTableCount++; } @Override - public void incrementAsOfTableCount(int increment) { + public final void incrementAsOfTableCount(int increment) { asOfTableCount += increment; } @Override - public int getAsOfTableCount() { + public final int getAsOfTableCount() { return asOfTableCount; } @Override - public Timestamp getAsOf() { + public final Timestamp getAsOf() { return asOf; } @Override - public Query asOf(Timestamp asOfDateTime) { + public final Query asOf(Timestamp asOfDateTime) { this.temporalMode = (asOfDateTime != null) ? TemporalMode.AS_OF : TemporalMode.CURRENT; this.asOf = asOfDateTime; return this; } @Override - public Query asDraft() { + public final Query asDraft() { this.temporalMode = TemporalMode.DRAFT; this.useBeanCache = CacheMode.OFF; return this; } @Override - public Query setIncludeSoftDeletes() { + public final Query setIncludeSoftDeletes() { this.temporalMode = TemporalMode.SOFT_DELETED; return this; } @Override - public Query setDocIndexName(String indexName) { + public final Query setDocIndexName(String indexName) { this.docIndexName = indexName; this.useDocStore = true; return this; } @Override - public String getDocIndexName() { + public final String getDocIndexName() { return docIndexName; } @Override - public SpiRawSql getRawSql() { + public final SpiRawSql getRawSql() { return rawSql; } @Override - public Query setRawSql(RawSql rawSql) { + public final Query setRawSql(RawSql rawSql) { this.rawSql = (SpiRawSql) rawSql; return this; } @Override - public String getOriginKey() { + public final String getOriginKey() { if (parentNode == null || parentNode.getOriginQueryPoint() == null) { return null; } else { @@ -384,32 +383,32 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public int getLazyLoadBatchSize() { + public final int getLazyLoadBatchSize() { return lazyLoadBatchSize; } @Override - public Query setLazyLoadBatchSize(int lazyLoadBatchSize) { + public final Query setLazyLoadBatchSize(int lazyLoadBatchSize) { this.lazyLoadBatchSize = lazyLoadBatchSize; return this; } @Override - public String getLazyLoadProperty() { + public final String getLazyLoadProperty() { return lazyLoadProperty; } @Override - public void setLazyLoadProperty(String lazyLoadProperty) { + public final void setLazyLoadProperty(String lazyLoadProperty) { this.lazyLoadProperty = lazyLoadProperty; } @Override - public ExpressionFactory getExpressionFactory() { + public final ExpressionFactory getExpressionFactory() { return expressionFactory; } - private void createExtraJoinsToSupportManyWhereClause() { + private final void createExtraJoinsToSupportManyWhereClause() { manyWhereJoins = new ManyWhereJoins(); if (whereExpressions != null) { whereExpressions.containsMany(beanDescriptor, manyWhereJoins); @@ -431,7 +430,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< * Return the extra joins required to support the where clause for 'Many' properties. */ @Override - public ManyWhereJoins getManyWhereJoins() { + public final ManyWhereJoins getManyWhereJoins() { return manyWhereJoins; } @@ -440,7 +439,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< * included in the query. */ @Override - public boolean selectAllForLazyLoadProperty() { + public final boolean selectAllForLazyLoadProperty() { if (lazyLoadProperty != null) { if (!detail.containsProperty(lazyLoadProperty)) { detail.select("*"); @@ -481,12 +480,12 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public void setLazyLoadManyPath(String lazyLoadManyPath) { + public final void setLazyLoadManyPath(String lazyLoadManyPath) { this.lazyLoadManyPath = lazyLoadManyPath; } @Override - public SpiQuerySecondary convertJoins() { + public final SpiQuerySecondary convertJoins() { if (!useDocStore) { createExtraJoinsToSupportManyWhereClause(); } @@ -510,7 +509,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public void setDefaultSelectClause() { + public final void setDefaultSelectClause() { if (type.defaultSelect()) { detail.setDefaultSelectClause(beanDescriptor); } else if (!detail.hasSelectClause()) { @@ -520,39 +519,39 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public void setTenantId(Object tenantId) { + public final void setTenantId(Object tenantId) { this.tenantId = tenantId; } @Override - public Object getTenantId() { + public final Object getTenantId() { return tenantId; } @Override - public void setDetail(OrmQueryDetail detail) { + public final void setDetail(OrmQueryDetail detail) { this.detail = detail; } @Override - public boolean tuneFetchProperties(OrmQueryDetail tunedDetail) { + public final boolean tuneFetchProperties(OrmQueryDetail tunedDetail) { return detail.tuneFetchProperties(tunedDetail); } @Override - public OrmQueryDetail getDetail() { + public final OrmQueryDetail getDetail() { return detail; } @Override - public ExpressionList filterMany(String prop) { + public final ExpressionList filterMany(String prop) { OrmQueryProperties chunk = detail.getChunk(prop, true); return chunk.filterMany(this); } @Override - public void setFilterMany(String prop, ExpressionList filterMany) { + public final void setFilterMany(String prop, ExpressionList filterMany) { if (filterMany != null) { OrmQueryProperties chunk = detail.getChunk(prop, true); chunk.setFilterMany((SpiExpressionList) filterMany); @@ -560,7 +559,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public void prepareDocNested() { + public final void prepareDocNested() { if (textExpressions != null) { textExpressions.prepareDocNested(beanDescriptor); } @@ -573,14 +572,14 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< * Setup to be a delete or update query. */ @Override - public void setupForDeleteOrUpdate() { + public final void setupForDeleteOrUpdate() { forUpdate = null; rootTableAlias = "${RTA}"; // alias we remove later setSelectId(); } @Override - public CQueryPlanKey setDeleteByIdsPlan() { + public final CQueryPlanKey setDeleteByIdsPlan() { // re-build plan for cascading via delete by ids queryPlanKey = queryPlanKey.withDeleteByIds(); return queryPlanKey; @@ -590,14 +589,14 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< * Set the select clause to select the Id property. */ @Override - public void setSelectId() { + public final void setSelectId() { // clear select and fetch joins detail.clear(); select(beanDescriptor.idSelect()); } @Override - public void setSingleAttribute() { + public final void setSingleAttribute() { this.singleAttribute = true; } @@ -605,12 +604,12 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< * Return true if this is a single attribute query. */ @Override - public boolean isSingleAttribute() { + public final boolean isSingleAttribute() { return singleAttribute; } @Override - public CountDistinctOrder getCountDistinctOrder() { + public final CountDistinctOrder getCountDistinctOrder() { return countDistinctOrder; } @@ -618,12 +617,12 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< * Return true if the Id should be included in the query. */ @Override - public boolean isWithId() { + public final boolean isWithId() { return !manualId && !distinct && !singleAttribute; } @Override - public CacheIdLookup cacheIdLookup() { + public final CacheIdLookup cacheIdLookup() { if (whereExpressions == null) { return null; } @@ -647,7 +646,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public NaturalKeyQueryData naturalKey() { + public final NaturalKeyQueryData naturalKey() { if (whereExpressions == null) { return null; } @@ -667,7 +666,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public NaturalKeyBindParam getNaturalKeyBindParam() { + public final NaturalKeyBindParam getNaturalKeyBindParam() { NaturalKeyBindParam namedBind = null; if (bindParams != null) { namedBind = bindParams.getNaturalKeyBindParam(); @@ -752,38 +751,38 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public Query setPersistenceContextScope(PersistenceContextScope scope) { + public final Query setPersistenceContextScope(PersistenceContextScope scope) { this.persistenceContextScope = scope; return this; } @Override - public PersistenceContextScope getPersistenceContextScope() { + public final PersistenceContextScope getPersistenceContextScope() { return persistenceContextScope; } @Override - public Type getType() { + public final Type getType() { return type; } @Override - public void setType(Type type) { + public final void setType(Type type) { this.type = type; } @Override - public String getLoadDescription() { + public final String getLoadDescription() { return loadDescription; } @Override - public String getLoadMode() { + public final String getLoadMode() { return loadMode; } @Override - public void setLoadDescription(String loadMode, String loadDescription) { + public final void setLoadDescription(String loadMode, String loadDescription) { this.loadMode = loadMode; this.loadDescription = loadDescription; } @@ -796,7 +795,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< *

*/ @Override - public PersistenceContext getPersistenceContext() { + public final PersistenceContext getPersistenceContext() { return persistenceContext; } @@ -808,17 +807,17 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< *

*/ @Override - public void setPersistenceContext(PersistenceContext persistenceContext) { + public final void setPersistenceContext(PersistenceContext persistenceContext) { this.persistenceContext = persistenceContext; } @Override - public void setLazyLoadForParents(BeanPropertyAssocMany many) { + public final void setLazyLoadForParents(BeanPropertyAssocMany many) { this.lazyLoadForParentsProperty = many; } @Override - public BeanPropertyAssocMany getLazyLoadMany() { + public final BeanPropertyAssocMany getLazyLoadMany() { return lazyLoadForParentsProperty; } @@ -826,60 +825,60 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< * Return true if the query detail has neither select or joins specified. */ @Override - public boolean isDetailEmpty() { + public final boolean isDetailEmpty() { return detail.isEmpty(); } @Override - public boolean isAutoTuned() { + public final boolean isAutoTuned() { return autoTuned; } @Override - public void setAutoTuned(boolean autoTuned) { + public final void setAutoTuned(boolean autoTuned) { this.autoTuned = autoTuned; } @Override - public Boolean isAutoTune() { + public final Boolean isAutoTune() { return autoTune; } @Override - public void setDefaultRawSqlIfRequired() { + public final void setDefaultRawSqlIfRequired() { if (beanDescriptor.isRawSqlBased() && rawSql == null) { rawSql = beanDescriptor.namedRawSql(DEFAULT_QUERY_NAME); } } @Override - public Query setAutoTune(boolean autoTune) { + public final Query setAutoTune(boolean autoTune) { this.autoTune = autoTune; return this; } @Override - public Query withLock(LockType lockType) { + public final Query withLock(LockType lockType) { return setForUpdateWithMode(LockWait.WAIT, lockType); } @Override - public Query withLock(LockType lockType, LockWait lockWait) { + public final Query withLock(LockType lockType, LockWait lockWait) { return setForUpdateWithMode(lockWait, lockType); } @Override - public Query forUpdate() { + public final Query forUpdate() { return setForUpdateWithMode(LockWait.WAIT, LockType.DEFAULT); } @Override - public Query forUpdateNoWait() { + public final Query forUpdateNoWait() { return setForUpdateWithMode(LockWait.NOWAIT, LockType.DEFAULT); } @Override - public Query forUpdateSkipLocked() { + public final Query forUpdateSkipLocked() { return setForUpdateWithMode(LockWait.SKIPLOCKED, LockType.DEFAULT); } @@ -891,32 +890,32 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public boolean isForUpdate() { + public final boolean isForUpdate() { return forUpdate != null; } @Override - public LockWait getForUpdateLockWait() { + public final LockWait getForUpdateLockWait() { return forUpdate; } @Override - public LockType getForUpdateLockType() { + public final LockType getForUpdateLockType() { return lockType; } @Override - public ProfilingListener getProfilingListener() { + public final ProfilingListener getProfilingListener() { return profilingListener; } @Override - public void setProfilingListener(ProfilingListener profilingListener) { + public final void setProfilingListener(ProfilingListener profilingListener) { this.profilingListener = profilingListener; } @Override - public QueryType getQueryType() { + public final QueryType getQueryType() { if (type != null) { switch (type) { case DELETE: @@ -929,57 +928,57 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public Mode getMode() { + public final Mode getMode() { return mode; } @Override - public TemporalMode getTemporalMode() { + public final TemporalMode getTemporalMode() { return temporalMode; } @Override - public boolean isAsOfQuery() { + public final boolean isAsOfQuery() { return asOf != null; } @Override - public boolean isAsDraft() { + public final boolean isAsDraft() { return TemporalMode.DRAFT == temporalMode; } @Override - public boolean isIncludeSoftDeletes() { + public final boolean isIncludeSoftDeletes() { return TemporalMode.SOFT_DELETED == temporalMode; } @Override - public void setMode(Mode mode) { + public final void setMode(Mode mode) { this.mode = mode; } @Override - public boolean isUsageProfiling() { + public final boolean isUsageProfiling() { return usageProfiling; } @Override - public void setUsageProfiling(boolean usageProfiling) { + public final void setUsageProfiling(boolean usageProfiling) { this.usageProfiling = usageProfiling; } @Override - public void setParentNode(ObjectGraphNode parentNode) { + public final void setParentNode(ObjectGraphNode parentNode) { this.parentNode = parentNode; } @Override - public ObjectGraphNode getParentNode() { + public final ObjectGraphNode getParentNode() { return parentNode; } @Override - public ObjectGraphNode setOrigin(CallOrigin callOrigin) { + public final ObjectGraphNode setOrigin(CallOrigin callOrigin) { // create a 'origin' which links this query to the profiling information ObjectGraphOrigin o = new ObjectGraphOrigin(calculateOriginQueryHash(), callOrigin, beanType.getName()); parentNode = new ObjectGraphNode(o, null); @@ -1006,7 +1005,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< /** * Calculate the query hash for either AutoTune query tuning or Query Plan caching. */ - CQueryPlanKey createQueryPlanKey() { + final CQueryPlanKey createQueryPlanKey() { if (isNativeSql()) { String bindHash = (bindParams == null) ? "" : bindParams.calcQueryPlanHash(); queryPlanKey = new NativeSqlQueryPlanKey(type.ordinal() + nativeSql + "-" + firstRow + "-" + maxRows + "-" + bindHash); @@ -1101,17 +1100,17 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public boolean isNativeSql() { + public final boolean isNativeSql() { return nativeSql != null; } @Override - public String getNativeSql() { + public final String getNativeSql() { return nativeSql; } @Override - public Object getQueryPlanKey() { + public final Object getQueryPlanKey() { return queryPlanKey; } @@ -1119,7 +1118,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< * Prepare the query which prepares any expressions (sub-query expressions etc) and calculates the query plan key. */ @Override - public CQueryPlanKey prepare(SpiOrmQueryRequest request) { + public final CQueryPlanKey prepare(SpiOrmQueryRequest request) { prepareExpressions(request); prepareForPaging(); queryPlanKey = createQueryPlanKey(); @@ -1157,7 +1156,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public void queryBindKey(BindValuesKey key) { + public final void queryBindKey(BindValuesKey key) { key.add(id); if (whereExpressions != null) whereExpressions.queryBindKey(key); if (havingExpressions != null) havingExpressions.queryBindKey(key); @@ -1173,7 +1172,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< *

*/ @Override - public HashQuery queryHash() { + public final HashQuery queryHash() { // calculateQueryPlanHash is called just after potential AutoTune tuning // so queryPlanHash is calculated well before this method is called BindValuesKey bindKey = new BindValuesKey(); @@ -1182,7 +1181,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public boolean isRawSql() { + public final boolean isRawSql() { return rawSql != null; } @@ -1190,151 +1189,151 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< * Return the timeout. */ @Override - public int getTimeout() { + public final int getTimeout() { return timeout; } @Override - public boolean hasMaxRowsOrFirstRow() { + public final boolean hasMaxRowsOrFirstRow() { return maxRows > 0 || firstRow > 0; } @Override - public boolean isVersionsBetween() { + public final boolean isVersionsBetween() { return versionsStart != null; } @Override - public Timestamp getVersionStart() { + public final Timestamp getVersionStart() { return versionsStart; } @Override - public Timestamp getVersionEnd() { + public final Timestamp getVersionEnd() { return versionsEnd; } @Override - public Boolean isReadOnly() { + public final Boolean isReadOnly() { return readOnly; } @Override - public Query setReadOnly(boolean readOnly) { + public final Query setReadOnly(boolean readOnly) { this.readOnly = readOnly; return this; } @Override - public boolean isBeanCachePut() { + public final boolean isBeanCachePut() { return useBeanCache.isPut() && beanDescriptor.isBeanCaching(); } @Override - public boolean isBeanCacheGet() { + public final boolean isBeanCacheGet() { return useBeanCache.isGet() && beanDescriptor.isBeanCaching(); } @Override - public boolean isForceHitDatabase() { + public final boolean isForceHitDatabase() { return forUpdate != null || CacheMode.PUT == useBeanCache; } @Override - public void resetBeanCacheAutoMode(boolean findOne) { + public final void resetBeanCacheAutoMode(boolean findOne) { if (useBeanCache == CacheMode.AUTO && useQueryCache != CacheMode.OFF) { useBeanCache = CacheMode.OFF; } } @Override - public CacheMode getUseBeanCache() { + public final CacheMode getUseBeanCache() { return useBeanCache; } @Override - public CacheMode getUseQueryCache() { + public final CacheMode getUseQueryCache() { return useQueryCache; } @Override - public Query setBeanCacheMode(CacheMode beanCacheMode) { + public final Query setBeanCacheMode(CacheMode beanCacheMode) { this.useBeanCache = beanCacheMode; return this; } @Override - public Query setUseQueryCache(CacheMode useQueryCache) { + public final Query setUseQueryCache(CacheMode useQueryCache) { this.useQueryCache = useQueryCache; return this; } @Override - public Query setLoadBeanCache(boolean loadBeanCache) { + public final Query setLoadBeanCache(boolean loadBeanCache) { this.useBeanCache = CacheMode.PUT; return this; } @Override - public Query setTimeout(int secs) { + public final Query setTimeout(int secs) { this.timeout = secs; return this; } @Override - public void selectProperties(Set props) { + public final void selectProperties(Set props) { detail.selectProperties(props); } @Override - public void fetchProperties(String property, Set columns, FetchConfig config) { + public final void fetchProperties(String property, Set columns, FetchConfig config) { detail.fetchProperties(property, columns, config); } @Override - public void selectProperties(OrmQueryProperties properties) { + public final void selectProperties(OrmQueryProperties properties) { detail.selectProperties(properties); } @Override - public void fetchProperties(String path, OrmQueryProperties other) { + public final void fetchProperties(String path, OrmQueryProperties other) { detail.fetchProperties(path, other); } @Override - public void addNested(String name, OrmQueryDetail nestedDetail, FetchConfig config) { + public final void addNested(String name, OrmQueryDetail nestedDetail, FetchConfig config) { detail.addNested(name, nestedDetail, config); } @Override - public Query select(String columns) { + public final Query select(String columns) { detail.select(columns); return this; } @Override - public Query select(FetchGroup fetchGroup) { + public final Query select(FetchGroup fetchGroup) { this.detail = ((SpiFetchGroup) fetchGroup).detail(); return this; } @Override - public Query fetch(String path) { + public final Query fetch(String path) { return fetch(path, null, null); } @Override - public Query fetch(String path, FetchConfig joinConfig) { + public final Query fetch(String path, FetchConfig joinConfig) { return fetch(path, null, joinConfig); } @Override - public Query fetch(String path, String properties) { + public final Query fetch(String path, String properties) { return fetch(path, properties, null); } @Override - public Query fetch(String path, String properties, FetchConfig config) { + public final Query fetch(String path, String properties, FetchConfig config) { if (nativeSql != null && (config == null || config.isJoin())) { // can't use fetch join with nativeSql (as the root query) config = FETCH_QUERY; @@ -1343,32 +1342,32 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public Query fetchQuery(String path) { + public final Query fetchQuery(String path) { return fetchInternal(path, null, FETCH_QUERY); } @Override - public Query fetchCache(String path) { + public final Query fetchCache(String path) { return fetchInternal(path, null, FETCH_CACHE); } @Override - public Query fetchLazy(String path) { + public final Query fetchLazy(String path) { return fetchInternal(path, null, FETCH_LAZY); } @Override - public Query fetchQuery(String path, String properties) { + public final Query fetchQuery(String path, String properties) { return fetchInternal(path, properties, FETCH_QUERY); } @Override - public Query fetchCache(String path, String properties) { + public final Query fetchCache(String path, String properties) { return fetchInternal(path, properties, FETCH_CACHE); } @Override - public Query fetchLazy(String path, String properties) { + public final Query fetchLazy(String path, String properties) { return fetchInternal(path, properties, FETCH_LAZY); } @@ -1378,45 +1377,45 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public Query usingTransaction(Transaction transaction) { + public final Query usingTransaction(Transaction transaction) { this.transaction = (SpiTransaction) transaction; return this; } @Override - public Query usingConnection(Connection connection) { + public final Query usingConnection(Connection connection) { this.transaction = new ExternalJdbcTransaction(connection); return this; } @Override - public Query usingDatabase(Database database) { + public final Query usingDatabase(Database database) { this.server = (SpiEbeanServer) database; return this; } @Override - public int delete() { + public final int delete() { return server.delete(this, transaction); } @Override - public int delete(Transaction transaction) { + public final int delete(Transaction transaction) { return server.delete(this, transaction); } @Override - public int update() { + public final int update() { return server.update(this, transaction); } @Override - public int update(Transaction transaction) { + public final int update(Transaction transaction) { return server.update(this, transaction); } @Override - public List findIds() { + public final List findIds() { // a copy of this query is made in the server // as the query needs to modified (so we modify // the copy rather than this query instance) @@ -1424,12 +1423,12 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public boolean exists() { + public final boolean exists() { return server.exists(this, transaction); } @Override - public int findCount() { + public final int findCount() { // a copy of this query is made in the server // as the query needs to modified (so we modify // the copy rather than this query instance) @@ -1437,38 +1436,38 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public void findEachWhile(Predicate consumer) { + public final void findEachWhile(Predicate consumer) { server.findEachWhile(this, consumer, transaction); } @Override - public void findEach(Consumer consumer) { + public final void findEach(Consumer consumer) { server.findEach(this, consumer, transaction); } @Override - public void findEach(int batch, Consumer> consumer) { + public final void findEach(int batch, Consumer> consumer) { server.findEach(this, batch, consumer, transaction); } @Override - public QueryIterator findIterate() { + public final QueryIterator findIterate() { return server.findIterate(this, transaction); } @Override - public Stream findStream() { + public final Stream findStream() { return server.findStream(this, transaction); } @Override - public List> findVersions() { + public final List> findVersions() { this.temporalMode = TemporalMode.VERSIONS; return server.findVersions(this, transaction); } @Override - public List> findVersionsBetween(Timestamp start, Timestamp end) { + public final List> findVersionsBetween(Timestamp start, Timestamp end) { if (start == null || end == null) { throw new IllegalArgumentException("start and end must not be null"); } @@ -1479,64 +1478,64 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public List findList() { + public final List findList() { return server.findList(this, transaction); } @Override - public Set findSet() { + public final Set findSet() { return server.findSet(this, transaction); } @Override - public Map findMap() { + public final Map findMap() { return server.findMap(this, transaction); } @Override @SuppressWarnings("unchecked") - public List findSingleAttributeList() { + public final List findSingleAttributeList() { return (List) server.findSingleAttributeList(this, transaction); } @Override - public A findSingleAttribute() { + public final A findSingleAttribute() { List list = findSingleAttributeList(); return !list.isEmpty() ? list.get(0) : null; } @Override - public T findOne() { + public final T findOne() { return server.findOne(this, transaction); } @Override - public Optional findOneOrEmpty() { + public final Optional findOneOrEmpty() { return server.findOneOrEmpty(this, transaction); } @Override - public FutureIds findFutureIds() { + public final FutureIds findFutureIds() { return server.findFutureIds(this, transaction); } @Override - public FutureList findFutureList() { + public final FutureList findFutureList() { return server.findFutureList(this, transaction); } @Override - public FutureRowCount findFutureCount() { + public final FutureRowCount findFutureCount() { return server.findFutureCount(this, transaction); } @Override - public PagedList findPagedList() { + public final PagedList findPagedList() { return server.findPagedList(this, transaction); } @Override - public Query setParameter(Object value) { + public final Query setParameter(Object value) { if (bindParams == null) { bindParams = new BindParams(); } @@ -1545,7 +1544,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public Query setParameters(Object... values) { + public final Query setParameters(Object... values) { if (bindParams == null) { bindParams = new BindParams(); } @@ -1559,7 +1558,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< * have in the query. */ @Override - public Query setParameter(int position, Object value) { + public final Query setParameter(int position, Object value) { if (bindParams == null) { bindParams = new BindParams(); } @@ -1571,7 +1570,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< * Set a named bind parameter. Named parameters have a colon to prefix the name. */ @Override - public Query setParameter(String name, Object value) { + public final Query setParameter(String name, Object value) { if (namedParams != null) { ONamedParam param = namedParams.get(name); if (param != null) { @@ -1587,7 +1586,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public void setArrayParameter(String name, Collection values) { + public final void setArrayParameter(String name, Collection values) { if (namedParams != null) { throw new IllegalStateException("setArrayParameter() not supported when EQL parsed query"); } @@ -1598,22 +1597,22 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public boolean checkPagingOrderBy() { + public final boolean checkPagingOrderBy() { return orderById && !useDocStore; } @Override - public boolean orderByIsEmpty() { + public final boolean orderByIsEmpty() { return orderBy == null || orderBy.isEmpty(); } @Override - public OrderBy getOrderBy() { + public final OrderBy getOrderBy() { return orderBy; } @Override - public OrderBy orderBy() { + public final OrderBy orderBy() { if (orderBy == null) { orderBy = new OrderBy<>(this, null); } @@ -1621,7 +1620,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public Query orderBy(String orderByClause) { + public final Query orderBy(String orderByClause) { if (orderByClause == null || orderByClause.trim().isEmpty()) { this.orderBy = null; } else { @@ -1631,7 +1630,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public Query setOrderBy(OrderBy orderBy) { + public final Query setOrderBy(OrderBy orderBy) { this.orderBy = orderBy; if (orderBy != null) { orderBy.setQuery(this); @@ -1640,12 +1639,12 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public boolean isManualId() { + public final boolean isManualId() { return manualId; } @Override - public void setManualId() { + public final void setManualId() { if (detail != null && detail.hasSelectClause()) { this.manualId = true; } @@ -1655,7 +1654,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< * return true if user specified to use SQL DISTINCT (effectively excludes id property). */ @Override - public boolean isDistinct() { + public final boolean isDistinct() { return distinct; } @@ -1663,35 +1662,35 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< * Internally set to use SQL DISTINCT on the query but still have id property included. */ @Override - public Query setDistinct(boolean distinct) { + public final Query setDistinct(boolean distinct) { this.distinct = distinct; return this; } @Override - public Query setCountDistinct(CountDistinctOrder countDistinctOrder) { + public final Query setCountDistinct(CountDistinctOrder countDistinctOrder) { this.countDistinctOrder = countDistinctOrder; return this; } @Override - public boolean isCountDistinct() { + public final boolean isCountDistinct() { return countDistinctOrder != null; } @Override - public Class getBeanType() { + public final Class getBeanType() { return beanType; } @Override - public Class getInheritType() { + public final Class getInheritType() { return beanDescriptor.type(); } @SuppressWarnings("unchecked") @Override - public Query setInheritType(Class type) { + public final Query setInheritType(Class type) { if (type == beanType) { return this; } @@ -1705,71 +1704,71 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public String toString() { + public final String toString() { return "Query [" + whereExpressions + "]"; } @Override - public TableJoin getM2mIncludeJoin() { + public final TableJoin getM2mIncludeJoin() { return m2mIncludeJoin; } @Override - public void setM2MIncludeJoin(TableJoin m2mIncludeJoin) { + public final void setM2MIncludeJoin(TableJoin m2mIncludeJoin) { this.m2mIncludeJoin = m2mIncludeJoin; } @Override - public Query setDisableLazyLoading(boolean disableLazyLoading) { + public final Query setDisableLazyLoading(boolean disableLazyLoading) { this.disableLazyLoading = disableLazyLoading; return this; } @Override - public boolean isDisableLazyLoading() { + public final boolean isDisableLazyLoading() { return disableLazyLoading; } @Override - public int getFirstRow() { + public final int getFirstRow() { return firstRow; } @Override - public Query setFirstRow(int firstRow) { + public final Query setFirstRow(int firstRow) { this.firstRow = firstRow; return this; } @Override - public int getMaxRows() { + public final int getMaxRows() { return maxRows; } @Override - public Query setMaxRows(int maxRows) { + public final Query setMaxRows(int maxRows) { this.maxRows = maxRows; return this; } @Override - public String getMapKey() { + public final String getMapKey() { return mapKey; } @Override - public Query setMapKey(String mapKey) { + public final Query setMapKey(String mapKey) { this.mapKey = mapKey; return this; } @Override - public Object getId() { + public final Object getId() { return id; } @Override - public Query setId(Object id) { + public final Query setId(Object id) { if (id == null) { throw new NullPointerException("The id is null"); } @@ -1778,18 +1777,18 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public BindParams getBindParams() { + public final BindParams getBindParams() { return bindParams; } @Override - public Query where(Expression expression) { + public final Query where(Expression expression) { where().add(expression); return this; } @Override - public ExpressionList text() { + public final ExpressionList text() { if (textExpressions == null) { useDocStore = true; textExpressions = new DefaultExpressionList<>(this); @@ -1798,7 +1797,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public ExpressionList where() { + public final ExpressionList where() { if (whereExpressions == null) { whereExpressions = new DefaultExpressionList<>(this, null); } @@ -1806,20 +1805,20 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public void simplifyExpressions() { + public final void simplifyExpressions() { if (whereExpressions != null) { whereExpressions.simplify(); } } @Override - public Query having(Expression expression) { + public final Query having(Expression expression) { having().add(expression); return this; } @Override - public ExpressionList having() { + public final ExpressionList having() { if (havingExpressions == null) { havingExpressions = new DefaultExpressionList<>(this, null); } @@ -1827,32 +1826,32 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public SpiExpressionList getHavingExpressions() { + public final SpiExpressionList getHavingExpressions() { return havingExpressions; } @Override - public SpiExpressionList getWhereExpressions() { + public final SpiExpressionList getWhereExpressions() { return whereExpressions; } @Override - public SpiExpressionList getTextExpression() { + public final SpiExpressionList getTextExpression() { return textExpressions; } @Override - public String getGeneratedSql() { + public final String getGeneratedSql() { return generatedSql; } @Override - public void setGeneratedSql(String generatedSql) { + public final void setGeneratedSql(String generatedSql) { this.generatedSql = generatedSql; } @Override - public void checkNamedParameters() { + public final void checkNamedParameters() { if (namedParams != null) { for (ONamedParam value : namedParams.values()) { value.checkValueSet(); @@ -1861,7 +1860,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public SpiNamedParam createNamedParameter(String name) { + public final SpiNamedParam createNamedParameter(String name) { if (namedParams == null) { namedParams = new HashMap<>(); } @@ -1869,84 +1868,84 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< } @Override - public void setDefaultFetchBuffer(int fetchSize) { + public final void setDefaultFetchBuffer(int fetchSize) { if (bufferFetchSizeHint == 0) { bufferFetchSizeHint = fetchSize; } } @Override - public Query setBufferFetchSizeHint(int bufferFetchSizeHint) { + public final Query setBufferFetchSizeHint(int bufferFetchSizeHint) { this.bufferFetchSizeHint = bufferFetchSizeHint; return this; } @Override - public int getBufferFetchSizeHint() { + public final int getBufferFetchSizeHint() { return bufferFetchSizeHint; } @Override - public Query setDisableReadAuditing() { + public final Query setDisableReadAuditing() { this.disableReadAudit = true; return this; } @Override - public boolean isDisableReadAudit() { + public final boolean isDisableReadAudit() { return disableReadAudit; } @Override - public boolean isFutureFetch() { + public final boolean isFutureFetch() { return futureFetch; } @Override - public void setFutureFetch(boolean backgroundFetch) { + public final void setFutureFetch(boolean backgroundFetch) { this.futureFetch = backgroundFetch; } @Override - public void setFutureFetchAudit(ReadEvent event) { + public final void setFutureFetchAudit(ReadEvent event) { this.futureFetchAudit = event; } @Override - public ReadEvent getFutureFetchAudit() { + public final ReadEvent getFutureFetchAudit() { return futureFetchAudit; } @Override - public Query setBaseTable(String baseTable) { + public final Query setBaseTable(String baseTable) { this.baseTable = baseTable; return this; } @Override - public String getBaseTable() { + public final String getBaseTable() { return baseTable; } @Override - public Query alias(String alias) { + public final Query alias(String alias) { this.rootTableAlias = alias; return this; } @Override - public String getAlias() { + public final String getAlias() { return rootTableAlias; } @Override - public String getAlias(String defaultAlias) { + public final String getAlias(String defaultAlias) { return rootTableAlias != null ? rootTableAlias : defaultAlias; } @Override - public Set validate() { + public final Set validate() { return server.validateQuery(this); } @@ -1954,7 +1953,7 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< * Validate all the expression properties/paths given the bean descriptor. */ @Override - public Set validate(BeanType desc) { + public final Set validate(BeanType desc) { SpiExpressionValidation validation = new SpiExpressionValidation(desc); if (whereExpressions != null) { whereExpressions.validate(validation); @@ -1970,29 +1969,29 @@ public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery< return validation.getUnknownProperties(); } - void setUpdateProperties(OrmUpdateProperties updateProperties) { + final void setUpdateProperties(OrmUpdateProperties updateProperties) { this.updateProperties = updateProperties; } @Override - public OrmUpdateProperties getUpdateProperties() { + public final OrmUpdateProperties getUpdateProperties() { return updateProperties; } @Override - public ProfileLocation getProfileLocation() { + public final ProfileLocation getProfileLocation() { return profileLocation; } @Override - public void handleLoadError(String fullName, Exception e) { + public final void handleLoadError(String fullName, Exception e) { if (!allowLoadErrors) { throw new PersistenceException("Error loading on " + fullName, e); } } @Override - public Query orderById(boolean orderById) { + public final Query orderById(boolean orderById) { this.orderById = orderById; return this; }