Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into feature/shadow-marks
Browse files Browse the repository at this point in the history
  • Loading branch information
tonydamage committed Feb 21, 2023
2 parents 84ef3bc + 8485220 commit 18ba3ae
Show file tree
Hide file tree
Showing 39 changed files with 618 additions and 731 deletions.
10 changes: 10 additions & 0 deletions config/sql/native-new/postgres-new-audit.sql
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,11 @@ CREATE TABLE ma_audit_event_default PARTITION OF ma_audit_event DEFAULT;
CREATE TABLE ma_audit_delta_default PARTITION OF ma_audit_delta DEFAULT;
CREATE TABLE ma_audit_ref_default PARTITION OF ma_audit_ref DEFAULT;

/*
For info about what is and is not automatically created on the partition, see:
https://www.postgresql.org/docs/13/sql-createtable.html (search for "PARTITION OF parent_table")
In short, for our case PK and constraints are created automatically, but FK are not.
*/
ALTER TABLE ma_audit_delta_default ADD CONSTRAINT ma_audit_delta_default_fk
FOREIGN KEY (recordId, timestamp) REFERENCES ma_audit_event_default (id, timestamp)
ON DELETE CASCADE;
Expand Down Expand Up @@ -287,6 +292,11 @@ BEGIN
'CREATE TABLE %I PARTITION OF ma_audit_ref FOR VALUES FROM (%L) TO (%L);',
'ma_audit_ref_' || tableSuffix, dateFrom, dateTo);

/*
For info about what is and is not automatically created on the partition, see:
https://www.postgresql.org/docs/13/sql-createtable.html (search for "PARTITION OF parent_table")
In short, for our case PK and constraints are created automatically, but FK are not.
*/
EXECUTE format(
'ALTER TABLE %I ADD CONSTRAINT %I FOREIGN KEY (recordId, timestamp)' ||
' REFERENCES %I (id, timestamp) ON DELETE CASCADE',
Expand Down
3 changes: 2 additions & 1 deletion config/sql/native-new/postgres-new-upgrade.sql
Original file line number Diff line number Diff line change
Expand Up @@ -243,8 +243,9 @@ CREATE TABLE m_simulation_result_processed_object (
objectBefore BYTEA,
objectAfter BYTEA,
transactionId TEXT,
focusRecordId BIGINT,

PRIMARY KEY (ownerOid, cid)
PRIMARY KEY (ownerOid, cid)
) PARTITION BY LIST(ownerOid);

CREATE TABLE m_simulation_result_processed_object_default PARTITION OF m_simulation_result_processed_object DEFAULT;
Expand Down
3 changes: 2 additions & 1 deletion config/sql/native-new/postgres-new.sql
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2010-2022 Evolveum and contributors
* Copyright (C) 2010-2023 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
Expand Down Expand Up @@ -1916,6 +1916,7 @@ CREATE TABLE m_simulation_result_processed_object (
objectBefore BYTEA,
objectAfter BYTEA,
transactionId TEXT,
focusRecordId BIGINT,

PRIMARY KEY (ownerOid, cid)
) PARTITION BY LIST(ownerOid);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ protected ObjectQuery getCustomizeContentQuery() {
}

@Override
protected List<ObjectOrdering> createObjectOrderings(SortParam<String> sortParam) {
protected @NotNull List<ObjectOrdering> createObjectOrderings(SortParam<String> sortParam) {
if (orderingSuplier == null) {
return super.createObjectOrderings(sortParam);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2010-2021 Evolveum and contributors
* Copyright (C) 2010-2023 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
Expand All @@ -10,14 +10,6 @@
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;

import com.evolveum.midpoint.gui.api.component.button.CsvDownloadButtonPanel;
import com.evolveum.midpoint.gui.impl.component.data.provider.BaseSortableDataProvider;
import com.evolveum.midpoint.gui.api.component.data.provider.ISelectableDataProvider;
import com.evolveum.midpoint.gui.impl.component.data.provider.SelectableBeanContainerDataProvider;

import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;

import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.AttributeModifier;
Expand All @@ -29,7 +21,10 @@
import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.model.*;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.string.StringValue;
import org.apache.wicket.util.visit.IVisitor;
Expand All @@ -38,10 +33,14 @@

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.MainObjectListPanel;
import com.evolveum.midpoint.gui.api.component.button.CsvDownloadButtonPanel;
import com.evolveum.midpoint.gui.api.component.data.provider.ISelectableDataProvider;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.gui.impl.component.data.column.ConfigurableExpressionColumn;
import com.evolveum.midpoint.gui.impl.component.data.provider.BaseSortableDataProvider;
import com.evolveum.midpoint.gui.impl.component.data.provider.SelectableBeanContainerDataProvider;
import com.evolveum.midpoint.gui.impl.component.message.FeedbackLabels;
import com.evolveum.midpoint.gui.impl.component.search.Search;
import com.evolveum.midpoint.gui.impl.component.search.SearchBuilder;
Expand All @@ -54,7 +53,6 @@
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.model.common.util.DefaultColumnUtils;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectPaging;
Expand All @@ -64,13 +62,15 @@
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.exception.*;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.CompositedIconButtonDto;
import com.evolveum.midpoint.web.component.data.*;
import com.evolveum.midpoint.web.component.data.BoxedTablePanel;
import com.evolveum.midpoint.web.component.data.SelectableDataTable;
import com.evolveum.midpoint.web.component.data.column.CheckBoxHeaderColumn;
import com.evolveum.midpoint.web.component.data.column.ContainerableNameColumn;
import com.evolveum.midpoint.web.component.data.column.InlineMenuButtonColumn;
Expand All @@ -80,6 +80,7 @@
import com.evolveum.midpoint.web.component.util.SelectableRow;
import com.evolveum.midpoint.web.component.util.SerializableSupplier;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.session.PageStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
Expand Down Expand Up @@ -169,7 +170,7 @@ private LoadableDetachableModel<Search<C>> createSearchModel() {
return new LoadableDetachableModel<>() {

@Override
public Search load() {
public Search<C> load() {
return loadSearchModel();
}
};
Expand All @@ -186,8 +187,8 @@ private Search<C> loadSearchModel() {
return search;
}

private Search loadSearch(PageStorage storage) {
Search search = null;
private <T extends Serializable> Search<T> loadSearch(PageStorage storage) {
Search<T> search = null;
if (storage != null) {
search = storage.getSearch();
}
Expand Down Expand Up @@ -279,9 +280,9 @@ protected org.apache.wicket.markup.repeater.Item<PO> customizeNewRowItem(org.apa
@Override
protected WebMarkupContainer createButtonToolbar(String id) {
if (isPreview()) {
return new ButtonBar(id, ID_BUTTON_BAR, ContainerableListPanel.this, (PreviewContainerPanelConfigurationType) config);
return new ButtonBar<>(id, ID_BUTTON_BAR, ContainerableListPanel.this, (PreviewContainerPanelConfigurationType) config);
}
return new ButtonBar(id, ID_BUTTON_BAR, ContainerableListPanel.this, createToolbarButtonsList(ID_BUTTON));
return new ButtonBar<>(id, ID_BUTTON_BAR, ContainerableListPanel.this, createToolbarButtonsList(ID_BUTTON));
}

@Override
Expand Down Expand Up @@ -577,7 +578,6 @@ protected IColumn<PO, String> createCustomExportableColumn(IModel<String> column
return new ConfigurableExpressionColumn<>(columnDisplayModel, getSortProperty(customColumn, expression), customColumn, expression, getPageBase());
}


private String getSortProperty(GuiObjectColumnType customColumn, ExpressionType expressionType) {
String sortProperty = customColumn.getSortProperty();
if (sortProperty != null) {
Expand Down Expand Up @@ -788,7 +788,6 @@ private boolean isRawOrNoFetchOption(Collection<SelectorOptions<GetOperationOpti
return false;
}


protected String getStorageKey() {
if (isCollectionViewPanelForCompiledView()) {
StringValue collectionName = WebComponentUtil.getCollectionNameParameterValue(getPageBase());
Expand Down Expand Up @@ -1149,12 +1148,13 @@ && isCollectionViewPanel() && getObjectCollectionView().getPaging() != null
&& getObjectCollectionView().getPaging().getOrderBy() != null) {
PagingType paging = getObjectCollectionView().getPaging();
boolean ascending = !OrderDirectionType.DESCENDING.equals(paging.getOrderDirection());
ItemPath orderBy = paging.getOrderBy().getItemPath();
ItemName name = orderBy.lastName();
if (name == null) {
String orderPathString = getPrismContext().itemPathSerializer()
.serializeStandalone(paging.getOrderBy().getItemPath());
if (orderPathString == null || orderPathString.length() == 0) {
return;
}
((SortableDataProvider) provider).setSort(new SortParam(name.getLocalPart(), ascending));
//noinspection unchecked
((SortableDataProvider<PO, String>) provider).setSort(new SortParam<>(orderPathString, ascending));
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2010-2020 Evolveum and contributors
* Copyright (C) 2010-2023 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
Expand All @@ -10,10 +10,6 @@

import java.io.Serializable;
import java.util.*;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.web.component.data.TablePanel;
import com.evolveum.midpoint.web.session.PageStorage;

import org.apache.commons.lang3.Validate;
import org.apache.wicket.Component;
Expand All @@ -26,11 +22,12 @@

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.model.api.*;
import com.evolveum.midpoint.model.api.ModelAuditService;
import com.evolveum.midpoint.model.api.ModelInteractionService;
import com.evolveum.midpoint.model.api.ModelService;
import com.evolveum.midpoint.model.api.authentication.CompiledGuiProfile;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.ObjectOrdering;
import com.evolveum.midpoint.prism.query.ObjectPaging;
import com.evolveum.midpoint.prism.query.ObjectQuery;
Expand All @@ -40,7 +37,9 @@
import com.evolveum.midpoint.task.api.TaskManager;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.data.TablePanel;
import com.evolveum.midpoint.web.security.MidPointApplication;
import com.evolveum.midpoint.web.session.PageStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.DistinctSearchOptionType;

/**
Expand Down Expand Up @@ -230,11 +229,12 @@ protected ObjectPaging createPaging(long offset, long pageSize) {
protected List<ObjectOrdering> createObjectOrderings(SortParam<String> sortParam) {
if (sortParam != null && sortParam.getProperty() != null) {
OrderDirection order = sortParam.isAscending() ? OrderDirection.ASCENDING : OrderDirection.DESCENDING;
return Collections.singletonList(
return List.of(
getPrismContext().queryFactory().createOrdering(
ItemPath.create(new QName(SchemaConstantsGenerated.NS_COMMON, sortParam.getProperty())), order));
getPrismContext().itemPathParser().asItemPath(sortParam.getProperty()),
order));
} else {
return Collections.emptyList();
return List.of();
}
}

Expand Down Expand Up @@ -329,12 +329,18 @@ public long getTimestamp() {

@Override
public boolean equals(Object o) {
if (this == o) { return true; }
if (o == null || getClass() != o.getClass()) { return false; }
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}

CachedSize that = (CachedSize) o;

if (size != that.size) { return false; }
if (size != that.size) {
return false;
}
return timestamp == that.timestamp;
}

Expand Down Expand Up @@ -370,10 +376,4 @@ public void setExportSize(boolean exportSize) {
public boolean isUseCache() {
return useCache;
}

// @Override
// public void detach() {
// super.detach();
//// availableData = new ArrayList<>();
// }
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
import java.util.Collections;
import java.util.List;

import com.evolveum.midpoint.web.component.prism.show.SimpleVisualizationPanel;

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
Expand All @@ -22,9 +20,9 @@
import com.evolveum.midpoint.gui.impl.page.admin.simulation.visualization.CardObjectVisualizationPanel;
import com.evolveum.midpoint.gui.impl.page.admin.simulation.visualization.ObjectVisualization;
import com.evolveum.midpoint.gui.impl.page.admin.simulation.visualization.ObjectVisualizationPanel;
import com.evolveum.midpoint.gui.impl.page.admin.simulation.visualization.VisualizationFactory;
import com.evolveum.midpoint.model.api.visualizer.Visualization;
import com.evolveum.midpoint.web.component.prism.show.SimpleVisualizationPanel;
import com.evolveum.midpoint.web.component.prism.show.VisualizationDto;
import com.evolveum.midpoint.web.component.prism.show.VisualizationPanel;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.prism.xml.ns._public.types_3.ObjectDeltaType;

Expand Down Expand Up @@ -58,35 +56,37 @@ public ChangesPanel(String id, IModel<List<ObjectDeltaType>> model) {
}

private void initModels() {
changesViewModel = Model.of(ChangesView.SIMPLE);
changesViewModel = Model.of(ChangesView.ADVANCED);

IModel<Visualization> visualizationModel = new LoadableModel<>(false) {

@Override
protected Visualization load() {
ObjectDeltaType objectDelta = getModelObject().get(0);
return SimulationsGuiUtil.createVisualization(objectDelta, getPageBase());
}
};

changesModel = new LoadableModel<>(false) {

@Override
protected VisualizationDto load() {
ObjectDeltaType objectDelta = getModelObject().get(0); // todo improve
return SimulationsGuiUtil.createDeltaVisualization(objectDelta, getPageBase());
Visualization visualization = visualizationModel.getObject();

return SimulationsGuiUtil.createVisualizationDto(visualization);
}
};

changesNewModel = new LoadableModel<>() {

@Override
protected List<ObjectVisualization> load() {
ObjectDeltaType delta = getModelObject().get(0); // todo improve
if (delta == null) {
Visualization visualization = visualizationModel.getObject();
if (visualization == null) {
return Collections.emptyList();
}

try {
ObjectVisualization visualization = VisualizationFactory.createObjectVisualization(delta);

return Collections.singletonList(visualization);
} catch (Exception ex) {
// todo handle exception
ex.printStackTrace();
}

return Collections.emptyList();
return Collections.singletonList(new ObjectVisualization(visualization));
}
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ protected String load() {
@Override
protected VisualizationDto load() {
ObjectDeltaType objectDelta = objectModel.getObject().getDelta();
return SimulationsGuiUtil.createDeltaVisualization(objectDelta, PageSimulationResultObject.this);
return SimulationsGuiUtil.createVisualizationDto(objectDelta, PageSimulationResultObject.this);
}
};
}
Expand Down

0 comments on commit 18ba3ae

Please sign in to comment.