Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into feature/forgot-user…
Browse files Browse the repository at this point in the history
…name

* origin/master:
  removing enabled column from mapping tables
  MID-8842 ninja - download action log improvements
  adding stepId for wizard step panels
  MID-8842 ninja - more logging improvements
  MID-8842 ninja - improved ninja logging
  MID-8842 ninja - distribution manager improved message (not found)
  MID-8842 ninja - repository skip version check fix
  MID-8842 ninja - user dashboard processor + test
  MID-8842 ninja - user dashboard link processor + test
  fix for native repo sql upgrade script
  adding confirm popup about unsaved changes for exit from wizard
  • Loading branch information
katkav committed Aug 3, 2023
2 parents 7aef711 + 63670fb commit 9752dcd
Show file tree
Hide file tree
Showing 31 changed files with 526 additions and 220 deletions.
4 changes: 2 additions & 2 deletions config/sql/native-new/postgres-new-upgrade.sql
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ $aa$);
call apply_change(16, $aa$
ALTER TYPE ContainerType ADD VALUE IF NOT EXISTS 'AFFECTED_RESOURCE_OBJECTS' AFTER 'ACCESS_CERTIFICATION_WORK_ITEM';
ALTER TYPE ContainerType ADD VALUE IF NOT EXISTS 'AFFECTED_OBJECTS' AFTER 'AFFECTED_RESOURCE_OBJECTS';
$aa)
$aa$);

-- Task Affected Indexing (tables)

Expand Down Expand Up @@ -356,7 +356,7 @@ CREATE TABLE m_task_affected_objects (
PRIMARY KEY (ownerOid, cid)
) INHERITS(m_container);

$aa$)
$aa$);


-- Resource/super/resourceRef Indexing (tables)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,11 @@ protected ContainerPanelConfigurationType getContainerConfiguration() {
return getContainerConfiguration(getPanelType());
}

@Override
public String getStepId() {
return getPanelType();
}

protected abstract String getPanelType();

protected boolean checkMandatory(ItemWrapper itemWrapper) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,11 @@ protected ObjectQuery getCustomQuery() {

protected abstract String getPanelType();

@Override
public String getStepId() {
return getPanelType();
}

protected TileTablePanel<TemplateTile<SelectableBean<O>>, SelectableBean<O>> getTable() {
return (TileTablePanel) get(ID_TABLE);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Supplier;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.api.component.BasePanel;
Expand All @@ -30,6 +32,8 @@
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.web.component.breadcrumbs.Breadcrumb;

import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel;
import com.evolveum.midpoint.web.component.util.SerializableConsumer;
import com.evolveum.midpoint.web.model.ContainerValueWrapperFromObjectWrapperModel;
import com.evolveum.midpoint.web.session.ObjectDetailsStorage;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
Expand Down Expand Up @@ -327,12 +331,17 @@ private <C extends Containerable> WizardPanelHelper<C, AHDM> createContainerWiza

@Override
public void onExitPerformed(AjaxRequestTarget target) {
setShowedByWizard(false);
PrismObject<AH> oldObject = getObjectDetailsModels().getObjectWrapper().getObjectOld();
getObjectDetailsModels().reset();
getObjectDetailsModels().reloadPrismObjectModel(oldObject);
backToDetailsFromWizard(target);
getWizardBreadcrumbs().clear();
SerializableConsumer<AjaxRequestTarget> consumer = consumerTarget -> {
setShowedByWizard(false);
PrismObject<AH> oldObject = getObjectDetailsModels().getObjectWrapper().getObjectOld();
getObjectDetailsModels().reset();
getObjectDetailsModels().reloadPrismObjectModel(oldObject);
backToDetailsFromWizard(consumerTarget);
getWizardBreadcrumbs().clear();
};

checkDeltasExitPerformed(consumer, target);

}

@Override
Expand Down Expand Up @@ -362,7 +371,9 @@ protected WizardPanelHelper<AH, AHDM> createObjectWizardPanelHelper() {

@Override
public void onExitPerformed(AjaxRequestTarget target) {
navigateToNext(WebComponentUtil.getObjectListPage(getType()));
SerializableConsumer<AjaxRequestTarget> consumer =
consumerTarget -> navigateToNext(WebComponentUtil.getObjectListPage(getType()));
checkDeltasExitPerformed(consumer, target);
}

@Override
Expand All @@ -388,6 +399,26 @@ public OperationResult onSaveObjectPerformed(AjaxRequestTarget target) {
};
}

private void checkDeltasExitPerformed(SerializableConsumer<AjaxRequestTarget> consumer, AjaxRequestTarget target) {

if (!hasUnsavedChanges(target)) {
consumer.accept(target);
return;
}
ConfirmationPanel confirmationPanel = new ConfirmationPanel(getMainPopupBodyId(),
createStringResource("OperationalButtonsPanel.confirmBack")) {

private static final long serialVersionUID = 1L;

@Override
public void yesPerformed(AjaxRequestTarget target) {
consumer.accept(target);
}
};

showMainPopup(confirmationPanel, target);
}

private void backToDetailsFromWizard(AjaxRequestTarget target) {
DetailsFragment detailsFragment = createDetailsFragment();
PageAssignmentHolderDetails.this.addOrReplace(detailsFragment);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,11 @@ protected ContainerPanelConfigurationType getContainerConfiguration() {

protected abstract String getPanelType();

@Override
public String getStepId() {
return getPanelType();
}

protected ItemVisibilityHandler getVisibilityHandler() {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,25 +32,10 @@
*/
public class BasicResourceWizardPanel extends AbstractWizardPanel<ResourceType, ResourceDetailsModel> {

// private static final String ID_FRAGMENT = "fragment";
// private static final String ID_TEMPLATE_FRAGMENT = "templateFragment";
// private static final String ID_TEMPLATE = "template";
// private static final String ID_WIZARD_FRAGMENT = "wizardFragment";
// private static final String ID_MAIN_FORM = "mainForm";
// private static final String ID_WIZARD = "wizard";

// private final ResourceDetailsModel resourceModel;

public BasicResourceWizardPanel(String id, WizardPanelHelper<ResourceType, ResourceDetailsModel> helper) {
super(id, helper);
// this.resourceModel = model;
}

// @Override
// protected void onInitialize() {
// super.onInitialize();
// initLayout();
// }

protected void initLayout() {
add(createChoiceFragment(createTemplatePanel()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,18 +232,6 @@ public String getCssClass() {

columns.addAll(createCustomColumns());

columns.add(new PrismPropertyWrapperColumn<MappingType, String>(
mappingTypeDef,
MappingType.F_ENABLED,
AbstractItemWrapperColumn.ColumnType.VALUE,
getPageBase()) {
@Override
protected Component createHeader(String componentId, IModel<? extends PrismContainerDefinition<MappingType>> mainModel) {
Component header = super.createHeader(componentId, mainModel);
header.add(AttributeAppender.append("class", "d-table-row"));
return header;
}
});

columns.add(new SimulationModeColumn<>(getContainerModel(), getPageBase()));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,4 +257,9 @@ protected IModel<?> getTextModel() {
protected IModel<?> getSubTextModel() {
return createStringResource("PageResource.wizard.step.synchronization.reaction.action.subText");
}

@Override
public String getStepId() {
return PANEL_TYPE;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -344,4 +344,9 @@ public void onStepChanged(WizardStep newStep) {
oldOidResource = resourceOid;
}
}

@Override
public String getStepId() {
return PANEL_TYPE;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

package com.evolveum.midpoint.schema.validator.processor;

import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.Item;
import com.evolveum.midpoint.prism.PrismContainerValue;
Expand All @@ -15,8 +17,6 @@
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.jetbrains.annotations.NotNull;

public interface ProcessorMixin {

default String getIdentifier(Class<?> processor) {
Expand Down Expand Up @@ -114,4 +114,14 @@ default void copyTransport(NotificationTransportConfigurationType from, GeneralT
to.getBlackList().addAll(from.getBlackList());
to.setRecipientFilterExpression(from.getRecipientFilterExpression());
}

default void copyUserInterfaceFeature(UserInterfaceFeatureType from, UserInterfaceFeatureType to) {
to.setIdentifier(from.getIdentifier());
to.setDocumentation(from.getDocumentation());
to.setDisplay(from.getDisplay());
to.setDescription(from.getDescription());
to.setDisplayOrder(from.getDisplayOrder());
to.setVisibility(from.getVisibility());
to.setApplicableForOperation(from.getApplicableForOperation());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
package com.evolveum.midpoint.schema.validator.processor;

import java.util.Arrays;
import java.util.List;

import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.schema.validator.UpgradeObjectProcessor;
import com.evolveum.midpoint.schema.validator.UpgradePhase;
import com.evolveum.midpoint.schema.validator.UpgradePriority;
import com.evolveum.midpoint.schema.validator.UpgradeType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

import org.apache.commons.lang3.StringUtils;

@SuppressWarnings("unused")
public class UserDashboardLinkProcessor implements UpgradeObjectProcessor<ObjectType> {

@Override
public UpgradePriority getPriority() {
return UpgradePriority.NECESSARY;
}

@Override
public UpgradeType getType() {
return UpgradeType.PREVIEW;
}

@Override
public UpgradePhase getPhase() {
return UpgradePhase.BEFORE;
}

@Override
public boolean isApplicable(PrismObject<?> object, ItemPath path) {
return matchParentTypeAndItemName(object, path, AdminGuiConfigurationType.class, AdminGuiConfigurationType.F_USER_DASHBOARD_LINK);
}

@Override
public String upgradeDescription(PrismObject<ObjectType> object, ItemPath path) {
return "Authorization of user dashboard links has to be configured manually via widget/visibility.";
}

@Override
public boolean process(PrismObject<ObjectType> object, ItemPath path) {
AdminGuiConfigurationType adminGuiConfig = getItemParent(object, path);
List<RichHyperlinkType> links = adminGuiConfig.getUserDashboardLink();

List<HomePageType> homePages = adminGuiConfig.getHomePage();
HomePageType userHome = homePages.stream()
.filter(hp -> UserType.COMPLEX_TYPE.equals(hp.getType()))
.findFirst().orElse(null);

if (userHome == null) {
userHome = new HomePageType();
userHome.setType(UserType.COMPLEX_TYPE);
userHome.setIdentifier("user");
homePages.add(userHome);
}

for (RichHyperlinkType link : links) {
PreviewContainerPanelConfigurationType widget = new PreviewContainerPanelConfigurationType();
userHome.getWidget().add(widget);

widget.setPanelType("linkWidget");
widget.setDocumentation(link.getDocumentation());

DisplayType display = new DisplayType();
widget.setDisplay(display);

if (link.getLabel() != null) {
display.setLabel(new PolyStringType(link.getLabel()));
}
if (link.getDescription() != null) {
display.setHelp(new PolyStringType(link.getDescription()));
}

display.setIcon(link.getIcon());

if (link.getColor() != null) {
IconType icon = display.getIcon();
if (icon == null) {
icon = new IconType();
display.setIcon(icon);
}

icon.setCssClass(StringUtils.join(Arrays.asList(
icon.getCssClass(), link.getColor()), " "));
}

List<GuiActionType> actions = widget.getAction();
GuiActionType action = new GuiActionType();
action.setIdentifier("link");
action.setTarget(new RedirectionTargetType()
.targetUrl(link.getTargetUrl()));
actions.add(action);
}

links.clear();

return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@
import com.evolveum.midpoint.schema.validator.UpgradePhase;
import com.evolveum.midpoint.schema.validator.UpgradePriority;
import com.evolveum.midpoint.schema.validator.UpgradeType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AdminGuiConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.DashboardLayoutType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.HomePageType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import java.util.List;

Expand All @@ -23,7 +20,7 @@ public UpgradePriority getPriority() {

@Override
public UpgradeType getType() {
return UpgradeType.SEAMLESS;
return UpgradeType.PREVIEW;
}

@Override
Expand All @@ -39,12 +36,34 @@ public boolean isApplicable(PrismObject<?> object, ItemPath path) {
@Override
public boolean process(PrismObject<ObjectType> object, ItemPath path) {
AdminGuiConfigurationType adminGuiConfig = getItemParent(object, path);
DashboardLayoutType dashboard = adminGuiConfig.getUserDashboard();

List<HomePageType> homePages = adminGuiConfig.getHomePage();
HomePageType userHome = homePages.stream()
.filter(hp -> UserType.COMPLEX_TYPE.equals(hp.getType()))
.findFirst().orElse(null);

if (userHome == null) {
userHome = new HomePageType();
userHome.setType(UserType.COMPLEX_TYPE);
userHome.setIdentifier("user");
homePages.add(userHome);
}

DashboardLayoutType dashboard = adminGuiConfig.getUserDashboard();
List<DashboardWidgetType> dashboardWidgets = dashboard.getWidget();

for (DashboardWidgetType dw : dashboardWidgets) {
PreviewContainerPanelConfigurationType widget = new PreviewContainerPanelConfigurationType();
userHome.getWidget().add(widget);

copyUserInterfaceFeature(dw, widget);

dw.getData();
dw.getPresentation();
}

// todo implement, no idea how
adminGuiConfig.setUserDashboard(null);

return false;
return true;
}
}

0 comments on commit 9752dcd

Please sign in to comment.