use of com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableType in project midpoint by Evolveum.
the class QLookupTableMapping method appendLookupTableRows.
private void appendLookupTableRows(UUID ownerOid, LookupTableType base, GetOperationOptions rowOptions, JdbcSession session) {
try {
RelationalValueSearchQuery queryDef = rowOptions == null ? null : rowOptions.getRelationalValueSearchQuery();
QLookupTableRowMapping rowMapping = QLookupTableRowMapping.get();
QLookupTableRow alias = rowMapping.defaultAlias();
BooleanExpression whereQuery = appendConditions(alias, alias.ownerOid.eq(ownerOid), queryDef);
SQLQuery<MLookupTableRow> query = session.newQuery().from(alias).select(alias).where(whereQuery);
query = pagingAndOrdering(query, queryDef, rowMapping, alias);
List<MLookupTableRow> result = query.fetch();
for (MLookupTableRow r : result) {
LookupTableRowType lookupRow = new LookupTableRowType().key(r.key);
if (r.labelOrig != null || r.labelNorm != null) {
lookupRow.label(PolyString.toPolyStringType(new PolyString(r.labelOrig, r.labelNorm)));
}
lookupRow.lastChangeTimestamp(MiscUtil.asXMLGregorianCalendar(r.lastChangeTimestamp));
lookupRow.value(r.value);
lookupRow.asPrismContainerValue().setId(r.cid);
base.getRow().add(lookupRow);
}
} catch (QueryException e) {
throw new SystemException("Unable to fetch nested table rows", e);
}
}
use of com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableType in project midpoint by Evolveum.
the class SqaleRepoAddDeleteObjectTest method test808LookupTable.
@Test
public void test808LookupTable() throws Exception {
OperationResult result = createOperationResult();
given("lookup table with a couple of rows");
String objectName = "ltable" + getTestNumber();
LookupTableType lookupTable = new LookupTableType().name(objectName).row(new LookupTableRowType().key("row1").value("value1").label("label-1").lastChangeTimestamp(MiscUtil.asXMLGregorianCalendar(1L))).row(new LookupTableRowType().key("row2").value("value2").lastChangeTimestamp(MiscUtil.asXMLGregorianCalendar(2L))).row(new LookupTableRowType().key("row3"));
when("adding it to the repository");
repositoryService.addObject(lookupTable.asPrismObject(), null, result);
then("it is stored with its persisted trigger containers");
assertThatOperationResult(result).isSuccess();
QLookupTableRow ltRow = aliasFor(QLookupTableRow.class);
List<MLookupTableRow> rows = select(ltRow, ltRow.ownerOid.eq(UUID.fromString(lookupTable.getOid())));
assertThat(rows).hasSize(3);
rows.sort(comparing(tr -> tr.cid));
MLookupTableRow containerRow = rows.get(0);
assertThat(containerRow.cid).isEqualTo(1);
assertThat(containerRow.key).isEqualTo("row1");
assertThat(containerRow.value).isEqualTo("value1");
assertThat(containerRow.labelOrig).isEqualTo("label-1");
assertThat(containerRow.labelNorm).isEqualTo("label1");
assertThat(containerRow.lastChangeTimestamp).isEqualTo(Instant.ofEpochMilli(1));
containerRow = rows.get(1);
assertThat(containerRow.cid).isEqualTo(2);
assertThat(containerRow.key).isEqualTo("row2");
assertThat(containerRow.value).isEqualTo("value2");
assertThat(containerRow.lastChangeTimestamp).isEqualTo(Instant.ofEpochMilli(2));
containerRow = rows.get(2);
assertThat(containerRow.cid).isEqualTo(3);
assertThat(containerRow.key).isEqualTo("row3");
}
use of com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableType in project midpoint by Evolveum.
the class SqaleRepoLookupTableTest method test120LookupLanguagesGetByKeyExact.
@Test
public void test120LookupLanguagesGetByKeyExact() throws Exception {
given();
OperationResult result = createOperationResult();
when();
GetOperationOptionsBuilder optionsBuilder = SchemaService.get().getOperationOptionsBuilder().item(LookupTableType.F_ROW).retrieveQuery().item(LookupTableRowType.F_KEY).eq("sk_SK").end();
PrismObject<LookupTableType> lookup = repositoryService.getObject(LookupTableType.class, LOOKUP_LANGUAGES_OID, optionsBuilder.build(), result);
then();
result.computeStatus();
TestUtil.assertSuccess(result);
checkLookupResult(lookup, new String[] { "sk_SK", "sk", "Slovak" });
}
use of com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableType in project midpoint by Evolveum.
the class SqaleRepoLookupTableTest method test164LookupLanguagesDeleteRowFullId.
@Test
public void test164LookupLanguagesDeleteRowFullId() throws Exception {
given();
OperationResult result = createOperationResult();
LookupTableRowType row = new LookupTableRowType();
row.setKey("en_US");
row.setValue("en");
row.setLabel(PrismTestUtil.createPolyStringType("English (US)"));
row.setId(1L);
ObjectDelta<LookupTableType> delta = prismContext.deltaFactory().object().createModificationDeleteContainer(LookupTableType.class, LOOKUP_LANGUAGES_OID, LookupTableType.F_ROW, row);
when();
repositoryService.modifyObject(LookupTableType.class, LOOKUP_LANGUAGES_OID, delta.getModifications(), result);
then();
result.computeStatus();
TestUtil.assertSuccess(result);
PrismObject<LookupTableType> lookup = getLookupTableAll(LOOKUP_LANGUAGES_OID, result);
result.computeStatus();
TestUtil.assertSuccess(result);
assertEquals("Wrong lang lookup name", LOOKUP_LANGUAGES_NAME, lookup.asObjectable().getName().getOrig());
PrismContainer<LookupTableRowType> tableContainer = lookup.findContainer(LookupTableType.F_ROW);
assertNotNull("Table container missing", tableContainer);
assertEquals("Unexpected table container size", 5, tableContainer.size());
assertLookupRow(tableContainer, "en_PR", "en", "English (pirate)");
assertLookupRow(tableContainer, "tr_TR", "tr", "Turkish");
assertLookupRow(tableContainer, "gi_GI", "gi", "Gibberish");
assertLookupRow(tableContainer, "gi_GO", null, "Gobbledygook");
assertLookupRow(tableContainer, "gi_HU", "gi", "Humbug");
}
use of com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableType in project midpoint by Evolveum.
the class SqaleRepoLookupTableTest method test150LookupLanguagesAddRowFull.
@Test
public void test150LookupLanguagesAddRowFull() throws Exception {
given();
OperationResult result = createOperationResult();
LookupTableRowType row = new LookupTableRowType();
row.setKey("gi_GI");
row.setValue("gi");
row.setLabel(PrismTestUtil.createPolyStringType("Gibberish"));
ObjectDelta<LookupTableType> delta = prismContext.deltaFactory().object().createModificationAddContainer(LookupTableType.class, LOOKUP_LANGUAGES_OID, LookupTableType.F_ROW, row);
when();
repositoryService.modifyObject(LookupTableType.class, LOOKUP_LANGUAGES_OID, delta.getModifications(), result);
then();
result.computeStatus();
TestUtil.assertSuccess(result);
PrismObject<LookupTableType> lookup = getLookupTableAll(LOOKUP_LANGUAGES_OID, result);
result.computeStatus();
TestUtil.assertSuccess(result);
assertEquals("Wrong lang lookup name", LOOKUP_LANGUAGES_NAME, lookup.asObjectable().getName().getOrig());
PrismContainer<LookupTableRowType> tableContainer = lookup.findContainer(LookupTableType.F_ROW);
assertNotNull("Table container missing", tableContainer);
assertEquals("Unexpected table container size", 5, tableContainer.size());
assertLookupRow(tableContainer, "en_US", "en", "English (US)");
assertLookupRow(tableContainer, "en_PR", "en", "English (pirate)");
assertLookupRow(tableContainer, "sk_SK", "sk", "Slovak");
assertLookupRow(tableContainer, "tr_TR", "tr", "Turkish");
assertLookupRow(tableContainer, "gi_GI", "gi", "Gibberish");
}
Aggregations