Skip to content

Commit

Permalink
Merge branch 'master' of github.com:Evolveum/midpoint
Browse files Browse the repository at this point in the history
# Conflicts:
#	gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/simulation/ProcessedObjectsProvider.java
  • Loading branch information
1azyman committed Feb 1, 2023
2 parents 1b8eb1e + 9f3f3bb commit 9aa0670
Show file tree
Hide file tree
Showing 94 changed files with 584 additions and 622 deletions.
38 changes: 25 additions & 13 deletions config/sql/native-new/postgres-new-upgrade.sql
Original file line number Diff line number Diff line change
Expand Up @@ -171,10 +171,20 @@ $aa$);

-- Simulations
call apply_change(12, $aa$
ALTER TYPE ObjectType ADD VALUE IF NOT EXISTS 'SIMULATION_RESULT' AFTER 'SHADOW';
ALTER TYPE ObjectType ADD VALUE IF NOT EXISTS 'TAG' AFTER 'SYSTEM_CONFIGURATION';
ALTER TYPE ReferenceType ADD VALUE IF NOT EXISTS 'PROCESSED_OBJECT_EVENT_TAG' AFTER 'PROJECTION';
ALTER TYPE ContainerType ADD VALUE IF NOT EXISTS 'SIMULATION_RESULT_PROCESSED_OBJECT' AFTER 'OPERATION_EXECUTION';
do $$
begin
-- Temporary code, to migrate from TagType to MarkType
if 'TAG'::name = any(enum_range(null::ObjectType)::name[]) then
ALTER TYPE ObjectType RENAME VALUE 'TAG' TO 'MARK';
ALTER TYPE ReferenceType RENAME VALUE 'PROCESSED_OBJECT_EVENT_TAG' TO 'PROCESSED_OBJECT_EVENT_MARK';
else
ALTER TYPE ObjectType ADD VALUE IF NOT EXISTS 'MARK' AFTER 'SYSTEM_CONFIGURATION';
ALTER TYPE ReferenceType ADD VALUE IF NOT EXISTS 'PROCESSED_OBJECT_EVENT_MARK' AFTER 'PROJECTION';
end if;
ALTER TYPE ObjectType ADD VALUE IF NOT EXISTS 'SIMULATION_RESULT' AFTER 'SHADOW';
ALTER TYPE ContainerType ADD VALUE IF NOT EXISTS 'SIMULATION_RESULT_PROCESSED_OBJECT' AFTER 'OPERATION_EXECUTION';
end
$$;
$aa$, true); -- TODO remove forced before release

call apply_change(13, $aa$
Expand All @@ -183,7 +193,9 @@ DROP TABLE IF EXISTS m_simulation_result CASCADE;
DROP TABLE IF EXISTS m_simulation_result_processed_object_default CASCADE;
DROP TABLE IF EXISTS m_simulation_result_processed_object CASCADE;
DROP TABLE IF EXISTS m_tag CASCADE;
DROP TABLE IF EXISTS m_mark CASCADE;
DROP TABLE IF EXISTS m_processed_object_event_tag;
DROP TABLE IF EXISTS m_processed_object_event_mark;
DROP TYPE IF EXISTS ObjectProcessingStateType;
-- TODO end of the block

Expand Down Expand Up @@ -276,33 +288,33 @@ CREATE TRIGGER m_simulation_result_delete_partition BEFORE DELETE ON m_simulatio
FOR EACH ROW EXECUTE FUNCTION m_simulation_result_delete_partition();


CREATE TABLE m_tag (
CREATE TABLE m_mark (
oid UUID NOT NULL PRIMARY KEY REFERENCES m_object_oid(oid),
objectType ObjectType GENERATED ALWAYS AS ('TAG') STORED
CHECK (objectType = 'TAG')
objectType ObjectType GENERATED ALWAYS AS ('MARK') STORED
CHECK (objectType = 'MARK')
)
INHERITS (m_assignment_holder);

CREATE TRIGGER m_tag_oid_insert_tr BEFORE INSERT ON m_tag
CREATE TRIGGER m_mark_oid_insert_tr BEFORE INSERT ON m_mark
FOR EACH ROW EXECUTE FUNCTION insert_object_oid();
CREATE TRIGGER m_tag_update_tr BEFORE UPDATE ON m_tag
CREATE TRIGGER m_mark_update_tr BEFORE UPDATE ON m_mark
FOR EACH ROW EXECUTE FUNCTION before_update_object();
CREATE TRIGGER m_tag_oid_delete_tr AFTER DELETE ON m_tag
CREATE TRIGGER m_mark_oid_delete_tr AFTER DELETE ON m_mark
FOR EACH ROW EXECUTE FUNCTION delete_object_oid();


CREATE TABLE m_processed_object_event_tag (
CREATE TABLE m_processed_object_event_mark (
ownerOid UUID NOT NULL REFERENCES m_object_oid(oid) ON DELETE CASCADE,
ownerType ObjectType, -- GENERATED ALWAYS AS ('SIMULATION_RESULT') STORED,
processedObjectCid INTEGER NOT NULL,
referenceType ReferenceType GENERATED ALWAYS AS ('PROCESSED_OBJECT_EVENT_TAG') STORED,
referenceType ReferenceType GENERATED ALWAYS AS ('PROCESSED_OBJECT_EVENT_MARK') STORED,
targetOid UUID NOT NULL, -- soft-references m_object
targetType ObjectType NOT NULL,
relationId INTEGER NOT NULL REFERENCES m_uri(id)

) PARTITION BY LIST(ownerOid);

CREATE TABLE m_processed_object_event_tag_default PARTITION OF m_processed_object_event_tag DEFAULT;
CREATE TABLE m_processed_object_event_mark_default PARTITION OF m_processed_object_event_mark DEFAULT;

$aa$, true); -- TODO remove `true` before M2 or before RC1! (Also, the first 3 table drops)

Expand Down
24 changes: 12 additions & 12 deletions config/sql/native-new/postgres-new.sql
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ CREATE TYPE ObjectType AS ENUM (
'SHADOW',
'SIMULATION_RESULT',
'SYSTEM_CONFIGURATION',
'TAG',
'MARK',
'TASK',
'USER',
'VALUE_POLICY');
Expand All @@ -96,7 +96,7 @@ CREATE TYPE ReferenceType AS ENUM (
'DELEGATED',
'INCLUDE',
'PROJECTION',
'PROCESSED_OBJECT_EVENT_TAG',
'PROCESSED_OBJECT_EVENT_MARK',
'OBJECT_CREATE_APPROVER',
'OBJECT_MODIFY_APPROVER',
'OBJECT_PARENT_ORG',
Expand Down Expand Up @@ -1962,35 +1962,35 @@ CREATE TRIGGER m_simulation_result_delete_partition BEFORE DELETE ON m_simulatio



CREATE TABLE m_processed_object_event_tag (
CREATE TABLE m_processed_object_event_mark (
ownerOid UUID NOT NULL REFERENCES m_object_oid(oid) ON DELETE CASCADE,
ownerType ObjectType, -- GENERATED ALWAYS AS ('SIMULATION_RESULT') STORED,
processedObjectCid INTEGER NOT NULL,
referenceType ReferenceType GENERATED ALWAYS AS ('PROCESSED_OBJECT_EVENT_TAG') STORED,
referenceType ReferenceType GENERATED ALWAYS AS ('PROCESSED_OBJECT_EVENT_MARK') STORED,
targetOid UUID NOT NULL, -- soft-references m_object
targetType ObjectType NOT NULL,
relationId INTEGER NOT NULL REFERENCES m_uri(id)

) PARTITION BY LIST(ownerOid);

CREATE TABLE m_processed_object_event_tag_default PARTITION OF m_processed_object_event_tag DEFAULT;
CREATE TABLE m_processed_object_event_mark_default PARTITION OF m_processed_object_event_mark DEFAULT;

-- endregion

-- region Tag
-- region Mark

CREATE TABLE m_tag (
CREATE TABLE m_mark (
oid UUID NOT NULL PRIMARY KEY REFERENCES m_object_oid(oid),
objectType ObjectType GENERATED ALWAYS AS ('TAG') STORED
CHECK (objectType = 'TAG')
objectType ObjectType GENERATED ALWAYS AS ('MARK') STORED
CHECK (objectType = 'MARK')
)
INHERITS (m_assignment_holder);

CREATE TRIGGER m_tag_oid_insert_tr BEFORE INSERT ON m_tag
CREATE TRIGGER m_mark_oid_insert_tr BEFORE INSERT ON m_mark
FOR EACH ROW EXECUTE FUNCTION insert_object_oid();
CREATE TRIGGER m_tag_update_tr BEFORE UPDATE ON m_tag
CREATE TRIGGER m_mark_update_tr BEFORE UPDATE ON m_mark
FOR EACH ROW EXECUTE FUNCTION before_update_object();
CREATE TRIGGER m_tag_oid_delete_tr AFTER DELETE ON m_tag
CREATE TRIGGER m_mark_oid_delete_tr AFTER DELETE ON m_mark
FOR EACH ROW EXECUTE FUNCTION delete_object_oid();


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ public final class WebComponentUtil {
OBJECT_DETAILS_PAGE_MAP.put(MessageTemplateType.class, PageMessageTemplate.class);

OBJECT_DETAILS_PAGE_MAP.put(SimulationResultType.class, PageSimulationResult.class);
OBJECT_DETAILS_PAGE_MAP.put(TagType.class, PageTag.class);
OBJECT_DETAILS_PAGE_MAP.put(MarkType.class, PageTag.class);
}

// only pages that support 'advanced search' are currently listed here (TODO: generalize)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public enum PageTypes {
OBJECT_TEMPLATE("objectTemplates", GuiStyleConstants.CLASS_OBJECT_TEMPLATE_ICON, PageObjectTemplates.class, PageObjectTemplate.class, ObjectTemplateType.COMPLEX_TYPE),
REPORT("reports", GuiStyleConstants.CLASS_REPORT_ICON, PageReports.class, PageReport.class, ReportType.COMPLEX_TYPE),
SIMULATION_RESULT("simulationResults", GuiStyleConstants.CLASS_SIMULATION_RESULT, PageSimulationResults.class, PageSimulationResult.class, SimulationResultType.COMPLEX_TYPE),
TAG("tags", GuiStyleConstants.CLASS_TAG, PageTags.class, PageTag.class, TagType.COMPLEX_TYPE);
TAG("tags", GuiStyleConstants.CLASS_TAG, PageTags.class, PageTag.class, MarkType.COMPLEX_TYPE);

private String identifier;
private String icon;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class SearchContext {
private QName assignmentTargetType;
private ObjectCollectionReportEngineConfigurationType reportCollection;

private List<DisplayableValue<String>> availableEventTags;
private List<DisplayableValue<String>> availableEventMarks;

public ResourceObjectDefinition getResourceObjectDefinition() {
return resourceObjectDefinition;
Expand Down Expand Up @@ -69,14 +69,14 @@ public void setDefinitionOverride(PrismContainerDefinition<? extends Containerab
this.definitionOverride = definitionOverride;
}

public List<DisplayableValue<String>> getAvailableEventTags() {
if (availableEventTags == null) {
availableEventTags = new ArrayList<>();
public List<DisplayableValue<String>> getAvailableEventMarks() {
if (availableEventMarks == null) {
availableEventMarks = new ArrayList<>();
}
return availableEventTags;
return availableEventMarks;
}

public void setAvailableEventTags(List<DisplayableValue<String>> availableEventTags) {
this.availableEventTags = availableEventTags;
public void setAvailableEventMarks(List<DisplayableValue<String>> availableEventMarks) {
this.availableEventMarks = availableEventMarks;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ public SearchableItemsDefinitions additionalSearchContext(SearchContext ctx) {
ItemPath.create(SimulationResultProcessedObjectType.F_STATE),
ItemPath.create(SimulationResultProcessedObjectType.F_TYPE),
ItemPath.create(SimulationResultProcessedObjectType.F_OID),
ItemPath.create(SimulationResultProcessedObjectType.F_EVENT_TAG_REF)
ItemPath.create(SimulationResultProcessedObjectType.F_EVENT_MARK_REF)
));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,17 @@ public class AvailableTagItemWrapperFactory extends AbstractSearchItemWrapperFac
@Override
protected AvailableTagSearchItemWrapper createSearchWrapper(SearchItemContext ctx) {
SearchContext additionalSearchContext = ctx.getAdditionalSearchContext();
List<DisplayableValue<String>> availableEventTags = additionalSearchContext != null ?
additionalSearchContext.getAvailableEventTags() : new ArrayList<>();
List<DisplayableValue<String>> availableEventMarks = additionalSearchContext != null ?
additionalSearchContext.getAvailableEventMarks() : new ArrayList<>();

AvailableTagSearchItemWrapper wrapper = new AvailableTagSearchItemWrapper(availableEventTags);
AvailableTagSearchItemWrapper wrapper = new AvailableTagSearchItemWrapper(availableEventMarks);
wrapper.setCanConfigure(false);
wrapper.setVisible(true);
return wrapper;
}

@Override
public boolean match(SearchItemContext ctx) {
return SimulationResultProcessedObjectType.F_EVENT_TAG_REF.equivalent(ctx.getPath());
return SimulationResultProcessedObjectType.F_EVENT_MARK_REF.equivalent(ctx.getPath());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@
import com.evolveum.midpoint.schema.expression.VariablesMap;
import com.evolveum.midpoint.util.DisplayableValue;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SimulationResultProcessedObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TagType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.MarkType;

/**
* Created by Viliam Repan (lazyman).
*/
public class AvailableTagSearchItemWrapper extends ChoicesSearchItemWrapper<String> {

public AvailableTagSearchItemWrapper(List<DisplayableValue<String>> availableValues) {
super(SimulationResultProcessedObjectType.F_EVENT_TAG_REF, availableValues);
super(SimulationResultProcessedObjectType.F_EVENT_MARK_REF, availableValues);
}

@Override
Expand All @@ -34,6 +34,6 @@ public ObjectFilter createFilter(Class type, PageBase pageBase, VariablesMap var
}

return PrismContext.get().queryFor(SimulationResultProcessedObjectType.class)
.item(getPath()).ref(getValue().getValue(), TagType.COMPLEX_TYPE).buildFilter();
.item(getPath()).ref(getValue().getValue(), MarkType.COMPLEX_TYPE).buildFilter();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import java.util.Objects;
import java.util.stream.Collectors;

import com.evolveum.midpoint.xml.ns._public.common.common_3.MarkType;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.model.IModel;
Expand All @@ -33,7 +34,6 @@
import com.evolveum.midpoint.web.page.admin.PageAdmin;
import com.evolveum.midpoint.web.page.error.PageError404;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SimulationResultType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TagType;

/**
* Created by Viliam Repan (lazyman).
Expand Down Expand Up @@ -63,7 +63,7 @@ public class PageSimulationResultObjects extends PageAdmin implements Simulation

private IModel<SimulationResultType> resultModel;

private IModel<List<TagType>> availableTagsModel;
private IModel<List<MarkType>> availableTagsModel;

public PageSimulationResultObjects() {
this(new PageParameters());
Expand All @@ -88,20 +88,20 @@ protected SimulationResultType load() {
availableTagsModel = new LoadableDetachableModel<>() {

@Override
protected List<TagType> load() {
protected List<MarkType> load() {
String[] tagOids = resultModel.getObject().getMetric().stream()
.map(m -> m.getRef() != null ? m.getRef().getEventTagRef() : null)
.map(m -> m.getRef() != null ? m.getRef().getEventMarkRef() : null)
.filter(Objects::nonNull)
.map(AbstractReferencable::getOid)
.filter(Utils::isPrismObjectOidValid)
.distinct().toArray(String[]::new);

ObjectQuery query = getPrismContext()
.queryFor(TagType.class)
.queryFor(MarkType.class)
.id(tagOids).build();

List<PrismObject<TagType>> tags = WebModelServiceUtils.searchObjects(
TagType.class, query, getPageTask().getResult(), PageSimulationResultObjects.this);
List<PrismObject<MarkType>> tags = WebModelServiceUtils.searchObjects(
MarkType.class, query, getPageTask().getResult(), PageSimulationResultObjects.this);

return tags.stream()
.map(o -> o.asObjectable())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ public class ProcessedObjectsPanel extends ContainerableListPanel<SimulationResu

private static final long serialVersionUID = 1L;

private IModel<List<TagType>> availableTagsModel;
private IModel<List<MarkType>> availableTagsModel;

public ProcessedObjectsPanel(String id, IModel<List<TagType>> availableTagsModel) {
public ProcessedObjectsPanel(String id, IModel<List<MarkType>> availableTagsModel) {
super(id, SimulationResultProcessedObjectType.class);

this.availableTagsModel = availableTagsModel;
Expand All @@ -73,7 +73,7 @@ protected SearchContext createAdditionalSearchContext() {
o.getDescription()))
.sorted(Comparator.comparing(d -> d.getLabel(), Comparator.naturalOrder()))
.collect(Collectors.toList());
ctx.setAvailableEventTags(values);
ctx.setAvailableEventMarks(values);

return ctx;
}
Expand Down Expand Up @@ -125,12 +125,12 @@ public void populateItem(Item<ICellPopulator<SelectableBean<SimulationResultProc
return null;
}

List<ObjectReferenceType> eventTagRefs = obj.getEventTagRef();
// resolve names from tagRefs
List<String> names = eventTagRefs.stream()
List<ObjectReferenceType> eventMarkRefs = obj.getEventMarkRef();
// resolve names from markRefs
List<String> names = eventMarkRefs.stream()
.map(ref -> {
List<TagType> tags = availableTagsModel.getObject();
TagType tag = tags.stream()
List<MarkType> tags = availableTagsModel.getObject();
MarkType tag = tags.stream()
.filter(t -> Objects.equals(t.getOid(), ref.getOid()))
.findFirst().orElse(null);
if (tag == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,22 @@

package com.evolveum.midpoint.gui.impl.page.admin.simulation;

import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.xml.ns._public.common.common_3.MarkType;

import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.gui.impl.component.data.provider.SelectableBeanContainerDataProvider;
import com.evolveum.midpoint.gui.impl.component.search.Search;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.builder.S_FilterExit;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.gui.impl.component.data.provider.SelectableBeanContainerDataProvider;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SimulationResultProcessedObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SimulationResultType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TagType;

/**
* Created by Viliam Repan (lazyman).
Expand All @@ -47,7 +47,7 @@ protected ObjectQuery getCustomizeContentQuery() {
if (StringUtils.isNotEmpty(tagOid)) {
builder = builder
.and()
.ref(SimulationResultProcessedObjectType.F_EVENT_TAG_REF, TagType.COMPLEX_TYPE, SchemaConstants.ORG_DEFAULT, tagOid).all();
.ref(SimulationResultProcessedObjectType.F_EVENT_MARK_REF, MarkType.COMPLEX_TYPE, SchemaConstants.ORG_DEFAULT, tagOid).all();
}

return builder.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ public void onClick(AjaxRequestTarget target) {
onOpenPerformed(target);
}
};
open.add(new VisibleBehaviour(() -> true)); // todo visible only when it's event tag ref metric
open.add(new VisibleBehaviour(() -> true)); // todo visible only when it's event mark ref metric
add(open);

BadgePanel trendBadge = new BadgePanel(ID_TREND_BADGE, () -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.GlobalPolicyRuleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemConfigurationType;

import com.evolveum.midpoint.xml.ns._public.common.common_3.TagType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.MarkType;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
Expand Down Expand Up @@ -64,7 +64,7 @@ public GlobalPolicyRuleContentPanel(String id, AssignmentHolderDetailsModel mode
// todo nasty hack to get one instance of panel work for different containers (same type, different objects)
// should be handled via @PanelInstances, but there's no way to configure it properly
// If containerPath & type in {@link @PanelInstance} is used then there are too many NPE and ContainerPanelConfigurationType misconfigurations
model.getObjectType() instanceof SystemConfigurationType ? SystemConfigurationType.F_GLOBAL_POLICY_RULE :TagType.F_POLICY_RULE
model.getObjectType() instanceof SystemConfigurationType ? SystemConfigurationType.F_GLOBAL_POLICY_RULE : MarkType.F_POLICY_RULE
));
}

Expand Down

0 comments on commit 9aa0670

Please sign in to comment.