Search in sources :

Example 21 with Tuple

use of com.querydsl.core.Tuple in project querydsl by querydsl.

the class QTupleTest method alias.

@Test
public void alias() {
    Expression<?> expr = str1.as("s");
    QTuple qTuple = new QTuple(expr);
    Tuple tuple = qTuple.newInstance("arg");
    assertEquals("arg", tuple.get(expr));
    assertEquals("arg", tuple.get(Expressions.stringPath("s")));
}
Also used : Tuple(com.querydsl.core.Tuple) Test(org.junit.Test)

Example 22 with Tuple

use of com.querydsl.core.Tuple in project querydsl by querydsl.

the class QueryPerformanceTest method byId_twoCols_qdsl.

@Test
public void byId_twoCols_qdsl() {
    long start = System.currentTimeMillis();
    for (int i = 0; i < iterations; i++) {
        QCat cat = QCat.cat;
        Tuple row = query().from(cat).where(cat.id.eq(i + 100)).select(cat.id, cat.name).fetchOne();
        assertNotNull(row);
    }
    System.err.println("by id - 2 cols - dsl" + (System.currentTimeMillis() - start));
}
Also used : QCat(com.querydsl.jpa.domain.QCat) Tuple(com.querydsl.core.Tuple)

Example 23 with Tuple

use of com.querydsl.core.Tuple in project midpoint by Evolveum.

the class QAuditEventRecordMapping method createRowTransformer.

@Override
public ResultListRowTransformer<AuditEventRecordType, QAuditEventRecord, MAuditEventRecord> createRowTransformer(SqlQueryContext<AuditEventRecordType, QAuditEventRecord, MAuditEventRecord> sqlQueryContext, JdbcSession jdbcSession) {
    return new ResultListRowTransformer<>() {

        @Override
        public void beforeTransformation(List<Tuple> rowTuples, QAuditEventRecord entityPath) {
            if (rowTuples.isEmpty()) {
                return;
            }
            Instant minTimestamp = Instant.MAX;
            Instant maxTimestamp = Instant.MIN;
            Map<Long, MAuditEventRecord> rowMap = new HashMap<>();
            for (Tuple rowTuple : rowTuples) {
                MAuditEventRecord row = Objects.requireNonNull(rowTuple.get(entityPath));
                rowMap.put(row.id, row);
                if (row.timestamp.isBefore(minTimestamp)) {
                    minTimestamp = row.timestamp;
                }
                if (row.timestamp.isAfter(maxTimestamp)) {
                    maxTimestamp = row.timestamp;
                }
            }
            QAuditDelta qd = QAuditDeltaMapping.get().defaultAlias();
            jdbcSession.newQuery().select(qd).from(qd).where(qd.recordId.in(rowMap.keySet()).and(qd.timestamp.between(minTimestamp, maxTimestamp))).fetch().forEach(d -> rowMap.get(d.recordId).addDelta(d));
            QAuditRefValue qr = QAuditRefValueMapping.get().defaultAlias();
            jdbcSession.newQuery().select(qr).from(qr).where(qr.recordId.in(rowMap.keySet()).and(qr.timestamp.between(minTimestamp, maxTimestamp))).fetch().forEach(r -> rowMap.get(r.recordId).addRefValue(r));
        }

        @Override
        public AuditEventRecordType transform(Tuple tuple, QAuditEventRecord entityPath, Collection<SelectorOptions<GetOperationOptions>> options) {
            return toSchemaObjectSafe(tuple, entityPath, options, jdbcSession, false);
        }
    };
}
Also used : ResultListRowTransformer(com.evolveum.midpoint.repo.sqlbase.mapping.ResultListRowTransformer) Instant(java.time.Instant) GetOperationOptions(com.evolveum.midpoint.schema.GetOperationOptions) Tuple(com.querydsl.core.Tuple)

Example 24 with Tuple

use of com.querydsl.core.Tuple in project midpoint by Evolveum.

the class QOperationExecutionMapping method createRowTransformer.

@Override
public ResultListRowTransformer<OperationExecutionType, QOperationExecution<OR>, MOperationExecution> createRowTransformer(SqlQueryContext<OperationExecutionType, QOperationExecution<OR>, MOperationExecution> sqlQueryContext, JdbcSession jdbcSession) {
    Map<UUID, ObjectType> owners = new HashMap<>();
    return new ResultListRowTransformer<>() {

        @Override
        public void beforeTransformation(List<Tuple> rowTuples, QOperationExecution<OR> entityPath) throws SchemaException {
            Set<UUID> ownerOids = rowTuples.stream().map(row -> Objects.requireNonNull(row.get(entityPath)).ownerOid).collect(Collectors.toSet());
            // TODO do we need get options here as well? Is there a scenario where we load container
            // and define what to load for referenced/owner object?
            QObject<?> o = QObjectMapping.getObjectMapping().defaultAlias();
            List<Tuple> result = jdbcSession.newQuery().select(o.oid, o.fullObject).from(o).where(o.oid.in(ownerOids)).fetch();
            for (Tuple row : result) {
                UUID oid = Objects.requireNonNull(row.get(o.oid));
                ObjectType owner = parseSchemaObject(row.get(o.fullObject), oid.toString(), ObjectType.class);
                owners.put(oid, owner);
            }
        }

        @Override
        public OperationExecutionType transform(Tuple rowTuple, QOperationExecution<OR> entityPath, Collection<SelectorOptions<GetOperationOptions>> options) {
            MOperationExecution row = Objects.requireNonNull(rowTuple.get(entityPath));
            ObjectType object = Objects.requireNonNull(owners.get(row.ownerOid), () -> "Missing owner with OID " + row.ownerOid + " for OperationExecution with ID " + row.cid);
            PrismContainer<OperationExecutionType> opexContainer = object.asPrismObject().findContainer(ObjectType.F_OPERATION_EXECUTION);
            if (opexContainer == null) {
                throw new SystemException("Object " + object + " has no operation execution as expected from " + row);
            }
            PrismContainerValue<OperationExecutionType> pcv = opexContainer.findValue(row.cid);
            if (pcv == null) {
                throw new SystemException("Object " + object + " has no operation execution with ID " + row.cid);
            }
            return pcv.asContainerable();
        }
    };
}
Also used : SelectorOptions(com.evolveum.midpoint.schema.SelectorOptions) TableRelationResolver(com.evolveum.midpoint.repo.sqlbase.mapping.TableRelationResolver) java.util(java.util) SqlQueryContext(com.evolveum.midpoint.repo.sqlbase.SqlQueryContext) QTaskMapping(com.evolveum.midpoint.repo.sqale.qmodel.task.QTaskMapping) ObjectType(com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType) PrismContainer(com.evolveum.midpoint.prism.PrismContainer) JdbcSession(com.evolveum.midpoint.repo.sqlbase.JdbcSession) QContainerMapping(com.evolveum.midpoint.repo.sqale.qmodel.common.QContainerMapping) SchemaException(com.evolveum.midpoint.util.exception.SchemaException) MiscUtil(com.evolveum.midpoint.util.MiscUtil) SqaleRepoContext(com.evolveum.midpoint.repo.sqale.SqaleRepoContext) QFocusMapping(com.evolveum.midpoint.repo.sqale.qmodel.focus.QFocusMapping) Collectors(java.util.stream.Collectors) PrismContainerValue(com.evolveum.midpoint.prism.PrismContainerValue) OperationExecutionType(com.evolveum.midpoint.xml.ns._public.common.common_3.OperationExecutionType) SystemException(com.evolveum.midpoint.util.exception.SystemException) PrismConstants(com.evolveum.midpoint.prism.PrismConstants) ResultListRowTransformer(com.evolveum.midpoint.repo.sqlbase.mapping.ResultListRowTransformer) GetOperationOptions(com.evolveum.midpoint.schema.GetOperationOptions) NotNull(org.jetbrains.annotations.NotNull) Tuple(com.querydsl.core.Tuple) ResultListRowTransformer(com.evolveum.midpoint.repo.sqlbase.mapping.ResultListRowTransformer) OperationExecutionType(com.evolveum.midpoint.xml.ns._public.common.common_3.OperationExecutionType) ObjectType(com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType) GetOperationOptions(com.evolveum.midpoint.schema.GetOperationOptions) SystemException(com.evolveum.midpoint.util.exception.SystemException) Tuple(com.querydsl.core.Tuple)

Example 25 with Tuple

use of com.querydsl.core.Tuple in project midpoint by Evolveum.

the class QAccessCertificationWorkItemMapping method loadCase.

private PrismContainerValue<AccessCertificationCaseType> loadCase(JdbcSession jdbcSession, UUID ownerOid, Long accessCertCaseCid) {
    QAccessCertificationCaseMapping mapping = QAccessCertificationCaseMapping.getAccessCertificationCaseMapping();
    QAccessCertificationCase root = mapping.defaultAlias();
    Tuple result = jdbcSession.newQuery().from(root).select(mapping.selectExpressions(root, Collections.emptyList())).where(root.ownerOid.eq(ownerOid).and(root.cid.eq(accessCertCaseCid))).fetchOne();
    if (result == null) {
        throw new SystemException("Case owner:" + ownerOid + " cid:" + accessCertCaseCid + " does not exist.");
    }
    try {
        // noinspection unchecked
        return mapping.toSchemaObject(result, root, Collections.emptyList()).asPrismContainerValue();
    } catch (SchemaException e) {
        throw new SystemException(e);
    }
}
Also used : SchemaException(com.evolveum.midpoint.util.exception.SchemaException) SystemException(com.evolveum.midpoint.util.exception.SystemException) Tuple(com.querydsl.core.Tuple)

Aggregations

Tuple (com.querydsl.core.Tuple)55 Test (org.junit.Test)41 ExcludeIn (com.querydsl.core.testutil.ExcludeIn)10 Pair (com.mysema.commons.lang.Pair)7 QTuple (com.querydsl.core.types.QTuple)6 Expression (com.querydsl.core.types.Expression)4 StringPath (com.querydsl.core.types.dsl.StringPath)4 AbstractBaseTest (com.querydsl.sql.AbstractBaseTest)4 QCat (com.querydsl.jpa.domain.QCat)3 SAnimal (com.querydsl.jpa.domain.sql.SAnimal)3 QEmployee (com.querydsl.sql.domain.QEmployee)3 ArrayList (java.util.ArrayList)3 Ignore (org.junit.Ignore)3 QObject (com.evolveum.midpoint.repo.sqale.qmodel.object.QObject)2 ResultListRowTransformer (com.evolveum.midpoint.repo.sqlbase.mapping.ResultListRowTransformer)2 GetOperationOptions (com.evolveum.midpoint.schema.GetOperationOptions)2 SchemaException (com.evolveum.midpoint.util.exception.SchemaException)2 SystemException (com.evolveum.midpoint.util.exception.SystemException)2 QueryMetadata (com.querydsl.core.QueryMetadata)2 Group (com.querydsl.core.group.Group)2