Search in sources :

Example 6 with ColumnsFactory

use of org.sql.generation.api.grammar.factories.ColumnsFactory in project qi4j-sdk by Qi4j.

the class PostgreSQLIndexing method createInsertStatementWithAutoGeneratedIDForEntitiesTable.

@Override
protected InsertStatement createInsertStatementWithAutoGeneratedIDForEntitiesTable(String schemaName, String tableName, SQLVendor vendor) {
    ModificationFactory m = vendor.getModificationFactory();
    LiteralFactory l = vendor.getLiteralFactory();
    TableReferenceFactory t = vendor.getTableReferenceFactory();
    ColumnsFactory c = vendor.getColumnsFactory();
    ColumnSourceByValuesBuilder columnBuilder = m.columnSourceByValues();
    columnBuilder.addValues(ValueSource.Default.INSTANCE);
    for (Integer x = 1; x < AMOUNT_OF_COLUMNS_IN_ENTITY_TABLE; ++x) {
        columnBuilder.addValues(l.param());
    }
    return ((PgSQLInsertStatementBuilder) m.insert()).setReturningClause(vendor.getQueryFactory().columnsBuilder().addUnnamedColumns(c.colName(DBNames.ENTITY_TABLE_PK_COLUMN_NAME)).createExpression()).setTableName(t.tableName(schemaName, tableName)).setColumnSource(columnBuilder.createExpression()).createExpression();
}
Also used : ModificationFactory(org.sql.generation.api.grammar.factories.ModificationFactory) TableReferenceFactory(org.sql.generation.api.grammar.factories.TableReferenceFactory) ColumnsFactory(org.sql.generation.api.grammar.factories.ColumnsFactory) ColumnSourceByValuesBuilder(org.sql.generation.api.grammar.builders.modification.ColumnSourceByValuesBuilder) LiteralFactory(org.sql.generation.api.grammar.factories.LiteralFactory)

Example 7 with ColumnsFactory

use of org.sql.generation.api.grammar.factories.ColumnsFactory in project qi4j-sdk by Qi4j.

the class AbstractSQLIndexing method createQueryEntityPkByIdentityStatement.

protected QueryExpression createQueryEntityPkByIdentityStatement(String schemaName, SQLVendor vendor) {
    BooleanFactory b = vendor.getBooleanFactory();
    LiteralFactory l = vendor.getLiteralFactory();
    ColumnsFactory c = vendor.getColumnsFactory();
    TableReferenceFactory t = vendor.getTableReferenceFactory();
    QueryFactory q = vendor.getQueryFactory();
    // "SELECT " + ENTITY_TABLE_PK_COLUMN_NAME + "\n" + //
    // "FROM " + "%s" + "." + ENTITY_TABLE_NAME + "\n" + //
    // "WHERE " + ENTITY_TABLE_IDENTITY_COLUMN_NAME + " = ?" + "\n" + //
    // ";" //
    QuerySpecificationBuilder query = q.querySpecificationBuilder();
    query.getSelect().addUnnamedColumns(c.colName(DBNames.ENTITY_TABLE_PK_COLUMN_NAME));
    query.getFrom().addTableReferences(t.tableBuilder(t.table(t.tableName(schemaName, DBNames.ENTITY_TABLE_NAME))));
    query.getWhere().reset(b.eq(c.colName(DBNames.ENTITY_TABLE_IDENTITY_COLUMN_NAME), l.param()));
    return q.createQuery(query.createExpression());
}
Also used : TableReferenceFactory(org.sql.generation.api.grammar.factories.TableReferenceFactory) QueryFactory(org.sql.generation.api.grammar.factories.QueryFactory) ColumnsFactory(org.sql.generation.api.grammar.factories.ColumnsFactory) QuerySpecificationBuilder(org.sql.generation.api.grammar.builders.query.QuerySpecificationBuilder) BooleanFactory(org.sql.generation.api.grammar.factories.BooleanFactory) LiteralFactory(org.sql.generation.api.grammar.factories.LiteralFactory)

Example 8 with ColumnsFactory

use of org.sql.generation.api.grammar.factories.ColumnsFactory in project qi4j-sdk by Qi4j.

the class AbstractSQLIndexing method createAssoInsert.

protected InsertStatement createAssoInsert(QNameInfo qNameInfo, SQLVendor vendor, Integer amountOfParams) {
    ModificationFactory m = vendor.getModificationFactory();
    LiteralFactory l = vendor.getLiteralFactory();
    ColumnsFactory c = vendor.getColumnsFactory();
    QueryFactory q = vendor.getQueryFactory();
    TableReferenceFactory t = vendor.getTableReferenceFactory();
    BooleanFactory b = vendor.getBooleanFactory();
    String schemaName = this._state.schemaName().get();
    // "INSERT INTO " + "%s" + "." + "%s" + "\n" + //
    // "SELECT " + "?, " + "?, " + ENTITY_TABLE_PK_COLUMN_NAME + "\n" + // <-- here is 4 params
    // when many-asso
    // "FROM " + "%s" + "." + ENTITY_TABLE_NAME + "\n" + //
    // "WHERE " + ENTITY_TABLE_IDENTITY_COLUMN_NAME + " = " + "?";
    QuerySpecificationBuilder qBuilder = q.querySpecificationBuilder();
    for (Integer x = 0; x < amountOfParams; ++x) {
        qBuilder.getSelect().addUnnamedColumns(c.colExp(l.param()));
    }
    qBuilder.getSelect().addUnnamedColumns(c.colName(DBNames.ENTITY_TABLE_PK_COLUMN_NAME));
    qBuilder.getFrom().addTableReferences(t.tableBuilder(t.table(t.tableName(schemaName, DBNames.ENTITY_TABLE_NAME))));
    qBuilder.getWhere().reset(b.eq(c.colName(DBNames.ENTITY_TABLE_IDENTITY_COLUMN_NAME), l.param()));
    return m.insert().setTableName(t.tableName(schemaName, qNameInfo.getTableName())).setColumnSource(m.columnSourceByQuery(q.createQuery(qBuilder.createExpression()))).createExpression();
}
Also used : ModificationFactory(org.sql.generation.api.grammar.factories.ModificationFactory) TableReferenceFactory(org.sql.generation.api.grammar.factories.TableReferenceFactory) QueryFactory(org.sql.generation.api.grammar.factories.QueryFactory) ColumnsFactory(org.sql.generation.api.grammar.factories.ColumnsFactory) QuerySpecificationBuilder(org.sql.generation.api.grammar.builders.query.QuerySpecificationBuilder) BooleanFactory(org.sql.generation.api.grammar.factories.BooleanFactory) LiteralFactory(org.sql.generation.api.grammar.factories.LiteralFactory)

Example 9 with ColumnsFactory

use of org.sql.generation.api.grammar.factories.ColumnsFactory in project qi4j-sdk by Qi4j.

the class AbstractSQLIndexing method createUpdateEntityTableStatement.

protected UpdateStatement createUpdateEntityTableStatement(String schemaName, SQLVendor vendor) {
    ModificationFactory m = vendor.getModificationFactory();
    BooleanFactory b = vendor.getBooleanFactory();
    LiteralFactory l = vendor.getLiteralFactory();
    ColumnsFactory c = vendor.getColumnsFactory();
    TableReferenceFactory t = vendor.getTableReferenceFactory();
    // "UPDATE " + "%s" + "." + ENTITY_TABLE_NAME + "\n" + //
    // "SET " + ENTITY_TABLE_IDENTITY_COLUMN_NAME + " = ?, " + //
    // ENTITY_TABLE_MODIFIED_COLUMN_NAME + " = ?, " + //
    // ENTITY_TABLE_VERSION_COLUMN_NAME + " = ?, " + //
    // ENTITY_TABLE_APPLICATION_VERSION_COLUMN_NAME + " = ?" + "\n" + //
    // "WHERE " + ENTITY_TABLE_PK_COLUMN_NAME + " = ?" + "\n" + //
    // ";" //
    UpdateSourceByExpression paramSource = m.updateSourceByExp(l.param());
    UpdateBySearchBuilder builder = m.updateBySearch();
    builder.setTargetTable(m.createTargetTable(t.tableName(schemaName, DBNames.ENTITY_TABLE_NAME))).addSetClauses(m.setClause(DBNames.ENTITY_TABLE_IDENTITY_COLUMN_NAME, paramSource), m.setClause(DBNames.ENTITY_TABLE_MODIFIED_COLUMN_NAME, paramSource), m.setClause(DBNames.ENTITY_TABLE_VERSION_COLUMN_NAME, paramSource), m.setClause(DBNames.ENTITY_TABLE_APPLICATION_VERSION_COLUMN_NAME, paramSource)).getWhereBuilder().reset(b.eq(c.colName(DBNames.ENTITY_TABLE_PK_COLUMN_NAME), l.param()));
    return builder.createExpression();
}
Also used : UpdateSourceByExpression(org.sql.generation.api.grammar.modification.UpdateSourceByExpression) ModificationFactory(org.sql.generation.api.grammar.factories.ModificationFactory) TableReferenceFactory(org.sql.generation.api.grammar.factories.TableReferenceFactory) UpdateBySearchBuilder(org.sql.generation.api.grammar.builders.modification.UpdateBySearchBuilder) ColumnsFactory(org.sql.generation.api.grammar.factories.ColumnsFactory) BooleanFactory(org.sql.generation.api.grammar.factories.BooleanFactory) LiteralFactory(org.sql.generation.api.grammar.factories.LiteralFactory)

Example 10 with ColumnsFactory

use of org.sql.generation.api.grammar.factories.ColumnsFactory in project qi4j-sdk by Qi4j.

the class AbstractSQLQuerying method getBuilderForPredicate.

protected QuerySpecificationBuilder getBuilderForPredicate(SQLVendor vendor, String tableAlias) {
    QueryFactory q = vendor.getQueryFactory();
    ColumnsFactory c = vendor.getColumnsFactory();
    QuerySpecificationBuilder result = q.querySpecificationBuilder();
    result.getSelect().setSetQuantifier(SetQuantifier.DISTINCT).addUnnamedColumns(c.colName(tableAlias, DBNames.ENTITY_TABLE_PK_COLUMN_NAME), c.colName(tableAlias, DBNames.ENTITY_TABLE_IDENTITY_COLUMN_NAME));
    return result;
}
Also used : QueryFactory(org.sql.generation.api.grammar.factories.QueryFactory) ColumnsFactory(org.sql.generation.api.grammar.factories.ColumnsFactory) QuerySpecificationBuilder(org.sql.generation.api.grammar.builders.query.QuerySpecificationBuilder)

Aggregations

ColumnsFactory (org.sql.generation.api.grammar.factories.ColumnsFactory)13 TableReferenceFactory (org.sql.generation.api.grammar.factories.TableReferenceFactory)10 BooleanFactory (org.sql.generation.api.grammar.factories.BooleanFactory)9 LiteralFactory (org.sql.generation.api.grammar.factories.LiteralFactory)8 QueryFactory (org.sql.generation.api.grammar.factories.QueryFactory)6 QNameInfo (org.qi4j.index.sql.support.common.QNameInfo)4 QuerySpecificationBuilder (org.sql.generation.api.grammar.builders.query.QuerySpecificationBuilder)4 ModificationFactory (org.sql.generation.api.grammar.factories.ModificationFactory)4 QualifiedName (org.qi4j.api.common.QualifiedName)3 Stack (java.util.Stack)2 AccessibleObject (java.lang.reflect.AccessibleObject)1 Member (java.lang.reflect.Member)1 ResultSet (java.sql.ResultSet)1 Collection (java.util.Collection)1 Set (java.util.Set)1 Property (org.qi4j.api.property.Property)1 PropertyFunction (org.qi4j.api.query.grammar.PropertyFunction)1 Variable (org.qi4j.api.query.grammar.Variable)1 ValueComposite (org.qi4j.api.value.ValueComposite)1 BooleanBuilder (org.sql.generation.api.grammar.builders.booleans.BooleanBuilder)1