Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/feature/simulations' into featur…
Browse files Browse the repository at this point in the history
…e/simulations

# Conflicts:
#	model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/AbstractEmptyModelIntegrationTest.java
  • Loading branch information
mederly committed Dec 20, 2022
2 parents 97683a3 + 1853a5a commit 8b619d6
Show file tree
Hide file tree
Showing 153 changed files with 3,917 additions and 1,705 deletions.
19 changes: 19 additions & 0 deletions config/sql/native-new/postgres-new-upgrade.sql
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ $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 ContainerType ADD VALUE IF NOT EXISTS 'SIMULATION_RESULT_PROCESSED_OBJECT' AFTER 'OPERATION_EXECUTION';
$aa$);

Expand All @@ -180,6 +181,7 @@ call apply_change(13, $aa$
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 TYPE IF EXISTS ObjectProcessingStateType;
-- TODO end of the block

Expand Down Expand Up @@ -265,6 +267,23 @@ LANGUAGE plpgsql;
CREATE TRIGGER m_simulation_result_delete_partition BEFORE DELETE ON m_simulation_result
FOR EACH ROW EXECUTE FUNCTION m_simulation_result_delete_partition();


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

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



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


Expand Down
20 changes: 20 additions & 0 deletions config/sql/native-new/postgres-new.sql
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ CREATE TYPE ObjectType AS ENUM (
'SHADOW',
'SIMULATION_RESULT',
'SYSTEM_CONFIGURATION',
'TAG',
'TASK',
'USER',
'VALUE_POLICY');
Expand Down Expand Up @@ -1953,6 +1954,25 @@ CREATE TRIGGER m_simulation_result_delete_partition BEFORE DELETE ON m_simulatio
FOR EACH ROW EXECUTE FUNCTION m_simulation_result_delete_partition();


-- endregion

-- region Tag

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

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


-- endregion

-- region Extension support
Expand Down
12 changes: 10 additions & 2 deletions gui/admin-gui/src/frontend/scss/midpoint.scss
Original file line number Diff line number Diff line change
Expand Up @@ -1479,9 +1479,7 @@ td .prism-property-value {
}
.compositedButton > .compositedButtonIcon {
//background-color: #f1f1f1;
margin: 10px;
text-align: center;
line-height: 75px;
font-size: 50px;
width: 115px;
}
Expand Down Expand Up @@ -1774,3 +1772,13 @@ th.debug-list-buttons {
}
}
}

@each $breakpoint in map-keys($grid-breakpoints) {
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
@include media-breakpoint-up($breakpoint, $grid-breakpoints) {

.col#{$infix}-2\.4 {
@include make-col(2.4, $grid-columns);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -218,9 +218,17 @@ private List<CompiledObjectCollectionView> compileDefaultCollectionViews(Collect
if (collectionInstance == null) {
continue;
}
ObjectTypes objectType = ObjectTypes.getObjectType(collectionInstance.applicableForType());

Class<? extends Containerable> applicableForType = collectionInstance.applicableForType();
QName type;
if (ObjectType.class.isAssignableFrom(applicableForType)) {
ObjectTypes objectType = ObjectTypes.getObjectType((Class<? extends ObjectType>) applicableForType);
type = objectType.getTypeQName();
} else {
type = prismContext.getSchemaRegistry().determineTypeForClass(applicableForType);
}
CompiledObjectCollectionView defaultCollectionView =
new CompiledObjectCollectionView(objectType.getTypeQName(), collectionInstance.identifier());
new CompiledObjectCollectionView(type, collectionInstance.identifier());
defaultCollectionView.setDisplay(createDisplayType(collectionInstance.display()));
compiledObjectCollectionViews.add(defaultCollectionView);
defaultCollectionView.setDefaultView(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.util.List;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.QNameUtil;

import org.apache.commons.collections4.CollectionUtils;
Expand Down Expand Up @@ -425,9 +426,9 @@ private boolean isAddButtonEnabled(){
return false;
}

private void executeMemberOperation(AbstractRoleType targetObject, ObjectQuery query,
protected Task executeMemberOperation(AbstractRoleType targetObject, ObjectQuery query,
@NotNull QName relation, QName type, AjaxRequestTarget target, PageBase pageBase) {
MemberOperationsHelper.createAndSubmitAssignMembersTask(targetObject, type, query,
return MemberOperationsHelper.createAndSubmitAssignMembersTask(targetObject, type, query,
relation, target, pageBase);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,10 @@
*/
package com.evolveum.midpoint.gui.api.component;

import java.util.*;

import com.evolveum.midpoint.gui.api.util.GuiDisplayTypeUtil;
import com.evolveum.midpoint.gui.impl.util.ObjectCollectionViewUtil;
import com.evolveum.midpoint.gui.impl.util.TableUtil;
import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.model.common.util.DefaultColumnUtils;

import com.evolveum.midpoint.prism.delta.ChangeType;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.MiscUtil;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.web.component.*;

import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.page.admin.users.component.ExecuteChangeOptionsDto;

import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.xml.namespace.QName;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
Expand All @@ -41,38 +22,54 @@
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.button.CsvDownloadButtonPanel;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.GuiDisplayTypeUtil;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.component.AjaxCompositedIconButton;
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIcon;
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.gui.impl.component.icon.IconCssStyle;
import com.evolveum.midpoint.gui.impl.component.icon.LayeredIconCssStyle;
import com.evolveum.midpoint.gui.impl.util.ObjectCollectionViewUtil;
import com.evolveum.midpoint.gui.impl.util.TableUtil;
import com.evolveum.midpoint.model.api.AssignmentObjectRelation;
import com.evolveum.midpoint.model.api.ModelAuthorizationAction;
import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.prism.delta.ChangeType;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.MiscUtil;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.AjaxIconButton;
import com.evolveum.midpoint.web.component.CompositedIconButtonDto;
import com.evolveum.midpoint.web.component.MultiFunctinalButtonDto;
import com.evolveum.midpoint.web.component.data.ISelectableDataProvider;
import com.evolveum.midpoint.web.component.data.column.CheckBoxHeaderColumn;
import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.configuration.PageImportObject;
import com.evolveum.midpoint.web.page.admin.users.component.ExecuteChangeOptionsDto;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.wicket.model.PropertyModel;
import org.jetbrains.annotations.NotNull;

import javax.xml.namespace.QName;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

/**
* @author katkav
Expand Down Expand Up @@ -128,7 +125,7 @@ protected IColumn<SelectableBean<O>, String> createCheckboxColumn() {
protected void newObjectPerformed(AjaxRequestTarget target, AssignmentObjectRelation relation, CompiledObjectCollectionView collectionView) {
if (collectionView == null) {
collectionView = getObjectCollectionView();
}
}
try {
WebComponentUtil.initNewObjectWithReference(getPageBase(),
relation != null && CollectionUtils.isNotEmpty(relation.getObjectTypes()) ?
Expand All @@ -151,8 +148,8 @@ private CompositedIcon createCompositedIcon(CompiledObjectCollectionView collect
PolyStringType tooltip = display != null ? display.getTooltip() : null;

builder.setBasicIcon(GuiDisplayTypeUtil.getIconCssClass(display), IconCssStyle.IN_ROW_STYLE)
.appendColorHtmlValue(GuiDisplayTypeUtil.getIconColor(display))
.setTitle(WebComponentUtil.getTranslatedPolyString(tooltip));
.appendColorHtmlValue(GuiDisplayTypeUtil.getIconColor(display))
.setTitle(WebComponentUtil.getTranslatedPolyString(tooltip));
// .appendLayerIcon(WebComponentUtil.createIconType(GuiStyleConstants.CLASS_PLUS_CIRCLE, "green"), IconCssStyle.BOTTOM_RIGHT_STYLE);

return builder.build();
Expand Down Expand Up @@ -225,7 +222,7 @@ protected void buttonClickPerformed(AjaxRequestTarget target, AssignmentObjectRe
};

getPageBase().showMainPopup(buttonsPanel, target);
}
}
};
createNewObjectButton.add(new VisibleBehaviour(this::isCreateNewObjectEnabled));
createNewObjectButton.add(AttributeAppender.append("class", "btn btn-default btn-sm"));
Expand Down Expand Up @@ -291,20 +288,11 @@ protected MultiFunctinalButtonDto load() {

}

@Override
protected List<IColumn<SelectableBean<O>, String>> createDefaultColumns() {
GuiObjectListViewType defaultView = DefaultColumnUtils.getDefaultView(getType());
if (defaultView == null) {
return null;
}
return getViewColumnsTransformed(defaultView.getColumn());
}

private DisplayType getNewObjectButtonStandardDisplayType() {
if (isCollectionViewPanelForCompiledView()) {
CompiledObjectCollectionView view = getObjectCollectionView();
return GuiDisplayTypeUtil.getNewObjectDisplayTypeFromCollectionView(view, getPageBase());
}
}

String title = getTitleForNewObjectButton();
return GuiDisplayTypeUtil.createDisplayType(GuiStyleConstants.CLASS_ADD_NEW_OBJECT, "green", title);
Expand Down Expand Up @@ -482,7 +470,7 @@ public void deleteConfirmedPerformed(AjaxRequestTarget target, IModel<Selectable
return;
}

OperationResult result = new OperationResult(objects.size() == 1 ? OPERATION_DELETE_OBJECT: OPERATION_DELETE_OBJECTS);
OperationResult result = new OperationResult(objects.size() == 1 ? OPERATION_DELETE_OBJECT : OPERATION_DELETE_OBJECTS);
for (SelectableBean<O> object : objects) {
OperationResult subResult = result.createSubresult(OPERATION_DELETE_OBJECT);
try {
Expand Down Expand Up @@ -519,10 +507,11 @@ public ExecuteChangeOptionsDto getExecuteOptions() {
/**
* This method check selection in table. If selectedObject != null than it
* returns only this object.
*
* @return
*/
public List<SelectableBean<O>> isAnythingSelected(AjaxRequestTarget target, IModel<SelectableBean<O>> selectedObject) {
List<SelectableBean<O>> selectedObjects;
List<SelectableBean<O>> selectedObjects;
if (selectedObject != null) {
selectedObjects = new ArrayList<>();
selectedObjects.add(selectedObject.getObject());
Expand All @@ -536,13 +525,13 @@ protected String getNothingSelectedMessage() {
return null;
}

public IModel<String> getConfirmationMessageModel(ColumnMenuAction action, String actionName){
public IModel<String> getConfirmationMessageModel(ColumnMenuAction action, String actionName) {
if (action.getRowModel() == null) {
return createStringResource(getConfirmMessageKeyForMultiObject(),
actionName, getSelectedObjectsCount() );
actionName, getSelectedObjectsCount());
} else {
return createStringResource(getConfirmMessageKeyForSingleObject(),
actionName, ((ObjectType)((SelectableBean<?>)action.getRowModel().getObject()).getValue()).getName());
actionName, ((ObjectType) ((SelectableBean<?>) action.getRowModel().getObject()).getValue()).getName());
}
}

Expand All @@ -569,7 +558,7 @@ public void onClick(AjaxRequestTarget target) {
}

@Override
public IModel<String> getConfirmationMessageModel(){
public IModel<String> getConfirmationMessageModel() {
String actionName = createStringResource("MainObjectListPanel.message.deleteAction").getString();
return MainObjectListPanel.this.getConfirmationMessageModel((ColumnMenuAction) getAction(), actionName);
}
Expand Down

0 comments on commit 8b619d6

Please sign in to comment.