Skip to content

Commit

Permalink
repo-sqale: mapped m_archetype and m_dashboard
Browse files Browse the repository at this point in the history
  • Loading branch information
virgo47 committed Jan 30, 2021
1 parent 288889d commit 5716d9b
Show file tree
Hide file tree
Showing 10 changed files with 232 additions and 19 deletions.
49 changes: 32 additions & 17 deletions repo/repo-sqale/sql/pgnew-repo.sql
Expand Up @@ -561,6 +561,38 @@ CREATE TRIGGER m_object_collection_oid_delete_tr AFTER DELETE ON m_object_collec
CREATE INDEX m_object_collection_name_orig_idx ON m_object_collection (name_orig);
ALTER TABLE m_object_collection ADD CONSTRAINT m_object_collection_name_norm_key UNIQUE (name_norm);

CREATE TABLE m_archetype (
oid UUID NOT NULL PRIMARY KEY REFERENCES m_object_oid(oid),
objectTypeClass INTEGER GENERATED ALWAYS AS (29) STORED
)
INHERITS (m_object);

CREATE TRIGGER m_archetype_oid_insert_tr BEFORE INSERT ON m_archetype
FOR EACH ROW EXECUTE PROCEDURE insert_object_oid();
CREATE TRIGGER m_archetype_update_tr BEFORE UPDATE ON m_archetype
FOR EACH ROW EXECUTE PROCEDURE before_update_object();
CREATE TRIGGER m_archetype_oid_delete_tr AFTER DELETE ON m_archetype
FOR EACH ROW EXECUTE PROCEDURE delete_object_oid();

CREATE INDEX m_archetype_name_orig_idx ON m_archetype (name_orig);
ALTER TABLE m_archetype ADD CONSTRAINT m_archetype_name_norm_key UNIQUE (name_norm);

CREATE TABLE m_dashboard (
oid UUID NOT NULL PRIMARY KEY REFERENCES m_object_oid(oid),
objectTypeClass INTEGER GENERATED ALWAYS AS (30) STORED
)
INHERITS (m_object);

CREATE TRIGGER m_dashboard_oid_insert_tr BEFORE INSERT ON m_dashboard
FOR EACH ROW EXECUTE PROCEDURE insert_object_oid();
CREATE TRIGGER m_dashboard_update_tr BEFORE UPDATE ON m_dashboard
FOR EACH ROW EXECUTE PROCEDURE before_update_object();
CREATE TRIGGER m_dashboard_oid_delete_tr AFTER DELETE ON m_dashboard
FOR EACH ROW EXECUTE PROCEDURE delete_object_oid();

CREATE INDEX m_dashboard_name_orig_idx ON m_dashboard (name_orig);
ALTER TABLE m_dashboard ADD CONSTRAINT m_dashboard_name_norm_key UNIQUE (name_norm);

CREATE TABLE m_task (
oid UUID NOT NULL PRIMARY KEY REFERENCES m_object_oid(oid),
objectTypeClass INTEGER GENERATED ALWAYS AS (9) STORED,
Expand Down Expand Up @@ -997,12 +1029,6 @@ CREATE TABLE m_abstract_role (
oid VARCHAR(36) NOT NULL,
PRIMARY KEY (oid)
);
CREATE TABLE m_archetype (
name_norm VARCHAR(255),
name_orig VARCHAR(255),
oid VARCHAR(36) NOT NULL,
PRIMARY KEY (oid)
);
CREATE TABLE m_case (
closeTimestamp TIMESTAMP,
name_norm VARCHAR(255),
Expand Down Expand Up @@ -1044,12 +1070,6 @@ CREATE TABLE m_connector_host (
oid VARCHAR(36) NOT NULL,
PRIMARY KEY (oid)
);
CREATE TABLE m_dashboard (
name_norm VARCHAR(255),
name_orig VARCHAR(255),
oid VARCHAR(36) NOT NULL,
PRIMARY KEY (oid)
);
CREATE TABLE m_focus (
administrativeStatus INTEGER,
archiveTimestamp TIMESTAMP,
Expand Down Expand Up @@ -1371,9 +1391,6 @@ CREATE INDEX iConnectorHostNameOrig
ON m_connector_host (name_orig);
ALTER TABLE IF EXISTS m_connector_host
ADD CONSTRAINT uc_connector_host_name UNIQUE (name_norm);
CREATE INDEX iDashboardNameOrig ON m_dashboard(name_orig);
ALTER TABLE IF EXISTS m_dashboard
ADD CONSTRAINT u_dashboard_name UNIQUE (name_norm);
CREATE INDEX iFocusAdministrative
ON m_focus (administrativeStatus);
CREATE INDEX iFocusEffective
Expand Down Expand Up @@ -1590,8 +1607,6 @@ ALTER TABLE IF EXISTS m_connector
ADD CONSTRAINT fk_connector FOREIGN KEY (oid) REFERENCES m_object;
ALTER TABLE IF EXISTS m_connector_host
ADD CONSTRAINT fk_connector_host FOREIGN KEY (oid) REFERENCES m_object;
ALTER TABLE IF EXISTS m_dashboard
ADD CONSTRAINT fk_dashboard FOREIGN KEY (oid) REFERENCES m_object;
ALTER TABLE IF EXISTS m_focus
ADD CONSTRAINT fk_focus FOREIGN KEY (oid) REFERENCES m_object;
ALTER TABLE IF EXISTS m_form
Expand Down
Expand Up @@ -53,7 +53,8 @@ public SqaleRepositoryConfiguration sqaleRepositoryConfiguration(
MidpointConfiguration midpointConfiguration) throws RepositoryServiceFactoryException {
// TODO remove logging change, when better way to do it for initial start is found
((ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.querydsl.sql")).setLevel(Level.DEBUG);
((ch.qos.logback.classic.Logger) LoggerFactory.getLogger("org.postgresql")).setLevel(Level.DEBUG);
// PG logs too much on TRACE or not enough on DEBUG, not useful in the main log
// ((ch.qos.logback.classic.Logger) LoggerFactory.getLogger("org.postgresql")).setLevel(Level.TRACE);

return new SqaleRepositoryConfiguration(
midpointConfiguration.getConfiguration(
Expand Down Expand Up @@ -81,6 +82,8 @@ public SqlRepoContext sqlRepoContext(
DataSource dataSource) {
QueryModelMappingRegistry mappingRegistry = new QueryModelMappingRegistry()
// ordered alphabetically here
.register(ArchetypeType.COMPLEX_TYPE, QArchetypeMapping.INSTANCE)
.register(DashboardType.COMPLEX_TYPE, QDashboardMapping.INSTANCE)
.register(NodeType.COMPLEX_TYPE, QNodeMapping.INSTANCE)
.register(ObjectCollectionType.COMPLEX_TYPE, QObjectCollectionMapping.INSTANCE)
.register(SecurityPolicyType.COMPLEX_TYPE, QSecurityPolicyMapping.INSTANCE)
Expand Down
@@ -0,0 +1,15 @@
/*
* Copyright (C) 2010-2021 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.sqale.qbean;

import com.evolveum.midpoint.repo.sqale.qmodel.QArchetype;

/**
* Querydsl "row bean" type related to {@link QArchetype}.
*/
public class MArchetype extends MObject {
}
@@ -0,0 +1,15 @@
/*
* Copyright (C) 2010-2021 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.sqale.qbean;

import com.evolveum.midpoint.repo.sqale.qmodel.QArchetype;

/**
* Querydsl "row bean" type related to {@link QArchetype}.
*/
public class MDashboard extends MObject {
}
Expand Up @@ -9,6 +9,7 @@
import java.nio.charset.StandardCharsets;
import java.util.Collection;
import java.util.Collections;
import java.util.Optional;
import java.util.UUID;
import javax.xml.namespace.QName;

Expand Down Expand Up @@ -80,6 +81,10 @@ public S toSchemaObject(Tuple row, Q entityPath,
public R toRowObjectWithoutFullObject(S schemaObject) {
R row = mapping.newRowObject();

row.oid = Optional.ofNullable(schemaObject.getOid())
.map(UUID::fromString)
.orElse(null);

// primitive columns common to ObjectType
PolyStringType name = schemaObject.getName();
row.nameOrig = name.getOrig();
Expand Down
@@ -0,0 +1,46 @@
/*
* Copyright (C) 2010-2021 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.sqale.qmapping;

import com.evolveum.midpoint.repo.sqale.qbean.MArchetype;
import com.evolveum.midpoint.repo.sqale.qmodel.QArchetype;
import com.evolveum.midpoint.repo.sqlbase.SqlRepoContext;
import com.evolveum.midpoint.repo.sqlbase.SqlTransformerContext;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ArchetypeType;

/**
* Mapping between {@link QArchetype} and {@link ArchetypeType}.
*/
public class QArchetypeMapping
extends QObjectMapping<ArchetypeType, QArchetype, MArchetype> {

public static final String DEFAULT_ALIAS_NAME = "a";

public static final QArchetypeMapping INSTANCE = new QArchetypeMapping();

private QArchetypeMapping() {
super(QArchetype.TABLE_NAME, DEFAULT_ALIAS_NAME,
ArchetypeType.class, QArchetype.class);
}

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

@Override
public ObjectSqlTransformer<ArchetypeType, QArchetype, MArchetype>
createTransformer(SqlTransformerContext transformerContext, SqlRepoContext sqlRepoContext) {
// no special class needed, no additional columns
return new ObjectSqlTransformer<>(transformerContext, this);
}

@Override
public MArchetype newRowObject() {
return new MArchetype();
}
}
@@ -0,0 +1,46 @@
/*
* Copyright (C) 2010-2021 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.sqale.qmapping;

import com.evolveum.midpoint.repo.sqale.qbean.MDashboard;
import com.evolveum.midpoint.repo.sqale.qmodel.QDashboard;
import com.evolveum.midpoint.repo.sqlbase.SqlRepoContext;
import com.evolveum.midpoint.repo.sqlbase.SqlTransformerContext;
import com.evolveum.midpoint.xml.ns._public.common.common_3.DashboardType;

/**
* Mapping between {@link QDashboard} and {@link DashboardType}.
*/
public class QDashboardMapping
extends QObjectMapping<DashboardType, QDashboard, MDashboard> {

public static final String DEFAULT_ALIAS_NAME = "d";

public static final QDashboardMapping INSTANCE = new QDashboardMapping();

private QDashboardMapping() {
super(QDashboard.TABLE_NAME, DEFAULT_ALIAS_NAME,
DashboardType.class, QDashboard.class);
}

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

@Override
public ObjectSqlTransformer<DashboardType, QDashboard, MDashboard>
createTransformer(SqlTransformerContext transformerContext, SqlRepoContext sqlRepoContext) {
// no special class needed, no additional columns
return new ObjectSqlTransformer<>(transformerContext, this);
}

@Override
public MDashboard newRowObject() {
return new MDashboard();
}
}
@@ -0,0 +1,34 @@
/*
* Copyright (C) 2010-2021 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.sqale.qmodel;

import com.querydsl.sql.PrimaryKey;

import com.evolveum.midpoint.repo.sqale.qbean.MArchetype;

/**
* Querydsl query type for {@value #TABLE_NAME} table.
*/
@SuppressWarnings("unused")
public class QArchetype extends QObject<MArchetype> {

private static final long serialVersionUID = -8367034620810300322L;

public static final String TABLE_NAME = "m_archetype";

// no additional columns and relations

public final PrimaryKey<MArchetype> pk = createPrimaryKey(oid);

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

public QArchetype(String variable, String schema, String table) {
super(MArchetype.class, variable, schema, table);
}
}
@@ -0,0 +1,34 @@
/*
* Copyright (C) 2010-2021 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.sqale.qmodel;

import com.querydsl.sql.PrimaryKey;

import com.evolveum.midpoint.repo.sqale.qbean.MDashboard;

/**
* Querydsl query type for {@value #TABLE_NAME} table.
*/
@SuppressWarnings("unused")
public class QDashboard extends QObject<MDashboard> {

private static final long serialVersionUID = -3546780348548754579L;

public static final String TABLE_NAME = "m_dashboard";

// no additional columns and relations

public final PrimaryKey<MDashboard> pk = createPrimaryKey(oid);

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

public QDashboard(String variable, String schema, String table) {
super(MDashboard.class, variable, schema, table);
}
}
Expand Up @@ -16,7 +16,7 @@
@SuppressWarnings("unused")
public class QSecurityPolicy extends QObject<MSecurityPolicy> {

private static final long serialVersionUID = 2042159341967925185L;
private static final long serialVersionUID = 289603300613404007L;

public static final String TABLE_NAME = "m_security_policy";

Expand Down

0 comments on commit 5716d9b

Please sign in to comment.