Skip to content

Commit

Permalink
Merge remote-tracking branch 'refs/remotes/origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Feb 21, 2023
2 parents d6fd3d8 + 8485220 commit 6b46294
Show file tree
Hide file tree
Showing 165 changed files with 3,649 additions and 2,222 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
@@ -0,0 +1,41 @@
/*
* 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.
*/

package com.evolveum.midpoint.gui.api.component;

import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.WebComponent;
import org.apache.wicket.model.IModel;
import org.jetbrains.annotations.NotNull;

/**
* Created by Viliam Repan (lazyman).
*/
public class IconComponent extends WebComponent {

public IconComponent(@NotNull String id, @NotNull IModel<String> cssClass) {
this(id, cssClass, null);
}

public IconComponent(@NotNull String id, @NotNull IModel<String> cssClass, IModel<String> title) {
super(id);

add(AttributeAppender.append("class", cssClass));

if (title != null) {
add(AttributeAppender.append("title", title));
}
}

@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);

checkComponentTag(tag, "i");
}
}
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
@@ -0,0 +1,36 @@
/*
* 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.
*/

package com.evolveum.midpoint.gui.api.component;

import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.model.IModel;
import org.jetbrains.annotations.NotNull;

/**
* Created by Viliam Repan (lazyman).
*/
public class StyledPanel<T> extends BasePanel<T> {

private static final long serialVersionUID = 1L;

public StyledPanel(@NotNull String id, IModel<T> model, IModel<String> cssClass) {
this(id, model, cssClass, null);
}

public StyledPanel(@NotNull String id, IModel<T> model, IModel<String> cssClass, IModel<String> title) {
super(id, model);

if (cssClass != null) {
add(AttributeAppender.append("class", cssClass));
}

if (title != null) {
add(AttributeAppender.append("title", title));
}
}
}
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 @@ -10,7 +10,7 @@
import com.evolveum.midpoint.gui.api.factory.GuiComponentFactory;
import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper;
import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry;
import com.evolveum.midpoint.report.api.ReportConstants;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
Expand Down Expand Up @@ -46,7 +46,7 @@ public Integer getOrder() {
@Override
public <IW extends ItemWrapper<?, ?>> boolean match(IW wrapper) {
return QNameUtil.match(ObjectReferenceType.COMPLEX_TYPE, wrapper.getTypeName())
&& ReportConstants.NS_EXTENSION.equals(wrapper.getItemName().getNamespaceURI())
&& SchemaConstants.NS_REPORT_EXTENSION.equals(wrapper.getItemName().getNamespaceURI())
&& wrapper.getParent() == null;
}

Expand Down

0 comments on commit 6b46294

Please sign in to comment.