Skip to content

Commit

Permalink
Squale: case
Browse files Browse the repository at this point in the history
  • Loading branch information
semancik committed May 17, 2021
1 parent f7c6583 commit 4d3c584
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 1 deletion.
Expand Up @@ -8,6 +8,12 @@

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

import com.evolveum.midpoint.repo.sqale.qmodel.task.MTask;

import com.evolveum.midpoint.repo.sqlbase.JdbcSession;

import com.evolveum.midpoint.util.MiscUtil;

import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.repo.sqale.SqaleRepoContext;
Expand Down Expand Up @@ -60,5 +66,30 @@ public MCase newRowObject() {
return new MCase();
}

// TODO transformation code
@Override
public @NotNull MCase toRowObjectWithoutFullObject(
CaseType acase, JdbcSession jdbcSession) {
MCase row = super.toRowObjectWithoutFullObject(acase, jdbcSession);

row.state = acase.getState();
row.closeTimestamp = MiscUtil.asInstant(acase.getCloseTimestamp());
setReference(acase.getObjectRef(),
o -> row.objectRefTargetOid = o,
t -> row.objectRefTargetType = t,
r -> row.objectRefRelationId = r);
setReference(acase.getParentRef(),
o -> row.parentRefTargetOid = o,
t -> row.parentRefTargetType = t,
r -> row.parentRefRelationId = r);
setReference(acase.getRequestorRef(),
o -> row.requestorRefTargetOid = o,
t -> row.requestorRefTargetType = t,
r -> row.requestorRefRelationId = r);
setReference(acase.getTargetRef(),
o -> row.targetRefTargetOid = o,
t -> row.targetRefTargetType = t,
r -> row.targetRefRelationId = r);

return row;
}
}
Expand Up @@ -18,6 +18,10 @@
import java.util.UUID;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.repo.sqale.qmodel.cases.MCase;

import com.evolveum.midpoint.repo.sqale.qmodel.cases.QCase;

import org.testng.annotations.Test;

import com.evolveum.midpoint.repo.api.DeleteObjectResult;
Expand Down Expand Up @@ -1118,6 +1122,58 @@ public void test840AccessCertificationDefinition() throws Exception {
assertThat(row.ownerRefTargetType).isEqualTo(MObjectType.USER);
assertCachedUri(row.ownerRefRelationId, relationUri);
}

@Test
public void test850Case() throws Exception {
OperationResult result = createOperationResult();

given("case");
String objectName = "case" + getTestNumber();
UUID parentOid = UUID.randomUUID();
QName parentRelation = QName.valueOf("{https://random.org/ns}case-parent-rel");
UUID objectOid = UUID.randomUUID();
QName objectRelation = QName.valueOf("{https://random.org/ns}case-object-rel");
UUID requestorOid = UUID.randomUUID();
QName requestorRelation = QName.valueOf("{https://random.org/ns}case-requestor-rel");
UUID targetOid = UUID.randomUUID();
QName targetRelation = QName.valueOf("{https://random.org/ns}case-target-rel");

CaseType acase = new CaseType(prismContext)
.name(objectName)
.state("closed")
.closeTimestamp(MiscUtil.asXMLGregorianCalendar(321L))
.parentRef(parentOid.toString(),
CaseType.COMPLEX_TYPE, parentRelation)
.objectRef(objectOid.toString(),
RoleType.COMPLEX_TYPE, objectRelation)
.requestorRef(requestorOid.toString(),
UserType.COMPLEX_TYPE, requestorRelation)
.targetRef(targetOid.toString(),
OrgType.COMPLEX_TYPE, targetRelation);

when("adding it to the repository");
repositoryService.addObject(acase.asPrismObject(), null, result);

then("it is stored and relevant attributes are in columns");
assertThatOperationResult(result).isSuccess();

MCase row = selectObjectByOid(QCase.class, acase.getOid());
assertThat(row.state).isEqualTo("closed");
assertThat(row.closeTimestamp).isEqualTo(Instant.ofEpochMilli(321));
assertThat(row.parentRefTargetOid).isEqualTo(parentOid);
assertThat(row.parentRefTargetType).isEqualTo(MObjectType.CASE);
assertCachedUri(row.parentRefRelationId, parentRelation);
assertThat(row.objectRefTargetOid).isEqualTo(objectOid);
assertThat(row.objectRefTargetType).isEqualTo(MObjectType.ROLE);
assertCachedUri(row.objectRefRelationId, objectRelation);
assertThat(row.requestorRefTargetOid).isEqualTo(requestorOid);
assertThat(row.requestorRefTargetType).isEqualTo(MObjectType.USER);
assertCachedUri(row.requestorRefRelationId, requestorRelation);
assertThat(row.targetRefTargetOid).isEqualTo(targetOid);
assertThat(row.targetRefTargetType).isEqualTo(MObjectType.ORG);
assertCachedUri(row.targetRefRelationId, targetRelation);
}

// endregion

// region delete tests
Expand Down

0 comments on commit 4d3c584

Please sign in to comment.