Skip to content

Commit

Permalink
Make SimulationResultType assignment holder
Browse files Browse the repository at this point in the history
We need this e.g. to assign archetypes to the results.
  • Loading branch information
mederly committed Jan 30, 2023
1 parent 5c03ed0 commit c206733
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 36 deletions.
2 changes: 1 addition & 1 deletion config/sql/native-new/postgres-new-upgrade.sql
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ CREATE TABLE m_simulation_result (
startTimestamp TIMESTAMPTZ,
endTimestamp TIMESTAMPTZ
)
INHERITS (m_object);
INHERITS (m_assignment_holder);

CREATE TRIGGER m_simulation_result_oid_insert_tr BEFORE INSERT ON m_simulation_result
FOR EACH ROW EXECUTE FUNCTION insert_object_oid();
Expand Down
2 changes: 1 addition & 1 deletion config/sql/native-new/postgres-new.sql
Original file line number Diff line number Diff line change
Expand Up @@ -1883,7 +1883,7 @@ CREATE TABLE m_simulation_result (
startTimestamp TIMESTAMPTZ,
endTimestamp TIMESTAMPTZ
)
INHERITS (m_object);
INHERITS (m_assignment_holder);

CREATE TRIGGER m_simulation_result_oid_insert_tr BEFORE INSERT ON m_simulation_result
FOR EACH ROW EXECUTE FUNCTION insert_object_oid();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
</xsd:appinfo>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="tns:ObjectType">
<xsd:extension base="tns:AssignmentHolderType">
<xsd:sequence>
<xsd:element name="definition" type="tns:SimulationDefinitionType" minOccurs="0">
<xsd:annotation>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,17 @@
import java.sql.Types;
import java.time.Instant;

import com.evolveum.midpoint.repo.sqale.qmodel.object.MObjectType;
import com.evolveum.midpoint.repo.sqale.qmodel.object.QObject;
import com.evolveum.midpoint.repo.sqlbase.querydsl.UuidPath;
import com.querydsl.core.types.dsl.BooleanPath;
import com.querydsl.core.types.dsl.DateTimePath;
import com.querydsl.core.types.dsl.EnumPath;
import com.querydsl.core.types.dsl.NumberPath;
import com.querydsl.sql.ColumnMetadata;

public class QSimulationResult extends QObject<MSimulationResult> {
import com.evolveum.midpoint.repo.sqale.qmodel.object.MObjectType;
import com.evolveum.midpoint.repo.sqale.qmodel.object.QAssignmentHolder;
import com.evolveum.midpoint.repo.sqlbase.querydsl.UuidPath;

public class QSimulationResult extends QAssignmentHolder<MSimulationResult> {

public static final String TABLE_NAME = "m_simulation_result";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,25 @@
package com.evolveum.midpoint.repo.sqale.qmodel.simulation;

import static com.evolveum.midpoint.xml.ns._public.common.common_3.SimulationResultType.*;

import java.util.List;
import java.util.Objects;

import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.prism.path.PathSet;
import com.evolveum.midpoint.repo.sqale.SqaleRepoContext;
import com.evolveum.midpoint.repo.sqale.qmodel.accesscert.QAccessCertificationCaseMapping;
import com.evolveum.midpoint.repo.sqale.qmodel.object.QObjectMapping;
import com.evolveum.midpoint.repo.sqale.qmodel.object.QAssignmentHolderMapping;
import com.evolveum.midpoint.repo.sqale.qmodel.task.QTaskMapping;
import com.evolveum.midpoint.repo.sqlbase.JdbcSession;
import com.evolveum.midpoint.util.MiscUtil;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCaseType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SimulationDefinitionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SimulationResultProcessedObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SimulationResultType;

import static com.evolveum.midpoint.xml.ns._public.common.common_3.SimulationResultType.*;

public class QSimulationResultMapping extends QObjectMapping<SimulationResultType, QSimulationResult, MSimulationResult> {
public class QSimulationResultMapping
extends QAssignmentHolderMapping<SimulationResultType, QSimulationResult, MSimulationResult> {

public static final String DEFAULT_ALIAS_NAME = "sr";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ public class SimulationsBaselineTest extends SqaleRepoBaseTest {

private static final String TEST_TAG_1 = "00000000-0000-0000-0000-000000001000";
private static final String TEST_TAG_2 = "00000000-0000-0000-0000-000000002000";
private static final String TEST_ARCHETYPE = "d029f4e9-d0e9-4486-a927-20585d909dc7";
private static final String RANDOM_OID = "24a89c52-e477-4a38-b3c0-75a01d8c13f3";

@Test
public void test100CreateSimulation() throws ObjectAlreadyExistsException, SchemaException, ObjectNotFoundException {
Expand All @@ -36,6 +38,10 @@ public void test100CreateSimulation() throws ObjectAlreadyExistsException, Schem
.name("Test Simulation Result")
.rootTaskRef(TEST_TAG_1, TaskType.COMPLEX_TYPE)
.definition(new SimulationDefinitionType().useOwnPartitionForProcessedObjects(getPartitioned()))
.archetypeRef(TEST_ARCHETYPE, ArchetypeType.COMPLEX_TYPE)
.assignment(new AssignmentType()
.targetRef(TEST_ARCHETYPE, ArchetypeType.COMPLEX_TYPE)
)
.processedObject(new SimulationResultProcessedObjectType()
.transactionId("1")
.oid("00000000-0000-0000-0000-000000000001")
Expand Down Expand Up @@ -84,6 +90,54 @@ public void test100CreateSimulation() throws ObjectAlreadyExistsException, Schem
// TODO this should work, shouldn't it?
ObjectType objectBefore = processedObjects.get(0).getBefore();
assertThat(objectBefore).as("'object before' from result").isEqualTo(systemConfiguration);

when("simulation result is searched by matching archetypeRef");
var byArchetypeRefMatching = repositoryService.searchObjects(
SimulationResultType.class,
prismContext.queryFor(SimulationResultType.class)
.item(SimulationResultType.F_ARCHETYPE_REF)
.ref(TEST_ARCHETYPE)
.build(),
null, result);

then("it is found");
assertThat(byArchetypeRefMatching).as("by archetypeRef, matching").hasSize(1);

when("simulation result is searched by matching assignment/targetRef");
var byAssignmentTargetRefMatching = repositoryService.searchObjects(
SimulationResultType.class,
prismContext.queryFor(SimulationResultType.class)
.item(SimulationResultType.F_ASSIGNMENT, AssignmentType.F_TARGET_REF)
.ref(TEST_ARCHETYPE)
.build(),
null, result);

then("it is found");
assertThat(byAssignmentTargetRefMatching).as("by assignment/targetRef, matching").hasSize(1);

when("simulation result is searched by non-matching archetypeRef");
var byArchetypeRefNonMatching = repositoryService.searchObjects(
SimulationResultType.class,
prismContext.queryFor(SimulationResultType.class)
.item(SimulationResultType.F_ARCHETYPE_REF)
.ref(RANDOM_OID)
.build(),
null, result);

then("nothing is found");
assertThat(byArchetypeRefNonMatching).as("by archetypeRef, non-matching").isEmpty();

when("simulation result is searched by non-matching assignment/targetRef");
var byAssignmentTargetRefNonMatching = repositoryService.searchObjects(
SimulationResultType.class,
prismContext.queryFor(SimulationResultType.class)
.item(SimulationResultType.F_ASSIGNMENT, AssignmentType.F_TARGET_REF)
.ref(RANDOM_OID)
.build(),
null, result);

then("nothing is found");
assertThat(byAssignmentTargetRefNonMatching).as("by assignment/targetRef, non-matching").isEmpty();
}

protected boolean getPartitioned() {
Expand All @@ -97,7 +151,7 @@ public void test110createTag() throws Exception {
String oid = repositoryService.addObject(obj.asPrismObject(), null, result);

@NotNull
PrismObject<TagType> readed = repositoryService.getObject(TagType.class, oid, null, result);
assertNotNull(readed);
PrismObject<TagType> read = repositoryService.getObject(TagType.class, oid, null, result);
assertNotNull(read);
}
}
Original file line number Diff line number Diff line change
@@ -1,30 +1,9 @@
package com.evolveum.midpoint.repo.sqale.func;

import static org.assertj.core.api.Assertions.assertThat;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;

import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.jetbrains.annotations.NotNull;
import org.testng.annotations.Test;

import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.repo.sqale.SqaleRepoBaseTest;
import com.evolveum.midpoint.schema.SearchResultList;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException;
import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
import com.evolveum.midpoint.util.exception.SchemaException;

public class SimulationsPartitionedTest extends SimulationsBaselineTest {


@Override
protected boolean getPartitioned() {
return true;
}

}

0 comments on commit c206733

Please sign in to comment.