mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
Refactor - tidy up in com.avaje.ebeaninternal.server.query, no effective change
This commit is contained in:
@@ -12,11 +12,11 @@ import java.util.concurrent.TimeoutException;
|
||||
* @param <T> the entity bean type
|
||||
* @author rbygrave
|
||||
*/
|
||||
public abstract class BaseFuture<T> implements Future<T> {
|
||||
abstract class BaseFuture<T> implements Future<T> {
|
||||
|
||||
protected final FutureTask<T> futureTask;
|
||||
final FutureTask<T> futureTask;
|
||||
|
||||
public BaseFuture(FutureTask<T> futureTask) {
|
||||
BaseFuture(FutureTask<T> futureTask) {
|
||||
this.futureTask = futureTask;
|
||||
}
|
||||
|
||||
@@ -28,9 +28,7 @@ public abstract class BaseFuture<T> implements Future<T> {
|
||||
return futureTask.get();
|
||||
}
|
||||
|
||||
public T get(long timeout, TimeUnit unit)
|
||||
throws InterruptedException, ExecutionException, TimeoutException {
|
||||
|
||||
public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
|
||||
return futureTask.get(timeout, unit);
|
||||
}
|
||||
|
||||
|
||||
@@ -209,7 +209,7 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
this.objectGraphNode = query.getParentNode();
|
||||
this.profilingListener = query.getProfilingListener();
|
||||
this.autoTuneProfiling = profilingListener != null;
|
||||
this.profilingListenerRef = autoTuneProfiling ? new WeakReference<NodeUsageListener>(profilingListener) : null;
|
||||
this.profilingListenerRef = autoTuneProfiling ? new WeakReference<>(profilingListener) : null;
|
||||
|
||||
// set the generated sql back to the query
|
||||
// so its available to the user...
|
||||
@@ -276,7 +276,7 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
return predicates;
|
||||
}
|
||||
|
||||
public SpiOrmQueryRequest<?> getQueryRequest() {
|
||||
SpiOrmQueryRequest<?> getQueryRequest() {
|
||||
return request;
|
||||
}
|
||||
|
||||
@@ -297,14 +297,14 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
/**
|
||||
* Prepare bind and execute query with Forward only hints.
|
||||
*/
|
||||
public boolean prepareBindExecuteQueryForwardOnly(boolean dbPlatformForwardOnlyHint) throws SQLException {
|
||||
boolean prepareBindExecuteQueryForwardOnly(boolean dbPlatformForwardOnlyHint) throws SQLException {
|
||||
return prepareBindExecuteQueryWithOption(dbPlatformForwardOnlyHint);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare bind and execute the query normally.
|
||||
*/
|
||||
public boolean prepareBindExecuteQuery() throws SQLException {
|
||||
boolean prepareBindExecuteQuery() throws SQLException {
|
||||
return prepareBindExecuteQueryWithOption(false);
|
||||
}
|
||||
|
||||
@@ -494,11 +494,11 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
return true;
|
||||
}
|
||||
|
||||
public long getQueryExecutionTimeMicros() {
|
||||
long getQueryExecutionTimeMicros() {
|
||||
return executionTimeMicros;
|
||||
}
|
||||
|
||||
public boolean readBean() throws SQLException {
|
||||
boolean readBean() throws SQLException {
|
||||
|
||||
boolean result = hasNext();
|
||||
updateExecutionStatistics();
|
||||
@@ -531,9 +531,9 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
* Read version beans and their effective dates.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<Version<T>> readVersions() throws SQLException {
|
||||
List<Version<T>> readVersions() throws SQLException {
|
||||
|
||||
List<Version<T>> versionList = new ArrayList<Version<T>>();
|
||||
List<Version<T>> versionList = new ArrayList<>();
|
||||
|
||||
Version version;
|
||||
while ((version = readNextVersion()) != null) {
|
||||
@@ -552,7 +552,7 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
return null;
|
||||
}
|
||||
|
||||
public BeanCollection<T> readCollection() throws SQLException {
|
||||
BeanCollection<T> readCollection() throws SQLException {
|
||||
|
||||
while (hasNext()) {
|
||||
EntityBean bean = next();
|
||||
@@ -563,7 +563,7 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
return collection;
|
||||
}
|
||||
|
||||
protected void updateExecutionStatistics() {
|
||||
void updateExecutionStatistics() {
|
||||
try {
|
||||
long exeNano = System.nanoTime() - startNano;
|
||||
executionTimeMicros = TimeUnit.NANOSECONDS.toMicros(exeNano);
|
||||
@@ -578,17 +578,17 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
}
|
||||
}
|
||||
|
||||
public QueryIterator<T> readIterate(int bufferSize, OrmQueryRequest<T> request) {
|
||||
QueryIterator<T> readIterate(int bufferSize, OrmQueryRequest<T> request) {
|
||||
|
||||
if (bufferSize > 0) {
|
||||
return new CQueryIteratorWithBuffer<T>(this, request, bufferSize);
|
||||
return new CQueryIteratorWithBuffer<>(this, request, bufferSize);
|
||||
|
||||
} else {
|
||||
return new CQueryIteratorSimple<T>(this, request);
|
||||
return new CQueryIteratorSimple<>(this, request);
|
||||
}
|
||||
}
|
||||
|
||||
public String getLoadedRowDetail() {
|
||||
String getLoadedRowDetail() {
|
||||
if (manyProperty == null) {
|
||||
return String.valueOf(rowCount);
|
||||
} else {
|
||||
@@ -618,7 +618,7 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
/**
|
||||
* Return the where predicate for display in the transaction log.
|
||||
*/
|
||||
public String getLogWhereSql() {
|
||||
String getLogWhereSql() {
|
||||
return logWhereSql;
|
||||
}
|
||||
|
||||
@@ -641,7 +641,7 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
/**
|
||||
* Return the short bean name.
|
||||
*/
|
||||
public String getBeanName() {
|
||||
String getBeanName() {
|
||||
return desc.getName();
|
||||
}
|
||||
|
||||
@@ -655,7 +655,7 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
/**
|
||||
* Create a PersistenceException including interesting information like the bindLog and sql used.
|
||||
*/
|
||||
public PersistenceException createPersistenceException(SQLException e) {
|
||||
PersistenceException createPersistenceException(SQLException e) {
|
||||
|
||||
return createPersistenceException(e, getTransaction(), bindLog, sql);
|
||||
}
|
||||
@@ -663,7 +663,7 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
/**
|
||||
* Create a PersistenceException including interesting information like the bindLog and sql used.
|
||||
*/
|
||||
public static PersistenceException createPersistenceException(SQLException e, SpiTransaction t, String bindLog, String sql) {
|
||||
static PersistenceException createPersistenceException(SQLException e, SpiTransaction t, String bindLog, String sql) {
|
||||
|
||||
if (t.isLogSummary()) {
|
||||
// log the error to the transaction log
|
||||
@@ -723,7 +723,7 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
/**
|
||||
* A find bean query with read auditing so build and log the ReadEvent.
|
||||
*/
|
||||
public void auditFind(EntityBean bean) {
|
||||
void auditFind(EntityBean bean) {
|
||||
if (bean != null) {
|
||||
// only audit when a bean was actually found
|
||||
desc.readAuditBean(queryPlan.getAuditQueryKey(), bindLog, bean);
|
||||
@@ -733,7 +733,7 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
/**
|
||||
* a find many query with read auditing so build the ReadEvent and log it.
|
||||
*/
|
||||
public void auditFindMany() {
|
||||
void auditFindMany() {
|
||||
|
||||
if (!collection.isEmpty()) {
|
||||
// get the id values of the underlying collection
|
||||
@@ -760,7 +760,7 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
/**
|
||||
* Indicate that read auditing is occurring on a this findIterate query.
|
||||
*/
|
||||
public void auditFindIterate() {
|
||||
void auditFindIterate() {
|
||||
auditFindIterate = true;
|
||||
}
|
||||
|
||||
@@ -779,7 +779,7 @@ public class CQuery<T> implements DbReadContext, CancelableQuery {
|
||||
private void auditIterateNextBean() {
|
||||
|
||||
if (auditFindIterateIds == null) {
|
||||
auditFindIterateIds = new ArrayList<Object>(100);
|
||||
auditFindIterateIds = new ArrayList<>(100);
|
||||
}
|
||||
auditFindIterateIds.add(desc.getIdForJson(nextBean));
|
||||
if (auditFindIterateIds.size() >= 100) {
|
||||
|
||||
@@ -31,7 +31,7 @@ import java.util.List;
|
||||
* Generates the SQL SELECT statements taking into account the physical
|
||||
* deployment properties.
|
||||
*/
|
||||
public class CQueryBuilder {
|
||||
class CQueryBuilder {
|
||||
|
||||
private final String tableAliasPlaceHolder;
|
||||
private final String columnAliasPrefix;
|
||||
@@ -53,7 +53,7 @@ public class CQueryBuilder {
|
||||
/**
|
||||
* Create the SqlGenSelect.
|
||||
*/
|
||||
public CQueryBuilder(DatabasePlatform dbPlatform, Binder binder, CQueryHistorySupport historySupport, CQueryDraftSupport draftSupport) {
|
||||
CQueryBuilder(DatabasePlatform dbPlatform, Binder binder, CQueryHistorySupport historySupport, CQueryDraftSupport draftSupport) {
|
||||
|
||||
this.dbPlatform = dbPlatform;
|
||||
this.binder = binder;
|
||||
@@ -70,7 +70,7 @@ public class CQueryBuilder {
|
||||
* split the order by claus on the field delimiter and prefix each field with
|
||||
* the relation name
|
||||
*/
|
||||
public static String prefixOrderByFields(String name, String orderBy) {
|
||||
static String prefixOrderByFields(String name, String orderBy) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (String token : orderBy.split(",")) {
|
||||
if (sb.length() > 0) {
|
||||
@@ -88,7 +88,7 @@ public class CQueryBuilder {
|
||||
/**
|
||||
* Build the delete query.
|
||||
*/
|
||||
public <T> CQueryUpdate buildUpdateQuery(String type, OrmQueryRequest<T> request) {
|
||||
<T> CQueryUpdate buildUpdateQuery(String type, OrmQueryRequest<T> request) {
|
||||
|
||||
SpiQuery<T> query = request.getQuery();
|
||||
String rootTableAlias = query.getAlias();
|
||||
@@ -165,7 +165,7 @@ public class CQueryBuilder {
|
||||
return StringHelper.replaceString(sql, "${RTA}", replaceWith);
|
||||
}
|
||||
|
||||
public CQueryFetchSingleAttribute buildFetchAttributeQuery(OrmQueryRequest<?> request) {
|
||||
CQueryFetchSingleAttribute buildFetchAttributeQuery(OrmQueryRequest<?> request) {
|
||||
|
||||
SpiQuery<?> query = request.getQuery();
|
||||
query.setSingleAttribute();
|
||||
@@ -191,7 +191,7 @@ public class CQueryBuilder {
|
||||
/**
|
||||
* Build the find ids query.
|
||||
*/
|
||||
public <T> CQueryFetchSingleAttribute buildFetchIdsQuery(OrmQueryRequest<T> request) {
|
||||
<T> CQueryFetchSingleAttribute buildFetchIdsQuery(OrmQueryRequest<T> request) {
|
||||
|
||||
request.getQuery().setSelectId();
|
||||
return buildFetchAttributeQuery(request);
|
||||
@@ -214,7 +214,7 @@ public class CQueryBuilder {
|
||||
/**
|
||||
* Build the row count query.
|
||||
*/
|
||||
public <T> CQueryRowCount buildRowCountQuery(OrmQueryRequest<T> request) {
|
||||
<T> CQueryRowCount buildRowCountQuery(OrmQueryRequest<T> request) {
|
||||
|
||||
SpiQuery<T> query = request.getQuery();
|
||||
|
||||
@@ -275,7 +275,7 @@ public class CQueryBuilder {
|
||||
* Return the SQL Select statement as a String. Converts logical property
|
||||
* names to physical deployment column names.
|
||||
*/
|
||||
public <T> CQuery<T> buildQuery(OrmQueryRequest<T> request) {
|
||||
<T> CQuery<T> buildQuery(OrmQueryRequest<T> request) {
|
||||
|
||||
CQueryPredicates predicates = new CQueryPredicates(binder, request);
|
||||
|
||||
@@ -284,7 +284,7 @@ public class CQueryBuilder {
|
||||
// Reuse the query plan so skip generating SqlTree and SQL.
|
||||
// We do prepare and bind the new parameters
|
||||
predicates.prepare(false);
|
||||
return new CQuery<T>(request, predicates, queryPlan);
|
||||
return new CQuery<>(request, predicates, queryPlan);
|
||||
}
|
||||
|
||||
// RawSql or Generated Sql query
|
||||
@@ -327,7 +327,7 @@ public class CQueryBuilder {
|
||||
// gather query performance statistics based on it.
|
||||
request.putQueryPlan(queryPlan);
|
||||
|
||||
return new CQuery<T>(request, predicates, queryPlan);
|
||||
return new CQuery<>(request, predicates, queryPlan);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -11,7 +11,7 @@ import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
|
||||
import com.avaje.ebeaninternal.server.querydefn.OrmQueryLimitRequest;
|
||||
import com.avaje.ebeaninternal.server.util.BindParamsParser;
|
||||
|
||||
public class CQueryBuilderRawSql {
|
||||
class CQueryBuilderRawSql {
|
||||
|
||||
private final SqlLimiter sqlLimiter;
|
||||
private final DatabasePlatform dbPlatform;
|
||||
@@ -24,7 +24,7 @@ public class CQueryBuilderRawSql {
|
||||
/**
|
||||
* Build the full SQL Select statement for the request.
|
||||
*/
|
||||
public SqlLimitResponse buildSql(OrmQueryRequest<?> request, CQueryPredicates predicates, RawSql.Sql rsql) {
|
||||
SqlLimitResponse buildSql(OrmQueryRequest<?> request, CQueryPredicates predicates, RawSql.Sql rsql) {
|
||||
|
||||
if (rsql == null) {
|
||||
// this is a ResultSet based RawSql query - just use some placeholder for the SQL
|
||||
|
||||
@@ -5,14 +5,14 @@ import java.util.Map;
|
||||
/**
|
||||
* Support 'asDraft' queries.
|
||||
*/
|
||||
public class CQueryDraftSupport {
|
||||
class CQueryDraftSupport {
|
||||
|
||||
/**
|
||||
* The mapping of base tables to their matching 'draft' table.
|
||||
*/
|
||||
private final Map<String, String> tableMap;
|
||||
|
||||
public CQueryDraftSupport(Map<String, String> tableMap) {
|
||||
CQueryDraftSupport(Map<String, String> tableMap) {
|
||||
this.tableMap = tableMap;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ public class CQueryDraftSupport {
|
||||
* This returns null for entities that are not draftable and in that case
|
||||
* the usual base table is used.
|
||||
*/
|
||||
public String getDraftTable(String table) {
|
||||
String getDraftTable(String table) {
|
||||
return tableMap.get(table);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -275,7 +275,7 @@ public class CQueryEngine {
|
||||
}
|
||||
}
|
||||
// put an empty map into the last one
|
||||
current.setDiff(new LinkedHashMap<String, ValuePair>());
|
||||
current.setDiff(new LinkedHashMap<>());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -299,8 +299,7 @@ public class CQueryEngine {
|
||||
/**
|
||||
* Find a list/map/set of beans.
|
||||
*/
|
||||
public <T> BeanCollection<T> findMany(OrmQueryRequest<T> request) {
|
||||
|
||||
<T> BeanCollection<T> findMany(OrmQueryRequest<T> request) {
|
||||
|
||||
SpiQuery<T> query = request.getQuery();
|
||||
if (!query.isDistinct() && (query.getMaxRows() > 1 || query.getFirstRow() > 0)) {
|
||||
|
||||
@@ -59,7 +59,7 @@ class CQueryFetchSingleAttribute {
|
||||
/**
|
||||
* Create the Sql select based on the request.
|
||||
*/
|
||||
public CQueryFetchSingleAttribute(OrmQueryRequest<?> request, CQueryPredicates predicates, CQueryPlan plan) {
|
||||
CQueryFetchSingleAttribute(OrmQueryRequest<?> request, CQueryPredicates predicates, CQueryPlan plan) {
|
||||
this.request = request;
|
||||
this.query = request.getQuery();
|
||||
this.sql = plan.getSql();
|
||||
@@ -94,7 +94,7 @@ class CQueryFetchSingleAttribute {
|
||||
|
||||
prepareExecute();
|
||||
|
||||
List<Object> result = new ArrayList<Object>();
|
||||
List<Object> result = new ArrayList<>();
|
||||
|
||||
while (dataReader.next()) {
|
||||
result.add(scalarType.read(dataReader));
|
||||
|
||||
@@ -7,7 +7,7 @@ import java.util.Map;
|
||||
/**
|
||||
* Helper to support history functions.
|
||||
*/
|
||||
public class CQueryHistorySupport {
|
||||
class CQueryHistorySupport {
|
||||
|
||||
/**
|
||||
* The DB specific support.
|
||||
@@ -24,7 +24,7 @@ public class CQueryHistorySupport {
|
||||
*/
|
||||
private final String sysPeriod;
|
||||
|
||||
public CQueryHistorySupport(DbHistorySupport dbHistorySupport, Map<String, String> asOfTableMap, String sysPeriod) {
|
||||
CQueryHistorySupport(DbHistorySupport dbHistorySupport, Map<String, String> asOfTableMap, String sysPeriod) {
|
||||
this.dbHistorySupport = dbHistorySupport;
|
||||
this.asOfTableMap = asOfTableMap;
|
||||
this.sysPeriod = sysPeriod;
|
||||
@@ -33,28 +33,28 @@ public class CQueryHistorySupport {
|
||||
/**
|
||||
* Return true if the underlying history support is standards based.
|
||||
*/
|
||||
public boolean isStandardsBased() {
|
||||
boolean isStandardsBased() {
|
||||
return dbHistorySupport.isStandardsBased();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the 'as of' history view for the given base table.
|
||||
*/
|
||||
public String getAsOfView(String table) {
|
||||
String getAsOfView(String table) {
|
||||
return asOfTableMap.get(table);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the lower bound column.
|
||||
*/
|
||||
public String getSysPeriodLower(String tableAlias) {
|
||||
String getSysPeriodLower(String tableAlias) {
|
||||
return dbHistorySupport.getSysPeriodLower(tableAlias, sysPeriod);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the upper bound column.
|
||||
*/
|
||||
public String getSysPeriodUpper(String tableAlias) {
|
||||
String getSysPeriodUpper(String tableAlias) {
|
||||
return dbHistorySupport.getSysPeriodUpper(tableAlias, sysPeriod);
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ public class CQueryHistorySupport {
|
||||
*
|
||||
* Note used for Oracle total recall etc with the more standard approach.
|
||||
*/
|
||||
public String getAsOfPredicate(String tableAlias) {
|
||||
String getAsOfPredicate(String tableAlias) {
|
||||
return dbHistorySupport.getAsOfPredicate(tableAlias, sysPeriod);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ class CQueryIteratorWithBuffer<T> implements QueryIterator<T> {
|
||||
this.cquery = cquery;
|
||||
this.request = request;
|
||||
this.bufferSize = bufferSize;
|
||||
this.buffer = new ArrayList<T>(bufferSize);
|
||||
this.buffer = new ArrayList<>(bufferSize);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.avaje.ebeaninternal.server.el.ElPropertyValue;
|
||||
/**
|
||||
* Creates the order by expression clause.
|
||||
*/
|
||||
public class CQueryOrderBy {
|
||||
class CQueryOrderBy {
|
||||
|
||||
private final BeanDescriptor<?> desc;
|
||||
|
||||
|
||||
@@ -12,11 +12,11 @@ import java.util.List;
|
||||
/**
|
||||
* RawSql based query plan.
|
||||
*/
|
||||
public class CQueryPlanRawSql extends CQueryPlan {
|
||||
class CQueryPlanRawSql extends CQueryPlan {
|
||||
|
||||
private final int[] rsetIndexPositions;
|
||||
|
||||
public CQueryPlanRawSql(OrmQueryRequest<?> request, SqlLimitResponse sqlRes, SqlTree sqlTree, String logWhereSql) {
|
||||
CQueryPlanRawSql(OrmQueryRequest<?> request, SqlLimitResponse sqlRes, SqlTree sqlTree, String logWhereSql) {
|
||||
super(request, sqlRes, sqlTree, true, logWhereSql);
|
||||
this.rsetIndexPositions = createIndexPositions(request, sqlTree);
|
||||
}
|
||||
|
||||
@@ -106,7 +106,7 @@ public class CQueryPredicates {
|
||||
|
||||
private Set<String> orderByIncludes;
|
||||
|
||||
public CQueryPredicates(Binder binder, OrmQueryRequest<?> request) {
|
||||
CQueryPredicates(Binder binder, OrmQueryRequest<?> request) {
|
||||
this.binder = binder;
|
||||
this.request = request;
|
||||
this.query = request.getQuery();
|
||||
@@ -252,7 +252,7 @@ public class CQueryPredicates {
|
||||
}
|
||||
|
||||
// create a copy of the includes required to support the orderBy
|
||||
orderByIncludes = new HashSet<String>(deployParser.getIncludes());
|
||||
orderByIncludes = new HashSet<>(deployParser.getIncludes());
|
||||
|
||||
dbWhere = deriveWhere(deployParser);
|
||||
dbFilterMany = deriveFilterMany(deployParser);
|
||||
@@ -277,7 +277,7 @@ public class CQueryPredicates {
|
||||
/**
|
||||
* Replace the table alias place holders.
|
||||
*/
|
||||
public void parseTableAlias(SqlTreeAlias alias) {
|
||||
void parseTableAlias(SqlTreeAlias alias) {
|
||||
if (dbWhere != null) {
|
||||
// use the where table alias
|
||||
dbWhere = alias.parseWhere(dbWhere);
|
||||
@@ -399,53 +399,53 @@ public class CQueryPredicates {
|
||||
/**
|
||||
* Return the db update set clause for an UpdateQuery.
|
||||
*/
|
||||
public String getDbUpdateClause() {
|
||||
String getDbUpdateClause() {
|
||||
return dbUpdateClause;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the db column version of the combined where clause.
|
||||
*/
|
||||
public String getDbHaving() {
|
||||
String getDbHaving() {
|
||||
return dbHaving;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the db column version of the combined where clause.
|
||||
*/
|
||||
public String getDbWhere() {
|
||||
String getDbWhere() {
|
||||
return dbWhere;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a db filter for filtering many fetch joins.
|
||||
*/
|
||||
public String getDbFilterMany() {
|
||||
String getDbFilterMany() {
|
||||
return dbFilterMany;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the db column version of the order by clause.
|
||||
*/
|
||||
public String getDbOrderBy() {
|
||||
String getDbOrderBy() {
|
||||
return dbOrderBy;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the includes required for the where and order by clause.
|
||||
*/
|
||||
public Set<String> getPredicateIncludes() {
|
||||
Set<String> getPredicateIncludes() {
|
||||
return predicateIncludes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the orderBy includes.
|
||||
*/
|
||||
public Set<String> getOrderByIncludes() {
|
||||
Set<String> getOrderByIncludes() {
|
||||
return orderByIncludes;
|
||||
}
|
||||
|
||||
public String getLogWhereSql() {
|
||||
String getLogWhereSql() {
|
||||
|
||||
if (dbWhere == null && dbFilterMany == null) {
|
||||
return "";
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.sql.SQLException;
|
||||
/**
|
||||
* Executes the select row count query.
|
||||
*/
|
||||
public class CQueryRowCount {
|
||||
class CQueryRowCount {
|
||||
|
||||
/**
|
||||
* The overall find request wrapper object.
|
||||
@@ -54,16 +54,13 @@ public class CQueryRowCount {
|
||||
/**
|
||||
* Create the Sql select based on the request.
|
||||
*/
|
||||
public CQueryRowCount(OrmQueryRequest<?> request, CQueryPredicates predicates, String sql) {
|
||||
CQueryRowCount(OrmQueryRequest<?> request, CQueryPredicates predicates, String sql) {
|
||||
this.request = request;
|
||||
this.query = request.getQuery();
|
||||
this.sql = sql;
|
||||
|
||||
query.setGeneratedSql(sql);
|
||||
|
||||
this.desc = request.getBeanDescriptor();
|
||||
this.predicates = predicates;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -12,7 +12,7 @@ import java.sql.SQLException;
|
||||
/**
|
||||
* Executes the delete query.
|
||||
*/
|
||||
public class CQueryUpdate {
|
||||
class CQueryUpdate {
|
||||
|
||||
private final OrmQueryRequest<?> request;
|
||||
|
||||
@@ -46,7 +46,7 @@ public class CQueryUpdate {
|
||||
/**
|
||||
* Create the Sql select based on the request.
|
||||
*/
|
||||
public CQueryUpdate(String type, OrmQueryRequest<?> request, CQueryPredicates predicates, String sql) {
|
||||
CQueryUpdate(String type, OrmQueryRequest<?> request, CQueryPredicates predicates, String sql) {
|
||||
this.type = type;
|
||||
this.request = request;
|
||||
this.query = request.getQuery();
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.avaje.ebeaninternal.api.SpiQuery;
|
||||
* @param <T> the entity bean type
|
||||
* @author rbygrave
|
||||
*/
|
||||
public abstract class CallableQuery<T> {
|
||||
abstract class CallableQuery<T> {
|
||||
|
||||
protected final SpiQuery<T> query;
|
||||
|
||||
@@ -18,7 +18,7 @@ public abstract class CallableQuery<T> {
|
||||
|
||||
protected final Transaction transaction;
|
||||
|
||||
public CallableQuery(SpiEbeanServer server, SpiQuery<T> query, Transaction t) {
|
||||
CallableQuery(SpiEbeanServer server, SpiQuery<T> query, Transaction t) {
|
||||
this.server = server;
|
||||
this.query = query;
|
||||
this.transaction = t;
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.avaje.ebeaninternal.server.util.ArrayStack;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
||||
public class DefaultDbSqlContext implements DbSqlContext {
|
||||
class DefaultDbSqlContext implements DbSqlContext {
|
||||
|
||||
private static final String COMMA = ", ";
|
||||
|
||||
@@ -20,11 +20,11 @@ public class DefaultDbSqlContext implements DbSqlContext {
|
||||
|
||||
private final String columnAliasPrefix;
|
||||
|
||||
private final ArrayStack<String> tableAliasStack = new ArrayStack<String>();
|
||||
private final ArrayStack<String> tableAliasStack = new ArrayStack<>();
|
||||
|
||||
private final ArrayStack<String> joinStack = new ArrayStack<String>();
|
||||
private final ArrayStack<String> joinStack = new ArrayStack<>();
|
||||
|
||||
private final ArrayStack<String> prefixStack = new ArrayStack<String>();
|
||||
private final ArrayStack<String> prefixStack = new ArrayStack<>();
|
||||
|
||||
private boolean useColumnAlias;
|
||||
|
||||
@@ -54,7 +54,7 @@ public class DefaultDbSqlContext implements DbSqlContext {
|
||||
/**
|
||||
* Construct for SELECT clause (with column alias settings).
|
||||
*/
|
||||
public DefaultDbSqlContext(SqlTreeAlias alias, String tableAliasPlaceHolder,
|
||||
DefaultDbSqlContext(SqlTreeAlias alias, String tableAliasPlaceHolder,
|
||||
String columnAliasPrefix, boolean alwaysUseColumnAlias, CQueryHistorySupport historySupport, CQueryDraftSupport draftSupport) {
|
||||
|
||||
this.alias = alias;
|
||||
@@ -73,7 +73,7 @@ public class DefaultDbSqlContext implements DbSqlContext {
|
||||
|
||||
public void addEncryptedProp(BeanProperty p) {
|
||||
if (encryptedProps == null) {
|
||||
encryptedProps = new ArrayList<BeanProperty>();
|
||||
encryptedProps = new ArrayList<>();
|
||||
}
|
||||
encryptedProps.add(p);
|
||||
}
|
||||
@@ -101,7 +101,7 @@ public class DefaultDbSqlContext implements DbSqlContext {
|
||||
public void addJoin(String type, String table, TableJoinColumn[] cols, String a1, String a2, String inheritance) {
|
||||
|
||||
if (tableJoins == null) {
|
||||
tableJoins = new HashSet<String>();
|
||||
tableJoins = new HashSet<>();
|
||||
}
|
||||
|
||||
String joinKey = table + "-" + a1 + "-" + a2;
|
||||
@@ -213,7 +213,7 @@ public class DefaultDbSqlContext implements DbSqlContext {
|
||||
String converted = StringHelper.replaceString(sqlFormulaJoin, tableAliasPlaceHolder, tableAlias);
|
||||
|
||||
if (formulaJoins == null) {
|
||||
formulaJoins = new HashSet<String>();
|
||||
formulaJoins = new HashSet<>();
|
||||
|
||||
} else if (formulaJoins.contains(converted)) {
|
||||
// skip adding a formula join because
|
||||
|
||||
+2
-2
@@ -74,7 +74,7 @@ public class DefaultRelationalQueryEngine implements RelationalQueryEngine {
|
||||
try {
|
||||
request.executeSql(binder);
|
||||
|
||||
List<SqlRow> rows = new ArrayList<SqlRow>();
|
||||
List<SqlRow> rows = new ArrayList<>();
|
||||
while (request.next()) {
|
||||
rows.add(readRow(request));
|
||||
}
|
||||
@@ -102,7 +102,7 @@ public class DefaultRelationalQueryEngine implements RelationalQueryEngine {
|
||||
/**
|
||||
* Read the row from the ResultSet and return as a MapBean.
|
||||
*/
|
||||
protected SqlRow readRow(RelationalQueryRequest request) throws SQLException {
|
||||
private SqlRow readRow(RelationalQueryRequest request) throws SQLException {
|
||||
return request.createNewRow(dbTrueValue);
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ public class DefaultSqlRow implements SqlRow {
|
||||
* </p>
|
||||
*/
|
||||
public DefaultSqlRow(int initialCapacity, float loadFactor, String dbTrueValue) {
|
||||
this.map = new LinkedHashMap<String, Object>(initialCapacity, loadFactor);
|
||||
this.map = new LinkedHashMap<>(initialCapacity, loadFactor);
|
||||
this.dbTrueValue = dbTrueValue;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ public class QueryFutureIds<T> extends BaseFuture<List<Object>> implements Futur
|
||||
private final CallableQueryIds<T> call;
|
||||
|
||||
public QueryFutureIds(CallableQueryIds<T> call) {
|
||||
super(new FutureTask<List<Object>>(call));
|
||||
super(new FutureTask<>(call));
|
||||
this.call = call;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ public class QueryFutureList<T> extends BaseFuture<List<T>> implements FutureLis
|
||||
private final CallableQueryList<T> call;
|
||||
|
||||
public QueryFutureList(CallableQueryList<T> call) {
|
||||
super(new FutureTask<List<T>>(call));
|
||||
super(new FutureTask<>(call));
|
||||
this.call = call;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ public class QueryFutureRowCount<T> extends BaseFuture<Integer> implements Futur
|
||||
private final CallableQueryRowCount<T> call;
|
||||
|
||||
public QueryFutureRowCount(CallableQueryRowCount<T> call) {
|
||||
super(new FutureTask<Integer>(call));
|
||||
super(new FutureTask<>(call));
|
||||
this.call = call;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,14 +5,14 @@ import com.avaje.ebeaninternal.api.CQueryPlanKey;
|
||||
/**
|
||||
* QueryPlanKey for RawSql queries.
|
||||
*/
|
||||
public class RawSqlQueryPlanKey implements CQueryPlanKey {
|
||||
class RawSqlQueryPlanKey implements CQueryPlanKey {
|
||||
|
||||
private final String sql;
|
||||
private final boolean rawSql;
|
||||
private final boolean rowNumberIncluded;
|
||||
private final String logWhereSql;
|
||||
|
||||
public RawSqlQueryPlanKey(String sql, boolean rawSql, boolean rowNumberIncluded, String logWhereSql) {
|
||||
RawSqlQueryPlanKey(String sql, boolean rawSql, boolean rowNumberIncluded, String logWhereSql) {
|
||||
this.sql = sql;
|
||||
this.rawSql = rawSql;
|
||||
this.rowNumberIncluded = rowNumberIncluded;
|
||||
|
||||
@@ -26,7 +26,7 @@ public class SqlBeanLoad {
|
||||
private final boolean refreshLoading;
|
||||
private final boolean rawSql;
|
||||
|
||||
public SqlBeanLoad(DbReadContext ctx, Class<?> type, EntityBean bean, Mode queryMode) {
|
||||
SqlBeanLoad(DbReadContext ctx, Class<?> type, EntityBean bean, Mode queryMode) {
|
||||
|
||||
this.ctx = ctx;
|
||||
this.rawSql = ctx.isRawSql();
|
||||
|
||||
@@ -11,7 +11,7 @@ import java.util.Set;
|
||||
/**
|
||||
* Represents the SELECT clause part of the SQL query.
|
||||
*/
|
||||
public class SqlTree {
|
||||
class SqlTree {
|
||||
|
||||
private final SqlTreeNode rootNode;
|
||||
|
||||
@@ -48,7 +48,7 @@ public class SqlTree {
|
||||
/**
|
||||
* Create the SqlSelectClause.
|
||||
*/
|
||||
public SqlTree(String summary, SqlTreeNode rootNode, String selectSql, String fromSql, String groupBy, String inheritanceWhereSql,
|
||||
SqlTree(String summary, SqlTreeNode rootNode, String selectSql, String fromSql, String groupBy, String inheritanceWhereSql,
|
||||
BeanProperty[] encryptedProps, BeanPropertyAssocMany<?> manyProperty, Set<String> includes, boolean includeJoins) {
|
||||
|
||||
this.summary = summary;
|
||||
@@ -66,21 +66,21 @@ public class SqlTree {
|
||||
/**
|
||||
* Return true if the query includes joins (not valid for rawSql).
|
||||
*/
|
||||
public boolean isIncludeJoins() {
|
||||
boolean isIncludeJoins() {
|
||||
return includeJoins;
|
||||
}
|
||||
|
||||
/**
|
||||
* Recurse through the tree adding an table alias' for @History entity beans.
|
||||
*/
|
||||
public void addAsOfTableAlias(SpiQuery<?> query) {
|
||||
void addAsOfTableAlias(SpiQuery<?> query) {
|
||||
rootNode.addAsOfTableAlias(query);
|
||||
}
|
||||
|
||||
/**
|
||||
* Recurse through the tree adding soft delete predicates as necessary.
|
||||
*/
|
||||
public void addSoftDeletePredicate(SpiQuery<?> query) {
|
||||
void addSoftDeletePredicate(SpiQuery<?> query) {
|
||||
rootNode.addSoftDeletePredicate(query);
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ public class SqlTree {
|
||||
* Build a select expression chain for RawSql.
|
||||
*/
|
||||
public List<String> buildRawSqlSelectChain() {
|
||||
ArrayList<String> list = new ArrayList<String>();
|
||||
ArrayList<String> list = new ArrayList<>();
|
||||
rootNode.buildRawSqlSelectChain(list);
|
||||
return list;
|
||||
}
|
||||
@@ -103,25 +103,25 @@ public class SqlTree {
|
||||
/**
|
||||
* Return the String for the actual SQL.
|
||||
*/
|
||||
public String getSelectSql() {
|
||||
String getSelectSql() {
|
||||
return selectSql;
|
||||
}
|
||||
|
||||
public String getFromSql() {
|
||||
String getFromSql() {
|
||||
return fromSql;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the groupBy clause.
|
||||
*/
|
||||
public String getGroupBy() {
|
||||
String getGroupBy() {
|
||||
return groupBy;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the where clause for inheritance.
|
||||
*/
|
||||
public String getInheritanceWhereSql() {
|
||||
String getInheritanceWhereSql() {
|
||||
return inheritanceWhereSql;
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ public class SqlTree {
|
||||
return summary;
|
||||
}
|
||||
|
||||
public SqlTreeNode getRootNode() {
|
||||
SqlTreeNode getRootNode() {
|
||||
return rootNode;
|
||||
}
|
||||
|
||||
@@ -140,18 +140,18 @@ public class SqlTree {
|
||||
* Return the property that is associated with the many. There can only be one
|
||||
* per SqlSelect. This can be null.
|
||||
*/
|
||||
public BeanPropertyAssocMany<?> getManyProperty() {
|
||||
BeanPropertyAssocMany<?> getManyProperty() {
|
||||
return manyProperty;
|
||||
}
|
||||
|
||||
public BeanProperty[] getEncryptedProps() {
|
||||
BeanProperty[] getEncryptedProps() {
|
||||
return encryptedProps;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if the query has a many join.
|
||||
*/
|
||||
public boolean hasMany() {
|
||||
boolean hasMany() {
|
||||
return manyProperty != null || rootNode.hasMany();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,32 +13,32 @@ import java.util.TreeSet;
|
||||
/**
|
||||
* Special Map of the logical property joins to table alias.
|
||||
*/
|
||||
public class SqlTreeAlias {
|
||||
class SqlTreeAlias {
|
||||
|
||||
private int counter;
|
||||
|
||||
private int manyWhereCounter;
|
||||
|
||||
private final TreeSet<String> joinProps = new TreeSet<String>();
|
||||
private final TreeSet<String> joinProps = new TreeSet<>();
|
||||
|
||||
private HashSet<String> embeddedPropertyJoins;
|
||||
|
||||
private final TreeSet<String> manyWhereJoinProps = new TreeSet<String>();
|
||||
private final TreeSet<String> manyWhereJoinProps = new TreeSet<>();
|
||||
|
||||
private final HashMap<String, String> aliasMap = new HashMap<String, String>();
|
||||
private final HashMap<String, String> aliasMap = new HashMap<>();
|
||||
|
||||
private final HashMap<String, String> manyWhereAliasMap = new HashMap<String, String>();
|
||||
private final HashMap<String, String> manyWhereAliasMap = new HashMap<>();
|
||||
|
||||
private final String rootTableAlias;
|
||||
|
||||
public SqlTreeAlias(String rootTableAlias) {
|
||||
SqlTreeAlias(String rootTableAlias) {
|
||||
this.rootTableAlias = rootTableAlias;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add joins to support where predicates
|
||||
*/
|
||||
public void addManyWhereJoins(Set<String> manyWhereJoins) {
|
||||
void addManyWhereJoins(Set<String> manyWhereJoins) {
|
||||
if (manyWhereJoins != null) {
|
||||
for (String include : manyWhereJoins) {
|
||||
addPropertyJoin(include, manyWhereJoinProps);
|
||||
@@ -48,7 +48,7 @@ public class SqlTreeAlias {
|
||||
|
||||
private void addEmbeddedPropertyJoin(String embProp) {
|
||||
if (embeddedPropertyJoins == null) {
|
||||
embeddedPropertyJoins = new HashSet<String>();
|
||||
embeddedPropertyJoins = new HashSet<>();
|
||||
}
|
||||
embeddedPropertyJoins.add(embProp);
|
||||
}
|
||||
@@ -85,7 +85,7 @@ public class SqlTreeAlias {
|
||||
/**
|
||||
* Build a set of table alias for the given bean and fetch joined properties.
|
||||
*/
|
||||
public void buildAlias() {
|
||||
void buildAlias() {
|
||||
|
||||
for (String joinProp : joinProps) {
|
||||
calcAlias(joinProp);
|
||||
@@ -125,7 +125,7 @@ public class SqlTreeAlias {
|
||||
/**
|
||||
* Return the table alias for a given property name.
|
||||
*/
|
||||
public String getTableAlias(String prefix) {
|
||||
String getTableAlias(String prefix) {
|
||||
if (prefix == null) {
|
||||
return rootTableAlias;
|
||||
} else {
|
||||
@@ -140,7 +140,7 @@ public class SqlTreeAlias {
|
||||
/**
|
||||
* Return an alias using "Many where joins".
|
||||
*/
|
||||
public String getTableAliasManyWhere(String prefix) {
|
||||
String getTableAliasManyWhere(String prefix) {
|
||||
if (prefix == null) {
|
||||
return rootTableAlias;
|
||||
}
|
||||
@@ -158,7 +158,7 @@ public class SqlTreeAlias {
|
||||
/**
|
||||
* Parse for where clauses that uses "Many where joins"
|
||||
*/
|
||||
public String parseWhere(String clause) {
|
||||
String parseWhere(String clause) {
|
||||
clause = parseRootAlias(clause);
|
||||
clause = parseAliasMap(clause, manyWhereAliasMap);
|
||||
return parseAliasMap(clause, aliasMap);
|
||||
@@ -211,7 +211,7 @@ public class SqlTreeAlias {
|
||||
/**
|
||||
* Return true if there are joins included in the query.
|
||||
*/
|
||||
public boolean isIncludeJoins() {
|
||||
boolean isIncludeJoins() {
|
||||
return !aliasMap.isEmpty() || !manyWhereAliasMap.isEmpty();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ public class SqlTreeBuilder {
|
||||
|
||||
private final DefaultDbSqlContext ctx;
|
||||
|
||||
private final HashSet<String> selectIncludes = new HashSet<String>();
|
||||
private final HashSet<String> selectIncludes = new HashSet<>();
|
||||
|
||||
private final ManyWhereJoins manyWhereJoins;
|
||||
|
||||
@@ -139,7 +139,7 @@ public class SqlTreeBuilder {
|
||||
encryptedProps = ctx.getEncryptedProps();
|
||||
}
|
||||
|
||||
boolean includeJoins = (alias == null) ? false : alias.isIncludeJoins();
|
||||
boolean includeJoins = alias != null && alias.isIncludeJoins();
|
||||
|
||||
return new SqlTree(summary.toString(), rootNode, selectSql, fromSql, groupBy, inheritanceWhereSql, encryptedProps,
|
||||
manyProperty, queryDetail.getFetchPaths(), includeJoins);
|
||||
@@ -216,7 +216,7 @@ public class SqlTreeBuilder {
|
||||
private SqlTreeNode buildSelectChain(String prefix, BeanPropertyAssoc<?> prop,
|
||||
BeanDescriptor<?> desc, List<SqlTreeNode> joinList) {
|
||||
|
||||
List<SqlTreeNode> myJoinList = new ArrayList<SqlTreeNode>();
|
||||
List<SqlTreeNode> myJoinList = new ArrayList<>();
|
||||
|
||||
BeanPropertyAssocOne<?>[] ones = desc.propertiesOne();
|
||||
for (int i = 0; i < ones.length; i++) {
|
||||
@@ -468,8 +468,6 @@ public class SqlTreeBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
selectProps.setTableJoins(desc.tableJoins());
|
||||
|
||||
InheritInfo inheritInfo = desc.getInheritInfo();
|
||||
if (inheritInfo != null) {
|
||||
// add sub type properties
|
||||
@@ -542,12 +540,12 @@ public class SqlTreeBuilder {
|
||||
/**
|
||||
* Contains the 'root' extra joins. We only return the roots back.
|
||||
*/
|
||||
private final Map<String, SqlTreeNodeExtraJoin> joinRegister = new HashMap<String, SqlTreeNodeExtraJoin>();
|
||||
private final Map<String, SqlTreeNodeExtraJoin> joinRegister = new HashMap<>();
|
||||
|
||||
/**
|
||||
* Register of all the extra join nodes.
|
||||
*/
|
||||
private final Map<String, SqlTreeNodeExtraJoin> rootRegister = new HashMap<String, SqlTreeNodeExtraJoin>();
|
||||
private final Map<String, SqlTreeNodeExtraJoin> rootRegister = new HashMap<>();
|
||||
|
||||
private final BeanDescriptor<?> desc;
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@ class SqlTreeNodeBean implements SqlTreeNode {
|
||||
|
||||
BeanPropertyAssocMany<?>[] manys = desc.propertiesMany();
|
||||
|
||||
HashMap<String, String> m = new HashMap<String, String>();
|
||||
HashMap<String, String> m = new HashMap<>();
|
||||
for (int i = 0; i < manys.length; i++) {
|
||||
String name = manys[i].getName();
|
||||
m.put(name, getPath(prefix, name));
|
||||
@@ -190,7 +190,7 @@ class SqlTreeNodeBean implements SqlTreeNode {
|
||||
Timestamp end = ctx.getDataReader().getTimestamp();
|
||||
T bean = (T) load(ctx, null, null);
|
||||
|
||||
return new Version<T>(bean, start, end);
|
||||
return new Version<>(bean, start, end);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -77,7 +77,7 @@ class SqlTreeNodeExtraJoin implements SqlTreeNode {
|
||||
* This means we need to add distinct to the sql query.
|
||||
* </p>
|
||||
*/
|
||||
public boolean isManyJoin() {
|
||||
boolean isManyJoin() {
|
||||
return manyJoin;
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ class SqlTreeNodeExtraJoin implements SqlTreeNode {
|
||||
|
||||
public void addChild(SqlTreeNodeExtraJoin child) {
|
||||
if (children == null) {
|
||||
children = new ArrayList<SqlTreeNodeExtraJoin>();
|
||||
children = new ArrayList<>();
|
||||
}
|
||||
children.add(child);
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ class SqlTreeNodeManyWhereJoin implements SqlTreeNode {
|
||||
*/
|
||||
private final SqlJoinType manyJoinType;
|
||||
|
||||
public SqlTreeNodeManyWhereJoin(String prefix, BeanPropertyAssoc<?> prop, SqlJoinType manyJoinType) {
|
||||
SqlTreeNodeManyWhereJoin(String prefix, BeanPropertyAssoc<?> prop, SqlJoinType manyJoinType) {
|
||||
|
||||
this.nodeBeanProp = prop;
|
||||
this.prefix = prefix;
|
||||
@@ -80,7 +80,7 @@ class SqlTreeNodeManyWhereJoin implements SqlTreeNode {
|
||||
* Join to base table for this node. This includes a join to the
|
||||
* intersection table if this is a ManyToMany node.
|
||||
*/
|
||||
public void appendFromBaseTable(DbSqlContext ctx, SqlJoinType joinType) {
|
||||
void appendFromBaseTable(DbSqlContext ctx, SqlJoinType joinType) {
|
||||
|
||||
String alias = ctx.getTableAliasManyWhere(prefix);
|
||||
String parentAlias = ctx.getTableAliasManyWhere(parentPrefix);
|
||||
|
||||
@@ -18,7 +18,7 @@ final class SqlTreeNodeRoot extends SqlTreeNodeBean {
|
||||
/**
|
||||
* Specify for SqlSelect to include an Id property or not.
|
||||
*/
|
||||
public SqlTreeNodeRoot(BeanDescriptor<?> desc, SqlTreeProperties props, List<SqlTreeNode> myList, boolean withId,
|
||||
SqlTreeNodeRoot(BeanDescriptor<?> desc, SqlTreeProperties props, List<SqlTreeNode> myList, boolean withId,
|
||||
TableJoin includeJoin, BeanPropertyAssocMany<?> many, SpiQuery.TemporalMode temporalMode, boolean disableLazyLoad) {
|
||||
|
||||
super(desc, props, myList, withId, many, temporalMode, disableLazyLoad);
|
||||
|
||||
@@ -1,45 +1,40 @@
|
||||
package com.avaje.ebeaninternal.server.query;
|
||||
|
||||
import com.avaje.ebeaninternal.api.ManyWhereJoins;
|
||||
import com.avaje.ebeaninternal.server.deploy.BeanProperty;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
|
||||
import com.avaje.ebeaninternal.api.ManyWhereJoins;
|
||||
import com.avaje.ebeaninternal.server.deploy.BeanProperty;
|
||||
import com.avaje.ebeaninternal.server.deploy.TableJoin;
|
||||
|
||||
/**
|
||||
* The select properties for a node in the SqlTree.
|
||||
*/
|
||||
public class SqlTreeProperties {
|
||||
|
||||
private static final TableJoin[] EMPTY_TABLE_JOINS = new TableJoin[0];
|
||||
|
||||
/**
|
||||
* True if this node of the tree should have read only entity beans.
|
||||
*/
|
||||
private boolean readOnly;
|
||||
|
||||
private TableJoin[] tableJoins = EMPTY_TABLE_JOINS;
|
||||
|
||||
/**
|
||||
* The bean properties in order.
|
||||
*/
|
||||
private final List<BeanProperty> propsList = new ArrayList<BeanProperty>();
|
||||
private final List<BeanProperty> propsList = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Maintain a list of property names to detect embedded bean additions.
|
||||
*/
|
||||
private final LinkedHashSet<String> propNames = new LinkedHashSet<String>();
|
||||
private final LinkedHashSet<String> propNames = new LinkedHashSet<>();
|
||||
|
||||
private boolean allProperties;
|
||||
|
||||
private boolean aggregation;
|
||||
|
||||
public SqlTreeProperties() {
|
||||
SqlTreeProperties() {
|
||||
}
|
||||
|
||||
public boolean containsProperty(String propName) {
|
||||
boolean containsProperty(String propName) {
|
||||
return propNames.contains(propName);
|
||||
}
|
||||
|
||||
@@ -59,7 +54,7 @@ public class SqlTreeProperties {
|
||||
return propsList.toArray(new BeanProperty[propsList.size()]);
|
||||
}
|
||||
|
||||
public boolean isPartialObject() {
|
||||
boolean isPartialObject() {
|
||||
return !allProperties;
|
||||
}
|
||||
|
||||
@@ -71,15 +66,7 @@ public class SqlTreeProperties {
|
||||
this.readOnly = readOnly;
|
||||
}
|
||||
|
||||
public TableJoin[] getTableJoins() {
|
||||
return tableJoins;
|
||||
}
|
||||
|
||||
public void setTableJoins(TableJoin[] tableJoins) {
|
||||
this.tableJoins = tableJoins;
|
||||
}
|
||||
|
||||
public void setAllProperties() {
|
||||
void setAllProperties() {
|
||||
this.allProperties = true;
|
||||
}
|
||||
|
||||
@@ -89,7 +76,7 @@ public class SqlTreeProperties {
|
||||
* Return true if a Sql distinct is required.
|
||||
* </p>
|
||||
*/
|
||||
public boolean requireSqlDistinct(ManyWhereJoins manyWhereJoins) {
|
||||
boolean requireSqlDistinct(ManyWhereJoins manyWhereJoins) {
|
||||
String joinProperty = aggregationJoin();
|
||||
if (joinProperty != null) {
|
||||
aggregation = true;
|
||||
|
||||
Reference in New Issue
Block a user