Search in sources :

Example 11 with SqlClause

use of org.dbflute.cbean.sqlclause.SqlClause in project dbflute-core by dbflute.

the class HpDerivingSubQueryInfo method extractDerivingColumn.

// ===================================================================================
// Meta Provider
// =============
public SpecifiedColumn extractDerivingColumn() {
    final SqlClause subQuerySqlClause = _derivedReferrer.getSubQuerySqlClause();
    final SpecifiedColumn specifiedColumn = subQuerySqlClause.getSpecifiedColumnAsOne();
    if (specifiedColumn != null) {
        return specifiedColumn;
    }
    // nested
    return subQuerySqlClause.getSpecifiedDerivingColumnAsOne();
}
Also used : SqlClause(org.dbflute.cbean.sqlclause.SqlClause) SpecifiedColumn(org.dbflute.cbean.dream.SpecifiedColumn)

Example 12 with SqlClause

use of org.dbflute.cbean.sqlclause.SqlClause in project dbflute-core by dbflute.

the class HpDerivingSubQueryInfo method extractDerivingColumnInfo.

public ColumnInfo extractDerivingColumnInfo() {
    final SqlClause subQuerySqlClause = _derivedReferrer.getSubQuerySqlClause();
    final ColumnInfo columnInfo = subQuerySqlClause.getSpecifiedColumnInfoAsOne();
    if (columnInfo != null) {
        return columnInfo;
    }
    // nested
    return subQuerySqlClause.getSpecifiedDerivingColumnInfoAsOne();
}
Also used : SqlClause(org.dbflute.cbean.sqlclause.SqlClause) ColumnInfo(org.dbflute.dbmeta.info.ColumnInfo)

Example 13 with SqlClause

use of org.dbflute.cbean.sqlclause.SqlClause in project dbflute-core by dbflute.

the class SpecifyColumnRequiredChecker method checkSpecifyColumnRequiredIfNeeds.

// ===================================================================================
// Check
// =====
public void checkSpecifyColumnRequiredIfNeeds(ConditionBean cb, Consumer<Set<String>> thrower) {
    // cannot embed this to SQL clause because of too complex
    // so simple implementation like this:
    final SqlClause sqlClause = cb.getSqlClause();
    final Set<String> nonSpecifiedAliasSet = new LinkedHashSet<>();
    doCheckBasePointTable(cb, sqlClause, nonSpecifiedAliasSet);
    doCheckRelationTable(sqlClause, nonSpecifiedAliasSet);
    if (!nonSpecifiedAliasSet.isEmpty()) {
        handleNonSpecified(thrower, nonSpecifiedAliasSet);
    }
}
Also used : LinkedHashSet(java.util.LinkedHashSet) SqlClause(org.dbflute.cbean.sqlclause.SqlClause)

Example 14 with SqlClause

use of org.dbflute.cbean.sqlclause.SqlClause in project dbflute-core by dbflute.

the class SelectCBExecution method processPagingSelectAndQuerySplit.

// ===================================================================================
// Paging Select and Query Split
// =============================
protected Object processPagingSelectAndQuerySplit(Object[] args, ConditionBean cb) {
    if (!cb.canPagingSelectAndQuerySplit()) {
        return null;
    }
    if (!cb.isFetchScopeEffective()) {
        return null;
    }
    final DBMeta dbmeta = cb.asDBMeta();
    final PrimaryInfo primaryInfo = dbmeta.getPrimaryInfo();
    if (primaryInfo.isCompoundKey()) {
        // basically no way, already checked
        return null;
    }
    final ColumnInfo pkColumn = primaryInfo.getFirstColumn();
    final SqlClause sqlClause = cb.getSqlClause();
    final List<Object> pkList = doSplitSelectFirst(args, cb, dbmeta, sqlClause);
    if (pkList == null) {
        // no way just in case
        return null;
    }
    if (pkList.isEmpty()) {
        return pkList;
    }
    return doSplitSelectSecond(args, cb, pkColumn, sqlClause, pkList);
}
Also used : DBMeta(org.dbflute.dbmeta.DBMeta) SqlClause(org.dbflute.cbean.sqlclause.SqlClause) ColumnInfo(org.dbflute.dbmeta.info.ColumnInfo) PrimaryInfo(org.dbflute.dbmeta.info.PrimaryInfo)

Example 15 with SqlClause

use of org.dbflute.cbean.sqlclause.SqlClause in project dbflute-core by dbflute.

the class AbstractConditionQuery method doRegisterSpecifyDerivedReferrer.

protected void doRegisterSpecifyDerivedReferrer(String function, final ConditionQuery subQuery, String columnDbName, String relatedColumnDbName, String propertyName, String referrerPropertyName, String aliasName, DerivedReferrerOption option) {
    assertFunctionNotNull("SpecifyDerivedReferrer", columnDbName, function);
    assertSubQueryNotNull("SpecifyDerivedReferrer", columnDbName, subQuery);
    option.xacceptBaseCB(xgetBaseCB());
    if (isDerivedReferrerSelectAllPossible(subQuery, option)) {
        createCBExThrower().throwSpecifyDerivedReferrerSelectAllPossibleException(function, subQuery, aliasName);
    }
    final SubQueryPath subQueryPath = new SubQueryPath(xgetLocation(propertyName));
    final GeneralColumnRealNameProvider localRealNameProvider = new GeneralColumnRealNameProvider();
    final int subQueryLevel = subQuery.xgetSqlClause().getSubQueryLevel();
    final SqlClause subQueryClause = subQuery.xgetSqlClause();
    final String subQueryIdentity = propertyName + "[" + subQueryLevel + "]";
    final ColumnSqlNameProvider subQuerySqlNameProvider = dbName -> subQuery.toColumnSqlName(dbName);
    final DBMeta subQueryDBMeta = findDBMeta(subQuery.asTableDbName());
    final GearedCipherManager cipherManager = xgetSqlClause().getGearedCipherManager();
    final String mainSubQueryIdentity = propertyName + "[" + subQueryLevel + ":subquerymain]";
    final SpecifyDerivedReferrer derivedReferrer = option.createSpecifyDerivedReferrer(subQueryPath, localRealNameProvider, subQuerySqlNameProvider, subQueryLevel, subQueryClause, subQueryIdentity, subQueryDBMeta, cipherManager, mainSubQueryIdentity, aliasName);
    xregisterParameterOption(option);
    final String correlatedFixedCondition = xbuildReferrerCorrelatedFixedCondition(subQuery, referrerPropertyName);
    final String clause = derivedReferrer.buildDerivedReferrer(function, columnDbName, relatedColumnDbName, correlatedFixedCondition, option);
    final HpDerivingSubQueryInfo subQueryInfo = xcreateDerivingSubQueryInfo(function, aliasName, clause, derivedReferrer);
    xgetSqlClause().specifyDerivingSubQuery(subQueryInfo);
}
Also used : ColumnRealNameProvider(org.dbflute.dbmeta.name.ColumnRealNameProvider) DerivedReferrerOptionFactory(org.dbflute.cbean.coption.DerivedReferrerOptionFactory) UnionClauseProvider(org.dbflute.cbean.sqlclause.union.UnionClauseProvider) SpecifiedColumn(org.dbflute.cbean.dream.SpecifiedColumn) ConditionKeyInScope(org.dbflute.cbean.ckey.ConditionKeyInScope) Date(java.util.Date) ParameterOption(org.dbflute.cbean.coption.ParameterOption) LoggerFactory(org.slf4j.LoggerFactory) OrderByElement(org.dbflute.cbean.sqlclause.orderby.OrderByElement) QueryClause(org.dbflute.cbean.sqlclause.query.QueryClause) ExceptionMessageBuilder(org.dbflute.helper.message.ExceptionMessageBuilder) ColumnSqlNameProvider(org.dbflute.dbmeta.name.ColumnSqlNameProvider) SimpleMapPmb(org.dbflute.twowaysql.pmbean.SimpleMapPmb) ColumnRealName(org.dbflute.dbmeta.name.ColumnRealName) PrimaryInfo(org.dbflute.dbmeta.info.PrimaryInfo) OrScopeQueryAndPartUnsupportedOperationException(org.dbflute.exception.OrScopeQueryAndPartUnsupportedOperationException) Map(java.util.Map) HpInvalidQueryInfo(org.dbflute.cbean.chelper.HpInvalidQueryInfo) DfBeanDescFactory(org.dbflute.helper.beans.factory.DfBeanDescFactory) ManualOrderOption(org.dbflute.cbean.ordering.ManualOrderOption) ConditionOption(org.dbflute.cbean.coption.ConditionOption) FixedConditionLazyChecker(org.dbflute.cbean.sqlclause.join.FixedConditionLazyChecker) Method(java.lang.reflect.Method) RangeOfOption(org.dbflute.cbean.coption.RangeOfOption) DfCollectionUtil(org.dbflute.util.DfCollectionUtil) SubQuery(org.dbflute.cbean.scoping.SubQuery) TimeZone(java.util.TimeZone) IndependentProcessor(org.dbflute.helper.function.IndependentProcessor) Timestamp(java.sql.Timestamp) Collection(java.util.Collection) LikeSearchOption(org.dbflute.cbean.coption.LikeSearchOption) QueryModeProvider(org.dbflute.cbean.cvalue.ConditionValue.QueryModeProvider) FixedConditionResolver(org.dbflute.cbean.sqlclause.join.FixedConditionResolver) ScalarConditionOption(org.dbflute.cbean.coption.ScalarConditionOption) DBMeta(org.dbflute.dbmeta.DBMeta) FunCustodial(org.dbflute.FunCustodial) DfBeanDesc(org.dbflute.helper.beans.DfBeanDesc) Classification(org.dbflute.jdbc.Classification) List(java.util.List) ColumnInfo(org.dbflute.dbmeta.info.ColumnInfo) ExistsReferrer(org.dbflute.cbean.sqlclause.subquery.ExistsReferrer) LocalDate(java.time.LocalDate) Entry(java.util.Map.Entry) SqlClauseMySql(org.dbflute.cbean.sqlclause.SqlClauseMySql) DBMetaProvider(org.dbflute.dbmeta.DBMetaProvider) DBFluteSystem(org.dbflute.system.DBFluteSystem) ColumnFunctionCipher(org.dbflute.cbean.cipher.ColumnFunctionCipher) DateConditionAdjuster(org.dbflute.cbean.garnish.datefitting.DateConditionAdjuster) ConditionKeyPrepareResult(org.dbflute.cbean.ckey.ConditionKeyPrepareResult) ScalarCondition(org.dbflute.cbean.sqlclause.subquery.ScalarCondition) HpFixedConditionQueryResolver(org.dbflute.cbean.chelper.HpFixedConditionQueryResolver) LocalDateTime(java.time.LocalDateTime) IllegalConditionBeanOperationException(org.dbflute.exception.IllegalConditionBeanOperationException) HashMap(java.util.HashMap) ReflectionFailureException(org.dbflute.util.DfReflectionUtil.ReflectionFailureException) DerivedReferrerOption(org.dbflute.cbean.coption.DerivedReferrerOption) ManualOrderOptionCall(org.dbflute.cbean.ordering.ManualOrderOptionCall) GearedCipherManager(org.dbflute.cbean.cipher.GearedCipherManager) ConditionInvokingFailureException(org.dbflute.exception.ConditionInvokingFailureException) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) SqlClauseOracle(org.dbflute.cbean.sqlclause.SqlClauseOracle) HpQDRSetupper(org.dbflute.cbean.chelper.HpQDRSetupper) ExtensionOperand(org.dbflute.dbway.ExtensionOperand) HpQDRParameter(org.dbflute.cbean.chelper.HpQDRParameter) PartitionByProvider(org.dbflute.cbean.sqlclause.subquery.ScalarCondition.PartitionByProvider) DfReflectionUtil(org.dbflute.util.DfReflectionUtil) QueryUsedAliasInfo(org.dbflute.cbean.sqlclause.query.QueryUsedAliasInfo) ShortCharHandlingMode(org.dbflute.jdbc.ShortCharHandlingMode) Srl(org.dbflute.util.Srl) QueryClauseArranger(org.dbflute.cbean.sqlclause.query.QueryClauseArranger) ColumnSqlName(org.dbflute.dbmeta.name.ColumnSqlName) ConditionValue(org.dbflute.cbean.cvalue.ConditionValue) RelationInfo(org.dbflute.dbmeta.info.RelationInfo) ForeignInfo(org.dbflute.dbmeta.info.ForeignInfo) FromToOption(org.dbflute.cbean.coption.FromToOption) Logger(org.slf4j.Logger) Iterator(java.util.Iterator) HpSLCFunction(org.dbflute.cbean.chelper.HpSLCFunction) SpecifyDerivedReferrer(org.dbflute.cbean.sqlclause.subquery.SpecifyDerivedReferrer) WayOfMySQL(org.dbflute.dbway.WayOfMySQL) QueryDerivedReferrer(org.dbflute.cbean.sqlclause.subquery.QueryDerivedReferrer) ConditionKey(org.dbflute.cbean.ckey.ConditionKey) ConditionOptionCall(org.dbflute.cbean.coption.ConditionOptionCall) HpSLCCustomized(org.dbflute.cbean.chelper.HpSLCCustomized) ConditionBeanExceptionThrower(org.dbflute.cbean.exception.ConditionBeanExceptionThrower) HpDerivingSubQueryInfo(org.dbflute.cbean.chelper.HpDerivingSubQueryInfo) SubQueryPath(org.dbflute.cbean.sqlclause.subquery.SubQueryPath) ReferrerInfo(org.dbflute.dbmeta.info.ReferrerInfo) DfTypeUtil(org.dbflute.util.DfTypeUtil) HpQDRFunction(org.dbflute.cbean.chelper.HpQDRFunction) SqlClause(org.dbflute.cbean.sqlclause.SqlClause) InScopeRelation(org.dbflute.cbean.sqlclause.subquery.InScopeRelation) DBMeta(org.dbflute.dbmeta.DBMeta) SubQueryPath(org.dbflute.cbean.sqlclause.subquery.SubQueryPath) SqlClause(org.dbflute.cbean.sqlclause.SqlClause) HpDerivingSubQueryInfo(org.dbflute.cbean.chelper.HpDerivingSubQueryInfo) ColumnSqlNameProvider(org.dbflute.dbmeta.name.ColumnSqlNameProvider) SpecifyDerivedReferrer(org.dbflute.cbean.sqlclause.subquery.SpecifyDerivedReferrer) GearedCipherManager(org.dbflute.cbean.cipher.GearedCipherManager)

Aggregations

SqlClause (org.dbflute.cbean.sqlclause.SqlClause)20 ColumnInfo (org.dbflute.dbmeta.info.ColumnInfo)11 SpecifiedColumn (org.dbflute.cbean.dream.SpecifiedColumn)8 Map (java.util.Map)6 HpDerivingSubQueryInfo (org.dbflute.cbean.chelper.HpDerivingSubQueryInfo)6 Method (java.lang.reflect.Method)5 Timestamp (java.sql.Timestamp)5 LocalDate (java.time.LocalDate)5 LocalDateTime (java.time.LocalDateTime)5 ArrayList (java.util.ArrayList)5 Collection (java.util.Collection)5 Date (java.util.Date)5 HashMap (java.util.HashMap)5 Iterator (java.util.Iterator)5 LinkedHashMap (java.util.LinkedHashMap)5 List (java.util.List)5 Entry (java.util.Map.Entry)5 TimeZone (java.util.TimeZone)5 FunCustodial (org.dbflute.FunCustodial)5 HpFixedConditionQueryResolver (org.dbflute.cbean.chelper.HpFixedConditionQueryResolver)5