Skip to content

Commit

Permalink
MID-6319: only audit metamodel left, added beans, query experiments
Browse files Browse the repository at this point in the history
Metamodel describes the table, but beans are necessary if we want to
query whole "entities" instead of just columns. The bean has the same
role like JPA entity (sans the mapping).
Some experimental one-to-many processing tried in throw-away code.
  • Loading branch information
virgo47 committed Jun 24, 2020
1 parent 69963bf commit 37b957c
Show file tree
Hide file tree
Showing 80 changed files with 390 additions and 5,888 deletions.
@@ -1,28 +1,32 @@
package com.myproject.mydomain;
/*
* Copyright (C) 2010-2020 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.repo.sql.metamodel;

import static com.querydsl.core.types.PathMetadataFactory.*;
import static com.querydsl.core.types.PathMetadataFactory.forVariable;

import com.querydsl.core.types.dsl.*;
import java.sql.Types;

import com.querydsl.core.types.PathMetadata;
import javax.annotation.Generated;
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;
import com.querydsl.sql.ColumnMetadata;
import java.sql.Types;

import com.querydsl.sql.ForeignKey;
import com.querydsl.sql.PrimaryKey;

import com.evolveum.midpoint.repo.sql.pure.FlexibleRelationalPathBase;
import com.evolveum.midpoint.repo.sql.pure.MAuditDelta;


/**
* QMAuditDelta is a Querydsl query type for QMAuditDelta
*/
@Generated("com.querydsl.sql.codegen.MetaDataSerializer")
public class QMAuditDelta extends com.querydsl.sql.RelationalPathBase<QMAuditDelta> {
public class QAuditDelta extends FlexibleRelationalPathBase<MAuditDelta> {

private static final long serialVersionUID = -231012375;

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

public final StringPath checksum = createString("checksum");

Expand All @@ -48,32 +52,32 @@ public class QMAuditDelta extends com.querydsl.sql.RelationalPathBase<QMAuditDel

public final NumberPath<Integer> status = createNumber("status", Integer.class);

public final com.querydsl.sql.PrimaryKey<QMAuditDelta> constraint85 = createPrimaryKey(checksum, recordId);
public final PrimaryKey<MAuditDelta> constraint85 = createPrimaryKey(checksum, recordId);

public final com.querydsl.sql.ForeignKey<QMAuditEvent> auditDeltaFk = createForeignKey(recordId, "ID");
public final ForeignKey<QAuditEventRecord> auditDeltaFk = createForeignKey(recordId, "ID");

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

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

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

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

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

Expand Down
@@ -1,32 +1,38 @@
package com.myproject.mydomain;
/*
* Copyright (C) 2010-2020 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.repo.sql.metamodel;

import static com.querydsl.core.types.PathMetadataFactory.*;
import static com.querydsl.core.types.PathMetadataFactory.forVariable;

import com.querydsl.core.types.dsl.*;
import java.sql.Types;

import com.querydsl.core.types.PathMetadata;
import javax.annotation.Generated;
import com.querydsl.core.types.Path;

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.StringPath;
import com.querydsl.sql.ColumnMetadata;
import java.sql.Types;



import com.evolveum.midpoint.repo.sql.pure.FlexibleRelationalPathBase;
import com.evolveum.midpoint.repo.sql.pure.MAuditDelta;
import com.evolveum.midpoint.repo.sql.pure.MAuditEventRecord;

/**
* QMAuditEvent is a Querydsl query type for QMAuditEvent
* Querydsl query type for M_AUDIT_EVENT table.
*/
@Generated("com.querydsl.sql.codegen.MetaDataSerializer")
public class QMAuditEvent extends com.querydsl.sql.RelationalPathBase<QMAuditEvent> {
public class QAuditEventRecord extends FlexibleRelationalPathBase<MAuditEventRecord> {

private static final long serialVersionUID = -229589301;

public static final QMAuditEvent mAuditEvent = new QMAuditEvent("M_AUDIT_EVENT");
public static final QAuditEventRecord M_AUDIT_EVENT = new QAuditEventRecord("M_AUDIT_EVENT");

public final StringPath attorneyname = createString("attorneyname");
public final StringPath attorneyName = createString("attorneyname");

public final StringPath attorneyoid = createString("attorneyoid");
public final StringPath attorneyOid = createString("attorneyoid");

public final StringPath channel = createString("channel");

Expand Down Expand Up @@ -80,46 +86,46 @@ public class QMAuditEvent extends com.querydsl.sql.RelationalPathBase<QMAuditEve

public final DateTimePath<java.sql.Timestamp> timestampvalue = createDateTime("timestampvalue", java.sql.Timestamp.class);

public final com.querydsl.sql.PrimaryKey<QMAuditEvent> constraint85c = createPrimaryKey(id);
public final com.querydsl.sql.PrimaryKey<MAuditEventRecord> constraint85c = createPrimaryKey(id);

public final com.querydsl.sql.ForeignKey<QMAuditItem> _auditItemFk = createInvForeignKey(id, "RECORD_ID");

public final com.querydsl.sql.ForeignKey<QMAuditPropValue> _auditPropValueFk = createInvForeignKey(id, "RECORD_ID");

public final com.querydsl.sql.ForeignKey<QMAuditDelta> _auditDeltaFk = createInvForeignKey(id, "RECORD_ID");
public final com.querydsl.sql.ForeignKey<MAuditDelta> _auditDeltaFk = createInvForeignKey(id, "RECORD_ID");

public final com.querydsl.sql.ForeignKey<QMAuditRefValue> _auditRefValueFk = createInvForeignKey(id, "RECORD_ID");

public final com.querydsl.sql.ForeignKey<QMAuditResource> _auditResourceFk = createInvForeignKey(id, "RECORD_ID");

public QMAuditEvent(String variable) {
super(QMAuditEvent.class, forVariable(variable), "PUBLIC", "M_AUDIT_EVENT");
public QAuditEventRecord(String variable) {
super(MAuditEventRecord.class, forVariable(variable), "PUBLIC", "M_AUDIT_EVENT");
addMetadata();
}

public QMAuditEvent(String variable, String schema, String table) {
super(QMAuditEvent.class, forVariable(variable), schema, table);
public QAuditEventRecord(String variable, String schema, String table) {
super(MAuditEventRecord.class, forVariable(variable), schema, table);
addMetadata();
}

public QMAuditEvent(String variable, String schema) {
super(QMAuditEvent.class, forVariable(variable), schema, "M_AUDIT_EVENT");
public QAuditEventRecord(String variable, String schema) {
super(MAuditEventRecord.class, forVariable(variable), schema, "M_AUDIT_EVENT");
addMetadata();
}

public QMAuditEvent(Path<? extends QMAuditEvent> path) {
public QAuditEventRecord(Path<? extends MAuditEventRecord> path) {
super(path.getType(), path.getMetadata(), "PUBLIC", "M_AUDIT_EVENT");
addMetadata();
}

public QMAuditEvent(PathMetadata metadata) {
super(QMAuditEvent.class, metadata, "PUBLIC", "M_AUDIT_EVENT");
public QAuditEventRecord(PathMetadata metadata) {
super(MAuditEventRecord.class, metadata, "PUBLIC", "M_AUDIT_EVENT");
addMetadata();
}

public void addMetadata() {
addMetadata(attorneyname, ColumnMetadata.named("ATTORNEYNAME").withIndex(2).ofType(Types.VARCHAR).withSize(255));
addMetadata(attorneyoid, ColumnMetadata.named("ATTORNEYOID").withIndex(3).ofType(Types.VARCHAR).withSize(36));
addMetadata(attorneyName, ColumnMetadata.named("ATTORNEYNAME").withIndex(2).ofType(Types.VARCHAR).withSize(255));
addMetadata(attorneyOid, ColumnMetadata.named("ATTORNEYOID").withIndex(3).ofType(Types.VARCHAR).withSize(36));
addMetadata(channel, ColumnMetadata.named("CHANNEL").withIndex(4).ofType(Types.VARCHAR).withSize(255));
addMetadata(eventidentifier, ColumnMetadata.named("EVENTIDENTIFIER").withIndex(5).ofType(Types.VARCHAR).withSize(255));
addMetadata(eventstage, ColumnMetadata.named("EVENTSTAGE").withIndex(6).ofType(Types.INTEGER).withSize(10));
Expand Down Expand Up @@ -147,6 +153,5 @@ public void addMetadata() {
addMetadata(taskoid, ColumnMetadata.named("TASKOID").withIndex(27).ofType(Types.VARCHAR).withSize(255));
addMetadata(timestampvalue, ColumnMetadata.named("TIMESTAMPVALUE").withIndex(28).ofType(Types.TIMESTAMP).withSize(23).withDigits(10));
}

}

@@ -1,4 +1,10 @@
package com.myproject.mydomain;
/*
* Copyright (C) 2010-2020 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.repo.sql.metamodel;

import static com.querydsl.core.types.PathMetadataFactory.*;

Expand Down Expand Up @@ -30,7 +36,7 @@ public class QMAuditItem extends com.querydsl.sql.RelationalPathBase<QMAuditItem

public final com.querydsl.sql.PrimaryKey<QMAuditItem> constraint1 = createPrimaryKey(changeditempath, recordId);

public final com.querydsl.sql.ForeignKey<QMAuditEvent> auditItemFk = createForeignKey(recordId, "ID");
public final com.querydsl.sql.ForeignKey<QAuditEventRecord> auditItemFk = createForeignKey(recordId, "ID");

public QMAuditItem(String variable) {
super(QMAuditItem.class, forVariable(variable), "PUBLIC", "M_AUDIT_ITEM");
Expand Down
@@ -1,4 +1,10 @@
package com.myproject.mydomain;
/*
* Copyright (C) 2010-2020 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.repo.sql.metamodel;

import static com.querydsl.core.types.PathMetadataFactory.*;

Expand Down Expand Up @@ -34,7 +40,7 @@ public class QMAuditPropValue extends com.querydsl.sql.RelationalPathBase<QMAudi

public final com.querydsl.sql.PrimaryKey<QMAuditPropValue> constraint6 = createPrimaryKey(id);

public final com.querydsl.sql.ForeignKey<QMAuditEvent> auditPropValueFk = createForeignKey(recordId, "ID");
public final com.querydsl.sql.ForeignKey<QAuditEventRecord> auditPropValueFk = createForeignKey(recordId, "ID");

public QMAuditPropValue(String variable) {
super(QMAuditPropValue.class, forVariable(variable), "PUBLIC", "M_AUDIT_PROP_VALUE");
Expand Down
@@ -1,4 +1,10 @@
package com.myproject.mydomain;
/*
* Copyright (C) 2010-2020 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.repo.sql.metamodel;

import static com.querydsl.core.types.PathMetadataFactory.*;

Expand Down Expand Up @@ -40,7 +46,7 @@ public class QMAuditRefValue extends com.querydsl.sql.RelationalPathBase<QMAudit

public final com.querydsl.sql.PrimaryKey<QMAuditRefValue> constraint7 = createPrimaryKey(id);

public final com.querydsl.sql.ForeignKey<QMAuditEvent> auditRefValueFk = createForeignKey(recordId, "ID");
public final com.querydsl.sql.ForeignKey<QAuditEventRecord> auditRefValueFk = createForeignKey(recordId, "ID");

public QMAuditRefValue(String variable) {
super(QMAuditRefValue.class, forVariable(variable), "PUBLIC", "M_AUDIT_REF_VALUE");
Expand Down
@@ -1,4 +1,10 @@
package com.myproject.mydomain;
/*
* Copyright (C) 2010-2020 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.repo.sql.metamodel;

import static com.querydsl.core.types.PathMetadataFactory.*;

Expand Down Expand Up @@ -30,7 +36,7 @@ public class QMAuditResource extends com.querydsl.sql.RelationalPathBase<QMAudit

public final com.querydsl.sql.PrimaryKey<QMAuditResource> constraint84 = createPrimaryKey(recordId, resourceoid);

public final com.querydsl.sql.ForeignKey<QMAuditEvent> auditResourceFk = createForeignKey(recordId, "ID");
public final com.querydsl.sql.ForeignKey<QAuditEventRecord> auditResourceFk = createForeignKey(recordId, "ID");

public QMAuditResource(String variable) {
super(QMAuditResource.class, forVariable(variable), "PUBLIC", "M_AUDIT_RESOURCE");
Expand Down
@@ -0,0 +1,36 @@
package com.evolveum.midpoint.repo.sql.pure;

import com.querydsl.core.types.PathMetadata;
import com.querydsl.sql.RelationalPathBase;

/**
* Extension of {@link RelationalPathBase} that provides midPoint specific features.
* This allows to add metadata about Prism objects in addition to pure DB metadata.
* <p>
* Typical migration from originally generated Querydsl class:
* <ul>
* <li>extend from this class instead of {@code RelationalPathBase}</li>
* <li>rename fields as needed (missing uppercase for words), also in related bean</li>
* <li>rename static final field to capitalized table name (this will stand out + fix checkstyle)</li>
* <li>simplify bean to public fields and no setters/getters</li>
* <li>add PK-based equals/hashCode to beans (not critical, but handy for grouping transformations)</li>
* <li>TODO: add prism-related metadata?</li>
* <li>TODO: change types as needed, e.g. date/time-related? (also in bean)</li>
* </ul>
*
* @param <T> entity type - typically a pure DTO bean for the table mapped by Q-type
*/
public class FlexibleRelationalPathBase<T> extends RelationalPathBase<T> {

private static final long serialVersionUID = -3374516272567011096L;

public FlexibleRelationalPathBase(
Class<? extends T> type, String variable, String schema, String table) {
super(type, variable, schema, table);
}

public FlexibleRelationalPathBase(
Class<? extends T> type, PathMetadata metadata, String schema, String table) {
super(type, metadata, schema, table);
}
}
@@ -0,0 +1,43 @@
package com.evolveum.midpoint.repo.sql.pure;

import java.sql.Blob;

/**
* MAuditDelta is a Querydsl bean type
*/
@SuppressWarnings("unused")
public class MAuditDelta {

// TODO why is checksum part of PK? why not (recordId, deltaNumber) or even totally unique single ID?
public Long recordId;
public String checksum;
public Blob delta;
public String deltaoid;
public Integer deltatype;
public Blob fullresult;
public String objectnameNorm;
public String objectnameOrig;
public String resourcenameNorm;
public String resourcenameOrig;
public String resourceoid;
public Integer status;

@Override
public String toString() {
return "MAuditDelta{" +
"recordId=" + recordId +
", checksum='" + checksum + '\'' +
// ", delta=" + delta +
// ", deltaoid='" + deltaoid + '\'' +
// ", deltatype=" + deltatype +
// ", fullresult=" + fullresult +
// ", objectnameNorm='" + objectnameNorm + '\'' +
// ", objectnameOrig='" + objectnameOrig + '\'' +
// ", resourcenameNorm='" + resourcenameNorm + '\'' +
// ", resourcenameOrig='" + resourcenameOrig + '\'' +
// ", resourceoid='" + resourceoid + '\'' +
", status=" + status +
'}';
}
}

0 comments on commit 37b957c

Please sign in to comment.