Skip to content

Commit

Permalink
MID-6319: enhanced Q-classes for other audit tables, old metamodel gone
Browse files Browse the repository at this point in the history
  • Loading branch information
virgo47 committed Jul 11, 2020
1 parent 301fd29 commit d105050
Show file tree
Hide file tree
Showing 13 changed files with 229 additions and 453 deletions.

This file was deleted.

@@ -1,10 +1,12 @@
package com.evolveum.midpoint.repo.sql.pure;

import java.sql.Blob;
import java.time.Instant;

import com.querydsl.core.types.PathMetadata;
import com.querydsl.core.types.dsl.DateTimePath;
import com.querydsl.core.types.dsl.NumberPath;
import com.querydsl.core.types.dsl.SimplePath;
import com.querydsl.core.types.dsl.StringPath;
import com.querydsl.sql.ColumnMetadata;
import com.querydsl.sql.RelationalPathBase;
Expand Down Expand Up @@ -83,4 +85,12 @@ protected DateTimePath<Instant> createInstant(
String property, ColumnMetadata columnMetadata) {
return createDateTime(property, Instant.class, columnMetadata);
}

/**
* Creates BLOB path for a property and registers column metadata for it.
*/
protected SimplePath<Blob> createBlob(
String property, ColumnMetadata columnMetadata) {
return addMetadata(createSimple(property, java.sql.Blob.class), columnMetadata);
}
}
Expand Up @@ -2,8 +2,6 @@

import static com.querydsl.core.group.GroupBy.groupBy;

import static com.evolveum.midpoint.repo.sql.pure.querymodel.QAuditDelta.M_AUDIT_DELTA;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.*;
Expand All @@ -21,6 +19,7 @@
import org.jetbrains.annotations.Nullable;

import com.evolveum.midpoint.repo.sql.pure.mapping.QAuditEventRecordMapping;
import com.evolveum.midpoint.repo.sql.pure.querymodel.QAuditDelta;
import com.evolveum.midpoint.repo.sql.pure.querymodel.QAuditEventRecord;
import com.evolveum.midpoint.repo.sql.pure.querymodel.beans.MAuditDelta;
import com.evolveum.midpoint.repo.sql.pure.querymodel.beans.MAuditEventRecord;
Expand Down Expand Up @@ -107,39 +106,40 @@ private static void examples() throws SQLException, QueryException {
.from(aer)
.fetchCount());

QAuditDelta ad = new QAuditDelta("mad");
SQLQuery<Tuple> query = newQuery(conn)
.select(aer, M_AUDIT_DELTA)
.select(aer, ad)
// .select(M_AUDIT_EVENT.id, M_AUDIT_DELTA.checksum)
// .from(M_AUDIT_EVENT)
// leftJoin if we want also events without deltas
// .join(M_AUDIT_EVENT._auditDeltaFk, M_AUDIT_DELTA)
// alternatively:
// .join(M_AUDIT_DELTA).on(M_AUDIT_DELTA.recordId.eq(M_AUDIT_EVENT.id))
// .orderBy(M_AUDIT_EVENT.id.asc())
.from(aer, M_AUDIT_DELTA)
.where(aer.id.eq(M_AUDIT_DELTA.recordId)) // this replaces "join-on", but only inner
.from(aer, ad)
.where(aer.id.eq(ad.recordId)) // this replaces "join-on", but only inner
.where(aer.id.eq(452L)); // "Works on my computer! :-)"

List<Tuple> result = query.fetch();
System.out.println("result = " + result);
System.out.println("\nsize: " + result.size());

System.out.println("\ncount: " + query.transform(groupBy(aer.id).as(M_AUDIT_DELTA.count())));
Map<?, ?> transform = query.transform(GroupBy.groupBy(aer.id).as(GroupBy.list(M_AUDIT_DELTA)));
System.out.println("\ncount: " + query.transform(groupBy(aer.id).as(ad.count())));
Map<?, ?> transform = query.transform(GroupBy.groupBy(aer.id).as(GroupBy.list(ad)));
System.out.println("transform = " + transform);

// "manual" transformation of one-to-many to proper graph
List<Tuple> plainResult = newQuery(conn)
.select(aer, M_AUDIT_DELTA)
.select(aer, ad)
.from(aer)
.leftJoin(aer._auditDeltaFk, M_AUDIT_DELTA)
.leftJoin(aer._auditDeltaFk, ad)
// alternatively:
// .leftJoin(M_AUDIT_DELTA).on(M_AUDIT_DELTA.recordId.eq(M_AUDIT_EVENT.id))
// .orderBy(M_AUDIT_EVENT.id.asc())
.where(aer.id.eq(452L))
.fetch();
Map<MAuditEventRecord, Collection<MAuditDelta>> resultMap =
mapOneToMany(plainResult, aer, M_AUDIT_DELTA, (o, m) -> o.addDelta(m));
mapOneToMany(plainResult, aer, ad, (o, m) -> o.addDelta(m));
System.out.println("\nFinal result" + resultMap);

System.out.println("deltas for 1st item: " + resultMap.keySet().iterator().next().deltas);
Expand Down

This file was deleted.

Expand Up @@ -10,8 +10,6 @@

import java.sql.Types;

import com.querydsl.core.types.Path;
import com.querydsl.core.types.PathMetadata;
import com.querydsl.core.types.dsl.NumberPath;
import com.querydsl.core.types.dsl.SimplePath;
import com.querydsl.core.types.dsl.StringPath;
Expand All @@ -21,74 +19,64 @@

import com.evolveum.midpoint.repo.sql.pure.FlexibleRelationalPathBase;
import com.evolveum.midpoint.repo.sql.pure.querymodel.beans.MAuditDelta;
import com.evolveum.midpoint.repo.sql.pure.SqlTableMetamodel;

/**
* Querydsl query type for M_AUDIT_DELTA table.
*/
@SuppressWarnings("unused")
public class QAuditDelta extends FlexibleRelationalPathBase<MAuditDelta> {

private static final long serialVersionUID = -231012375;

public static final SqlTableMetamodel<QAuditDelta> METAMODEL =
new SqlTableMetamodel<>("M_AUDIT_DELTA", QAuditDelta.class);

public static final QAuditDelta M_AUDIT_DELTA = new QAuditDelta("M_AUDIT_DELTA");

public static final ColumnMetadata CHECKSUM = ColumnMetadata.named("CHECKSUM")
.withIndex(1).ofType(Types.VARCHAR).withSize(32).notNull();
public static final String TABLE_NAME = "M_AUDIT_DELTA";

public static final ColumnMetadata CHECKSUM =
ColumnMetadata.named("CHECKSUM").ofType(Types.VARCHAR).withSize(32).notNull();
public static final ColumnMetadata DELTA =
ColumnMetadata.named("DELTA").ofType(Types.BLOB).withSize(2147483647);
public static final ColumnMetadata DELTA_OID =
ColumnMetadata.named("DELTAOID").ofType(Types.VARCHAR).withSize(36);
public static final ColumnMetadata DELTA_TYPE =
ColumnMetadata.named("DELTATYPE").ofType(Types.INTEGER).withSize(10);
public static final ColumnMetadata FULL_RESULT =
ColumnMetadata.named("FULLRESULT").ofType(Types.BLOB).withSize(2147483647);
public static final ColumnMetadata OBJECT_NAME_NORM =
ColumnMetadata.named("OBJECTNAME_NORM").ofType(Types.VARCHAR).withSize(255);
public static final ColumnMetadata OBJECT_NAME_ORIG =
ColumnMetadata.named("OBJECTNAME_ORIG").ofType(Types.VARCHAR).withSize(255);
public static final ColumnMetadata RECORD_ID =
ColumnMetadata.named("RECORD_ID").ofType(Types.BIGINT).withSize(19).notNull();
public static final ColumnMetadata RESOURCE_NAME_NORM =
ColumnMetadata.named("RESOURCENAME_NORM").ofType(Types.VARCHAR).withSize(255);
public static final ColumnMetadata RESOURCE_NAME_ORIG =
ColumnMetadata.named("RESOURCENAME_ORIG").ofType(Types.VARCHAR).withSize(255);
public static final ColumnMetadata RESOURCE_OID =
ColumnMetadata.named("RESOURCEOID").ofType(Types.VARCHAR).withSize(36);
public static final ColumnMetadata STATUS =
ColumnMetadata.named("STATUS").ofType(Types.INTEGER).withSize(10);

// columns and relations
public final StringPath checksum = createString("checksum");
public final SimplePath<java.sql.Blob> delta = createSimple("delta", java.sql.Blob.class);
public final StringPath deltaoid = createString("deltaoid");
public final NumberPath<Integer> deltatype = createNumber("deltatype", Integer.class);
public final SimplePath<java.sql.Blob> fullresult = createSimple("fullresult", java.sql.Blob.class);
public final StringPath objectnameNorm = createString("objectnameNorm");
public final StringPath objectnameOrig = createString("objectnameOrig");
public final NumberPath<Long> recordId = createNumber("recordId", Long.class);
public final StringPath resourcenameNorm = createString("resourcenameNorm");
public final StringPath resourcenameOrig = createString("resourcenameOrig");
public final StringPath resourceoid = createString("resourceoid");
public final NumberPath<Integer> status = createNumber("status", Integer.class);
public final StringPath checksum = createString("checksum", CHECKSUM);
public final SimplePath<java.sql.Blob> delta = createBlob("delta", DELTA);
public final StringPath deltaOid = createString("deltaOid", DELTA_OID);
public final NumberPath<Integer> deltaType = createInteger("deltaType", DELTA_TYPE);
public final SimplePath<java.sql.Blob> fullResult = createBlob("fullResult", FULL_RESULT);
public final StringPath objectNameNorm = createString("objectNameNorm", OBJECT_NAME_NORM);
public final StringPath objectNameOrig = createString("objectNameOrig", OBJECT_NAME_ORIG);
public final NumberPath<Long> recordId = createLong("recordId", RECORD_ID);
public final StringPath resourceNameNorm = createString("resourceNameNorm", RESOURCE_NAME_NORM);
public final StringPath resourceNameOrig = createString("resourceNameOrig", RESOURCE_NAME_ORIG);
public final StringPath resourceOid = createString("resourceOid", RESOURCE_OID);
public final NumberPath<Integer> status = createInteger("status", STATUS);

public final PrimaryKey<MAuditDelta> constraint85 = createPrimaryKey(checksum, recordId);
public final ForeignKey<QAuditEventRecord> auditDeltaFk = createForeignKey(recordId, "ID");

public QAuditDelta(String variable) {
super(MAuditDelta.class, forVariable(variable), "PUBLIC", "M_AUDIT_DELTA");
addMetadata();
this(variable, "PUBLIC", TABLE_NAME);
}

public QAuditDelta(String variable, String schema, String table) {
super(MAuditDelta.class, forVariable(variable), schema, table);
addMetadata();
}

public QAuditDelta(String variable, String schema) {
super(MAuditDelta.class, forVariable(variable), schema, "M_AUDIT_DELTA");
addMetadata();
}

public QAuditDelta(Path<? extends MAuditDelta> path) {
super(path.getType(), path.getMetadata(), "PUBLIC", "M_AUDIT_DELTA");
addMetadata();
}

public QAuditDelta(PathMetadata metadata) {
super(MAuditDelta.class, metadata, "PUBLIC", "M_AUDIT_DELTA");
addMetadata();
}

public void addMetadata() {
addMetadata(checksum, CHECKSUM);
addMetadata(delta, ColumnMetadata.named("DELTA").withIndex(3).ofType(Types.BLOB).withSize(2147483647));
addMetadata(deltaoid, ColumnMetadata.named("DELTAOID").withIndex(4).ofType(Types.VARCHAR).withSize(36));
addMetadata(deltatype, ColumnMetadata.named("DELTATYPE").withIndex(5).ofType(Types.INTEGER).withSize(10));
addMetadata(fullresult, ColumnMetadata.named("FULLRESULT").withIndex(6).ofType(Types.BLOB).withSize(2147483647));
addMetadata(objectnameNorm, ColumnMetadata.named("OBJECTNAME_NORM").withIndex(7).ofType(Types.VARCHAR).withSize(255));
addMetadata(objectnameOrig, ColumnMetadata.named("OBJECTNAME_ORIG").withIndex(8).ofType(Types.VARCHAR).withSize(255));
addMetadata(recordId, ColumnMetadata.named("RECORD_ID").withIndex(2).ofType(Types.BIGINT).withSize(19).notNull());
addMetadata(resourcenameNorm, ColumnMetadata.named("RESOURCENAME_NORM").withIndex(9).ofType(Types.VARCHAR).withSize(255));
addMetadata(resourcenameOrig, ColumnMetadata.named("RESOURCENAME_ORIG").withIndex(10).ofType(Types.VARCHAR).withSize(255));
addMetadata(resourceoid, ColumnMetadata.named("RESOURCEOID").withIndex(11).ofType(Types.VARCHAR).withSize(36));
addMetadata(status, ColumnMetadata.named("STATUS").withIndex(12).ofType(Types.INTEGER).withSize(10));
}
}
Expand Up @@ -125,11 +125,11 @@ public class QAuditEventRecord extends FlexibleRelationalPathBase<MAuditEventRec
public final DateTimePath<Instant> timestamp = createInstant("timestamp", TIMESTAMP);

public final PrimaryKey<MAuditEventRecord> constraint85c = createPrimaryKey(id);
public final ForeignKey<QMAuditItem> _auditItemFk = createInvForeignKey(id, "RECORD_ID");
public final ForeignKey<QAuditItem> _auditItemFk = createInvForeignKey(id, "RECORD_ID");
public final ForeignKey<QAuditPropertyValue> _auditPropValueFk = createInvForeignKey(id, "RECORD_ID");
public final ForeignKey<MAuditDelta> _auditDeltaFk = createInvForeignKey(id, "RECORD_ID");
public final ForeignKey<QMAuditRefValue> _auditRefValueFk = createInvForeignKey(id, "RECORD_ID");
public final ForeignKey<QMAuditResource> _auditResourceFk = createInvForeignKey(id, "RECORD_ID");
public final ForeignKey<QAuditRefValue> _auditRefValueFk = createInvForeignKey(id, "RECORD_ID");
public final ForeignKey<QAuditResource> _auditResourceFk = createInvForeignKey(id, "RECORD_ID");

public QAuditEventRecord(String variable) {
this(variable, "PUBLIC", TABLE_NAME);
Expand Down

0 comments on commit d105050

Please sign in to comment.