Skip to content

Commit

Permalink
repo-sqale: more SQL schema reorganization/comments, more mapping fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
virgo47 committed Feb 17, 2021
1 parent ef983aa commit 8f6810c
Show file tree
Hide file tree
Showing 15 changed files with 226 additions and 221 deletions.
345 changes: 180 additions & 165 deletions repo/repo-sqale/sql/pgnew-repo.sql

Large diffs are not rendered by default.

Expand Up @@ -24,7 +24,7 @@
import com.evolveum.midpoint.repo.sqale.qmodel.object.QAssignmentHolderMapping.QAssignmentHolder;
import com.evolveum.midpoint.repo.sqale.qmodel.object.QObject;
import com.evolveum.midpoint.repo.sqale.qmodel.report.QReport;
import com.evolveum.midpoint.repo.sqale.qmodel.report.QReportOutput;
import com.evolveum.midpoint.repo.sqale.qmodel.report.QReportData;
import com.evolveum.midpoint.repo.sqale.qmodel.role.QAbstractRole;
import com.evolveum.midpoint.repo.sqale.qmodel.role.QArchetype;
import com.evolveum.midpoint.repo.sqale.qmodel.role.QRole;
Expand All @@ -51,7 +51,7 @@ public enum MObjectTypeMapping {
TASK(10, QTask.class, TaskType.class),
USER(11, QUser.class, UserType.class),
REPORT(12, QReport.class, ReportType.class),
REPORT_DATA(13, QReportOutput.class, ReportDataType.class),
REPORT_DATA(13, QReportData.class, ReportDataType.class),
OBJECT_TEMPLATE(14, null, ObjectTemplateType.class),
NODE(15, QNode.class, NodeType.class),
ORG(16, null, OrgType.class),
Expand Down
Expand Up @@ -31,7 +31,7 @@
import com.evolveum.midpoint.repo.sqale.qmodel.object.QAssignmentHolderMapping;
import com.evolveum.midpoint.repo.sqale.qmodel.object.QObjectMapping;
import com.evolveum.midpoint.repo.sqale.qmodel.report.QReportMapping;
import com.evolveum.midpoint.repo.sqale.qmodel.report.QReportOutputMapping;
import com.evolveum.midpoint.repo.sqale.qmodel.report.QReportDataMapping;
import com.evolveum.midpoint.repo.sqale.qmodel.role.QAbstractRoleMapping;
import com.evolveum.midpoint.repo.sqale.qmodel.role.QArchetypeMapping;
import com.evolveum.midpoint.repo.sqale.qmodel.role.QRoleMapping;
Expand Down Expand Up @@ -110,7 +110,7 @@ public SqaleRepoContext sqlRepoContext(
.register(ObjectType.COMPLEX_TYPE, QObjectMapping.INSTANCE)
.register(ObjectCollectionType.COMPLEX_TYPE, QObjectCollectionMapping.INSTANCE)
.register(ReportType.COMPLEX_TYPE, QReportMapping.INSTANCE)
.register(ReportDataType.COMPLEX_TYPE, QReportOutputMapping.INSTANCE)
.register(ReportDataType.COMPLEX_TYPE, QReportDataMapping.INSTANCE)
.register(RoleType.COMPLEX_TYPE, QRoleMapping.INSTANCE)
.register(SecurityPolicyType.COMPLEX_TYPE, QSecurityPolicyMapping.INSTANCE)
.register(ServiceType.COMPLEX_TYPE, QServiceMapping.INSTANCE)
Expand Down
Expand Up @@ -52,7 +52,7 @@ public class QFocus<T extends MFocus> extends QObject<T> {
ColumnMetadata.named("telephoneNumber").ofType(Types.VARCHAR).withSize(255);
public static final ColumnMetadata TIMEZONE =
ColumnMetadata.named("timezone").ofType(Types.VARCHAR).withSize(255);
// credential columns
// credential/password/metadata columns
public static final ColumnMetadata PASSWORD_CREATE_TIMESTAMP =
ColumnMetadata.named("passwordCreateTimestamp").ofType(Types.TIMESTAMP_WITH_TIMEZONE);
public static final ColumnMetadata PASSWORD_MODIFY_TIMESTAMP =
Expand Down Expand Up @@ -89,7 +89,7 @@ public class QFocus<T extends MFocus> extends QObject<T> {
createString("preferredLanguage", PREFERRED_LANGUAGE);
public final StringPath telephoneNumber = createString("telephoneNumber", TELEPHONE_NUMBER);
public final StringPath timezone = createString("timezone", TIMEZONE);
// credential attributes
// credential/password/metadata attributes
public final DateTimePath<Instant> passwordCreateTimestamp =
createInstant("passwordCreateTimestamp", PASSWORD_CREATE_TIMESTAMP);
public final DateTimePath<Instant> passwordModifyTimestamp =
Expand Down
Expand Up @@ -21,8 +21,7 @@
import com.evolveum.midpoint.repo.sqlbase.mapping.item.TimestampItemFilterProcessor;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

/**
* Mapping between {@link QFocus} and {@link FocusType}.
Expand All @@ -43,18 +42,6 @@ protected QFocusMapping(
@NotNull Class<Q> queryType) {
super(tableName, defaultAliasName, schemaType, queryType);

/* addItemMapping(FocusType.F_ACTIVATION, null); // TODO sub-mapping for activation
public final static ItemName F_ADMINISTRATIVE_STATUS = new ItemName(SchemaConstantsGenerated.NS_COMMON, "administrativeStatus");
public final static ItemName F_EFFECTIVE_STATUS = new ItemName(SchemaConstantsGenerated.NS_COMMON, "effectiveStatus");
public final static ItemName F_VALID_FROM = new ItemName(SchemaConstantsGenerated.NS_COMMON, "validFrom");
public final static ItemName F_VALID_TO = new ItemName(SchemaConstantsGenerated.NS_COMMON, "validTo");
public final static ItemName F_VALIDITY_STATUS = new ItemName(SchemaConstantsGenerated.NS_COMMON, "validityStatus");
public final static ItemName F_DISABLE_REASON = new ItemName(SchemaConstantsGenerated.NS_COMMON, "disableReason");
public final static ItemName F_DISABLE_TIMESTAMP = new ItemName(SchemaConstantsGenerated.NS_COMMON, "disableTimestamp");
public final static ItemName F_ENABLE_TIMESTAMP = new ItemName(SchemaConstantsGenerated.NS_COMMON, "enableTimestamp");
public final static ItemName F_ARCHIVE_TIMESTAMP = new ItemName(SchemaConstantsGenerated.NS_COMMON, "archiveTimestamp");
public final static ItemName F_VALIDITY_CHANGE_TIMESTAMP = new ItemName(SchemaConstantsGenerated.NS_COMMON, "validityChangeTimestamp");
*/
addItemMapping(F_COST_CENTER, stringMapper(path(q -> q.costCenter)));
addItemMapping(F_EMAIL_ADDRESS, stringMapper(path(q -> q.emailAddress)));
// TODO byte[] mapping for F_JPEG_PHOTO -> q.photo
Expand All @@ -65,7 +52,14 @@ protected QFocusMapping(
addItemMapping(F_PREFERRED_LANGUAGE, stringMapper(path(q -> q.preferredLanguage)));
addItemMapping(F_TIMEZONE, stringMapper(path(q -> q.timezone)));
addItemMapping(F_TELEPHONE_NUMBER, stringMapper(path(q -> q.telephoneNumber)));
// TODO how to map CredentialsType/PasswordType/PasswordHistoryEntryType (List) to create/modify timestamp?
// passwordModify/CreateTimestamps are just a bit deeper
nestedMapping(F_CREDENTIALS, CredentialsType.class)
.nestedMapping(CredentialsType.F_PASSWORD, PasswordType.class)
.nestedMapping(PasswordType.F_METADATA, MetadataType.class)
.addItemMapping(MetadataType.F_CREATE_TIMESTAMP,
TimestampItemFilterProcessor.mapper(path(q -> q.passwordCreateTimestamp)))
.addItemMapping(MetadataType.F_MODIFY_TIMESTAMP,
TimestampItemFilterProcessor.mapper(path(q -> q.passwordModifyTimestamp)));
nestedMapping(F_ACTIVATION, ActivationType.class)
.addItemMapping(ActivationType.F_ADMINISTRATIVE_STATUS,
integerMapper(path(q -> q.administrativeStatus)))
Expand Down Expand Up @@ -96,7 +90,6 @@ protected QFocusMapping(
return new Path[] { entity.oid, entity.fullObject };
}

// TODO verify that this allows creation of QFocus alias and that it suffices for "generic query"
@Override
protected Q newAliasInstance(String alias) {
//noinspection unchecked
Expand Down
Expand Up @@ -90,7 +90,6 @@ protected QObjectMapping(
return new Path[] { entity.oid, entity.fullObject };
}

// TODO verify that this allows creation of QObject alias and that it suffices for "generic query"
@Override
protected Q newAliasInstance(String alias) {
//noinspection unchecked
Expand Down
Expand Up @@ -11,9 +11,9 @@
import com.evolveum.midpoint.repo.sqale.qmodel.object.MObject;

/**
* Querydsl "row bean" type related to {@link QReportOutput}.
* Querydsl "row bean" type related to {@link QReportData}.
*/
public class MReportOutput extends MObject {
public class MReportData extends MObject {

public UUID reportRefTargetOid;
public Integer reportRefTargetType;
Expand Down
Expand Up @@ -18,11 +18,11 @@
* Querydsl query type for {@value #TABLE_NAME} table.
*/
@SuppressWarnings("unused")
public class QReportOutput extends QObject<MReportOutput> {
public class QReportData extends QObject<MReportData> {

private static final long serialVersionUID = -544485328996889511L;

public static final String TABLE_NAME = "m_report_output";
public static final String TABLE_NAME = "m_report_data";

public static final ColumnMetadata REPORT_REF_TARGET_OID =
ColumnMetadata.named("reportRef_targetOid").ofType(UuidPath.UUID_TYPE);
Expand All @@ -38,11 +38,11 @@ public class QReportOutput extends QObject<MReportOutput> {
public final NumberPath<Integer> reportRefRelationId =
createInteger("reportRefRelationId", REPORT_REF_RELATION_ID);

public QReportOutput(String variable) {
public QReportData(String variable) {
this(variable, DEFAULT_SCHEMA_NAME, TABLE_NAME);
}

public QReportOutput(String variable, String schema, String table) {
super(MReportOutput.class, variable, schema, table);
public QReportData(String variable, String schema, String table) {
super(MReportData.class, variable, schema, table);
}
}
Expand Up @@ -15,18 +15,18 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportDataType;

/**
* Mapping between {@link QReportOutput} and {@link ReportDataType}.
* Mapping between {@link QReportData} and {@link ReportDataType}.
*/
public class QReportOutputMapping
extends QObjectMapping<ReportDataType, QReportOutput, MReportOutput> {
public class QReportDataMapping
extends QObjectMapping<ReportDataType, QReportData, MReportData> {

public static final String DEFAULT_ALIAS_NAME = "repout";

public static final QReportOutputMapping INSTANCE = new QReportOutputMapping();
public static final QReportDataMapping INSTANCE = new QReportDataMapping();

private QReportOutputMapping() {
super(QReportOutput.TABLE_NAME, DEFAULT_ALIAS_NAME,
ReportDataType.class, QReportOutput.class);
private QReportDataMapping() {
super(QReportData.TABLE_NAME, DEFAULT_ALIAS_NAME,
ReportDataType.class, QReportData.class);

addItemMapping(F_REPORT_REF, RefItemFilterProcessor.mapper(
path(q -> q.reportRefTargetOid),
Expand All @@ -35,19 +35,19 @@ private QReportOutputMapping() {
}

@Override
protected QReportOutput newAliasInstance(String alias) {
return new QReportOutput(alias);
protected QReportData newAliasInstance(String alias) {
return new QReportData(alias);
}

@Override
public ObjectSqlTransformer<ReportDataType, QReportOutput, MReportOutput>
public ObjectSqlTransformer<ReportDataType, QReportData, MReportData>
createTransformer(SqlTransformerContext transformerContext) {
// no special class needed, no additional columns
return new ObjectSqlTransformer<>(transformerContext, this);
}

@Override
public MReportOutput newRowObject() {
return new MReportOutput();
public MReportData newRowObject() {
return new MReportData();
}
}
Expand Up @@ -15,7 +15,6 @@
*/
public class MAbstractRole extends MFocus {

public String approvalProcess;
public Boolean autoassignEnabled;
public String displayNameNorm;
public String displayNameOrig;
Expand Down
Expand Up @@ -33,8 +33,6 @@ public class QAbstractRole<T extends MAbstractRole> extends QFocus<T> {

public static final String TABLE_NAME = "m_abstract_role";

public static final ColumnMetadata APPROVAL_PROCESS =
ColumnMetadata.named("approvalProcess").ofType(Types.VARCHAR).withSize(255);
public static final ColumnMetadata AUTOASSIGN_ENABLED =
ColumnMetadata.named("autoassign_enabled").ofType(Types.BOOLEAN);
public static final ColumnMetadata DISPLAY_NAME_NORM =
Expand All @@ -54,8 +52,7 @@ public class QAbstractRole<T extends MAbstractRole> extends QFocus<T> {
public static final ColumnMetadata RISK_LEVEL =
ColumnMetadata.named("riskLevel").ofType(Types.VARCHAR).withSize(255);

public final StringPath approvalProcess = createString("approvalProcess", APPROVAL_PROCESS);
public final BooleanPath effectiveStatus = createBoolean("autoassignEnabled", AUTOASSIGN_ENABLED);
public final BooleanPath autoassignEnabled = createBoolean("autoassignEnabled", AUTOASSIGN_ENABLED);
public final StringPath displayNameNorm = createString("displayNameNorm", DISPLAY_NAME_NORM);
public final StringPath displayNameOrig = createString("displayNameOrig", DISPLAY_NAME_ORIG);
public final StringPath identifier = createString("identifier", IDENTIFIER);
Expand Down
Expand Up @@ -16,6 +16,7 @@
import com.evolveum.midpoint.repo.sqlbase.SqlTransformerContext;
import com.evolveum.midpoint.repo.sqlbase.mapping.item.PolyStringItemFilterProcessor;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AutoassignSpecificationType;

/**
* Mapping between {@link QAbstractRole} and {@link AbstractRoleType}.
Expand All @@ -38,8 +39,9 @@ protected QAbstractRoleMapping(
@NotNull Class<Q> queryType) {
super(tableName, defaultAliasName, schemaType, queryType);

// TODO how is approvalProcess mapped? Nothing found in RAbstractRole
// addItemMapping(AbstractRoleType.F_AUTOASSIGN ...TODO nested mapping AutoassignSpecificationType
nestedMapping(F_AUTOASSIGN, AutoassignSpecificationType.class)
.addItemMapping(AutoassignSpecificationType.F_ENABLED,
booleanMapper(path(q -> q.autoassignEnabled)));
addItemMapping(F_DISPLAY_NAME, PolyStringItemFilterProcessor.mapper(
path(q -> q.displayNameOrig), path(q -> q.displayNameNorm)));
addItemMapping(F_IDENTIFIER, stringMapper(path(q -> q.identifier)));
Expand All @@ -48,7 +50,6 @@ protected QAbstractRoleMapping(
addItemMapping(F_RISK_LEVEL, stringMapper(path(q -> q.riskLevel)));
}

// TODO verify that this allows creation of QAbstractRole alias and that it suffices for "generic query"
@Override
protected Q newAliasInstance(String alias) {
//noinspection unchecked
Expand Down
Expand Up @@ -23,7 +23,7 @@ public class MTask extends MObject {
public Instant completionTimestamp;
public TaskExecutionStatusType executionStatus;
public byte[] fullResult;
public String handlerUri;
public Integer handlerUriId;
public Instant lastRunFinishTimestamp;
public Instant lastRunStartTimestamp;
public String node;
Expand Down
Expand Up @@ -38,8 +38,8 @@ public class QTask extends QObject<MTask> {
ColumnMetadata.named("executionStatus").ofType(Types.OTHER);
public static final ColumnMetadata FULL_RESULT =
ColumnMetadata.named("fullResult").ofType(Types.BINARY);
public static final ColumnMetadata HANDLER_URI =
ColumnMetadata.named("handlerUri").ofType(Types.VARCHAR).withSize(255);
public static final ColumnMetadata HANDLER_URI_ID =
ColumnMetadata.named("handlerUri_id").ofType(Types.INTEGER);
public static final ColumnMetadata LAST_RUN_FINISH_TIMESTAMP =
ColumnMetadata.named("lastRunFinishTimestamp").ofType(Types.TIMESTAMP_WITH_TIMEZONE);
public static final ColumnMetadata LAST_RUN_START_TIMESTAMP =
Expand Down Expand Up @@ -78,7 +78,7 @@ public class QTask extends QObject<MTask> {
public final EnumPath<TaskExecutionStatusType> executionStatus =
createEnum("executionStatus", TaskExecutionStatusType.class, EXECUTION_STATUS);
public final ArrayPath<byte[], Byte> fullResult = createByteArray("fullResult", FULL_RESULT);
public final StringPath handlerUri = createString("handlerUri", HANDLER_URI);
public final NumberPath<Integer> handlerUriId = createInteger("handlerUriId", HANDLER_URI_ID);
public final DateTimePath<Instant> lastRunFinishTimestamp = createInstant("lastRunFinishTimestamp", LAST_RUN_FINISH_TIMESTAMP);
public final DateTimePath<Instant> lastRunStartTimestamp = createInstant("lastRunStartTimestamp", LAST_RUN_START_TIMESTAMP);
public final StringPath node = createString("node", NODE);
Expand Down
Expand Up @@ -10,6 +10,7 @@
import static com.evolveum.midpoint.repo.sqlbase.mapping.item.SimpleItemFilterProcessor.stringMapper;

import com.evolveum.midpoint.repo.sqale.RefItemFilterProcessor;
import com.evolveum.midpoint.repo.sqale.UriItemFilterProcessor;
import com.evolveum.midpoint.repo.sqale.qmodel.object.QObjectMapping;
import com.evolveum.midpoint.repo.sqlbase.SqlTransformerContext;
import com.evolveum.midpoint.repo.sqlbase.mapping.item.EnumItemFilterProcessor;
Expand All @@ -36,9 +37,9 @@ private QTaskMapping() {
TimestampItemFilterProcessor.mapper(path(q -> q.completionTimestamp)));
addItemMapping(TaskType.F_EXECUTION_STATUS,
EnumItemFilterProcessor.mapper(path(q -> q.executionStatus)));
// TaskExecutionStatusType
// TODO byte[] fullResult mapping
addItemMapping(TaskType.F_HANDLER_URI, stringMapper(path(q -> q.handlerUri)));
addItemMapping(TaskType.F_HANDLER_URI,
UriItemFilterProcessor.mapper(path(q -> q.handlerUriId)));
addItemMapping(TaskType.F_LAST_RUN_FINISH_TIMESTAMP,
TimestampItemFilterProcessor.mapper(path(q -> q.lastRunFinishTimestamp)));
addItemMapping(TaskType.F_LAST_RUN_START_TIMESTAMP,
Expand Down

0 comments on commit 8f6810c

Please sign in to comment.