diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AbstractPopupTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AbstractPopupTabPanel.java index 9ce60c9057f..c835d6a6825 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AbstractPopupTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AbstractPopupTabPanel.java @@ -1,11 +1,23 @@ /* - * Copyright (c) 2010-2018 Evolveum and contributors + * Copyright (C) 2010-2020 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 java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.wicket.Component; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; +import org.apache.wicket.markup.html.panel.Fragment; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; + import com.evolveum.midpoint.prism.query.ObjectFilter; import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.prism.query.OrFilter; @@ -13,23 +25,11 @@ import com.evolveum.midpoint.schema.constants.ObjectTypes; import com.evolveum.midpoint.web.component.data.column.ColumnUtils; import com.evolveum.midpoint.web.component.util.SelectableBean; -import com.evolveum.midpoint.web.component.util.SelectableBeanImpl; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType; import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentHolderType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import org.apache.commons.collections.CollectionUtils; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; -import org.apache.wicket.markup.html.panel.Fragment; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; /** * Created by honchar @@ -43,12 +43,12 @@ public abstract class AbstractPopupTabPanel extends BasePa protected List preSelectedObjects = new ArrayList<>(); - public AbstractPopupTabPanel(String id){ + public AbstractPopupTabPanel(String id) { super(id); } @Override - protected void onInitialize(){ + protected void onInitialize() { super.onInitialize(); setOutputMarkupId(true); add(initObjectListPanel()); @@ -60,17 +60,17 @@ protected void onInitialize(){ add(parametersPanelFragment); } - protected Component initObjectListPanel(){ - PopupObjectListPanel listPanel = new PopupObjectListPanel(ID_OBJECT_LIST_PANEL, (Class)getObjectType().getClassDefinition(), - true, getPageBase()) { + protected Component initObjectListPanel() { + PopupObjectListPanel listPanel = new PopupObjectListPanel(ID_OBJECT_LIST_PANEL, + (Class) getObjectType().getClassDefinition(), true, getPageBase()) { private static final long serialVersionUID = 1L; @Override protected List, String>> createColumns() { - if (AbstractRoleType.class.isAssignableFrom(getType())){ + if (AbstractRoleType.class.isAssignableFrom(getType())) { List, String>> columns = new ArrayList<>(); - columns.addAll((Collection)ColumnUtils.getDefaultAbstractRoleColumns(false)); + columns.addAll((Collection) ColumnUtils.getDefaultAbstractRoleColumns(false)); return columns; } else { return super.createColumns(); @@ -83,34 +83,34 @@ protected void onUpdateCheckbox(AjaxRequestTarget target, IModel getPreselectedObjectList(){ + protected List getPreselectedObjectList() { return getPreselectedObjects(); } @Override - protected IModel getCheckBoxEnableModel(IModel> rowModel){ + protected IModel getCheckBoxEnableModel(IModel> rowModel) { return getObjectSelectCheckBoxEnableModel(rowModel); } @Override protected ObjectQuery addFilterToContentQuery(ObjectQuery query) { ObjectQuery queryWithFilters = AbstractPopupTabPanel.this.addFilterToContentQuery(query); - if (queryWithFilters == null){ + if (queryWithFilters == null) { queryWithFilters = AbstractPopupTabPanel.this.getPageBase().getPrismContext().queryFactory().createQuery(); } List archetypeRefList = getArchetypeRefList(); - if (!CollectionUtils.isEmpty(archetypeRefList)){ + if (!CollectionUtils.isEmpty(archetypeRefList)) { List archetypeRefFilterList = new ArrayList<>(); - for (ObjectReferenceType archetypeRef : archetypeRefList){ + for (ObjectReferenceType archetypeRef : archetypeRefList) { ObjectFilter filter = AbstractPopupTabPanel.this.getPageBase().getPrismContext().queryFor(AssignmentHolderType.class) .item(AssignmentHolderType.F_ARCHETYPE_REF).ref(archetypeRef.getOid()) .buildFilter(); - ((RefFilter)filter).setTargetTypeNullAsAny(true); - ((RefFilter)filter).setRelationNullAsAny(true); + ((RefFilter) filter).setTargetTypeNullAsAny(true); + ((RefFilter) filter).setRelationNullAsAny(true); archetypeRefFilterList.add(filter); } - if (!CollectionUtils.isEmpty(archetypeRefFilterList)){ + if (!CollectionUtils.isEmpty(archetypeRefFilterList)) { OrFilter archetypeRefOrFilter = AbstractPopupTabPanel.this.getPageBase().getPrismContext().queryFactory().createOr(archetypeRefFilterList); queryWithFilters.addFilter(archetypeRefOrFilter); @@ -118,17 +118,17 @@ protected ObjectQuery addFilterToContentQuery(ObjectQuery query) { } ObjectFilter subTypeFilter = getSubtypeFilter(); - if (subTypeFilter != null){ + if (subTypeFilter != null) { queryWithFilters.addFilter(subTypeFilter); } return queryWithFilters; } }; - listPanel.add(new VisibleEnableBehaviour(){ + listPanel.add(new VisibleEnableBehaviour() { private static final long serialVersionUID = 1L; - public boolean isVisible(){ + public boolean isVisible() { return isObjectListPanelVisible(); } }); @@ -138,47 +138,48 @@ public boolean isVisible(){ protected abstract void initParametersPanel(Fragment parametersPanel); - protected List getPreselectedObjects(){ + protected List getPreselectedObjects() { return null; } - protected List getSelectedObjectsList(){ + protected List getSelectedObjectsList() { PopupObjectListPanel objectListPanel = getObjectListPanel(); - if (objectListPanel == null){ - return new ArrayList(); + if (objectListPanel == null) { + return new ArrayList<>(); } return objectListPanel.getSelectedObjects(); } - protected PopupObjectListPanel getObjectListPanel(){ - return (PopupObjectListPanel)get(ID_OBJECT_LIST_PANEL); + protected PopupObjectListPanel getObjectListPanel() { + return (PopupObjectListPanel) get(ID_OBJECT_LIST_PANEL); } - protected void onSelectionPerformed(AjaxRequestTarget target, IModel> rowModel){} + protected void onSelectionPerformed(AjaxRequestTarget target, IModel> rowModel) { + } - protected IModel getObjectSelectCheckBoxEnableModel(IModel> rowModel){ + protected IModel getObjectSelectCheckBoxEnableModel(IModel> rowModel) { return Model.of(true); } - protected ObjectQuery addFilterToContentQuery(ObjectQuery query){ + protected ObjectQuery addFilterToContentQuery(ObjectQuery query) { return query; } - protected List getArchetypeRefList(){ + protected List getArchetypeRefList() { return null; } - protected ObjectFilter getSubtypeFilter(){ + protected ObjectFilter getSubtypeFilter() { return null; } - protected boolean isObjectListPanelVisible(){ + protected boolean isObjectListPanelVisible() { return true; } protected abstract ObjectTypes getObjectType(); - protected boolean isInducement(){ + protected boolean isInducement() { return false; } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java index b3d31d34d12..907aa60b787 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2018 Evolveum and contributors + * Copyright (C) 2010-2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -40,7 +40,7 @@ /** * Created by honchar. */ -public class AssignmentPopup extends BasePanel implements Popupable{ +public class AssignmentPopup extends BasePanel implements Popupable { private static final long serialVersionUID = 1L; private static final String ID_TABS_PANEL = "tabsPanel"; @@ -49,14 +49,14 @@ public class AssignmentPopup extends BasePanel implements Popupable{ private static final String ID_ASSIGN_BUTTON = "assignButton"; private static final String ID_FORM = "form"; - private List selectedOrgsList = new ArrayList<>(); + private final List selectedOrgsList = new ArrayList<>(); - public AssignmentPopup(String id){ + public AssignmentPopup(String id) { super(id); } @Override - protected void onInitialize(){ + protected void onInitialize() { super.onInitialize(); Form form = new Form(ID_FORM); @@ -97,8 +97,8 @@ public void onClick(AjaxRequestTarget target) { Map selectedAssignmentsMap = new HashMap<>(); tabs.forEach(panelTab -> { - WebMarkupContainer assignmentPanel = ((PanelTab)panelTab).getPanel(); - if (assignmentPanel == null){ + WebMarkupContainer assignmentPanel = ((PanelTab) panelTab).getPanel(); + if (assignmentPanel == null) { return; } if (AbstractAssignmentPopupTabPanel.class.isAssignableFrom(assignmentPanel.getClass())) { @@ -359,70 +359,70 @@ public String getCount() { return tabs; } - protected PrismContainerWrapper getAssignmentWrapperModel(){ + protected PrismContainerWrapper getAssignmentWrapperModel() { return null; } - protected List getArchetypeRefList(){ + protected List getArchetypeRefList() { return null; } - protected ObjectFilter getSubtypeFilter(){ + protected ObjectFilter getSubtypeFilter() { return null; } - private boolean isTabVisible(ObjectTypes objectType){ + private boolean isTabVisible(ObjectTypes objectType) { List availableObjectTypesList = getAvailableObjectTypesList(); return availableObjectTypesList == null || availableObjectTypesList.size() == 0 || availableObjectTypesList.contains(objectType); } - protected boolean isOrgTreeTabVisible(){ + protected boolean isOrgTreeTabVisible() { return true; } - protected List getAvailableObjectTypesList(){ + protected List getAvailableObjectTypesList() { return WebComponentUtil.createAssignableTypesList(); } - protected QName getPredefinedRelation(){ + protected QName getPredefinedRelation() { return null; } - protected boolean isEntitlementAssignment(){ + protected boolean isEntitlementAssignment() { return false; } - private int getTabPanelSelectedCount(WebMarkupContainer panel){ - if (panel instanceof AbstractAssignmentPopupTabPanel){ + private int getTabPanelSelectedCount(WebMarkupContainer panel) { + if (panel instanceof AbstractAssignmentPopupTabPanel) { return ((AbstractAssignmentPopupTabPanel) panel).getSelectedObjectsList().size(); } return 0; } - protected void tabLabelPanelUpdate(AjaxRequestTarget target){ + protected void tabLabelPanelUpdate(AjaxRequestTarget target) { getTabbedPanel().reloadCountLabels(target); target.add(get(ID_FORM).get(ID_ASSIGN_BUTTON)); } - private void selectedOrgsListUpdate(IModel> rowModel){ - if (rowModel == null){ + private void selectedOrgsListUpdate(IModel> rowModel) { + if (rowModel == null) { return; } - if (rowModel.getObject().isSelected()){ + if (rowModel.getObject().isSelected()) { selectedOrgsList.add(rowModel.getObject().getValue()); } else { selectedOrgsList.removeIf((OrgType org) -> org.getOid().equals(rowModel.getObject().getValue().getOid())); } } - private TabbedPanel getTabbedPanel(){ + private TabbedPanel getTabbedPanel() { return (TabbedPanel) get(ID_FORM).get(ID_TABS_PANEL); } protected void addPerformed(AjaxRequestTarget target, List newAssignmentsList) { } - private IModel getAddButtonTitleModel(){ + private IModel getAddButtonTitleModel() { return new LoadableModel(true) { @Override protected String load() { @@ -431,12 +431,12 @@ protected String load() { }; } - private boolean isAssignButtonEnabled(){ + private boolean isAssignButtonEnabled() { TabbedPanel tabbedPanel = getTabbedPanel(); List tabs = tabbedPanel.getTabs().getObject(); - for (ITab tab : tabs){ - WebMarkupContainer assignmentPanel = ((PanelTab)tab).getPanel(); - if (assignmentPanel == null){ + for (ITab tab : tabs) { + WebMarkupContainer assignmentPanel = ((PanelTab) tab).getPanel(); + if (assignmentPanel == null) { continue; } if (((AbstractAssignmentPopupTabPanel) assignmentPanel).getSelectedObjectsList().size() > 0) { @@ -446,33 +446,33 @@ private boolean isAssignButtonEnabled(){ return false; } - protected IModel getWarningMessageModel(){ + protected IModel getWarningMessageModel() { return null; } - public int getWidth(){ + public int getWidth() { return 80; } - public int getHeight(){ + public int getHeight() { return 80; } @Override - public String getWidthUnit(){ + public String getWidthUnit() { return "%"; } @Override - public String getHeightUnit(){ + public String getHeightUnit() { return "%"; } - public StringResourceModel getTitle(){ + public StringResourceModel getTitle() { return createStringResource("TypedAssignablePanel.selectObjects"); } - public Component getComponent(){ + public Component getComponent() { return this; } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusTypeAssignmentPopupTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusTypeAssignmentPopupTabPanel.java index 83b474bb7ce..5314abfb6ff 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusTypeAssignmentPopupTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusTypeAssignmentPopupTabPanel.java @@ -1,23 +1,18 @@ /* - * Copyright (c) 2010-2018 Evolveum and contributors + * Copyright (C) 2010-2020 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 java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; - import javax.xml.namespace.QName; -import com.evolveum.midpoint.prism.PrismConstants; -import com.evolveum.midpoint.schema.constants.SchemaConstants; -import com.evolveum.midpoint.util.QNameUtil; - import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.map.HashedMap; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.panel.Fragment; @@ -28,9 +23,11 @@ import com.evolveum.midpoint.prism.query.ObjectFilter; import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.schema.constants.ObjectTypes; +import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectTypeUtil; import com.evolveum.midpoint.task.api.Task; +import com.evolveum.midpoint.util.QNameUtil; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.input.RelationDropDownChoicePanel; @@ -42,7 +39,7 @@ /** * Created by honchar */ -public class FocusTypeAssignmentPopupTabPanel extends AbstractAssignmentPopupTabPanel{ +public class FocusTypeAssignmentPopupTabPanel extends AbstractAssignmentPopupTabPanel { private static final long serialVersionUID = 1L; @@ -53,17 +50,19 @@ public class FocusTypeAssignmentPopupTabPanel extends Abstr private static final Trace LOGGER = TraceManager.getTrace(FocusTypeAssignmentPopupTabPanel.class); private static final String OPERATION_LOAD_ASSIGNABLE_ROLES = DOT_CLASS + "loadAssignableRoles"; - public FocusTypeAssignmentPopupTabPanel(String id, ObjectTypes type){ + public FocusTypeAssignmentPopupTabPanel(String id, ObjectTypes type) { super(id, type); } @Override - protected void initParametersPanel(Fragment parametersPanel){ + protected void initParametersPanel(Fragment parametersPanel) { WebMarkupContainer relationContainer = new WebMarkupContainer(ID_RELATION_CONTAINER); relationContainer.setOutputMarkupId(true); parametersPanel.add(relationContainer); - List relationsList = getPredefinedRelation() != null ? Arrays.asList(getPredefinedRelation()) : getSupportedRelations(); + List relationsList = getPredefinedRelation() != null + ? Collections.singletonList(getPredefinedRelation()) + : getSupportedRelations(); relationContainer.add(new RelationDropDownChoicePanel(ID_RELATION, getDefaultRelationIfInList(relationsList), relationsList, false)); } @@ -72,14 +71,14 @@ protected List getSupportedRelations() { return WebComponentUtil.getCategoryRelationChoices(AreaCategoryType.ADMINISTRATION, getPageBase()); } - protected QName getPredefinedRelation(){ + protected QName getPredefinedRelation() { return null; } - private QName getDefaultRelationIfInList(List relationsList){ - if (CollectionUtils.isNotEmpty(relationsList)){ - for (QName relation : relationsList){ - if (QNameUtil.match(relation, SchemaConstants.ORG_DEFAULT)){ + private QName getDefaultRelationIfInList(List relationsList) { + if (CollectionUtils.isNotEmpty(relationsList)) { + for (QName relation : relationsList) { + if (QNameUtil.match(relation, SchemaConstants.ORG_DEFAULT)) { return SchemaConstants.ORG_DEFAULT; } } @@ -88,28 +87,28 @@ private QName getDefaultRelationIfInList(List relationsList){ } @Override - protected Map getSelectedAssignmentsMap(){ - Map assignmentsMap = new HashedMap(); + protected Map getSelectedAssignmentsMap() { + Map assignmentsMap = new HashMap<>(); List selectedObjects = getObjectType().equals(ObjectTypes.ORG) ? getPreselectedObjects() : getSelectedObjectsList(); QName relation = getRelationValue(); - selectedObjects.forEach(selectedObject -> { - assignmentsMap.put(selectedObject.getOid(), ObjectTypeUtil.createAssignmentTo(selectedObject, relation)); - }); + selectedObjects.forEach(selectedObject -> assignmentsMap.put( + selectedObject.getOid(), + ObjectTypeUtil.createAssignmentTo(selectedObject, relation))); return assignmentsMap; } - public QName getRelationValue(){ + public QName getRelationValue() { RelationDropDownChoicePanel relationPanel = getRelationDropDown(); return relationPanel.getRelationValue(); } - private RelationDropDownChoicePanel getRelationDropDown(){ - return (RelationDropDownChoicePanel)get(ID_PARAMETERS_PANEL).get(ID_RELATION_CONTAINER).get(ID_RELATION); + private RelationDropDownChoicePanel getRelationDropDown() { + return (RelationDropDownChoicePanel) get(ID_PARAMETERS_PANEL).get(ID_RELATION_CONTAINER).get(ID_RELATION); } @Override - protected ObjectQuery addFilterToContentQuery(ObjectQuery query){ + protected ObjectQuery addFilterToContentQuery(ObjectQuery query) { LOGGER.debug("Loading roles which the current user has right to assign"); Task task = getPageBase().createSimpleTask(OPERATION_LOAD_ASSIGNABLE_ROLES); OperationResult result = task.getResult(); @@ -123,9 +122,9 @@ protected ObjectQuery addFilterToContentQuery(ObjectQuery query){ return query; } - protected boolean isInducement(){ + protected boolean isInducement() { PrismContainerWrapper assignmentWrapper = getAssignmentWrapperModel(); - if (assignmentWrapper != null && assignmentWrapper.getPath() != null && assignmentWrapper.getPath().containsNameExactly(AbstractRoleType.F_INDUCEMENT)){ + if (assignmentWrapper != null && assignmentWrapper.getPath() != null && assignmentWrapper.getPath().containsNameExactly(AbstractRoleType.F_INDUCEMENT)) { return true; } return false; @@ -133,7 +132,7 @@ protected boolean isInducement(){ protected PrismObject getTargetedAssignemntObject() { PrismContainerWrapper assignmentWrapper = getAssignmentWrapperModel(); - if (assignmentWrapper == null){ + if (assignmentWrapper == null) { return null; } PrismObjectWrapper w = (PrismObjectWrapper) assignmentWrapper.getParent().getParent(); @@ -148,7 +147,7 @@ protected PrismContainerWrapper getAssignmentWrapperModel() { } @Override - protected ObjectTypes getObjectType(){ + protected ObjectTypes getObjectType() { return ObjectTypes.FOCUS_TYPE; } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MemberPopupTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MemberPopupTabPanel.java index 3203c34e984..e54a66996f2 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MemberPopupTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MemberPopupTabPanel.java @@ -1,11 +1,19 @@ /* - * Copyright (c) 2010-2018 Evolveum and contributors + * Copyright (C) 2010-2020 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 java.util.ArrayList; +import java.util.List; +import javax.xml.namespace.QName; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.panel.Fragment; + import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.prism.delta.ObjectDelta; @@ -18,18 +26,11 @@ import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.page.admin.roles.AvailableRelationDto; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; -import org.apache.commons.collections.CollectionUtils; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.panel.Fragment; - -import javax.xml.namespace.QName; -import java.util.ArrayList; -import java.util.List; /** * Created by honchar */ -public abstract class MemberPopupTabPanel extends AbstractPopupTabPanel{ +public abstract class MemberPopupTabPanel extends AbstractPopupTabPanel { private static final long serialVersionUID = 1L; private static final Trace LOGGER = TraceManager.getTrace(MemberPopupTabPanel.class); @@ -38,40 +39,41 @@ public abstract class MemberPopupTabPanel extends Abstract private static final String ID_RELATION = "relation"; private PageBase pageBase; - private AvailableRelationDto supportedRelationList = new AvailableRelationDto(); - private List archetypeReferenceList = new ArrayList<>(); - public MemberPopupTabPanel(String id, AvailableRelationDto supportedRelationList){ - super(id); - this.supportedRelationList = supportedRelationList; + private final AvailableRelationDto supportedRelationList; + private final List archetypeReferenceList; + + public MemberPopupTabPanel(String id, AvailableRelationDto supportedRelationList) { + this(id, supportedRelationList, new ArrayList<>()); } - public MemberPopupTabPanel(String id, AvailableRelationDto supportedRelationList, List archetypeReferenceList) { + public MemberPopupTabPanel(String id, AvailableRelationDto supportedRelationList, + List archetypeReferenceList) { super(id); this.supportedRelationList = supportedRelationList; this.archetypeReferenceList = archetypeReferenceList; } @Override - protected void onInitialize(){ + protected void onInitialize() { super.onInitialize(); pageBase = getPageBase(); } @Override - protected void initParametersPanel(Fragment parametersPanel){ + protected void initParametersPanel(Fragment parametersPanel) { WebMarkupContainer relationContainer = new WebMarkupContainer(ID_RELATION_CONTAINER); relationContainer.setOutputMarkupId(true); - relationContainer.add(new VisibleEnableBehaviour(){ + relationContainer.add(new VisibleEnableBehaviour() { private static final long serialVersionUID = 1L; @Override - public boolean isVisible(){ + public boolean isVisible() { return CollectionUtils.isNotEmpty(supportedRelationList.getAvailableRelationList()); } @Override - public boolean isEnabled(){ + public boolean isEnabled() { return CollectionUtils.isNotEmpty(supportedRelationList.getAvailableRelationList()) && supportedRelationList.getAvailableRelationList().size() > 1; } @@ -81,12 +83,12 @@ public boolean isEnabled(){ relationContainer.add(new RelationDropDownChoicePanel(ID_RELATION, supportedRelationList.getDefaultRelation(), supportedRelationList.getAvailableRelationList(), false)); } - protected ObjectDelta prepareDelta(){ + protected ObjectDelta prepareDelta() { ObjectDelta delta = null; try { Class classType = WebComponentUtil.qnameToClass(pageBase.getPrismContext(), getObjectType().getTypeQName()); - delta = pageBase.getPrismContext().deltaFactory().object().createEmptyModifyDelta(classType, "fakeOid" - ); + delta = pageBase.getPrismContext().deltaFactory() + .object().createEmptyModifyDelta(classType, "fakeOid"); AssignmentType newAssignment = new AssignmentType(); ObjectReferenceType ref = ObjectTypeUtil.createObjectRef(getAbstractRoleTypeObject(), getRelationValue()); newAssignment.setTargetRef(ref); @@ -108,12 +110,12 @@ protected List getArchetypeRefList() { return archetypeReferenceList; } - public QName getRelationValue(){ + public QName getRelationValue() { RelationDropDownChoicePanel relationPanel = getRelationDropDown(); return relationPanel.getRelationValue(); } - private RelationDropDownChoicePanel getRelationDropDown(){ - return (RelationDropDownChoicePanel)get(ID_PARAMETERS_PANEL).get(ID_RELATION_CONTAINER).get(ID_RELATION); + private RelationDropDownChoicePanel getRelationDropDown() { + return (RelationDropDownChoicePanel) get(ID_PARAMETERS_PANEL).get(ID_RELATION_CONTAINER).get(ID_RELATION); } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PopupObjectListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PopupObjectListPanel.java index 9e7b30d324a..77ccd599b52 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PopupObjectListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PopupObjectListPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2017 Evolveum and contributors + * Copyright (C) 2010-2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -8,10 +8,19 @@ import java.util.Collection; import java.util.List; -import java.util.function.Supplier; +import org.apache.commons.lang3.StringUtils; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable; +import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; +import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; +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.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; -import com.evolveum.midpoint.prism.polystring.PolyString; import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.GetOperationOptions; @@ -23,29 +32,18 @@ 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.data.column.PolyStringPropertyColumn; -import com.evolveum.midpoint.web.component.util.SelectableBeanImpl; -import com.evolveum.midpoint.web.component.util.SerializableSupplier; -import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusPresentationProperties; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType; -import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable; -import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; -import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; -import org.apache.wicket.model.IModel; - -import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.web.component.data.column.CheckBoxHeaderColumn; import com.evolveum.midpoint.web.component.data.column.ColumnUtils; import com.evolveum.midpoint.web.component.data.column.LinkColumn; +import com.evolveum.midpoint.web.component.data.column.PolyStringPropertyColumn; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; import com.evolveum.midpoint.web.component.util.SelectableBean; +import com.evolveum.midpoint.web.component.util.SelectableBeanImpl; +import com.evolveum.midpoint.web.component.util.SerializableSupplier; +import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusPresentationProperties; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.jetbrains.annotations.NotNull; +import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; public abstract class PopupObjectListPanel extends ObjectListPanel { private static final long serialVersionUID = 1L; @@ -61,7 +59,7 @@ public PopupObjectListPanel(String id, Class defaultType, boolean m } public PopupObjectListPanel(String id, Class defaultType, Collection> options, - boolean multiselect, PageBase parentPage) { + boolean multiselect, PageBase parentPage) { super(id, defaultType, null, options, multiselect); } @@ -85,7 +83,7 @@ protected void onUpdateHeader(AjaxRequestTarget target, boolean selected, DataTa @Override protected IModel getEnabled(IModel> rowModel) { - return PopupObjectListPanel.this.getCheckBoxEnableModel(rowModel); + return PopupObjectListPanel.this.getCheckBoxEnableModel(rowModel); } }; } @@ -98,7 +96,7 @@ protected IColumn, String> createNameColumn(IModel col String propertyExpression = SelectableBeanImpl.F_VALUE + "." + (StringUtils.isEmpty(itemPath) ? "name" : itemPath); String sortProperty = StringUtils.isEmpty(itemPath) ? ObjectType.F_NAME.getLocalPart() : itemPath; if (expression != null) { - propertyExpression = SelectableBeanImpl.F_VALUE +(StringUtils.isEmpty(itemPath) ? "" : ("." + itemPath)); + propertyExpression = SelectableBeanImpl.F_VALUE + (StringUtils.isEmpty(itemPath) ? "" : ("." + itemPath)); sortProperty = StringUtils.isEmpty(itemPath) ? "" : itemPath; } return new LinkColumn>( @@ -109,8 +107,8 @@ protected IColumn, String> createNameColumn(IModel col @Override protected IModel createLinkModel(IModel> rowModel) { IModel linkModel = new PropertyModel(rowModel, getPropertyExpression()); - if (linkModel.getObject() != null && linkModel.getObject() instanceof PolyStringType){ - return Model.of(WebComponentUtil.getTranslatedPolyString((PolyStringType)linkModel.getObject())); + if (linkModel.getObject() != null && linkModel.getObject() instanceof PolyStringType) { + return Model.of(WebComponentUtil.getTranslatedPolyString((PolyStringType) linkModel.getObject())); } return linkModel; } @@ -131,22 +129,23 @@ public IModel getDataModel(IModel> rowModel) { } } }; - } - - else { - if ((StringUtils.isEmpty(itemPath) || ObjectType.F_NAME.getLocalPart().equals(itemPath)) && expression == null){ - return new PolyStringPropertyColumn>(columnNameModel == null ? createStringResource("userBrowserDialog.name") : columnNameModel, + } else { + if ((StringUtils.isEmpty(itemPath) || ObjectType.F_NAME.getLocalPart().equals(itemPath)) && expression == null) { + return new PolyStringPropertyColumn<>( + columnNameModel == null + ? createStringResource("userBrowserDialog.name") + : columnNameModel, ObjectType.F_NAME.getLocalPart(), "value.name"); } else { String propertyExpression = SelectableBeanImpl.F_VALUE + "." + itemPath; String sortProperty = itemPath; if (expression != null) { - propertyExpression = SelectableBeanImpl.F_VALUE +(StringUtils.isEmpty(itemPath) ? "" : ("." + itemPath)); + propertyExpression = SelectableBeanImpl.F_VALUE + (StringUtils.isEmpty(itemPath) ? "" : ("." + itemPath)); sortProperty = StringUtils.isEmpty(itemPath) ? "" : itemPath; } return new PropertyColumn( columnNameModel == null ? createStringResource("userBrowserDialog.name") : columnNameModel, - sortProperty, propertyExpression){ + sortProperty, propertyExpression) { @Override public IModel getDataModel(IModel rowModel) { @@ -185,7 +184,7 @@ protected List, String>> createColumns() { return ColumnUtils.getDefaultColumns(getType()); } - protected void onSelectPerformed(AjaxRequestTarget target, O object){ + protected void onSelectPerformed(AjaxRequestTarget target, O object) { } @@ -198,16 +197,15 @@ protected List createInlineMenu() { protected void addCustomActions(@NotNull List actionsList, SerializableSupplier> objectsSupplier) { } - - protected void onUpdateCheckbox(AjaxRequestTarget target, IModel> rowModel){ + protected void onUpdateCheckbox(AjaxRequestTarget target, IModel> rowModel) { } - protected IModel getCheckBoxEnableModel(IModel> rowModel){ + protected IModel getCheckBoxEnableModel(IModel> rowModel) { return Model.of(true); } - protected String getStorageKey(){ + protected String getStorageKey() { return null; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/autocomplete/ReferenceConverter.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/autocomplete/ReferenceConverter.java index 99aae49d14f..39503a6c34b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/autocomplete/ReferenceConverter.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/autocomplete/ReferenceConverter.java @@ -1,11 +1,19 @@ /* - * Copyright (c) 2020 Evolveum and contributors + * Copyright (C) 2020 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.autocomplete; +import java.util.List; +import java.util.Locale; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.wicket.markup.html.form.FormComponent; +import org.apache.wicket.util.convert.ConversionException; +import org.apache.wicket.util.convert.IConverter; + import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; @@ -14,18 +22,9 @@ import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectTypeUtil; import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType; - import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import org.apache.commons.collections.CollectionUtils; -import org.apache.wicket.markup.html.form.FormComponent; -import org.apache.wicket.util.convert.ConversionException; -import org.apache.wicket.util.convert.IConverter; - -import java.util.List; -import java.util.Locale; - /** * @author honchar */ @@ -52,10 +51,11 @@ public ObjectReferenceType convertToObject(String value, Locale locale) throws C .eq(value) .matchingOrig() .build(); - List> objectsList = WebModelServiceUtils.searchObjects(AbstractRoleType.class, query, - new OperationResult("searchObjects"), pageBase); - if (CollectionUtils.isNotEmpty(objectsList)){ - return ObjectTypeUtil.createObjectRefWithFullObject(objectsList.get(0), pageBase.getPrismContext()); + List> objectsList = WebModelServiceUtils.searchObjects( + AbstractRoleType.class, query, new OperationResult("searchObjects"), pageBase); + if (CollectionUtils.isNotEmpty(objectsList)) { + return ObjectTypeUtil.createObjectRefWithFullObject( + objectsList.get(0), pageBase.getPrismContext()); } return null; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/result/OperationResultPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/result/OperationResultPanel.java index 35a8822a47e..f3ee0a56407 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/result/OperationResultPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/result/OperationResultPanel.java @@ -1,10 +1,9 @@ /* - * Copyright (c) 2010-2017 Evolveum and contributors + * Copyright (C) 2010-2020 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.result; import java.io.DataOutputStream; @@ -15,8 +14,6 @@ import java.util.List; import java.util.Locale; -import com.evolveum.midpoint.web.component.util.VisibleBehaviour; - import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.wicket.AttributeModifier; @@ -44,13 +41,14 @@ import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.dialog.Popupable; +import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; /** * @author katkav */ -public class OperationResultPanel extends BasePanel implements Popupable{ +public class OperationResultPanel extends BasePanel implements Popupable { private static final long serialVersionUID = 1L; private static final String ID_DETAILS_BOX = "detailsBox"; @@ -68,7 +66,6 @@ public class OperationResultPanel extends BasePanel implements Popupab private static final Trace LOGGER = TraceManager.getTrace(OperationResultPanel.class); - public OperationResultPanel(String id, IModel model) { super(id, model); } @@ -251,7 +248,7 @@ public void onClick(AjaxRequestTarget target) { public File getObject() { String home = getPageBase().getMidpointConfiguration().getMidpointHome(); File f = new File(home, "result"); - try (DataOutputStream dos = new DataOutputStream(new FileOutputStream(f))){ + try (DataOutputStream dos = new DataOutputStream(new FileOutputStream(f))) { dos.writeBytes(OperationResultPanel.this.getModel().getObject().getXml()); } catch (IOException e) { LOGGER.error("Could not download result: {}", e.getMessage(), e); @@ -698,12 +695,12 @@ public int getHeight() { } @Override - public String getWidthUnit(){ + public String getWidthUnit() { return "px"; } @Override - public String getHeightUnit(){ + public String getHeightUnit() { return "px"; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java index 538161f4b7a..5ff266e0d8b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java @@ -23,11 +23,7 @@ import javax.xml.datatype.XMLGregorianCalendar; import javax.xml.namespace.QName; -import com.evolveum.midpoint.gui.impl.Channel; -import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; -import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; - -import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.BooleanUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.Validate; @@ -83,6 +79,7 @@ import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper; +import com.evolveum.midpoint.gui.impl.Channel; 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; @@ -107,6 +104,8 @@ import com.evolveum.midpoint.prism.query.builder.S_FilterEntryOrEmpty; import com.evolveum.midpoint.prism.util.PolyStringUtils; import com.evolveum.midpoint.prism.xml.XmlTypeConverter; +import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.*; import com.evolveum.midpoint.schema.constants.ObjectTypes; import com.evolveum.midpoint.schema.constants.RelationTypes; @@ -209,8 +208,8 @@ public final class WebComponentUtil { */ private static RelationRegistry staticallyProvidedRelationRegistry; - private static Map, Class> objectDetailsPageMap; - private static Map, Class> createNewObjectPageMap; + private static final Map, Class> objectDetailsPageMap; + private static final Map, Class> createNewObjectPageMap; static { objectDetailsPageMap = new HashMap<>(); @@ -228,13 +227,13 @@ public final class WebComponentUtil { objectDetailsPageMap.put(ObjectCollectionType.class, PageObjectCollection.class); } - static{ + static { createNewObjectPageMap = new HashMap<>(); createNewObjectPageMap.put(ResourceType.class, PageResourceWizard.class); } // only pages that support 'advanced search' are currently listed here (TODO: generalize) - private static Map, Class> objectListPageMap; + private static final Map, Class> objectListPageMap; static { objectListPageMap = new HashMap<>(); @@ -245,7 +244,7 @@ public final class WebComponentUtil { objectListPageMap.put(TaskType.class, PageTasks.class); } - private static Map storageTableIdMap; + private static final Map storageTableIdMap; static { storageTableIdMap = new HashMap<>(); @@ -280,14 +279,14 @@ public final class WebComponentUtil { COMPONENT_MAP.put("com.evolveum.midpoint.security", LoggingComponentType.SECURITY); } - public enum AssignmentOrder{ + public enum AssignmentOrder { ASSIGNMENT(0), INDUCEMENT(1); - private int order; + private final int order; - AssignmentOrder(int order){ + AssignmentOrder(int order) { this.order = order; } @@ -337,13 +336,13 @@ public static String getReferencedObjectDisplayNamesAndNames(Referencable ref, b } public static String getReferencedObjectDisplayNamesAndNames(Referencable ref, boolean showTypes, boolean translate) { - if (ref == null){ + if (ref == null) { return ""; } String name = ref.getTargetName() == null ? "" : (translate ? ref.getTargetName().getOrig() : ""); StringBuilder sb = new StringBuilder(name); - if(showTypes) { + if (showTypes) { sb.append(" ("); ObjectTypes type = ObjectTypes.getObjectTypeFromTypeQName(ref.getType()); ObjectTypeGuiDescriptor descriptor = ObjectTypeGuiDescriptor.getDescriptor(type); @@ -355,9 +354,9 @@ public static String getReferencedObjectDisplayNamesAndNames(Referencable ref, b return sb.toString(); } - public static List loadReferencedObjectList(List refList, String operation, PageBase pageBase){ + public static List loadReferencedObjectList(List refList, String operation, PageBase pageBase) { List loadedObjectsList = new ArrayList<>(); - if (refList == null){ + if (refList == null) { return loadedObjectsList; } refList.forEach(objectRef -> { @@ -370,9 +369,9 @@ public static List loadReferencedObjectList(List loadTargetUsersListForShoppingCart(String operation, PageBase pageBase){ + public static List loadTargetUsersListForShoppingCart(String operation, PageBase pageBase) { List usersOidsList = pageBase.getSessionStorage().getRoleCatalog().getTargetUserOidsList(); - if (CollectionUtils.isEmpty(usersOidsList)){ + if (CollectionUtils.isEmpty(usersOidsList)) { return new ArrayList<>(); } List usersReferenceList = new ArrayList<>(); @@ -383,13 +382,13 @@ public static List loadTargetUsersListForShoppingCart(String operation } - public static ObjectFilter getShadowTypeFilterForAssociation(ConstructionType construction, String operation, PageBase pageBase){ + public static ObjectFilter getShadowTypeFilterForAssociation(ConstructionType construction, String operation, PageBase pageBase) { PrismContext prismContext = pageBase.getPrismContext(); - if (construction == null){ + if (construction == null) { return null; } PrismObject resource = WebComponentUtil.getConstructionResource(construction, operation, pageBase); - if (resource == null){ + if (resource == null) { return null; } @@ -397,7 +396,7 @@ public static ObjectFilter getShadowTypeFilterForAssociation(ConstructionType co try { RefinedResourceSchema refinedResourceSchema = RefinedResourceSchema.getRefinedSchema(resource); RefinedObjectClassDefinition oc = refinedResourceSchema.getRefinedDefinition(construction.getKind(), construction.getIntent()); - if (oc == null){ + if (oc == null) { return null; } Collection refinedAssociationDefinitions = oc.getAssociationDefinitions(); @@ -415,7 +414,7 @@ public static ObjectFilter getShadowTypeFilterForAssociation(ConstructionType co query.setFilter(filter); // TODO this overwrites existing filter (created in previous cycle iteration)... is it OK? [med] } } catch (SchemaException ex) { - LOGGER.error("Couldn't create query filter for ShadowType for association: {}" , ex.getErrorTypeMessage()); + LOGGER.error("Couldn't create query filter for ShadowType for association: {}", ex.getErrorTypeMessage()); } return query.getFilter(); } @@ -600,7 +599,7 @@ public static DateValidator getRangeValidator(Form form, ItemPath path) { } public static boolean isItemVisible(List visibleItems, ItemPath itemToBeFound) { - return ItemPathCollectionsUtil.containsSubpathOrEquivalent(visibleItems, itemToBeFound); + return ItemPathCollectionsUtil.containsSubpathOrEquivalent(visibleItems, itemToBeFound); } @@ -714,7 +713,7 @@ public static boolean isReport(TaskType task) { return isArchetypedTask(task, SystemObjectsType.ARCHETYPE_REPORT_TASK); } - public static boolean isImport(TaskType task){ + public static boolean isImport(TaskType task) { return isArchetypedTask(task, SystemObjectsType.ARCHETYPE_IMPORT_TASK); } @@ -724,7 +723,7 @@ public static boolean isLiveSync(TaskType task) { private static boolean isArchetypedTask(TaskType taskType, SystemObjectsType archetype) { ObjectReferenceType archetypeRef = getArchetypeReference(taskType); - if (archetypeRef == null){ + if (archetypeRef == null) { return false; } return archetype.value().equals(archetypeRef.getOid()); @@ -744,9 +743,9 @@ private static ObjectReferenceType getArchetypeReference(TaskType task) { return archetypeRef; } - public static void iterativeExecuteBulkAction(PageBase pageBase, ExecuteScriptType script, Task task, OperationResult result ) + public static void iterativeExecuteBulkAction(PageBase pageBase, ExecuteScriptType script, Task task, OperationResult result) throws SchemaException, SecurityViolationException, ObjectNotFoundException, ExpressionEvaluationException, - CommunicationException, ConfigurationException{ + CommunicationException, ConfigurationException { pageBase.getScriptingService().evaluateIterativeExpressionInBackground(script, task, result); } @@ -767,10 +766,7 @@ public static boolean isAuthorized(Collection actions) { roles.add(AuthorizationConstants.AUTZ_GUI_ALL_URL); roles.add(AuthorizationConstants.AUTZ_GUI_ALL_DEPRECATED_URL); roles.addAll(actions); - if (((AuthenticatedWebApplication) AuthenticatedWebApplication.get()).hasAnyRole(roles)) { - return true; - } - return false; + return ((AuthenticatedWebApplication) AuthenticatedWebApplication.get()).hasAnyRole(roles); } public static boolean isAuthorized(Class clazz) { @@ -843,9 +839,7 @@ public static List createAssignmentHolderTypeQnamesList() { return objectTypes.stream().map(type -> type.getTypeQName()).collect(Collectors.toList()); } - - - public static List createAssignmentHolderTypesList(){ + public static List createAssignmentHolderTypesList() { return createObjectTypesList().stream().filter(type -> AssignmentHolderType.class.isAssignableFrom(type.getClassDefinition())).collect(Collectors.toList()); } @@ -893,30 +887,31 @@ public static List createAssignableTypesList() { } public static List createSupportedTargetTypeList(QName targetTypeFromDef) { - if (targetTypeFromDef == null || ObjectType.COMPLEX_TYPE.equals(targetTypeFromDef)) { - return createObjectTypeList(); - } + if (targetTypeFromDef == null || ObjectType.COMPLEX_TYPE.equals(targetTypeFromDef)) { + return createObjectTypeList(); + } - if (AbstractRoleType.COMPLEX_TYPE.equals(targetTypeFromDef)) { - return createAbstractRoleTypeList(); - } + if (AbstractRoleType.COMPLEX_TYPE.equals(targetTypeFromDef)) { + return createAbstractRoleTypeList(); + } - if (FocusType.COMPLEX_TYPE.equals(targetTypeFromDef)) { - return createFocusTypeList(); - } + if (FocusType.COMPLEX_TYPE.equals(targetTypeFromDef)) { + return createFocusTypeList(); + } - if (AssignmentHolderType.COMPLEX_TYPE.equals(targetTypeFromDef)) { - return createAssignmentHolderTypeQnamesList(); - } + if (AssignmentHolderType.COMPLEX_TYPE.equals(targetTypeFromDef)) { + return createAssignmentHolderTypeQnamesList(); + } - return Arrays.asList(targetTypeFromDef); + return Collections.singletonList(targetTypeFromDef); } /** * Takes a collection of object types (classes) that may contain abstract types. Returns a collection * that only contain concrete types. - * @param common supertype for all the types in the collections * + * @param common supertype for all the types in the collections + *

* TODO: move to schema component */ public static List resolveObjectTypesToQNames(Collection> types, PrismContext prismContext) { @@ -924,7 +919,7 @@ public static List resolveObjectTypesToQNames(Coll return null; } List concreteTypes = new ArrayList<>(types.size()); - for (Class type: types) { + for (Class type : types) { if (type == null || type.equals(ObjectType.class)) { MiscUtil.addAllIfNotPresent(concreteTypes, createObjectTypeList()); } else if (type.equals(FocusType.class)) { @@ -972,10 +967,11 @@ public static DropDownChoicePanel createEnumPanel(Class clazz, return createEnumPanel(clazz, id, model, component, true); } + public static DropDownChoicePanel createEnumPanel(Class clazz, String id, final IModel model, final Component component, boolean allowNull) { return createEnumPanel(clazz, id, WebComponentUtil.createReadonlyModelFromEnum(clazz), - model, component, allowNull ); + model, component, allowNull); } public static DropDownChoicePanel createEnumPanel(Class clazz, String id, @@ -986,7 +982,7 @@ public static DropDownChoicePanel createEnumPanel(Class c public static DropDownChoicePanel createEnumPanel(String id, IModel> choicesList, final IModel model, final Component component, boolean allowNull, String nullValidDisplayValue) { return new DropDownChoicePanel(id, model, choicesList, getEnumChoiceRenderer(component) - , allowNull){ + , allowNull) { private static final long serialVersionUID = 1L; @@ -998,7 +994,7 @@ protected String getNullValidDisplayValue() { }; } - public static IChoiceRenderer getEnumChoiceRenderer(Component component){ + public static IChoiceRenderer getEnumChoiceRenderer(Component component) { return new IChoiceRenderer() { private static final long serialVersionUID = 1L; @@ -1091,31 +1087,31 @@ public static String getEffectiveName(PrismObject obje } PolyString name = getValue(object, ObjectType.F_NAME, PolyString.class); - if (name == null){ + if (name == null) { return null; } return translate ? getTranslatedPolyString(name) : WebComponentUtil.getOrigStringFromPoly(name); } - public static String getTranslatedPolyString(PolyStringType value){ + public static String getTranslatedPolyString(PolyStringType value) { return getTranslatedPolyString(PolyString.toPolyString(value)); } - public static String getTranslatedPolyString(PolyString value){ + public static String getTranslatedPolyString(PolyString value) { MidPointApplication application = MidPointApplication.get(); return getTranslatedPolyString(value, application != null ? application.getLocalizationService() : null); } - public static String getTranslatedPolyString(PolyString value, LocalizationService localizationService){ - if (value == null){ + public static String getTranslatedPolyString(PolyString value, LocalizationService localizationService) { + if (value == null) { return ""; } - if (localizationService == null){ + if (localizationService == null) { localizationService = MidPointApplication.get().getLocalizationService(); } String translatedValue = localizationService.translate(value, getCurrentLocale(), true); - if (StringUtils.isNotEmpty(translatedValue)){ + if (StringUtils.isNotEmpty(translatedValue)) { return translatedValue; } return value.getOrig(); @@ -1142,13 +1138,13 @@ public static String getDisplayNameOrName(ObjectReference } public static String getDisplayNameOrName(ObjectReferenceType ref, PageBase pageBase, - String operation, boolean translate) { + String operation, boolean translate) { String name = getName(ref, translate); if (StringUtils.isEmpty(name) || name.equals(ref.getOid())) { String oid = ref.getOid(); Collection> options = SelectorOptions .createCollection(GetOperationOptions.createNoFetch()); - Class type = ref.getType() != null ? (Class)qnameToClass(pageBase.getPrismContext(), ref.getType()) : (Class) ObjectType.class; + Class type = ref.getType() != null ? (Class) qnameToClass(pageBase.getPrismContext(), ref.getType()) : (Class) ObjectType.class; PrismObject object = WebModelServiceUtils.loadObject(type, oid, pageBase, pageBase.createSimpleTask(operation), new OperationResult(operation)); if (object != null) { @@ -1159,11 +1155,12 @@ public static String getDisplayNameOrName(ObjectReference } public static String getEffectiveName(ObjectReferenceType ref, QName propertyName, - PageBase pageBase, String operation) { + PageBase pageBase, String operation) { return getEffectiveName(ref, propertyName, pageBase, operation, true); } + public static String getEffectiveName(Referencable ref, QName propertyName, - PageBase pageBase, String operation, boolean translate) { + PageBase pageBase, String operation, boolean translate) { PrismObject object = WebModelServiceUtils.loadObject(ref, pageBase, pageBase.createSimpleTask(operation), new OperationResult(operation)); @@ -1184,7 +1181,7 @@ public static String getName(Referencable ref, boolean translate) { return null; } if (ref.getTargetName() != null) { - if (translate){ + if (translate) { return getTranslatedPolyString(ref.getTargetName()); } return getOrigStringFromPoly(ref.getTargetName()); @@ -1200,7 +1197,7 @@ public static String getName(PrismObject object) { } public static String getName(PrismObject object, boolean translate) { - return getName(object, translate, (LocalizationService) null); + return getName(object, translate, null); } public static String getName(PrismObject object, boolean translate, LocalizationService localizationService) { @@ -1208,10 +1205,10 @@ public static String getName(PrismObject object, boolean translate, Localization return null; } PolyString name = getValue(object, ObjectType.F_NAME, PolyString.class); - if (name == null){ + if (name == null) { return null; } - if (translate){ + if (translate) { return getTranslatedPolyString(name, localizationService); } return name.getOrig(); @@ -1372,7 +1369,6 @@ public static String getDisplayName(PrismContainerValu } } - String escaped = org.apache.commons.lang.StringEscapeUtils.escapeHtml(displayName); return escaped; } @@ -1393,7 +1389,6 @@ private static String getAcquisitionDescription(ProvenanceAcquisitionType acquis return Channel.findChannel(acquisitionType.getChannel()).getResourceKey(); //TODO NPE } - public static QName normalizeRelation(QName relation) { return getRelationRegistry().normalizeRelation(relation); } @@ -1424,7 +1419,7 @@ public static String getDisplayNameOrName(Referencable ref, boolean translate) { return null; } String displayName = getDisplayName(ref, translate); - return StringUtils.isNotEmpty(displayName) ? displayName : getName(ref,translate); + return StringUtils.isNotEmpty(displayName) ? displayName : getName(ref, translate); } // () OR simply if there's no display name @@ -1437,7 +1432,7 @@ public static String getDisplayName(ObjectReferenceType ref) { } public static String getDisplayName(Referencable ref, boolean translate) { - if (translate){ + if (translate) { return getTranslatedPolyString(ObjectTypeUtil.getDisplayName(ref)); } else { return PolyString.getOrig(ObjectTypeUtil.getDisplayName(ref)); @@ -1453,10 +1448,10 @@ public static String getDisplayName(PrismObject object, boolean translate) { } public static String getDisplayName(PrismObject object, boolean translate, LocalizationService localizationService) { - if (object == null){ - return ""; + if (object == null) { + return ""; } - if (translate){ + if (translate) { if (localizationService == null) { return getTranslatedPolyString(ObjectTypeUtil.getDisplayName(object)); } else { @@ -1639,12 +1634,12 @@ public static List getSelectedData(Table table) { return selected; } - public static void clearProviderCache(IDataProvider provider){ - if (provider == null){ + public static void clearProviderCache(IDataProvider provider) { + if (provider == null) { return; } - if (provider instanceof BaseSortableDataProvider){ - ((BaseSortableDataProvider)provider).clearCache(); + if (provider instanceof BaseSortableDataProvider) { + ((BaseSortableDataProvider) provider).clearCache(); } if (provider instanceof SelectableBeanObjectDataProvider) { ((SelectableBeanObjectDataProvider) provider).clearSelectedObjects(); @@ -1735,18 +1730,18 @@ public static String getLongDateTimeFormattedValue(Date date, PageBase pageBase) return getLocalizedDate(date, longDateTimeFormat); } - public static String getShortDateTimeFormat(PageBase pageBase){ + public static String getShortDateTimeFormat(PageBase pageBase) { AdminGuiConfigurationDisplayFormatsType displayFormats = pageBase.getCompiledGuiProfile().getDisplayFormats(); - if (displayFormats == null || StringUtils.isEmpty(displayFormats.getShortDateTimeFormat())){ + if (displayFormats == null || StringUtils.isEmpty(displayFormats.getShortDateTimeFormat())) { return DateLabelComponent.SHORT_MEDIUM_STYLE; } else { return displayFormats.getShortDateTimeFormat(); } } - public static String getLongDateTimeFormat(PageBase pageBase){ + public static String getLongDateTimeFormat(PageBase pageBase) { AdminGuiConfigurationDisplayFormatsType displayFormats = pageBase.getCompiledGuiProfile().getDisplayFormats(); - if (displayFormats == null || StringUtils.isEmpty(displayFormats.getLongDateTimeFormat())){ + if (displayFormats == null || StringUtils.isEmpty(displayFormats.getLongDateTimeFormat())) { return DateLabelComponent.LONG_MEDIUM_STYLE; } else { return displayFormats.getLongDateTimeFormat(); @@ -2027,15 +2022,15 @@ public static String createUserIcon(PrismObject object) { String additionalStyle; // getIconEnabledDisabled(object); // if (additionalStyle == null) { - // Set manager and end-user icon only as a last resort. All other - // colors have priority. - if (isManager) { - additionalStyle = GuiStyleConstants.CLASS_ICON_STYLE_MANAGER; - } else if (isEndUser) { - additionalStyle = GuiStyleConstants.CLASS_ICON_STYLE_END_USER; - } else { - additionalStyle = GuiStyleConstants.CLASS_ICON_STYLE_NORMAL; - } + // Set manager and end-user icon only as a last resort. All other + // colors have priority. + if (isManager) { + additionalStyle = GuiStyleConstants.CLASS_ICON_STYLE_MANAGER; + } else if (isEndUser) { + additionalStyle = GuiStyleConstants.CLASS_ICON_STYLE_END_USER; + } else { + additionalStyle = GuiStyleConstants.CLASS_ICON_STYLE_NORMAL; + } // } return GuiStyleConstants.CLASS_OBJECT_USER_ICON + " " + additionalStyle; } @@ -2059,7 +2054,7 @@ public static String createServiceIcon() { return getObjectNormalIconStyle(GuiStyleConstants.CLASS_OBJECT_SERVICE_ICON); } - private static String getObjectNormalIconStyle(String baseIcon){ + private static String getObjectNormalIconStyle(String baseIcon) { return baseIcon + " " + GuiStyleConstants.CLASS_ICON_STYLE_NORMAL; } @@ -2139,7 +2134,7 @@ public static String createObjectColletionIcon() { return getObjectNormalIconStyle(GuiStyleConstants.CLASS_OBJECT_COLLECTION_ICON); } - public static ObjectFilter evaluateExpressionsInFilter(ObjectFilter objectFilter, OperationResult result, PageBase pageBase){ + public static ObjectFilter evaluateExpressionsInFilter(ObjectFilter objectFilter, OperationResult result, PageBase pageBase) { try { ExpressionVariables variables = new ExpressionVariables(); return ExpressionUtil.evaluateFilterExpressions(objectFilter, variables, MiscSchemaUtil.getExpressionProfile(), @@ -2147,7 +2142,7 @@ public static ObjectFilter evaluateExpressionsInFilter(ObjectFilter objectFilter pageBase.createSimpleTask(result.getOperation()), result); } catch (SchemaException | ObjectNotFoundException | ExpressionEvaluationException | CommunicationException | ConfigurationException | SecurityViolationException ex) { - result.recordPartialError("Unable to evaluate filter exception, " , ex); + result.recordPartialError("Unable to evaluate filter exception, ", ex); pageBase.error("Unable to evaluate filter exception, " + ex.getMessage()); } return objectFilter; @@ -2165,7 +2160,6 @@ public static void initNewObjectWithReference initNewObjectWithReference(pageBase, assignmentHolder, newReferences); } - public static void initNewObjectWithReference(PageBase pageBase, AHT assignmentHolder, List newReferences) throws SchemaException { if (newReferences != null) { newReferences.stream().forEach(ref -> { @@ -2188,7 +2182,7 @@ public static void initNewObjectWithReference } public static String createErrorIcon(OperationResult result) { - if (result == null){ + if (result == null) { return ""; } OperationResultStatus status = result.getStatus(); @@ -2229,7 +2223,6 @@ public static PrismContext getPrismContext(Component component) { return ((MidPointApplication) component.getApplication()).getPrismContext(); } - public static List getChannelList() { List channels = new ArrayList<>(); @@ -2258,8 +2251,7 @@ public static List getMatchingRuleList() { public static String createHumanReadableByteCount(long bytes) { int unit = 1024; - if (bytes < unit) - return bytes + "B"; + if (bytes < unit) { return bytes + "B"; } int exp = (int) (Math.log(bytes) / Math.log(unit)); char pre = "KMGTPE".charAt(exp - 1); return String.format("%.1f%sB", bytes / Math.pow(unit, exp), pre); @@ -2348,7 +2340,7 @@ public static void dispatchToObjectDetailsPage(PrismObject obj, Component compon public static void dispatchToObjectDetailsPage(PrismObject obj, boolean isNewObject, Component component) { Class newObjectPageClass = isNewObject ? getNewlyCreatedObjectPage(obj.getCompileTimeClass()) : getObjectDetailsPage(obj.getCompileTimeClass()); if (newObjectPageClass == null) { - throw new IllegalArgumentException("Cannot determine details page for "+obj.getCompileTimeClass()); + throw new IllegalArgumentException("Cannot determine details page for " + obj.getCompileTimeClass()); } Constructor constructor; @@ -2386,7 +2378,7 @@ public static void dispatchToObjectDetailsPage(Class objec if (page != null) { ((PageBase) component.getPage()).navigateToNext(page, parameters); } else if (failIfUnsupported) { - throw new SystemException("Cannot determine details page for "+objectClass); + throw new SystemException("Cannot determine details page for " + objectClass); } } @@ -2541,25 +2533,25 @@ public static Integer getIntegerParameter(PageParameters params, String key) { return value.toInteger(); } - public static boolean isSubscriptionIdCorrect(String subscriptionId){ + public static boolean isSubscriptionIdCorrect(String subscriptionId) { if (StringUtils.isEmpty(subscriptionId)) { return false; } - if (!NumberUtils.isDigits(subscriptionId)){ + if (!NumberUtils.isDigits(subscriptionId)) { return false; } - if (subscriptionId.length() < 11){ + if (subscriptionId.length() < 11) { return false; } String subscriptionType = subscriptionId.substring(0, 2); boolean isTypeCorrect = false; - for (SubscriptionType type : SubscriptionType.values()){ - if (type.getSubscriptionType().equals(subscriptionType)){ + for (SubscriptionType type : SubscriptionType.values()) { + if (type.getSubscriptionType().equals(subscriptionType)) { isTypeCorrect = true; break; } } - if (!isTypeCorrect){ + if (!isTypeCorrect) { return false; } String substring1 = subscriptionId.substring(2, 4); @@ -2571,7 +2563,7 @@ public static boolean isSubscriptionIdCorrect(String subscriptionId){ SimpleDateFormat dateFormat = new SimpleDateFormat("yy"); String currentYear = dateFormat.format(Calendar.getInstance().getTime()); - if (Integer.parseInt(substring2) < Integer.parseInt(currentYear)){ + if (Integer.parseInt(substring2) < Integer.parseInt(currentYear)) { return false; } @@ -2589,10 +2581,7 @@ public static boolean isSubscriptionIdCorrect(String subscriptionId){ return false; } VerhoeffCheckDigit checkDigit = new VerhoeffCheckDigit(); - if (checkDigit.isValid(subscriptionId)){ - return true; - } - return false; + return checkDigit.isValid(subscriptionId); } public static void setSelectedTabFromPageParameters(TabbedPanel tabbed, PageParameters params, String paramName) { @@ -2606,19 +2595,19 @@ public static void setSelectedTabFromPageParameters(TabbedPanel tabbed, PagePara tabbed.setSelectedTab(tabIndex); } - public static boolean getElementVisibility(UserInterfaceElementVisibilityType visibilityType){ + public static boolean getElementVisibility(UserInterfaceElementVisibilityType visibilityType) { return getElementVisibility(visibilityType, new ArrayList<>()); } - public static boolean getElementVisibility(UserInterfaceElementVisibilityType visibilityType, List requiredAuthorizations){ + public static boolean getElementVisibility(UserInterfaceElementVisibilityType visibilityType, List requiredAuthorizations) { if (UserInterfaceElementVisibilityType.HIDDEN.equals(visibilityType) || - UserInterfaceElementVisibilityType.VACANT.equals(visibilityType)){ + UserInterfaceElementVisibilityType.VACANT.equals(visibilityType)) { return false; } - if (UserInterfaceElementVisibilityType.VISIBLE.equals(visibilityType)){ + if (UserInterfaceElementVisibilityType.VISIBLE.equals(visibilityType)) { return true; } - if (UserInterfaceElementVisibilityType.AUTOMATIC.equals(visibilityType)){ + if (UserInterfaceElementVisibilityType.AUTOMATIC.equals(visibilityType)) { return WebComponentUtil.isAuthorized(requiredAuthorizations); } return true; @@ -2626,7 +2615,7 @@ public static boolean getElementVisibility(UserInterfaceElementVisibilityType vi public static IModel createAbstractRoleConfirmationMessage(String actionName, ColumnMenuAction action, MainObjectListPanel abstractRoleTable, PageBase pageBase) { - List selectedRoles = new ArrayList<>(); + List selectedRoles = new ArrayList<>(); if (action.getRowModel() == null) { selectedRoles.addAll(abstractRoleTable.getSelectedObjects()); } else { @@ -2637,7 +2626,7 @@ public static IModel createAbstractRoleCon for (AR selectedRole : selectedRoles) { ObjectQuery query = pageBase.getPrismContext().queryFor(FocusType.class) .item(FocusType.F_ROLE_MEMBERSHIP_REF)// TODO MID-3581 - .ref(ObjectTypeUtil.createObjectRef(selectedRole, pageBase.getPrismContext()).asReferenceValue()) + .ref(ObjectTypeUtil.createObjectRef(selectedRole, pageBase.getPrismContext()).asReferenceValue()) .maxSize(1) .build(); List> members = WebModelServiceUtils.searchObjects(FocusType.class, query, result, pageBase); @@ -2655,16 +2644,16 @@ public static IModel createAbstractRoleCon actionName, abstractRoleTable.getSelectedObjectsCount()); } else { return pageBase.createStringResource(propertyKeyPrefix + ".message.confirmationMessageForSingleObject" + members, - actionName, ((ObjectType)((SelectableBeanImpl)action.getRowModel().getObject()).getValue()).getName()); + actionName, ((ObjectType) ((SelectableBeanImpl) action.getRowModel().getObject()).getValue()).getName()); } } - public static DisplayType getNewObjectDisplayTypeFromCollectionView(CompiledObjectCollectionView view, PageBase pageBase){ + public static DisplayType getNewObjectDisplayTypeFromCollectionView(CompiledObjectCollectionView view, PageBase pageBase) { DisplayType displayType = view != null ? view.getDisplay() : null; - if (displayType == null){ + if (displayType == null) { displayType = WebComponentUtil.createDisplayType(GuiStyleConstants.CLASS_ADD_NEW_OBJECT, "green", ""); } - if (PolyStringUtils.isEmpty(displayType.getTooltip()) && !PolyStringUtils.isEmpty(displayType.getLabel())){ + if (PolyStringUtils.isEmpty(displayType.getTooltip()) && !PolyStringUtils.isEmpty(displayType.getLabel())) { StringBuilder sb = new StringBuilder(); sb.append(pageBase.createStringResource("MainObjectListPanel.newObject").getString()); sb.append(" "); @@ -2678,7 +2667,7 @@ public static DisplayType getNewObjectDisplayTypeFromCollectionView(CompiledObje * Returns name of the collection suitable to be displayed in the menu or other labels. * E.g. "All tasks", "Active employees". */ - public static PolyStringType getCollectionLabel(DisplayType viewDisplayType, CollectionRefSpecificationType collectionRefSpec ,ObjectType collectionRefTarget) { + public static PolyStringType getCollectionLabel(DisplayType viewDisplayType, CollectionRefSpecificationType collectionRefSpec, ObjectType collectionRefTarget) { if (viewDisplayType != null) { PolyStringType viewPluralLabel = viewDisplayType.getPluralLabel(); if (viewPluralLabel != null) { @@ -2700,8 +2689,8 @@ public static PolyStringType getCollectionLabel(DisplayType viewDisplayType, Col return null; } - public static ItemVisibility checkShadowActivationAndPasswordVisibility(ItemWrapper itemWrapper, - ShadowType shadowType) { + public static ItemVisibility checkShadowActivationAndPasswordVisibility(ItemWrapper itemWrapper, + ShadowType shadowType) { ObjectReferenceType resourceRef = shadowType.getResourceRef(); if (resourceRef == null) { //TODO: what to return if we don't have resource available? @@ -2724,7 +2713,6 @@ public static ItemVisibility checkShadowActivationAndPasswordVisibility(ItemWrap } ResourceObjectTypeDefinitionType resourceObjectTypeDefinitionType = ResourceTypeUtil.findObjectTypeDefinition(resource, shadowType.getKind(), shadowType.getIntent()); - if (SchemaConstants.PATH_ACTIVATION.equivalent(itemWrapper.getPath())) { if (ResourceTypeUtil.isActivationCapabilityEnabled(resourceType, resourceObjectTypeDefinitionType)) { return ItemVisibility.AUTO; @@ -2799,11 +2787,7 @@ public static boolean isActivationSupported(ShadowType shadowType) { ResourceObjectTypeDefinitionType resourceObjectTypeDefinitionType = ResourceTypeUtil.findObjectTypeDefinition(resource, shadowType.getKind(), shadowType.getIntent()); - if (ResourceTypeUtil.isActivationCapabilityEnabled(resource.asObjectable(), resourceObjectTypeDefinitionType)) { - return true; - } - - return false; + return ResourceTypeUtil.isActivationCapabilityEnabled(resource.asObjectable(), resourceObjectTypeDefinitionType); } @@ -2821,15 +2805,10 @@ public static boolean isPasswordSupported(ShadowType shadowType) { ResourceObjectTypeDefinitionType resourceObjectTypeDefinitionType = ResourceTypeUtil.findObjectTypeDefinition(resource, shadowType.getKind(), shadowType.getIntent()); - if (ResourceTypeUtil.isPasswordCapabilityEnabled(resource.asObjectable(), resourceObjectTypeDefinitionType)) { - return true; - } - - return false; + return ResourceTypeUtil.isPasswordCapabilityEnabled(resource.asObjectable(), resourceObjectTypeDefinitionType); } - public static boolean isAssociationSupported(ShadowType shadowType) { ObjectReferenceType resourceRef = shadowType.getResourceRef(); if (resourceRef == null) { @@ -2858,7 +2837,7 @@ public static boolean isAssociationSupported(ShadowType shadowType) { return CollectionUtils.isNotEmpty(ocd.getAssociationDefinitions()); } - public static void toggleResourceMaintenance (@NotNull PrismObject resource, String operation, AjaxRequestTarget target, PageBase pageBase) { + public static void toggleResourceMaintenance(@NotNull PrismObject resource, String operation, AjaxRequestTarget target, PageBase pageBase) { AdministrativeAvailabilityStatusType resourceAdministrativeAvailabilityStatus = ResourceTypeUtil.getAdministrativeAvailabilityStatus(resource.asObjectable()); AdministrativeAvailabilityStatusType finalStatus = AdministrativeAvailabilityStatusType.MAINTENANCE; // default new value for existing null @@ -2873,10 +2852,10 @@ public static void toggleResourceMaintenance (@NotNull PrismObject } } - switchResourceMaintenance (resource, operation, target, pageBase, finalStatus); + switchResourceMaintenance(resource, operation, target, pageBase, finalStatus); } - public static void switchResourceMaintenance (@NotNull PrismObject resource, String operation, AjaxRequestTarget target, PageBase pageBase, AdministrativeAvailabilityStatusType mode) { + public static void switchResourceMaintenance(@NotNull PrismObject resource, String operation, AjaxRequestTarget target, PageBase pageBase, AdministrativeAvailabilityStatusType mode) { Task task = pageBase.createSimpleTask(operation); OperationResult parentResult = new OperationResult(operation); @@ -2887,7 +2866,7 @@ public static void switchResourceMaintenance (@NotNull PrismObject pageBase.getModelService().executeChanges(MiscUtil.createCollection(objectDelta), null, task, parentResult); - } catch (ObjectAlreadyExistsException | ObjectNotFoundException | SchemaException + } catch (ObjectAlreadyExistsException | ObjectNotFoundException | SchemaException | ExpressionEvaluationException | CommunicationException | ConfigurationException | PolicyViolationException | SecurityViolationException e) { LoggingUtils.logUnexpectedException(LOGGER, "Error changing resource administrative operational state", e); @@ -2899,7 +2878,7 @@ public static void switchResourceMaintenance (@NotNull PrismObject target.add(pageBase.getFeedbackPanel()); } - public static void refreshResourceSchema(@NotNull PrismObject resource, String operation, AjaxRequestTarget target, PageBase pageBase){ + public static void refreshResourceSchema(@NotNull PrismObject resource, String operation, AjaxRequestTarget target, PageBase pageBase) { Task task = pageBase.createSimpleTask(operation); OperationResult parentResult = new OperationResult(operation); @@ -2918,7 +2897,7 @@ public static void refreshResourceSchema(@NotNull PrismObject reso target.add(pageBase.getFeedbackPanel()); } - public static List getCategoryRelationChoices(AreaCategoryType category, ModelServiceLocator pageBase){ + public static List getCategoryRelationChoices(AreaCategoryType category, ModelServiceLocator pageBase) { List relationsList = new ArrayList<>(); List defList = getRelationDefinitions(pageBase); defList.forEach(def -> { @@ -2946,7 +2925,7 @@ public static RelationDefinitionType getRelationDefinition(QName relation) { } public static List prepareAutoCompleteList(LookupTableType lookupTable, String input, - LocalizationService localizationService){ + LocalizationService localizationService) { List values = new ArrayList<>(); if (lookupTable == null) { @@ -2979,12 +2958,12 @@ public static List prepareAutoCompleteList(LookupTableType lookupTable, return values; } - private static PolyString setTranslateToPolystring(LookupTableRowType row){ + private static PolyString setTranslateToPolystring(LookupTableRowType row) { PolyString polystring = row.getLabel().toPolyString(); return setTranslateToPolystring(polystring); } - private static PolyString setTranslateToPolystring(PolyString polystring){ + private static PolyString setTranslateToPolystring(PolyString polystring) { if (org.apache.commons.lang3.StringUtils.isNotBlank(polystring.getOrig())) { if (polystring.getTranslation() == null) { PolyStringTranslationType translation = new PolyStringTranslationType(); @@ -3075,16 +3054,16 @@ private static IModel> createChoices() { }; } - public static Class getPreviousPageClass(PageBase parentPage){ + public static Class getPreviousPageClass(PageBase parentPage) { List breadcrumbs = parentPage.getBreadcrumbs(); - if (breadcrumbs == null || breadcrumbs.size() < 2){ + if (breadcrumbs == null || breadcrumbs.size() < 2) { return null; } Breadcrumb previousBreadcrumb = breadcrumbs.get(breadcrumbs.size() - 2); Class page = null; - if (previousBreadcrumb instanceof BreadcrumbPageClass){ + if (previousBreadcrumb instanceof BreadcrumbPageClass) { page = ((BreadcrumbPageClass) previousBreadcrumb).getPage(); - } else if (previousBreadcrumb instanceof BreadcrumbPageInstance){ + } else if (previousBreadcrumb instanceof BreadcrumbPageInstance) { page = ((BreadcrumbPageInstance) previousBreadcrumb).getPage().getClass(); } return page; @@ -3169,13 +3148,13 @@ public static RelationRegistry getStaticallyProvidedRelationRegistry() { } public static ObjectFilter getAssignableRolesFilter(PrismObject focusObject, Class type, AssignmentOrder assignmentOrder, - OperationResult result, Task task, PageBase pageBase) { + OperationResult result, Task task, PageBase pageBase) { return getAssignableRolesFilter(focusObject, type, null, assignmentOrder, result, task, pageBase); } public static ObjectFilter getAssignableRolesFilter(PrismObject focusObject, Class type, - QName relation, AssignmentOrder assignmentOrder, - OperationResult result, Task task, PageBase pageBase) { + QName relation, AssignmentOrder assignmentOrder, + OperationResult result, Task task, PageBase pageBase) { ObjectFilter filter = null; LOGGER.debug("Loading objects which can be assigned"); try { @@ -3183,11 +3162,11 @@ public static ObjectFilter getAssignableRolesFilter(PrismObject getAssignableRelationsList(PrismObject focusObject, Class type, - AssignmentOrder assignmentOrder, - OperationResult result, Task task, PageBase pageBase){ + AssignmentOrder assignmentOrder, + OperationResult result, Task task, PageBase pageBase) { List relationsList = null; LOGGER.debug("Loading assignable relations list"); try { @@ -3243,7 +3222,7 @@ public static List getAssignableRelationsList(PrismObject loadResourceObjectClassValues(ResourceType resource, PageBase pageBase){ + public static List loadResourceObjectClassValues(ResourceType resource, PageBase pageBase) { try { ResourceSchema schema = RefinedResourceSchemaImpl.getResourceSchema(resource, pageBase.getPrismContext()); if (schema != null) { return schema.getObjectClassList(); } - } catch (SchemaException|RuntimeException e){ + } catch (SchemaException | RuntimeException e) { LoggingUtils.logUnexpectedException(LOGGER, "Couldn't load object class list from resource.", e); pageBase.error("Couldn't load object class list from resource."); } return new ArrayList<>(); } - public static List getRefinedAssociationDefinition(ResourceType resource, ShadowKindType kind, String intent){ + public static List getRefinedAssociationDefinition(ResourceType resource, ShadowKindType kind, String intent) { List associationDefinitions = new ArrayList<>(); try { @@ -3331,7 +3310,7 @@ public static List getRefinedAssociationDefinition } public static String getAssociationDisplayName(RefinedAssociationDefinition assocDef) { - if (assocDef == null){ + if (assocDef == null) { return ""; } StringBuilder sb = new StringBuilder(); @@ -3353,7 +3332,7 @@ public static ExpressionType getAssociationExpression(PrismContainerValueWrapper @Deprecated public static ExpressionType getAssociationExpression(PrismContainerValueWrapper assignmentValueWrapper, boolean createIfNotExist, PrismContext prismContext, PageBase pageBase) { - if (assignmentValueWrapper == null){ + if (assignmentValueWrapper == null) { return null; } if (createIfNotExist && prismContext == null) { @@ -3369,11 +3348,11 @@ public static ExpressionType getAssociationExpression(PrismContainerValueWrapper return null; } - if (association == null || association.getValues() == null || association.getValues().size() == 0){ + if (association == null || association.getValues() == null || association.getValues().size() == 0) { return null; } //FIXME HACK not to add empty association value - if (ContainerStatus.ADDING.equals(association.getStatus())){ + if (ContainerStatus.ADDING.equals(association.getStatus())) { association.getItem().clear(); } PrismContainerValueWrapper associationValueWrapper = association.getValues().get(0); @@ -3386,11 +3365,11 @@ public static ExpressionType getAssociationExpression(PrismContainerValueWrapper return null; } - if (expressionWrapper == null){ + if (expressionWrapper == null) { return null; } List> expressionValues = expressionWrapper.getValues(); - if (expressionValues == null || expressionValues.size() == 0){ + if (expressionValues == null || expressionValues.size() == 0) { return null; } try { @@ -3413,7 +3392,7 @@ public static ExpressionType getAssociationExpression(PrismContainerValueWrapper return expressionValues.get(0).getRealValue(); } - public static PrismObject getConstructionResource(ConstructionType construction, String operation, PageBase pageBase){ + public static PrismObject getConstructionResource(ConstructionType construction, String operation, PageBase pageBase) { ObjectReferenceType resourceRef = construction.getResourceRef(); if (resourceRef.asReferenceValue().getObject() != null) { return resourceRef.asReferenceValue().getObject(); @@ -3423,8 +3402,8 @@ public static PrismObject getConstructionResource(ConstructionType return WebModelServiceUtils.resolveReferenceNoFetch(resourceRef, pageBase, task, result); } - public static ArchetypePolicyType getArchetypeSpecification(PrismObject object, ModelServiceLocator locator){ - if (object == null){ + public static ArchetypePolicyType getArchetypeSpecification(PrismObject object, ModelServiceLocator locator) { + if (object == null) { return null; } @@ -3440,29 +3419,29 @@ public static ArchetypePolicyType getArchetypeSpecificati } else { spec = locator.getModelInteractionService().determineArchetypePolicy((PrismObject) object, result); } - } catch (SchemaException | ConfigurationException ex){ + } catch (SchemaException | ConfigurationException ex) { result.recordPartialError(ex.getLocalizedMessage()); LOGGER.error("Cannot load ArchetypeInteractionSpecification for object {}: {}", object, ex.getLocalizedMessage()); } return spec; } - public static String getIconCssClass(DisplayType displayType){ - if (displayType == null || displayType.getIcon() == null){ + public static String getIconCssClass(DisplayType displayType) { + if (displayType == null || displayType.getIcon() == null) { return ""; } return displayType.getIcon().getCssClass(); } - public static String getIconColor(DisplayType displayType){ - if (displayType == null || displayType.getIcon() == null){ + public static String getIconColor(DisplayType displayType) { + if (displayType == null || displayType.getIcon() == null) { return ""; } return displayType.getIcon().getColor(); } - public static String getDisplayTypeTitle(DisplayType displayType){ - if (displayType == null || displayType.getTooltip() == null){ + public static String getDisplayTypeTitle(DisplayType displayType) { + if (displayType == null || displayType.getTooltip() == null) { return ""; } return displayType.getTooltip().getOrig(); @@ -3476,13 +3455,13 @@ public static DisplayType getDisplayTypeForObject(PrismOb return getDisplayTypeForObject(obj.asObjectable(), result, pageBase); } - public static DisplayType getDisplayTypeForObject(O obj, OperationResult result, PageBase pageBase){ - if (obj == null){ + public static DisplayType getDisplayTypeForObject(O obj, OperationResult result, PageBase pageBase) { + if (obj == null) { return null; } DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType(obj, pageBase); - if (displayType == null){ + if (displayType == null) { displayType = WebComponentUtil.createDisplayType(createDefaultIcon(obj.asPrismObject()), "", ColumnUtils.getIconColumnTitle(obj, result)); } @@ -3490,14 +3469,14 @@ public static DisplayType getDisplayTypeForObject(O obj, } //TODO unify createAccountIcon with createCompositeIconForObject - public static CompositedIcon createCompositeIconForObject(O obj, OperationResult result, PageBase pageBase){ + public static CompositedIcon createCompositeIconForObject(O obj, OperationResult result, PageBase pageBase) { if (obj instanceof ShadowType) { return createAccountIcon((ShadowType) obj, pageBase); } DisplayType basicIconDisplayType = getDisplayTypeForObject(obj, result, pageBase); CompositedIconBuilder iconBuilder = new CompositedIconBuilder(); - if (basicIconDisplayType == null){ + if (basicIconDisplayType == null) { return new CompositedIconBuilder().build(); } //TODO trigger @@ -3516,7 +3495,7 @@ public static CompositedIcon createCompositeIconForObject StringBuilder title = new StringBuilder(getOrigStringFromPolyOrEmpty(basicIconDisplayType.getTooltip())); appendLifecycleState(title, lifecycleStateIcon, obj, pageBase); appendActivationStatus(title, activationStatusIcon, obj, pageBase); - if (StringUtils.isNotEmpty(title.toString())){ + if (StringUtils.isNotEmpty(title.toString())) { builder.setTitle(title.toString()); } return builder.build(); @@ -3527,7 +3506,7 @@ public static CompositedIcon createAccountIcon(ShadowType shadow, PageBase pageB String iconCssClass = WebComponentUtil.createShadowIcon(shadow.asPrismObject()); CompositedIconBuilder builder = new CompositedIconBuilder(); String title = createTriggerTooltip(triggerType, pageBase); - if(StringUtils.isNotBlank(title)) { + if (StringUtils.isNotBlank(title)) { IconType icon = new IconType(); icon.setCssClass("fa fa-clock-o " + GuiStyleConstants.BLUE_COLOR); builder.appendLayerIcon(icon, IconCssStyle.TOP_RIGHT_FOR_COLUMN_STYLE); @@ -3552,7 +3531,7 @@ public static CompositedIcon createAccountIcon(ShadowType shadow, PageBase pageB } LockoutStatusType lockoutStatus = activation.getLockoutStatus(); XMLGregorianCalendar lockoutExpirationTimestamp = activation.getLockoutExpirationTimestamp(); - if((lockoutStatus != null && LockoutStatusType.LOCKED == lockoutStatus) + if ((lockoutStatus != null && LockoutStatusType.LOCKED == lockoutStatus) || (lockoutExpirationTimestamp != null && pageBase.getClock().isPast((lockoutExpirationTimestamp)))) { IconType icon = new IconType(); icon.setCssClass("fa fa-lock " + GuiStyleConstants.RED_COLOR); @@ -3562,11 +3541,10 @@ public static CompositedIcon createAccountIcon(ShadowType shadow, PageBase pageB return builder.build(); } - ActivationStatusType value = activation.getAdministrativeStatus(); - builder.setTitle(pageBase.createStringResource("ActivationStatusType." +value).getString() + builder.setTitle(pageBase.createStringResource("ActivationStatusType." + value).getString() + (StringUtils.isNotBlank(title) ? ("\n" + title) : "")); - if(value == null) { + if (value == null) { appendUndefinedIcon(builder); return builder.build(); } @@ -3584,7 +3562,7 @@ public static CompositedIcon createAccountIcon(ShadowType shadow, PageBase pageB } private static void appendUndefinedIcon(CompositedIconBuilder builder) { - appendIcon(builder,"fa fa-question " + GuiStyleConstants.RED_COLOR, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); + appendIcon(builder, "fa fa-question " + GuiStyleConstants.RED_COLOR, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); } @@ -3618,7 +3596,7 @@ private static void appendLifecycleState(StringBuilder ti return; } - if (title.length() > 0){ + if (title.length() > 0) { title.append("\n"); } title.append(pageBase.createStringResource("ObjectType.lifecycleState.title", obj.getLifecycleState()).getString()); @@ -3630,7 +3608,7 @@ private static void appendActivationStatus(StringBuilder return; } - if (title.length() > 0){ + if (title.length() > 0) { title.append("\n"); } String lockedStatus = LockoutStatusType.LOCKED == activation.getLockoutStatus() ? activation.getLockoutStatus().value() : ""; @@ -3654,9 +3632,9 @@ private static ActivationType getActivation(O obj) { } - public static IconType getIconForLifecycleState(O obj){ + public static IconType getIconForLifecycleState(O obj) { IconType icon = new IconType(); - if (obj == null){ + if (obj == null) { icon.setCssClass(""); return icon; } @@ -3675,40 +3653,40 @@ public static IconType getIconForLifecycleState(O obj){ } } - if (icon.getCssClass() == null){ + if (icon.getCssClass() == null) { icon.setCssClass(""); } icon.setColor("blue"); return icon; } - public static IconType getIconForActivationStatus(O obj){ + public static IconType getIconForActivationStatus(O obj) { IconType icon = new IconType(); - if (obj == null || !(obj instanceof FocusType) || ((FocusType) obj).getActivation() == null){ + if (obj == null || !(obj instanceof FocusType) || ((FocusType) obj).getActivation() == null) { icon.setCssClass(""); return icon; } - if (LockoutStatusType.LOCKED.equals(((FocusType) obj).getActivation().getLockoutStatus())){ + if (LockoutStatusType.LOCKED.equals(((FocusType) obj).getActivation().getLockoutStatus())) { icon.setCssClass(GuiStyleConstants.CLASS_LOCK_STATUS); - } else if (ActivationStatusType.DISABLED.equals(((FocusType) obj).getActivation().getEffectiveStatus())){ + } else if (ActivationStatusType.DISABLED.equals(((FocusType) obj).getActivation().getEffectiveStatus())) { icon.setCssClass(GuiStyleConstants.CLASS_BAN); - } else if (ActivationStatusType.ARCHIVED.equals(((FocusType) obj).getActivation().getEffectiveStatus())){ + } else if (ActivationStatusType.ARCHIVED.equals(((FocusType) obj).getActivation().getEffectiveStatus())) { icon.setCssClass(GuiStyleConstants.CLASS_ICON_NO_OBJECTS); - } else if (!ActivationStatusType.ENABLED.equals(((FocusType) obj).getActivation().getEffectiveStatus())){ + } else if (!ActivationStatusType.ENABLED.equals(((FocusType) obj).getActivation().getEffectiveStatus())) { icon.setCssClass(GuiStyleConstants.CLASS_TEST_CONNECTION_MENU_ITEM); } - if (icon.getCssClass() == null){ + if (icon.getCssClass() == null) { icon.setCssClass(""); } icon.setColor("red"); return icon; } - public static DisplayType createDisplayType(String iconCssClass){ + public static DisplayType createDisplayType(String iconCssClass) { return createDisplayType(iconCssClass, "", ""); } - public static DisplayType createDisplayType(String iconCssClass, String iconColor, String title){ + public static DisplayType createDisplayType(String iconCssClass, String iconColor, String title) { DisplayType displayType = new DisplayType(); IconType icon = new IconType(); icon.setCssClass(iconCssClass); @@ -3719,7 +3697,7 @@ public static DisplayType createDisplayType(String iconCssClass, String iconColo return displayType; } - public static DisplayType createDisplayType(String iconCssClass, PolyStringType title){ + public static DisplayType createDisplayType(String iconCssClass, PolyStringType title) { DisplayType displayType = new DisplayType(); IconType icon = new IconType(); icon.setCssClass(iconCssClass); @@ -3729,23 +3707,22 @@ public static DisplayType createDisplayType(String iconCssClass, PolyStringType return displayType; } - public static IconType createIconType(String iconStyle){ + public static IconType createIconType(String iconStyle) { return createIconType(iconStyle, ""); } - public static IconType createIconType(String iconStyle, String color){ + public static IconType createIconType(String iconStyle, String color) { IconType icon = new IconType(); icon.setCssClass(iconStyle); icon.setColor(color); return icon; } - public static CompositedIconBuilder getAssignmentRelationIconBuilder(PageBase pageBase, AssignmentObjectRelation relationSpec, - IconType relationIcon, IconType actionButtonIcon){ + IconType relationIcon, IconType actionButtonIcon) { CompositedIconBuilder builder = new CompositedIconBuilder(); - if (relationSpec == null){ - if (actionButtonIcon == null){ + if (relationSpec == null) { + if (actionButtonIcon == null) { return null; } builder.setBasicIcon(actionButtonIcon, IconCssStyle.IN_ROW_STYLE) @@ -3753,27 +3730,27 @@ public static CompositedIconBuilder getAssignmentRelationIconBuilder(PageBase pa return builder; } DisplayType objectTypeDisplay = null; - if (CollectionUtils.isNotEmpty(relationSpec.getArchetypeRefs())){ + if (CollectionUtils.isNotEmpty(relationSpec.getArchetypeRefs())) { try { String operation = pageBase.getClass().getSimpleName() + "." + "loadArchetypeObject"; ArchetypeType archetype = pageBase.getModelObjectResolver().resolve(relationSpec.getArchetypeRefs().get(0), ArchetypeType.class, null, null, pageBase.createSimpleTask(operation), new OperationResult(operation)); - if (archetype != null && archetype.getArchetypePolicy() != null){ + if (archetype != null && archetype.getArchetypePolicy() != null) { objectTypeDisplay = archetype.getArchetypePolicy().getDisplay(); } - } catch (Exception ex){ + } catch (Exception ex) { LOGGER.error("Couldn't load archetype object, " + ex.getLocalizedMessage()); } } - if (objectTypeDisplay == null){ + if (objectTypeDisplay == null) { objectTypeDisplay = new DisplayType(); } - if (objectTypeDisplay.getIcon() == null){ + if (objectTypeDisplay.getIcon() == null) { objectTypeDisplay.setIcon(new IconType()); } QName objectType = org.apache.commons.collections.CollectionUtils.isNotEmpty(relationSpec.getObjectTypes()) ? relationSpec.getObjectTypes().get(0) : null; - if (StringUtils.isEmpty(WebComponentUtil.getIconCssClass(objectTypeDisplay)) && objectType != null){ + if (StringUtils.isEmpty(WebComponentUtil.getIconCssClass(objectTypeDisplay)) && objectType != null) { objectTypeDisplay.getIcon().setCssClass(WebComponentUtil.createDefaultBlackIcon(objectType)); } if (StringUtils.isNotEmpty(WebComponentUtil.getIconCssClass(objectTypeDisplay))) { @@ -3788,7 +3765,6 @@ public static CompositedIconBuilder getAssignmentRelationIconBuilder(PageBase pa return builder; } - public static DisplayType getArchetypePolicyDisplayType(O object, PageBase pageBase) { if (object != null) { ArchetypePolicyType archetypePolicy = WebComponentUtil.getArchetypeSpecification(object.asPrismObject(), pageBase); @@ -3799,8 +3775,8 @@ public static DisplayType getArchetypePolicyDisplayType(O return null; } - public static IModel getIconUrlModel(IconType icon){ - if (icon == null || StringUtils.isEmpty(icon.getImageUrl())){ + public static IModel getIconUrlModel(IconType icon) { + if (icon == null || StringUtils.isEmpty(icon.getImageUrl())) { return Model.of(); } String sUrl = icon.getImageUrl(); @@ -3821,7 +3797,7 @@ public static IModel getIconUrlModel(IconType icon){ return Model.of(StringUtils.left(prefix, prefix.length() - 1) + sUrl); } - public static void deleteSyncTokenPerformed(AjaxRequestTarget target, ResourceType resourceType, PageBase pageBase){ + public static void deleteSyncTokenPerformed(AjaxRequestTarget target, ResourceType resourceType, PageBase pageBase) { String resourceOid = resourceType.getOid(); String handlerUri = "http://midpoint.evolveum.com/xml/ns/public/model/synchronization/task/live-sync/handler-3"; ObjectReferenceType resourceRef = new ObjectReferenceType(); @@ -3853,20 +3829,20 @@ public static void deleteSyncTokenPerformed(AjaxRequestTarget target, ResourceTy * in the list will contain not more than 1 relation. This will simplify creating of a new_assignment_button * on some panels * - * @param initialRelationsList + * @param initialRelationsList * @return */ - public static List divideAssignmentRelationsByRelationValue(List initialRelationsList){ - if (org.apache.commons.collections.CollectionUtils.isEmpty(initialRelationsList)){ + public static List divideAssignmentRelationsByRelationValue(List initialRelationsList) { + if (org.apache.commons.collections.CollectionUtils.isEmpty(initialRelationsList)) { return initialRelationsList; } - List combinedRelationList = new ArrayList<>(); + List combinedRelationList = new ArrayList<>(); initialRelationsList.forEach(assignmentTargetRelation -> { if (org.apache.commons.collections.CollectionUtils.isEmpty(assignmentTargetRelation.getObjectTypes()) && - org.apache.commons.collections.CollectionUtils.isEmpty(assignmentTargetRelation.getRelations())){ + org.apache.commons.collections.CollectionUtils.isEmpty(assignmentTargetRelation.getRelations())) { return; } - if (org.apache.commons.collections.CollectionUtils.isEmpty(assignmentTargetRelation.getRelations())){ + if (org.apache.commons.collections.CollectionUtils.isEmpty(assignmentTargetRelation.getRelations())) { combinedRelationList.add(assignmentTargetRelation); } else { assignmentTargetRelation.getRelations().forEach(relation -> { @@ -3890,16 +3866,16 @@ public static List divideAssignmentRelationsByRelation * @param initialAssignmentRelationsList * @return */ - public static List divideAssignmentRelationsByAllValues(List initialAssignmentRelationsList){ - if (initialAssignmentRelationsList == null){ + public static List divideAssignmentRelationsByAllValues(List initialAssignmentRelationsList) { + if (initialAssignmentRelationsList == null) { return null; } List dividedByRelationList = divideAssignmentRelationsByRelationValue(initialAssignmentRelationsList); List resultList = new ArrayList<>(); dividedByRelationList.forEach(assignmentObjectRelation -> { - if (CollectionUtils.isNotEmpty(assignmentObjectRelation.getObjectTypes())){ + if (CollectionUtils.isNotEmpty(assignmentObjectRelation.getObjectTypes())) { assignmentObjectRelation.getObjectTypes().forEach(objectType -> { - if (CollectionUtils.isNotEmpty(assignmentObjectRelation.getArchetypeRefs())){ + if (CollectionUtils.isNotEmpty(assignmentObjectRelation.getArchetypeRefs())) { assignmentObjectRelation.getArchetypeRefs().forEach(archetypeRef -> { AssignmentObjectRelation newRelation = new AssignmentObjectRelation(); newRelation.setObjectTypes(Arrays.asList(objectType)); @@ -3918,7 +3894,7 @@ public static List divideAssignmentRelationsByAllValue } }); } else { - if (CollectionUtils.isNotEmpty(assignmentObjectRelation.getArchetypeRefs())){ + if (CollectionUtils.isNotEmpty(assignmentObjectRelation.getArchetypeRefs())) { assignmentObjectRelation.getArchetypeRefs().forEach(archetypeRef -> { AssignmentObjectRelation newRelation = new AssignmentObjectRelation(); newRelation.setObjectTypes(assignmentObjectRelation.getObjectTypes()); @@ -3941,13 +3917,13 @@ public static List divideAssignmentRelationsByAllValue } public static DisplayType getAssignmentObjectRelationDisplayType(PageBase pageBase, AssignmentObjectRelation assignmentTargetRelation, - String defaultTitleKey){ - if (assignmentTargetRelation == null){ + String defaultTitleKey) { + if (assignmentTargetRelation == null) { return createDisplayType("", "", pageBase.createStringResource(defaultTitleKey, "", "").getString()); } String typeTitle = ""; - if (CollectionUtils.isNotEmpty(assignmentTargetRelation.getArchetypeRefs())){ + if (CollectionUtils.isNotEmpty(assignmentTargetRelation.getArchetypeRefs())) { OperationResult result = new OperationResult(pageBase.getClass().getSimpleName() + "." + "loadArchetypeObject"); try { ArchetypeType archetype = pageBase.getModelObjectResolver().resolve(assignmentTargetRelation.getArchetypeRefs().get(0), ArchetypeType.class, @@ -3958,14 +3934,14 @@ public static DisplayType getAssignmentObjectRelationDisplayType(PageBase pageBa StringUtils.isNotEmpty(archetypeDisplayType.getLabel().getOrig()) ? archetypeDisplayType.getLabel().getOrig() : (archetype.getName() != null && StringUtils.isNotEmpty(archetype.getName().getOrig()) ? - archetype.getName().getOrig() : null); + archetype.getName().getOrig() : null); typeTitle = StringUtils.isNotEmpty(archetypeTooltip) ? pageBase.createStringResource("abstractRoleMemberPanel.withType", archetypeTooltip).getString() : ""; } - } catch (Exception ex){ + } catch (Exception ex) { LOGGER.error("Couldn't load archetype object. " + ex.getLocalizedMessage()); } - } else if (CollectionUtils.isNotEmpty(assignmentTargetRelation.getObjectTypes())){ + } else if (CollectionUtils.isNotEmpty(assignmentTargetRelation.getObjectTypes())) { QName type = !CollectionUtils.isEmpty(assignmentTargetRelation.getObjectTypes()) ? assignmentTargetRelation.getObjectTypes().get(0) : null; String typeName = type != null ? pageBase.createStringResource("ObjectTypeLowercase." + type.getLocalPart()).getString() : null; @@ -3973,40 +3949,38 @@ public static DisplayType getAssignmentObjectRelationDisplayType(PageBase pageBa pageBase.createStringResource("abstractRoleMemberPanel.withType", typeName).getString() : ""; } - QName relation = !CollectionUtils.isEmpty(assignmentTargetRelation.getRelations()) ? assignmentTargetRelation.getRelations().get(0) : null; String relationValue = ""; String relationTitle = ""; - if (relation != null){ + if (relation != null) { RelationDefinitionType def = WebComponentUtil.getRelationDefinition(relation); - if (def != null){ + if (def != null) { DisplayType displayType = null; - if (def.getDisplay() == null){ + if (def.getDisplay() == null) { displayType = new DisplayType(); } else { displayType = createDisplayType(def.getDisplay().getCssClass()); - if (def.getDisplay().getIcon() != null){ + if (def.getDisplay().getIcon() != null) { displayType.setIcon(new IconType()); displayType.getIcon().setCssClass(def.getDisplay().getIcon().getCssClass()); displayType.getIcon().setColor(def.getDisplay().getIcon().getColor()); } } - if (displayType.getLabel() != null && StringUtils.isNotEmpty(displayType.getLabel().getOrig())){ + if (displayType.getLabel() != null && StringUtils.isNotEmpty(displayType.getLabel().getOrig())) { relationValue = pageBase.createStringResource(displayType.getLabel().getOrig()).getString(); } else { String relationKey = "RelationTypes." + RelationTypes.getRelationTypeByRelationValue(relation); relationValue = pageBase.createStringResource(relationValue).getString(); - if (StringUtils.isEmpty(relationValue) || relationKey.equals(relationValue)){ + if (StringUtils.isEmpty(relationValue) || relationKey.equals(relationValue)) { relationValue = relation.getLocalPart(); } } relationTitle = pageBase.createStringResource("abstractRoleMemberPanel.withRelation", relationValue).getString(); - - if (displayType.getIcon() == null || StringUtils.isEmpty(displayType.getIcon().getCssClass())){ + if (displayType.getIcon() == null || StringUtils.isEmpty(displayType.getIcon().getCssClass())) { displayType.setIcon(createIconType("")); } displayType.setTooltip(createPolyFromOrigString(pageBase.createStringResource(defaultTitleKey, typeTitle, relationTitle).getString())); @@ -4016,12 +3990,12 @@ public static DisplayType getAssignmentObjectRelationDisplayType(PageBase pageBa return createDisplayType(GuiStyleConstants.EVO_ASSIGNMENT_ICON, "green", pageBase.createStringResource(defaultTitleKey, typeTitle, relationTitle).getString()); } - public static void saveTask(PrismObject oldTask, OperationResult result, PageBase pageBase){ + public static void saveTask(PrismObject oldTask, OperationResult result, PageBase pageBase) { Task task = pageBase.createSimpleTask(pageBase.getClass().getName() + "." + "saveSyncTask"); PrismProperty property = oldTask.findProperty(ItemPath.create(TaskType.F_EXTENSION, SchemaConstants.SYNC_TOKEN)); - if(property == null){ + if (property == null) { return; } Object value = property.getRealValue(); @@ -4031,13 +4005,13 @@ public static void saveTask(PrismObject oldTask, OperationResult resul .createModificationDeleteProperty(ItemPath.create(TaskType.F_EXTENSION, SchemaConstants.SYNC_TOKEN), property.getDefinition(), value), TaskType.class); - if(LOGGER.isTraceEnabled()){ + if (LOGGER.isTraceEnabled()) { LOGGER.trace(delta.debugDump()); } try { pageBase.getModelService().executeChanges(MiscUtil.createCollection(delta), null, task, result); - } catch (Exception e){ + } catch (Exception e) { LoggingUtils.logUnexpectedException(LOGGER, "Couldn't save task.", e); result.recordFatalError(pageBase.createStringResource("WebModelUtils.couldntSaveTask").getString(), e); } @@ -4046,39 +4020,39 @@ public static void saveTask(PrismObject oldTask, OperationResult resul // TODO: use LocalizationService.translate(polyString) instead @Deprecated - public static String getLocalizedOrOriginPolyStringValue(PolyString polyString){ + public static String getLocalizedOrOriginPolyStringValue(PolyString polyString) { String value = getLocalizedPolyStringValue(setTranslateToPolystring(polyString)); - if(value == null) { + if (value == null) { return getOrigStringFromPoly(polyString); } return value; } @Deprecated - private static String getLocalizedPolyStringValue(PolyString polyString){ - if (polyString == null){ + private static String getLocalizedPolyStringValue(PolyString polyString) { + if (polyString == null) { return null; } if ((polyString.getTranslation() == null || StringUtils.isEmpty(polyString.getTranslation().getKey())) && - (polyString.getLang() == null || polyString.getLang().isEmpty())){ + (polyString.getLang() == null || polyString.getLang().isEmpty())) { return null; } - if (polyString.getLang() != null && !polyString.getLang().isEmpty()){ + if (polyString.getLang() != null && !polyString.getLang().isEmpty()) { //check if it's really selected by user or configured through sysconfig locale String currentLocale = getCurrentLocale().getLanguage(); - for (String language : polyString.getLang().keySet()){ - if (currentLocale.equals(language)){ + for (String language : polyString.getLang().keySet()) { + if (currentLocale.equals(language)) { return polyString.getLang().get(language); } } } - if (polyString.getTranslation() != null && StringUtils.isNotEmpty(polyString.getTranslation().getKey())){ + if (polyString.getTranslation() != null && StringUtils.isNotEmpty(polyString.getTranslation().getKey())) { List argumentValues = new ArrayList<>(); polyString.getTranslation().getArgument().forEach(argument -> { String argumentValue = ""; String translationValue = ""; - if (argument.getTranslation() != null){ + if (argument.getTranslation() != null) { String argumentKey = argument.getTranslation().getKey(); String valueByKey = StringUtils.isNotEmpty(argumentKey) ? new StringResourceModel(argumentKey).getString() : null; translationValue = StringUtils.isNotEmpty(valueByKey) ? valueByKey : argument.getTranslation().getFallback(); @@ -4095,19 +4069,18 @@ private static String getLocalizedPolyStringValue(PolyString polyString){ return null; } - public static List sortDropDownChoices(IModel> choicesModel, IChoiceRenderer renderer){ + public static List sortDropDownChoices(IModel> choicesModel, IChoiceRenderer renderer) { List sortedList = choicesModel.getObject().stream().sorted((choice1, choice2) -> { - if (choice1 == null || choice2 == null){ + if (choice1 == null || choice2 == null) { return 0; } return String.CASE_INSENSITIVE_ORDER.compare(renderer.getDisplayValue(choice1).toString(), renderer.getDisplayValue(choice2).toString()); - }).collect(Collectors.toList()); return sortedList; } - public static IChoiceRenderer getRelationChoicesRenderer(PageBase pageBase){ + public static IChoiceRenderer getRelationChoicesRenderer(PageBase pageBase) { return new IChoiceRenderer() { private static final long serialVersionUID = 1L; @@ -4117,17 +4090,17 @@ public QName getObject(String id, IModel choices) { if (StringUtils.isBlank(id)) { return null; } - return ((List)choices.getObject()).get(Integer.parseInt(id)); + return ((List) choices.getObject()).get(Integer.parseInt(id)); } @Override public Object getDisplayValue(QName object) { RelationDefinitionType def = WebComponentUtil.getRelationDefinition(object); - if (def != null){ + if (def != null) { DisplayType display = def.getDisplay(); - if (display != null){ + if (display != null) { PolyStringType label = display.getLabel(); - if (PolyStringUtils.isNotEmpty(label)){ + if (PolyStringUtils.isNotEmpty(label)) { return pageBase.createStringResource(label).getString(); } } @@ -4142,8 +4115,8 @@ public String getIdValue(QName object, int index) { }; } - public static SceneDto createSceneDto(CaseWorkItemType caseWorkItem, PageBase pageBase, String operation){ - if (caseWorkItem == null){ + public static SceneDto createSceneDto(CaseWorkItemType caseWorkItem, PageBase pageBase, String operation) { + if (caseWorkItem == null) { return null; } return createSceneDto(CaseTypeUtil.getCase(caseWorkItem), pageBase, operation); @@ -4165,7 +4138,7 @@ public static List computeTriggers(ApprovalContextType return triggers; } - public static SceneDto createSceneDto(CaseType caseObject, PageBase pageBase, String operation){ + public static SceneDto createSceneDto(CaseType caseObject, PageBase pageBase, String operation) { if (caseObject == null || caseObject.getApprovalContext() == null) { return null; } @@ -4178,13 +4151,13 @@ public static SceneDto createSceneDto(CaseType caseObject, PageBase pageBase, St CaseTypeUtil.isClosed(caseObject) ? "pageWorkItem.changesApplied" : "pageWorkItem.delta", pageBase.getPrismContext(), pageBase.getModelInteractionService(), objectRef, task, result); return new SceneDto(deltasScene); - } catch (SchemaException | ExpressionEvaluationException ex){ + } catch (SchemaException | ExpressionEvaluationException ex) { LOGGER.error("Unable to create delta visualization for case {}: {}", caseObject, ex.getLocalizedMessage(), ex); } return null; } - public static SceneDto createSceneDtoForManualCase(CaseType caseObject, PageBase pageBase, String operation){ + public static SceneDto createSceneDtoForManualCase(CaseType caseObject, PageBase pageBase, String operation) { if (caseObject == null || caseObject.getManualProvisioningContext() == null || caseObject.getManualProvisioningContext().getPendingOperation() == null) { return null; @@ -4196,19 +4169,19 @@ public static SceneDto createSceneDtoForManualCase(CaseType caseObject, PageBase Scene deltasScene = SceneUtil.visualizeObjectDeltaType(caseObject.getManualProvisioningContext().getPendingOperation().getDelta(), CaseTypeUtil.isClosed(caseObject) ? "pageWorkItem.changesApplied" : "pageWorkItem.changesToBeApplied", pageBase.getPrismContext(), pageBase.getModelInteractionService(), objectRef, task, result); return new SceneDto(deltasScene); - } catch (SchemaException | ExpressionEvaluationException ex){ + } catch (SchemaException | ExpressionEvaluationException ex) { LOGGER.error("Unable to create delta visualization for case {}: {}", caseObject, ex.getLocalizedMessage(), ex); } return null; } public static void workItemApproveActionPerformed(AjaxRequestTarget target, CaseWorkItemType workItem, AbstractWorkItemOutputType workItemOutput, - Component formPanel, PrismObject powerDonor, boolean approved, OperationResult result, PageBase pageBase) { - if (workItem == null){ + Component formPanel, PrismObject powerDonor, boolean approved, OperationResult result, PageBase pageBase) { + if (workItem == null) { return; } CaseType parentCase = CaseWorkItemUtil.getCase(workItem); - if (CaseTypeUtil.isManualProvisioningCase(parentCase)){ + if (CaseTypeUtil.isManualProvisioningCase(parentCase)) { Task task = pageBase.createSimpleTask(result.getOperation()); try { AbstractWorkItemOutputType output = workItem.getOutput(); @@ -4216,10 +4189,10 @@ public static void workItemApproveActionPerformed(AjaxRequestTarget target, Case output = new AbstractWorkItemOutputType(pageBase.getPrismContext()); } output.setOutcome(ApprovalUtils.toUri(approved)); - if (workItemOutput != null && workItemOutput.getComment() != null){ + if (workItemOutput != null && workItemOutput.getComment() != null) { output.setComment(workItemOutput.getComment()); } - if (workItemOutput != null && workItemOutput.getEvidence() != null){ + if (workItemOutput != null && workItemOutput.getEvidence() != null) { output.setEvidence(workItemOutput.getEvidence()); } WorkItemId workItemId = WorkItemId.create(parentCase.getOid(), workItem.getId()); @@ -4263,7 +4236,7 @@ public static void workItemApproveActionPerformed(AjaxRequestTarget target, Case pageBase.showResult(result); } - public static List createMetadataOrdering(SortParam sortParam, String metadataProperty, PrismContext prismContext){ + public static List createMetadataOrdering(SortParam sortParam, String metadataProperty, PrismContext prismContext) { if (sortParam != null && sortParam.getProperty() != null) { OrderDirection order = sortParam.isAscending() ? OrderDirection.ASCENDING : OrderDirection.DESCENDING; if (sortParam.getProperty().equals(metadataProperty)) { @@ -4275,14 +4248,13 @@ public static List createMetadataOrdering(SortParam sort prismContext.queryFactory().createOrdering( ItemPath.create(new QName(SchemaConstantsGenerated.NS_COMMON, sortParam.getProperty())), order)); - } else { return null; } } public static void claimWorkItemActionPerformed(CaseWorkItemType workItemToClaim, - String operation, AjaxRequestTarget target, PageBase pageBase){ + String operation, AjaxRequestTarget target, PageBase pageBase) { Task task = pageBase.createSimpleTask(operation); OperationResult mainResult = task.getResult(); WorkflowService workflowService = pageBase.getWorkflowService(); @@ -4333,8 +4305,8 @@ public static T runUnderPowerOfAttorneyIfNeeded(CheckedProducer producer, @NotNull public static List computeChangesCategorizationList(ChangesByState changesByState, ObjectReferenceType objectRef, - ModelInteractionService modelInteractionService, PrismContext prismContext, Task opTask, - OperationResult thisOpResult) throws SchemaException, ExpressionEvaluationException { + ModelInteractionService modelInteractionService, PrismContext prismContext, Task opTask, + OperationResult thisOpResult) throws SchemaException, ExpressionEvaluationException { List changes = new ArrayList<>(); if (!changesByState.getApplied().isEmpty()) { changes.add(createTaskChangesDto("TaskDto.changesApplied", "box-solid box-success", changesByState.getApplied(), @@ -4364,7 +4336,7 @@ public static List computeChangesCategorizationList(ChangesByState cha } private static SceneDto createTaskChangesDto(String titleKey, String boxClassOverride, ObjectTreeDeltas deltas, ModelInteractionService modelInteractionService, - PrismContext prismContext, ObjectReferenceType objectRef, Task opTask, OperationResult result) throws SchemaException, ExpressionEvaluationException { + PrismContext prismContext, ObjectReferenceType objectRef, Task opTask, OperationResult result) throws SchemaException, ExpressionEvaluationException { ObjectTreeDeltasType deltasType = ObjectTreeDeltas.toObjectTreeDeltasType(deltas); Scene scene = SceneUtil.visualizeObjectTreeDeltas(deltasType, titleKey, prismContext, modelInteractionService, objectRef, opTask, result); SceneDto sceneDto = new SceneDto(scene); @@ -4372,7 +4344,7 @@ private static SceneDto createTaskChangesDto(String titleKey, String boxClassOve return sceneDto; } - public static String getMidpointCustomSystemName(PageBase pageBase, String defaultSystemNameKey){ + public static String getMidpointCustomSystemName(PageBase pageBase, String defaultSystemNameKey) { DeploymentInformationType deploymentInfo = MidPointApplication.get().getDeploymentInfo(); String subscriptionId = deploymentInfo != null ? deploymentInfo.getSubscriptionIdentifier() : null; if (!isSubscriptionIdCorrect(subscriptionId) || @@ -4383,28 +4355,28 @@ public static String getMidpointCustomSystemName(PageBase pageBase, String defau deploymentInfo.getSystemName() : pageBase.createStringResource(defaultSystemNameKey).getString(); } - public static IModel getResourceLabelModel(ShadowType shadow, PageBase pageBase){ + public static IModel getResourceLabelModel(ShadowType shadow, PageBase pageBase) { return pageBase.createStringResource("DisplayNamePanel.resource", WebComponentUtil.getReferencedObjectDisplayNamesAndNames(shadow.getResourceRef(), false)); } - public static IModel getResourceAttributesLabelModel(ShadowType shadow, PageBase pageBase){ + public static IModel getResourceAttributesLabelModel(ShadowType shadow, PageBase pageBase) { StringBuilder sb = new StringBuilder(); - if(shadow != null) { - if(shadow.getObjectClass() != null && !StringUtils.isBlank(shadow.getObjectClass().getLocalPart())) { + if (shadow != null) { + if (shadow.getObjectClass() != null && !StringUtils.isBlank(shadow.getObjectClass().getLocalPart())) { sb.append(pageBase.createStringResource("DisplayNamePanel.objectClass", shadow.getObjectClass().getLocalPart()).getString()); } - if(shadow.getKind() != null && !StringUtils.isBlank(shadow.getKind().name())) { + if (shadow.getKind() != null && !StringUtils.isBlank(shadow.getKind().name())) { sb.append(", "); sb.append(pageBase.createStringResource("DisplayNamePanel.kind", shadow.getKind().name()).getString()); } - if(!StringUtils.isBlank(shadow.getIntent())) { + if (!StringUtils.isBlank(shadow.getIntent())) { sb.append(", "); sb.append(pageBase.createStringResource("DisplayNamePanel.intent", shadow.getIntent()).getString()); } - if(!StringUtils.isBlank(shadow.getTag())) { + if (!StringUtils.isBlank(shadow.getTag())) { sb.append(", "); sb.append(pageBase.createStringResource("DisplayNamePanel.tag", shadow.getTag()).getString()); } @@ -4414,19 +4386,19 @@ public static IModel getResourceAttributesLabelModel(ShadowType shadow, } public static String getPendingOperationsLabels(ShadowType shadow, BasePanel panel) { - if(shadow == null || shadow.getPendingOperation().isEmpty()) { + if (shadow == null || shadow.getPendingOperation().isEmpty()) { return null; } StringBuilder sb = new StringBuilder(); List operations = shadow.getPendingOperation(); sb.append("\n").append(panel.getString("DisplayNamePanel.pendingOperation")).append(":"); boolean isFirst = true; - for(PendingOperationType operation : operations) { - if(operation != null) { - if(!isFirst) { + for (PendingOperationType operation : operations) { + if (operation != null) { + if (!isFirst) { sb.append(", "); } else { - sb.append(" "); + sb.append(" "); } sb.append(getPendingOperationLabel(operation, panel)); isFirst = false; @@ -4439,20 +4411,20 @@ public static String getPendingOperationLabel(PendingOperationType realValue, Ba StringBuilder sb = new StringBuilder(); boolean empty = true; ObjectDeltaType delta = realValue.getDelta(); - if(delta != null && delta.getChangeType() != null) { + if (delta != null && delta.getChangeType() != null) { sb.append(panel.getString(delta.getChangeType())); empty = false; } PendingOperationTypeType type = realValue.getType(); - if(type != null) { - if(!empty) { + if (type != null) { + if (!empty) { sb.append(" "); } sb.append("(").append(panel.getString(type)).append(")"); } OperationResultStatusType rStatus = realValue.getResultStatus(); PendingOperationExecutionStatusType eStatus = realValue.getExecutionStatus(); - if(!empty) { + if (!empty) { sb.append(" "); } sb.append(panel.getString("PendingOperationType.label.status")).append(": "); @@ -4464,9 +4436,8 @@ public static String getPendingOperationLabel(PendingOperationType realValue, Ba return sb.toString(); } - - public static String getObjectListPageStorageKey(String additionalKeyValue){ - if (StringUtils.isEmpty(additionalKeyValue)){ + public static String getObjectListPageStorageKey(String additionalKeyValue) { + if (StringUtils.isEmpty(additionalKeyValue)) { return SessionStorage.KEY_OBJECT_LIST; } return SessionStorage.KEY_OBJECT_LIST + "." + additionalKeyValue; @@ -4476,9 +4447,9 @@ public static AssignmentHolderType getObjectFromAddDeltyForCase(CaseType aCase) if (aCase != null && aCase.getApprovalContext() != null && aCase.getApprovalContext().getDeltasToApprove() != null) { ObjectTreeDeltasType deltaTree = aCase.getApprovalContext().getDeltasToApprove(); - if(deltaTree != null && deltaTree.getFocusPrimaryDelta() != null) { + if (deltaTree != null && deltaTree.getFocusPrimaryDelta() != null) { ObjectDeltaType primaryDelta = deltaTree.getFocusPrimaryDelta(); - if(primaryDelta != null && (primaryDelta.getItemDelta() == null || primaryDelta.getItemDelta().isEmpty()) + if (primaryDelta != null && (primaryDelta.getItemDelta() == null || primaryDelta.getItemDelta().isEmpty()) && primaryDelta.getObjectToAdd() != null && primaryDelta.getObjectToAdd() instanceof AssignmentHolderType && ChangeType.ADD.equals(ChangeType.toChangeType(primaryDelta.getChangeType()))) { return (AssignmentHolderType) primaryDelta.getObjectToAdd(); @@ -4494,7 +4465,7 @@ public static boolean isRefreshEnabled(PageBase pageBase, QName type) { return false; } - List views = cup.getObjectCollectionViews(); + List views = cup.getObjectCollectionViews(); if (CollectionUtils.isEmpty(views)) { return false; } @@ -4591,7 +4562,6 @@ public static boolean isArchetypeAssignment(AssignmentType assignmentType) { return QNameUtil.match(assignmentType.getTargetRef().getType(), ArchetypeType.COMPLEX_TYPE); } - public static boolean hasArchetypeAssignment(AH assignmentHolder, String archetypeOid) { if (assignmentHolder.getAssignment() == null) { return false; @@ -4603,5 +4573,4 @@ public static boolean hasArchetypeAssignment(A .collect(Collectors.toList()); return CollectionUtils.isNotEmpty(archetypeAssignments); } - } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/wrapper/ItemWrapperFactoryImpl.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/wrapper/ItemWrapperFactoryImpl.java index cff5049f56e..dc3230b64e3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/wrapper/ItemWrapperFactoryImpl.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/wrapper/ItemWrapperFactoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2018 Evolveum and contributors + * Copyright (C) 2010-2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -9,44 +9,39 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Optional; - -import com.evolveum.midpoint.gui.api.factory.wrapper.ItemWrapperFactory; -import com.evolveum.midpoint.gui.api.factory.wrapper.WrapperContext; -import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; -import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry; -import com.evolveum.midpoint.gui.impl.prism.wrapper.ValueMetadataWrapperImpl; -import com.evolveum.midpoint.model.api.ModelService; - -import com.evolveum.midpoint.prism.path.ItemName; -import com.evolveum.midpoint.task.api.TaskManager; - -import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; +import com.evolveum.midpoint.gui.api.factory.wrapper.ItemWrapperFactory; +import com.evolveum.midpoint.gui.api.factory.wrapper.WrapperContext; import com.evolveum.midpoint.gui.api.prism.ItemStatus; import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; -import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; import com.evolveum.midpoint.gui.api.prism.wrapper.PrismValueWrapper; +import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry; +import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; +import com.evolveum.midpoint.gui.impl.prism.wrapper.ValueMetadataWrapperImpl; import com.evolveum.midpoint.gui.impl.registry.GuiComponentRegistryImpl; import com.evolveum.midpoint.model.api.ModelInteractionService; +import com.evolveum.midpoint.model.api.ModelService; import com.evolveum.midpoint.prism.*; +import com.evolveum.midpoint.prism.path.ItemName; import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.task.api.TaskManager; import com.evolveum.midpoint.util.QNameUtil; import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.prism.ValueStatus; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import com.evolveum.prism.xml.ns._public.types_3.ItemPathType; /** * @author katka - * */ -public abstract class ItemWrapperFactoryImpl implements ItemWrapperFactory { +public abstract class ItemWrapperFactoryImpl implements ItemWrapperFactory { private static final Trace LOGGER = TraceManager.getTrace(ItemWrapperFactoryImpl.class); @@ -104,7 +99,7 @@ public IW createWrapper(PrismContainerValueWrapper parent, Item childItem, It registerWrapperPanel(itemWrapper); - List valueWrappers = createValuesWrapper(itemWrapper, (I) childItem, context); + List valueWrappers = createValuesWrapper(itemWrapper, (I) childItem, context); itemWrapper.getValues().addAll(valueWrappers); itemWrapper.setShowEmpty(context.isShowEmpty(), false); @@ -139,7 +134,6 @@ private boolean skipCreateWrapper(ItemDefinition def, ItemStatus status, Wrap return true; } - if (ItemStatus.ADDED == status && def.isDeprecated()) { LOGGER.trace("Skipping creating wrapper for {}, because item is deprecated and doesn't contain any value.", def); return true; @@ -170,7 +164,6 @@ protected boolean canCreateWrapper(ItemDefinition def, ItemStatus status, Wra return true; } - protected abstract void setupWrapper(IW wrapper); protected List createValuesWrapper(IW itemWrapper, I item, WrapperContext context) throws SchemaException { @@ -180,7 +173,7 @@ protected List createValuesWrapper(IW itemWrapper, I item, WrapperContext co if (values.isEmpty()) { if (shouldCreateEmptyValue(item, context)) { PV prismValue = createNewValue(item); - VW valueWrapper = createValueWrapper(itemWrapper, prismValue, ValueStatus.ADDED, context); + VW valueWrapper = createValueWrapper(itemWrapper, prismValue, ValueStatus.ADDED, context); setupMetadata(itemWrapper, valueWrapper, context); pvWrappers.add(valueWrapper); } @@ -188,7 +181,7 @@ protected List createValuesWrapper(IW itemWrapper, I item, WrapperContext co } for (PV pcv : values) { - if(canCreateValueWrapper(pcv)){ + if (canCreateValueWrapper(pcv)) { VW valueWrapper = createValueWrapper(itemWrapper, pcv, ValueStatus.NOT_CHANGED, context); setupMetadata(itemWrapper, valueWrapper, context); pvWrappers.add(valueWrapper); @@ -338,7 +331,6 @@ protected boolean canCreateValueWrapper(PV pcv) { return true; } - protected abstract PV createNewValue(I item) throws SchemaException; protected abstract IW createWrapperInternal(PrismContainerValueWrapper parent, I childContainer, ItemStatus status, WrapperContext wrapperContext); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/ExpressionPropertyHeaderPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/ExpressionPropertyHeaderPanel.java index aad02d737be..c141c20dbec 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/ExpressionPropertyHeaderPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/ExpressionPropertyHeaderPanel.java @@ -1,29 +1,30 @@ /* - * Copyright (c) 2010-2019 Evolveum and contributors + * Copyright (C) 2010-2020 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.impl.prism.panel; +import java.util.List; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.wicket.Component; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.model.IModel; + import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.component.togglebutton.ToggleIconButton; -import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismPropertyValueWrapper; import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper; +import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismPropertyValueWrapper; import com.evolveum.midpoint.prism.PrismProperty; import com.evolveum.midpoint.prism.PrismPropertyDefinition; import com.evolveum.midpoint.prism.PrismPropertyValue; import com.evolveum.midpoint.web.component.AjaxButton; import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType; -import org.apache.commons.collections.CollectionUtils; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.behavior.AttributeAppender; -import org.apache.wicket.model.IModel; - -import java.util.List; /** * Created by honchar @@ -90,6 +91,7 @@ public boolean isOn() { protected Component createTitle(IModel label) { AjaxButton labelComponent = new AjaxButton(ID_LABEL, label) { private static final long serialVersionUID = 1L; + @Override public void onClick(AjaxRequestTarget target) { onExpandClick(target); @@ -100,13 +102,13 @@ public void onClick(AjaxRequestTarget target) { return labelComponent; } - private boolean isExpressionValueEmpty(){ - if (getModelObject() == null || CollectionUtils.isEmpty(getModelObject().getValues())){ + private boolean isExpressionValueEmpty() { + if (getModelObject() == null || CollectionUtils.isEmpty(getModelObject().getValues())) { return true; } List> valueWrappers = getModelObject().getValues(); - for(PrismPropertyValueWrapper expressionValueWrapper : valueWrappers){ - if (expressionValueWrapper.getOldValue() != null && expressionValueWrapper.getOldValue().getValue() != null){ + for (PrismPropertyValueWrapper expressionValueWrapper : valueWrappers) { + if (expressionValueWrapper.getOldValue() != null && expressionValueWrapper.getOldValue().getValue() != null) { return false; } } @@ -117,11 +119,11 @@ protected void onExpandClick(AjaxRequestTarget target) { isExpanded = !isExpanded; } - protected void addExpressionValuePerformed(AjaxRequestTarget target){ + protected void addExpressionValuePerformed(AjaxRequestTarget target) { } - protected void removeExpressionValuePerformed(AjaxRequestTarget target){ + protected void removeExpressionValuePerformed(AjaxRequestTarget target) { } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/ExpressionPropertyPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/ExpressionPropertyPanel.java index b62e180bb42..e876ab819d8 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/ExpressionPropertyPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/ExpressionPropertyPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2018 Evolveum and contributors + * Copyright (C) 2010-2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -8,13 +8,6 @@ import java.util.Collections; -import com.evolveum.midpoint.gui.impl.prism.panel.component.ExpressionTypeSelectPopup; -import com.evolveum.midpoint.gui.impl.prism.panel.component.ExpressionValueTypes; -import com.evolveum.midpoint.gui.impl.prism.wrapper.ExpressionWrapper; - -import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismPropertyValueWrapper; -import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper; - import org.apache.commons.collections.CollectionUtils; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -22,6 +15,11 @@ import org.apache.wicket.model.IModel; import com.evolveum.midpoint.gui.api.factory.wrapper.WrapperContext; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper; +import com.evolveum.midpoint.gui.impl.prism.panel.component.ExpressionTypeSelectPopup; +import com.evolveum.midpoint.gui.impl.prism.panel.component.ExpressionValueTypes; +import com.evolveum.midpoint.gui.impl.prism.wrapper.ExpressionWrapper; +import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismPropertyValueWrapper; import com.evolveum.midpoint.prism.PrismPropertyValue; import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.util.logging.Trace; @@ -33,7 +31,6 @@ /** * @author katka - * */ public class ExpressionPropertyPanel extends PrismPropertyPanel { @@ -54,7 +51,7 @@ public ExpressionPropertyPanel(String id, IModel model; - private LookupTableType predefinedValuesLookupTable; - private boolean hasValueEnumerationRef; + private final IModel model; + private final LookupTableType predefinedValuesLookupTable; + private final boolean hasValueEnumerationRef; - public PolyStringEditorPanel(String id, IModel model, LookupTableType predefinedValuesLookupTable, boolean hasValueEnumerationRef){ + private boolean showFullData = false; + + public PolyStringEditorPanel(String id, IModel model, + LookupTableType predefinedValuesLookupTable, boolean hasValueEnumerationRef) { super(id); this.model = model; this.predefinedValuesLookupTable = predefinedValuesLookupTable; @@ -80,12 +83,12 @@ public PolyStringEditorPanel(String id, IModel model, LookupTableTyp } @Override - protected void onInitialize(){ + protected void onInitialize() { super.onInitialize(); initLayout(); } - private void initLayout(){ + private void initLayout() { setOutputMarkupId(true); String localizedValue = getLocalizedPolyStringValue(); @@ -96,7 +99,7 @@ private void initLayout(){ localizedValueContainer.add(new VisibleBehaviour(() -> showFullData || StringUtils.isNotEmpty(localizedValue))); add(localizedValueContainer); - Label localizedValueLabel = new Label(ID_LOCALIZED_VALUE_LABEL, ((PageBase)getPage()).createStringResource("PolyStringEditorPanel.localizedValue")); + Label localizedValueLabel = new Label(ID_LOCALIZED_VALUE_LABEL, ((PageBase) getPage()).createStringResource("PolyStringEditorPanel.localizedValue")); localizedValueLabel.setOutputMarkupId(true); localizedValueLabel.add(new VisibleBehaviour(() -> showFullData)); localizedValueContainer.add(localizedValueLabel); @@ -106,7 +109,7 @@ private void initLayout(){ localizedValueWithButton.add(getInputFieldClassAppender()); localizedValueContainer.add(localizedValueWithButton); - TextPanel localizedValuePanel = new TextPanel(ID_LOCALIZED_VALUE_PANEL, Model.of(localizedValue)); + TextPanel localizedValuePanel = new TextPanel<>(ID_LOCALIZED_VALUE_PANEL, Model.of(localizedValue)); localizedValuePanel.setOutputMarkupId(true); localizedValuePanel.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); localizedValuePanel.add(new EnableBehaviour(() -> false)); @@ -168,7 +171,7 @@ public void detach() { } }; if (predefinedValuesLookupTable == null) { - origValuePanel = new TextPanel(ID_ORIG_VALUE, origValueModel, String.class, false); + origValuePanel = new TextPanel<>(ID_ORIG_VALUE, origValueModel, String.class, false); } else { origValuePanel = new AutoCompleteTextPanel(ID_ORIG_VALUE, origValueModel, String.class, hasValueEnumerationRef, predefinedValuesLookupTable) { @@ -190,7 +193,7 @@ public Iterator getIterator(String input) { fullDataContainer.add(new VisibleBehaviour(() -> showFullData)); add(fullDataContainer); - TextPanel keyValue = new TextPanel(ID_KEY_VALUE, new IModel() { + TextPanel keyValue = new TextPanel<>(ID_KEY_VALUE, new IModel() { private static final long serialVersionUID = 1L; @Override @@ -200,10 +203,10 @@ public String getObject() { @Override public void setObject(String object) { - if (getModelObject() == null){ + if (getModelObject() == null) { getModel().setObject(new PolyString("")); } - if (getModelObject().getTranslation() == null){ + if (getModelObject().getTranslation() == null) { getModelObject().setTranslation(new PolyStringTranslationType()); } getModelObject().getTranslation().setKey(object); @@ -221,11 +224,12 @@ public void detach() { IModel langChoiceModel = Model.of(); WebMarkupContainer languageEditorContainer = new WebMarkupContainer(ID_LANGUAGE_EDITOR); languageEditorContainer.setOutputMarkupId(true); - languageEditorContainer.add(new VisibleBehaviour(() -> CollectionUtils.isNotEmpty(getLanguageChoicesModel().getObject()))); + languageEditorContainer.add(new VisibleBehaviour(() -> + CollectionUtils.isNotEmpty(getLanguageChoicesModel().getObject()))); fullDataContainer.add(languageEditorContainer); - final DropDownChoicePanel languageChoicePanel = new DropDownChoicePanel(ID_LANGUAGES_LIST, langChoiceModel, - getLanguageChoicesModel(), true); + final DropDownChoicePanel languageChoicePanel = new DropDownChoicePanel<>( + ID_LANGUAGES_LIST, langChoiceModel, getLanguageChoicesModel(), true); languageChoicePanel.setOutputMarkupId(true); languageChoicePanel.getBaseFormComponent().add(new EmptyOnChangeAjaxFormUpdatingBehavior()); languageChoicePanel.getBaseFormComponent().add(new EmptyOnChangeAjaxFormUpdatingBehavior() { @@ -235,13 +239,14 @@ public void detach() { protected void onUpdate(AjaxRequestTarget ajaxRequestTarget) { removeLanguageValue(currentlySelectedLang.toString()); clearSelectedLanguageValue(); - currentlySelectedLang.append(getLanguagesChoicePanel().getBaseFormComponent().getModelObject()); + currentlySelectedLang.append( + getLanguagesChoicePanel().getBaseFormComponent().getModelObject()); } }); languageEditorContainer.add(languageChoicePanel); - final TextPanel newLanguageValue = new TextPanel(ID_VALUE_TO_ADD, Model.of()); - newLanguageValue.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour(){ + final TextPanel newLanguageValue = new TextPanel<>(ID_VALUE_TO_ADD, Model.of()); + newLanguageValue.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour() { private static final long serialVersionUID = 1L; @Override @@ -249,7 +254,7 @@ protected void onUpdate(AjaxRequestTarget target) { updateLanguageValue(languageChoicePanel.getBaseFormComponent().getModelObject(), newLanguageValue.getBaseFormComponent().getValue()); } }); - languageChoicePanel.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour(){ + languageChoicePanel.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour() { private static final long serialVersionUID = 1L; @Override @@ -285,7 +290,6 @@ public void onClick(AjaxRequestTarget target) { addLanguageButton.setOutputMarkupId(true); languageEditorContainer.add(addLanguageButton); - Map languagesMap = getModelObject() != null && getModelObject().getLang() != null ? getModelObject().getLang() : new HashMap<>(); ListView languagesContainer = new ListView(ID_LANGUAGES_REPEATER, getLanguagesListModel()) { private static final long serialVersionUID = 1L; @@ -293,13 +297,13 @@ public void onClick(AjaxRequestTarget target) { @Override protected void populateItem(ListItem listItem) { - TextPanel languageName = new TextPanel(ID_LANGUAGE_NAME, listItem.getModel()); + TextPanel languageName = new TextPanel<>(ID_LANGUAGE_NAME, listItem.getModel()); languageName.add(new EnableBehaviour(() -> false)); languageName.setOutputMarkupId(true); listItem.add(languageName); - TextPanel translation = new TextPanel(ID_TRANSLATION, Model.of(getLanguageValueByKey(listItem.getModelObject()))); - translation.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour(){ + TextPanel translation = new TextPanel<>(ID_TRANSLATION, Model.of(getLanguageValueByKey(listItem.getModelObject()))); + translation.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour() { private static final long serialVersionUID = 1L; @Override @@ -329,8 +333,8 @@ public void onClick(AjaxRequestTarget target) { }; removeButton.setOutputMarkupId(true); listItem.add(removeButton); - } - }; + } + }; languagesContainer.setOutputMarkupId(true); fullDataContainer.add(languagesContainer); @@ -349,30 +353,27 @@ public void onClick(AjaxRequestTarget target) { } - private String getLocalizedPolyStringValue(){ + private String getLocalizedPolyStringValue() { return ((PageBase) getPage()).getLocalizationService().translate(getModelObject(), WebComponentUtil.getCurrentLocale(), false); } - private IModel> getLanguageChoicesModel(){ - return new IModel>() { - @Override - public List getObject() { - List allLanguagesList = new ArrayList<>(); - String currentlySelectedLang = getLanguagesChoicePanel().getBaseFormComponent().getModel().getObject(); - MidPointApplication.AVAILABLE_LOCALES.forEach(locale -> { - String localeValue = locale.getLocale().getLanguage(); - if (!isPolyStringLangNotNull()) { - allLanguagesList.add(localeValue); - } else if (!languageExists(localeValue) || localeValue.equals(currentlySelectedLang)){ - allLanguagesList.add(locale.getLocale().getLanguage()); - } - }); - return allLanguagesList; - } + private IModel> getLanguageChoicesModel() { + return (IModel>) () -> { + List allLanguagesList = new ArrayList<>(); + String currentlySelectedLang = getLanguagesChoicePanel().getBaseFormComponent().getModel().getObject(); + MidPointApplication.AVAILABLE_LOCALES.forEach(locale -> { + String localeValue = locale.getLocale().getLanguage(); + if (!isPolyStringLangNotNull()) { + allLanguagesList.add(localeValue); + } else if (!languageExists(localeValue) || localeValue.equals(currentlySelectedLang)) { + allLanguagesList.add(locale.getLocale().getLanguage()); + } + }); + return allLanguagesList; }; } - private IModel> getLanguagesListModel(){ + private IModel> getLanguagesListModel() { return new IModel>() { private static final long serialVersionUID = 1L; @@ -390,26 +391,12 @@ public List getObject() { }; } - private void addNewLanguagePerformed(AjaxRequestTarget target){ - if (getModelObject() == null){ - Map languagesMap = new HashMap<>(); - languagesMap.put("", ""); - getModel().setObject(new PolyString(null, null, null, languagesMap)); - } else { - if (getModelObject().getLang() == null) { - getModelObject().setLang(new HashMap()); - } - getModelObject().getLang().put("", ""); - } - target.add(PolyStringEditorPanel.this); - } - - private void showHideLanguagesPerformed(AjaxRequestTarget target){ + private void showHideLanguagesPerformed(AjaxRequestTarget target) { showFullData = !showFullData; target.add(PolyStringEditorPanel.this); } - private AttributeAppender getInputFieldClassAppenderForContainer(){ + private AttributeAppender getInputFieldClassAppenderForContainer() { return AttributeModifier.append("class", new LoadableModel() { @Override protected String load() { @@ -418,7 +405,7 @@ protected String load() { }); } - private AttributeAppender getInputFieldClassAppender(){ + private AttributeAppender getInputFieldClassAppender() { return AttributeModifier.append("class", new LoadableModel() { @Override protected String load() { @@ -427,58 +414,58 @@ protected String load() { }); } - private InputPanel getOrigValuePanel(){ + private InputPanel getOrigValuePanel() { return (InputPanel) get(ID_ORIGIN_VALUE_CONTAINER).get(ID_ORIG_VALUE_WITH_BUTTON).get(ID_ORIG_VALUE); } //todo refactor with PolyStringWrapper - private void updateLanguageValue(String language, String value){ - if (StringUtils.isEmpty(language)){ + private void updateLanguageValue(String language, String value) { + if (StringUtils.isEmpty(language)) { return; } - if (getModelObject() == null){ + if (getModelObject() == null) { Map languagesMap = new HashMap<>(); languagesMap.put("", ""); getModel().setObject(new PolyString(null, null, null, languagesMap)); return; } - if (getModelObject().getLang() == null){ + if (getModelObject().getLang() == null) { getModelObject().setLang(new HashMap<>()); } - if (getModelObject().getLang().containsKey(language)){ + if (getModelObject().getLang().containsKey(language)) { getModelObject().getLang().replace(language, value); } else { getModelObject().getLang().put(language, value); } } - private void removeLanguageValue(String language){ - if (!isPolyStringLangNotNull()){ + private void removeLanguageValue(String language) { + if (!isPolyStringLangNotNull()) { return; } getModelObject().getLang().remove(language); } - private boolean isPolyStringLangNotNull(){ + private boolean isPolyStringLangNotNull() { return getModelObject() != null && getModelObject().getLang() != null; } - private boolean languageExists(String value){ + private boolean languageExists(String value) { return isPolyStringLangNotNull() && getModelObject().getLang().containsKey(value); } - private String getLanguageValueByKey(String key){ - if (!isPolyStringLangNotNull()){ + private String getLanguageValueByKey(String key) { + if (!isPolyStringLangNotNull()) { return null; } return getModelObject().getLang().get(key); } - private DropDownChoicePanel getLanguagesChoicePanel(){ - return (DropDownChoicePanel)get(ID_FULL_DATA_CONTAINER).get(ID_LANGUAGE_EDITOR).get(ID_LANGUAGES_LIST); + private DropDownChoicePanel getLanguagesChoicePanel() { + return (DropDownChoicePanel) get(ID_FULL_DATA_CONTAINER).get(ID_LANGUAGE_EDITOR).get(ID_LANGUAGES_LIST); } - private void clearSelectedLanguageValue(){ + private void clearSelectedLanguageValue() { currentlySelectedLang.delete(0, currentlySelectedLang.length()); } @@ -492,16 +479,16 @@ public FormComponent getBaseFormComponent() { return getOrigValuePanel().getBaseFormComponent(); } - private IModel getModel(){ + private IModel getModel() { return model; } - private PolyString getModelObject(){ + private PolyString getModelObject() { return model == null ? null : model.getObject(); } private List getPredefinedValuesIterator(String input) { return WebComponentUtil.prepareAutoCompleteList(predefinedValuesLookupTable, input, - ((PageBase)getPage()).getLocalizationService()); + ((PageBase) getPage()).getLocalizationService()); } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/PrismReferencePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/PrismReferencePanel.java index 33978de33c0..4be47db3b0a 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/PrismReferencePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/PrismReferencePanel.java @@ -1,34 +1,30 @@ /* - * Copyright (c) 2010-2018 Evolveum and contributors + * Copyright (C) 2010-2020 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.impl.prism.panel; -import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismReferenceValueWrapperImpl; -import com.evolveum.midpoint.gui.api.prism.wrapper.PrismReferenceWrapper; -import com.evolveum.midpoint.prism.PrismValue; -import com.evolveum.midpoint.util.exception.SchemaException; - import org.apache.commons.collections.CollectionUtils; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.model.IModel; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismReferenceWrapper; +import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismReferenceValueWrapperImpl; +import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.Referencable; -import com.evolveum.midpoint.util.logging.Trace; -import com.evolveum.midpoint.util.logging.TraceManager; +import com.evolveum.midpoint.util.exception.SchemaException; /** * @author katka - * */ -public class PrismReferencePanel extends ItemPanel, PrismReferenceWrapper>{ +public class PrismReferencePanel + extends ItemPanel, PrismReferenceWrapper> { private static final long serialVersionUID = 1L; - private static final Trace LOGGER = TraceManager.getTrace(PrismReferencePanel.class); private static final String ID_HEADER = "header"; @@ -49,9 +45,10 @@ protected void refreshPanel(AjaxRequestTarget target) { @Override protected Component createValuePanel(ListItem> item) { PrismReferenceValuePanel valuePanel = new PrismReferenceValuePanel("value", item.getModel(), getSettings()) { - @Override - protected void removeValue(PrismReferenceValueWrapperImpl valueToRemove, AjaxRequestTarget target) throws SchemaException { + protected void removeValue( + PrismReferenceValueWrapperImpl valueToRemove, AjaxRequestTarget target) + throws SchemaException { PrismReferencePanel.this.removeValue(valueToRemove, target); } }; @@ -67,7 +64,7 @@ public boolean isEnabled() { return !getModelObject().isReadOnly() || isLink(getModelObject()); } - private boolean isLink(PrismReferenceWrapper iw){ + private boolean isLink(PrismReferenceWrapper iw) { boolean isLink = false; if (CollectionUtils.isNotEmpty(iw.getValues()) && iw.getValues().size() == 1) { isLink = iw.getValues().get(0).isLink(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AbstractSummaryPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AbstractSummaryPanel.java index 78af3b58b21..3270967063d 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AbstractSummaryPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AbstractSummaryPanel.java @@ -1,421 +1,425 @@ -/* - * Copyright (c) 2010-2017 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.web.component; - -import com.evolveum.midpoint.gui.api.component.BasePanel; -import com.evolveum.midpoint.gui.api.util.WebComponentUtil; -import com.evolveum.midpoint.gui.impl.model.FlexibleLabelModel; -import com.evolveum.midpoint.prism.Containerable; -import com.evolveum.midpoint.prism.PrismContainer; -import com.evolveum.midpoint.prism.path.ItemName; -import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; -import com.evolveum.midpoint.web.component.util.SummaryTag; -import com.evolveum.midpoint.web.component.util.VisibleBehaviour; -import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; -import com.evolveum.midpoint.xml.ns._public.common.common_3.*; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.behavior.AttributeAppender; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.image.NonCachingImage; -import org.apache.wicket.markup.repeater.RepeatingView; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; -import org.apache.wicket.request.resource.AbstractResource; - -import javax.xml.namespace.QName; -import java.util.ArrayList; -import java.util.List; - -/** - * @author semancik - * @author mederly - */ -public abstract class AbstractSummaryPanel extends BasePanel { - private static final long serialVersionUID = 1L; - - protected static final String ID_BOX = "summaryBox"; - protected static final String ID_ICON_BOX = "summaryIconBox"; - protected static final String ID_TAG_BOX = "summaryTagBox"; - protected static final String ID_SUMMARY_TAG = "summaryTag"; - protected static final String ID_ICON = "summaryIcon"; - protected static final String ID_DISPLAY_NAME = "summaryDisplayName"; - protected static final String ID_IDENTIFIER = "summaryIdentifier"; - protected static final String ID_IDENTIFIER_PANEL = "summaryIdentifierPanel"; - protected static final String ID_NAVIGATE_TO_OBJECT_BUTTON = "navigateToObject"; - protected static final String ID_TITLE = "summaryTitle"; - protected static final String ID_TITLE2 = "summaryTitle2"; - protected static final String ID_TITLE3 = "summaryTitle3"; - - protected static final String ID_PHOTO = "summaryPhoto"; // perhaps useful only for focal objects but it was simpler to include it here - protected static final String ID_ORGANIZATION = "summaryOrganization"; // similar (requires ObjectWrapper to get parent organizations so hard to use in ObjectSummaryPanel) - - protected static final String BOX_CSS_CLASS = "col-xs-12 info-box"; - protected static final String ICON_BOX_CSS_CLASS = "info-box-icon"; - protected static final String ARCHETYPE_ICON_FONT_SIZE = "font-size: 45px !important;"; - - protected SummaryPanelSpecificationType configuration; - - protected WebMarkupContainer box; - protected RepeatingView tagBox; - protected WebMarkupContainer iconBox; - - public AbstractSummaryPanel(String id, IModel model, SummaryPanelSpecificationType configuration) { - super(id, model); - this.configuration = configuration; - setOutputMarkupId(true); - } - - @Override - protected void onInitialize() { - super.onInitialize(); - - box = new WebMarkupContainer(ID_BOX); - add(box); - - IModel archetypePolicyAdditionalCssClassModel = () -> { - String archetypePolicyAdditionalCssClass = getArchetypePolicyAdditionalCssClass(); - if (archetypePolicyAdditionalCssClass == null) { - return ""; - } - return "border-color: " + archetypePolicyAdditionalCssClass + ";"; - }; - - box.add(new AttributeModifier("class", BOX_CSS_CLASS + " " + getBoxAdditionalCssClass())); - box.add(AttributeModifier.append("style", archetypePolicyAdditionalCssClassModel)); - - if (getDisplayNameModel() != null) { - box.add(new Label(ID_DISPLAY_NAME, getDisplayNameModel())); - } else if (getDisplayNamePropertyName() != null) { - box.add(new Label(ID_DISPLAY_NAME, createLabelModel(getDisplayNamePropertyName(), SummaryPanelSpecificationType.F_DISPLAY_NAME))); - } else { - box.add(new Label(ID_DISPLAY_NAME, " ")); - } - - WebMarkupContainer identifierPanel = new WebMarkupContainer(ID_IDENTIFIER_PANEL); - identifierPanel.add(new Label(ID_IDENTIFIER, createLabelModel(getIdentifierPropertyName(), SummaryPanelSpecificationType.F_IDENTIFIER))); - identifierPanel.add(new VisibleEnableBehaviour() { - private static final long serialVersionUID = 1L; - - @Override - public boolean isVisible() { - return isIdentifierVisible(); - } - }); - box.add(identifierPanel); - - AjaxButton navigateToObject = new AjaxButton(ID_NAVIGATE_TO_OBJECT_BUTTON) { - @Override - public void onClick(AjaxRequestTarget ajaxRequestTarget) { - ObjectReferenceType ort = getReferencedObjectToNavigate(); - WebComponentUtil.dispatchToObjectDetailsPage(ort, AbstractSummaryPanel.this, false); - } - }; - navigateToObject.add(AttributeAppender.append("title", getReferenceObjectTitleModel())); - navigateToObject.add(new VisibleBehaviour(() -> { - ObjectReferenceType ort = getReferencedObjectToNavigate(); - Class refType = !isReferencedObjectNull() ? - WebComponentUtil.qnameToClass(AbstractSummaryPanel.this.getPageBase().getPrismContext(), ort.getType()) : null; - return ort != null && refType != null && - WebComponentUtil.getObjectDetailsPage(refType) != null; - - })); - navigateToObject.setOutputMarkupId(true); - box.add(navigateToObject); - - if (getTitleModel() != null) { - box.add(new Label(ID_TITLE, getTitleModel())); - } else if (getTitlePropertyName() != null) { - box.add(new Label(ID_TITLE, createLabelModel(getTitlePropertyName(), SummaryPanelSpecificationType.F_TITLE_1))); - } else { - box.add(new Label(ID_TITLE, " ")); - } - - if (getTitle2Model() != null) { - box.add(new Label(ID_TITLE2, getTitle2Model())); - } else if (getTitle2PropertyName() != null) { - box.add(new Label(ID_TITLE, createLabelModel(getTitle2PropertyName(), SummaryPanelSpecificationType.F_TITLE_2))); - } else { - Label label = new Label(ID_TITLE2, " "); - label.setVisible(false); - box.add(label); - } - - if (getTitle3Model() != null) { - box.add(new Label(ID_TITLE3, getTitle3Model())); - } else if (getTitle3PropertyName() != null) { - box.add(new Label(ID_TITLE, createLabelModel(getTitle3PropertyName(), SummaryPanelSpecificationType.F_TITLE_3))); - } else { - Label label = new Label(ID_TITLE3, " "); - label.setVisible(false); - box.add(label); - } - - final IModel parentOrgModel = getParentOrgModel(); - Label parentOrgLabel = new Label(ID_ORGANIZATION, parentOrgModel); - parentOrgLabel.add(new VisibleEnableBehaviour() { - private static final long serialVersionUID = 1L; - @Override - public boolean isVisible() { - return parentOrgModel.getObject() != null; - } - }); - box.add(parentOrgLabel); - - iconBox = new WebMarkupContainer(ID_ICON_BOX); - box.add(iconBox); - - String iconAdditionalCssClass = getIconBoxAdditionalCssClass(); - if (StringUtils.isNotEmpty(iconAdditionalCssClass)) { - iconBox.add(new AttributeModifier("class", ICON_BOX_CSS_CLASS + " " + iconAdditionalCssClass)); - } - - iconBox.add(AttributeModifier.append("style", createArchetypeBackgroundModel())); - - Label icon = new Label(ID_ICON, ""); - - String archetypeIconCssClass = getArchetypeIconCssClass(); - if (StringUtils.isNotEmpty(archetypeIconCssClass)){ - icon.add(AttributeModifier.append("class", archetypeIconCssClass)); - icon.add(AttributeModifier.append("style", ARCHETYPE_ICON_FONT_SIZE)); - } else { - icon.add(AttributeModifier.append("class", getIconCssClass())); - } - icon.add(new VisibleEnableBehaviour() { - @Override - public boolean isVisible(){ - return getPhotoModel().getObject() == null; - } - }); - iconBox.add(icon); - NonCachingImage img = new NonCachingImage(ID_PHOTO, getPhotoModel()); - img.add(new VisibleEnableBehaviour(){ - private static final long serialVersionUID = 1L; - @Override - public boolean isVisible() { - return getPhotoModel().getObject() != null; - } - }); - iconBox.add(img); - - tagBox = new RepeatingView(ID_TAG_BOX); - List> summaryTags = getSummaryTagComponentList(); - - if (getArchetypeSummaryTag() != null){ - summaryTags.add(getArchetypeSummaryTag()); - } - summaryTags.forEach(summaryTag -> { - WebMarkupContainer summaryTagPanel = new WebMarkupContainer(tagBox.newChildId()); - summaryTagPanel.setOutputMarkupId(true); - - summaryTagPanel.add(summaryTag); - tagBox.add(summaryTagPanel); - }); - if (getTagBoxCssClass() != null) { - tagBox.add(new AttributeModifier("class", getTagBoxCssClass())); - } - tagBox.add(new VisibleBehaviour(() -> CollectionUtils.isNotEmpty(summaryTags))); - box.add(tagBox); - } - - private IModel createArchetypeBackgroundModel() { - return () -> { - - String archetypePolicyAdditionalCssClass = getArchetypePolicyAdditionalCssClass(); - if (archetypePolicyAdditionalCssClass == null) { - return ""; - } - return "background-color: " + archetypePolicyAdditionalCssClass + ";"; - }; - } - private FlexibleLabelModel createLabelModel(QName modelPropertyName, QName configurationPropertyName) { - return createFlexibleLabelModel(modelPropertyName, getLabelConfiguration(configurationPropertyName)); - } - - private FlexibleLabelModel createFlexibleLabelModel(QName modelPropertyName, GuiFlexibleLabelType configuration) { - return new FlexibleLabelModel(getModel(), ItemName.fromQName(modelPropertyName), getPageBase(), configuration) { - private static final long serialVersionUID = 1L; - @Override - protected void addAdditionalExpressionVariables(ExpressionVariables variables) { - super.addAdditionalExpressionVariables(variables); - AbstractSummaryPanel.this.addAdditionalExpressionVariables(variables); - } - }; - } - - protected List> getSummaryTagComponentList(){ - return new ArrayList<>(); - } - - protected ObjectReferenceType getReferencedObjectToNavigate(){ - return null; - } - - private boolean isReferencedObjectNull(){ - return getReferencedObjectToNavigate() == null || StringUtils.isEmpty(getReferencedObjectToNavigate().getOid()) || - getReferencedObjectToNavigate().getType() == null; - } - - protected IModel getReferenceObjectTitleModel(){ - return null; - } - - private SummaryTag getArchetypeSummaryTag(){ - String archetypeIconCssClass = getArchetypeIconCssClass(); - String archetypeIconColor = getArchetypePolicyAdditionalCssClass(); - String archetypeLabel = getArchetypeLabel(); - if (StringUtils.isNotEmpty(archetypeLabel)){ - SummaryTag archetypeSummaryTag = new SummaryTag(ID_SUMMARY_TAG, getModel()) { - private static final long serialVersionUID = 1L; - - @Override - protected void initialize(C object) { - setIconCssClass(archetypeIconCssClass); - setLabel(createStringResource(archetypeLabel).getString()); - setColor(archetypeIconColor); - } - - @Override - public String getIconCssClass() { - return getArchetypeIconCssClass(); - } - - @Override - public String getColor() { - return getArchetypePolicyAdditionalCssClass(); - } - - @Override - public String getLabel() { - return getArchetypeLabel(); - } - }; - return archetypeSummaryTag; - } - return null; - } - - protected void addAdditionalExpressionVariables(ExpressionVariables variables) { - - } - - private GuiFlexibleLabelType getLabelConfiguration(QName configurationPropertyName) { - if (configuration == null) { - return null; - } - @SuppressWarnings("unchecked") - PrismContainer subContainer = configuration.asPrismContainerValue().findContainer(configurationPropertyName); - if (subContainer == null) { - return null; - } - return subContainer.getRealValue(); - } - - protected String getTagBoxCssClass() { - return null; - } - - public Component getTag(String id) { - return tagBox.get(id); - } - - private String getArchetypePolicyAdditionalCssClass(){ - if (getModelObject() instanceof AssignmentHolderType){ - DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType((AssignmentHolderType) getModelObject(), getPageBase()); - return WebComponentUtil.getIconColor(displayType); - } - return ""; - } - - private String getArchetypeLabel(){ - if (getModelObject() instanceof AssignmentHolderType){ - DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType((AssignmentHolderType) getModelObject(), getPageBase()); - return displayType == null || displayType.getLabel() == null ? "" : displayType.getLabel().getOrig(); - } - return ""; - } - - private String getArchetypeIconCssClass(){ - if (getModelObject() instanceof AssignmentHolderType){ - DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType((AssignmentHolderType) getModelObject(), getPageBase()); - return WebComponentUtil.getIconCssClass(displayType); - } - return ""; - } - - protected abstract String getIconCssClass(); - - protected abstract String getIconBoxAdditionalCssClass(); - - protected abstract String getBoxAdditionalCssClass(); - - protected QName getIdentifierPropertyName() { - return FocusType.F_NAME; - } - - protected QName getDisplayNamePropertyName() { - return ObjectType.F_NAME; - } - - protected IModel getDisplayNameModel() { - return null; - } - - protected QName getTitlePropertyName() { - return null; - } - - protected IModel getTitleModel() { - return null; - } - - protected QName getTitle2PropertyName() { - return null; - } - - protected IModel getTitle2Model() { - return null; - } - - protected QName getTitle3PropertyName() { - return null; - } - - protected IModel getTitle3Model() { - return null; - } - - protected boolean isIdentifierVisible() { - return true; - } - - protected IModel getParentOrgModel() { - GuiFlexibleLabelType config = getLabelConfiguration(SummaryPanelSpecificationType.F_ORGANIZATION); - if (config != null) { - return createFlexibleLabelModel(ObjectType.F_PARENT_ORG_REF, config); - } else { - return getDefaltParentOrgModel(); - } - } - - protected IModel getDefaltParentOrgModel() { - return new Model<>(null); - } - - protected IModel getPhotoModel() { - return new Model<>(null); - } - - protected WebMarkupContainer getSummaryBoxPanel(){ - return (WebMarkupContainer) get(ID_BOX); - } -} +/* + * Copyright (C) 2010-2020 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.web.component; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.namespace.QName; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.Component; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.image.NonCachingImage; +import org.apache.wicket.markup.repeater.RepeatingView; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.request.resource.AbstractResource; + +import com.evolveum.midpoint.gui.api.component.BasePanel; +import com.evolveum.midpoint.gui.api.util.WebComponentUtil; +import com.evolveum.midpoint.gui.impl.model.FlexibleLabelModel; +import com.evolveum.midpoint.prism.Containerable; +import com.evolveum.midpoint.prism.PrismContainer; +import com.evolveum.midpoint.prism.path.ItemName; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; +import com.evolveum.midpoint.web.component.util.SummaryTag; +import com.evolveum.midpoint.web.component.util.VisibleBehaviour; +import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; + +/** + * @author semancik + * @author mederly + */ +public abstract class AbstractSummaryPanel extends BasePanel { + private static final long serialVersionUID = 1L; + + protected static final String ID_BOX = "summaryBox"; + protected static final String ID_ICON_BOX = "summaryIconBox"; + protected static final String ID_TAG_BOX = "summaryTagBox"; + protected static final String ID_SUMMARY_TAG = "summaryTag"; + protected static final String ID_ICON = "summaryIcon"; + protected static final String ID_DISPLAY_NAME = "summaryDisplayName"; + protected static final String ID_IDENTIFIER = "summaryIdentifier"; + protected static final String ID_IDENTIFIER_PANEL = "summaryIdentifierPanel"; + protected static final String ID_NAVIGATE_TO_OBJECT_BUTTON = "navigateToObject"; + protected static final String ID_TITLE = "summaryTitle"; + protected static final String ID_TITLE2 = "summaryTitle2"; + protected static final String ID_TITLE3 = "summaryTitle3"; + + protected static final String ID_PHOTO = "summaryPhoto"; // perhaps useful only for focal objects but it was simpler to include it here + protected static final String ID_ORGANIZATION = "summaryOrganization"; // similar (requires ObjectWrapper to get parent organizations so hard to use in ObjectSummaryPanel) + + protected static final String BOX_CSS_CLASS = "col-xs-12 info-box"; + protected static final String ICON_BOX_CSS_CLASS = "info-box-icon"; + protected static final String ARCHETYPE_ICON_FONT_SIZE = "font-size: 45px !important;"; + + protected SummaryPanelSpecificationType configuration; + + protected WebMarkupContainer box; + protected RepeatingView tagBox; + protected WebMarkupContainer iconBox; + + public AbstractSummaryPanel(String id, IModel model, SummaryPanelSpecificationType configuration) { + super(id, model); + this.configuration = configuration; + setOutputMarkupId(true); + } + + @Override + protected void onInitialize() { + super.onInitialize(); + + box = new WebMarkupContainer(ID_BOX); + add(box); + + IModel archetypePolicyAdditionalCssClassModel = () -> { + String archetypePolicyAdditionalCssClass = getArchetypePolicyAdditionalCssClass(); + if (archetypePolicyAdditionalCssClass == null) { + return ""; + } + return "border-color: " + archetypePolicyAdditionalCssClass + ";"; + }; + + box.add(new AttributeModifier("class", BOX_CSS_CLASS + " " + getBoxAdditionalCssClass())); + box.add(AttributeModifier.append("style", archetypePolicyAdditionalCssClassModel)); + + if (getDisplayNameModel() != null) { + box.add(new Label(ID_DISPLAY_NAME, getDisplayNameModel())); + } else if (getDisplayNamePropertyName() != null) { + box.add(new Label(ID_DISPLAY_NAME, createLabelModel(getDisplayNamePropertyName(), SummaryPanelSpecificationType.F_DISPLAY_NAME))); + } else { + box.add(new Label(ID_DISPLAY_NAME, " ")); + } + + WebMarkupContainer identifierPanel = new WebMarkupContainer(ID_IDENTIFIER_PANEL); + identifierPanel.add(new Label(ID_IDENTIFIER, createLabelModel(getIdentifierPropertyName(), SummaryPanelSpecificationType.F_IDENTIFIER))); + identifierPanel.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; + + @Override + public boolean isVisible() { + return isIdentifierVisible(); + } + }); + box.add(identifierPanel); + + AjaxButton navigateToObject = new AjaxButton(ID_NAVIGATE_TO_OBJECT_BUTTON) { + @Override + public void onClick(AjaxRequestTarget ajaxRequestTarget) { + ObjectReferenceType ort = getReferencedObjectToNavigate(); + WebComponentUtil.dispatchToObjectDetailsPage(ort, AbstractSummaryPanel.this, false); + } + }; + navigateToObject.add(AttributeAppender.append("title", getReferenceObjectTitleModel())); + navigateToObject.add(new VisibleBehaviour(() -> { + ObjectReferenceType ort = getReferencedObjectToNavigate(); + Class refType = !isReferencedObjectNull() + ? WebComponentUtil.qnameToClass(AbstractSummaryPanel.this.getPageBase().getPrismContext(), ort.getType()) + : null; + return ort != null && refType != null + && WebComponentUtil.getObjectDetailsPage(refType) != null; + })); + navigateToObject.setOutputMarkupId(true); + box.add(navigateToObject); + + if (getTitleModel() != null) { + box.add(new Label(ID_TITLE, getTitleModel())); + } else if (getTitlePropertyName() != null) { + box.add(new Label(ID_TITLE, createLabelModel(getTitlePropertyName(), SummaryPanelSpecificationType.F_TITLE_1))); + } else { + box.add(new Label(ID_TITLE, " ")); + } + + if (getTitle2Model() != null) { + box.add(new Label(ID_TITLE2, getTitle2Model())); + } else if (getTitle2PropertyName() != null) { + box.add(new Label(ID_TITLE, createLabelModel(getTitle2PropertyName(), SummaryPanelSpecificationType.F_TITLE_2))); + } else { + Label label = new Label(ID_TITLE2, " "); + label.setVisible(false); + box.add(label); + } + + if (getTitle3Model() != null) { + box.add(new Label(ID_TITLE3, getTitle3Model())); + } else if (getTitle3PropertyName() != null) { + box.add(new Label(ID_TITLE, createLabelModel(getTitle3PropertyName(), SummaryPanelSpecificationType.F_TITLE_3))); + } else { + Label label = new Label(ID_TITLE3, " "); + label.setVisible(false); + box.add(label); + } + + final IModel parentOrgModel = getParentOrgModel(); + Label parentOrgLabel = new Label(ID_ORGANIZATION, parentOrgModel); + parentOrgLabel.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; + + @Override + public boolean isVisible() { + return parentOrgModel.getObject() != null; + } + }); + box.add(parentOrgLabel); + + iconBox = new WebMarkupContainer(ID_ICON_BOX); + box.add(iconBox); + + String iconAdditionalCssClass = getIconBoxAdditionalCssClass(); + if (StringUtils.isNotEmpty(iconAdditionalCssClass)) { + iconBox.add(new AttributeModifier("class", ICON_BOX_CSS_CLASS + " " + iconAdditionalCssClass)); + } + + iconBox.add(AttributeModifier.append("style", createArchetypeBackgroundModel())); + + Label icon = new Label(ID_ICON, ""); + + String archetypeIconCssClass = getArchetypeIconCssClass(); + if (StringUtils.isNotEmpty(archetypeIconCssClass)) { + icon.add(AttributeModifier.append("class", archetypeIconCssClass)); + icon.add(AttributeModifier.append("style", ARCHETYPE_ICON_FONT_SIZE)); + } else { + icon.add(AttributeModifier.append("class", getIconCssClass())); + } + icon.add(new VisibleEnableBehaviour() { + @Override + public boolean isVisible() { + return getPhotoModel().getObject() == null; + } + }); + iconBox.add(icon); + NonCachingImage img = new NonCachingImage(ID_PHOTO, getPhotoModel()); + img.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; + + @Override + public boolean isVisible() { + return getPhotoModel().getObject() != null; + } + }); + iconBox.add(img); + + tagBox = new RepeatingView(ID_TAG_BOX); + List> summaryTags = getSummaryTagComponentList(); + + if (getArchetypeSummaryTag() != null) { + summaryTags.add(getArchetypeSummaryTag()); + } + summaryTags.forEach(summaryTag -> { + WebMarkupContainer summaryTagPanel = new WebMarkupContainer(tagBox.newChildId()); + summaryTagPanel.setOutputMarkupId(true); + + summaryTagPanel.add(summaryTag); + tagBox.add(summaryTagPanel); + }); + if (getTagBoxCssClass() != null) { + tagBox.add(new AttributeModifier("class", getTagBoxCssClass())); + } + tagBox.add(new VisibleBehaviour(() -> CollectionUtils.isNotEmpty(summaryTags))); + box.add(tagBox); + } + + private IModel createArchetypeBackgroundModel() { + return () -> { + + String archetypePolicyAdditionalCssClass = getArchetypePolicyAdditionalCssClass(); + if (archetypePolicyAdditionalCssClass == null) { + return ""; + } + return "background-color: " + archetypePolicyAdditionalCssClass + ";"; + }; + } + + private FlexibleLabelModel createLabelModel(QName modelPropertyName, QName configurationPropertyName) { + return createFlexibleLabelModel(modelPropertyName, getLabelConfiguration(configurationPropertyName)); + } + + private FlexibleLabelModel createFlexibleLabelModel(QName modelPropertyName, GuiFlexibleLabelType configuration) { + return new FlexibleLabelModel(getModel(), ItemName.fromQName(modelPropertyName), getPageBase(), configuration) { + private static final long serialVersionUID = 1L; + + @Override + protected void addAdditionalExpressionVariables(ExpressionVariables variables) { + super.addAdditionalExpressionVariables(variables); + AbstractSummaryPanel.this.addAdditionalExpressionVariables(variables); + } + }; + } + + protected List> getSummaryTagComponentList() { + return new ArrayList<>(); + } + + protected ObjectReferenceType getReferencedObjectToNavigate() { + return null; + } + + private boolean isReferencedObjectNull() { + return getReferencedObjectToNavigate() == null || StringUtils.isEmpty(getReferencedObjectToNavigate().getOid()) || + getReferencedObjectToNavigate().getType() == null; + } + + protected IModel getReferenceObjectTitleModel() { + return null; + } + + private SummaryTag getArchetypeSummaryTag() { + String archetypeIconCssClass = getArchetypeIconCssClass(); + String archetypeIconColor = getArchetypePolicyAdditionalCssClass(); + String archetypeLabel = getArchetypeLabel(); + if (StringUtils.isNotEmpty(archetypeLabel)) { + SummaryTag archetypeSummaryTag = new SummaryTag(ID_SUMMARY_TAG, getModel()) { + private static final long serialVersionUID = 1L; + + @Override + protected void initialize(C object) { + setIconCssClass(archetypeIconCssClass); + setLabel(createStringResource(archetypeLabel).getString()); + setColor(archetypeIconColor); + } + + @Override + public String getIconCssClass() { + return getArchetypeIconCssClass(); + } + + @Override + public String getColor() { + return getArchetypePolicyAdditionalCssClass(); + } + + @Override + public String getLabel() { + return getArchetypeLabel(); + } + }; + return archetypeSummaryTag; + } + return null; + } + + protected void addAdditionalExpressionVariables(ExpressionVariables variables) { + + } + + private GuiFlexibleLabelType getLabelConfiguration(QName configurationPropertyName) { + if (configuration == null) { + return null; + } + @SuppressWarnings("unchecked") + PrismContainer subContainer = configuration.asPrismContainerValue().findContainer(configurationPropertyName); + if (subContainer == null) { + return null; + } + return subContainer.getRealValue(); + } + + protected String getTagBoxCssClass() { + return null; + } + + public Component getTag(String id) { + return tagBox.get(id); + } + + private String getArchetypePolicyAdditionalCssClass() { + if (getModelObject() instanceof AssignmentHolderType) { + DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType((AssignmentHolderType) getModelObject(), getPageBase()); + return WebComponentUtil.getIconColor(displayType); + } + return ""; + } + + private String getArchetypeLabel() { + if (getModelObject() instanceof AssignmentHolderType) { + DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType((AssignmentHolderType) getModelObject(), getPageBase()); + return displayType == null || displayType.getLabel() == null ? "" : displayType.getLabel().getOrig(); + } + return ""; + } + + private String getArchetypeIconCssClass() { + if (getModelObject() instanceof AssignmentHolderType) { + DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType((AssignmentHolderType) getModelObject(), getPageBase()); + return WebComponentUtil.getIconCssClass(displayType); + } + return ""; + } + + protected abstract String getIconCssClass(); + + protected abstract String getIconBoxAdditionalCssClass(); + + protected abstract String getBoxAdditionalCssClass(); + + protected QName getIdentifierPropertyName() { + return FocusType.F_NAME; + } + + protected QName getDisplayNamePropertyName() { + return ObjectType.F_NAME; + } + + protected IModel getDisplayNameModel() { + return null; + } + + protected QName getTitlePropertyName() { + return null; + } + + protected IModel getTitleModel() { + return null; + } + + protected QName getTitle2PropertyName() { + return null; + } + + protected IModel getTitle2Model() { + return null; + } + + protected QName getTitle3PropertyName() { + return null; + } + + protected IModel getTitle3Model() { + return null; + } + + protected boolean isIdentifierVisible() { + return true; + } + + protected IModel getParentOrgModel() { + GuiFlexibleLabelType config = getLabelConfiguration(SummaryPanelSpecificationType.F_ORGANIZATION); + if (config != null) { + return createFlexibleLabelModel(ObjectType.F_PARENT_ORG_REF, config); + } else { + return getDefaltParentOrgModel(); + } + } + + protected IModel getDefaltParentOrgModel() { + return new Model<>(null); + } + + protected IModel getPhotoModel() { + return new Model<>(null); + } + + protected WebMarkupContainer getSummaryBoxPanel() { + return (WebMarkupContainer) get(ID_BOX); + } +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/MultiCompositedButtonPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/MultiCompositedButtonPanel.java index c85256d96d1..1dab123c851 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/MultiCompositedButtonPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/MultiCompositedButtonPanel.java @@ -1,6 +1,20 @@ +/* + * Copyright (C) 2010-2020 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.web.component; -import com.evolveum.midpoint.gui.api.GuiStyleConstants; +import java.util.List; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.markup.repeater.RepeatingView; +import org.apache.wicket.model.Model; + import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.impl.component.AjaxCompositedIconButton; @@ -12,14 +26,6 @@ import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.xml.ns._public.common.common_3.DisplayType; import com.evolveum.midpoint.xml.ns._public.common.common_3.IconType; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.behavior.AttributeAppender; -import org.apache.wicket.markup.repeater.RepeatingView; -import org.apache.wicket.model.Model; - -import java.util.List; public abstract class MultiCompositedButtonPanel extends BasePanel> { @@ -27,26 +33,26 @@ public abstract class MultiCompositedButtonPanel extends BasePanel buttonDtos; + private final List buttonDtos; - public MultiCompositedButtonPanel(String id, List buttonDtos){ + public MultiCompositedButtonPanel(String id, List buttonDtos) { super(id); this.buttonDtos = buttonDtos; } @Override - protected void onInitialize(){ + protected void onInitialize() { super.onInitialize(); initLayout(); } - private void initLayout(){ + private void initLayout() { DisplayType defaultObjectButtonDisplayType = fixDisplayTypeIfNeeded(getDefaultObjectButtonDisplayType()); DisplayType mainButtonDisplayType = fixDisplayTypeIfNeeded(getMainButtonDisplayType()); RepeatingView buttonsPanel = new RepeatingView(ID_BUTTON_PANEL); add(buttonsPanel); - if (additionalButtonsExist()){ + if (additionalButtonsExist()) { buttonDtos.forEach(additionalButtonObject -> { DisplayType additionalButtonDisplayType = fixDisplayTypeIfNeeded(additionalButtonObject.getAdditionalButtonDisplayType()); //getAdditionalButtonDisplayType(additionalButtonObject) additionalButtonObject.setAdditionalButtonDisplayType(additionalButtonDisplayType); @@ -101,39 +107,38 @@ private CompositedIcon getCompositedIcon(MultiFunctinalButtonDto additionalButto /** * this method should return the display properties for the last button on the dropdown panel with additional buttons. * The last button is supposed to produce a default action (an action with no additional objects to process) - * @return */ protected abstract DisplayType getDefaultObjectButtonDisplayType(); - protected CompositedIconBuilder getAdditionalIconBuilder(DisplayType additionalButtonDisplayType){ + protected CompositedIconBuilder getAdditionalIconBuilder(DisplayType additionalButtonDisplayType) { CompositedIconBuilder builder = new CompositedIconBuilder(); builder.setBasicIcon(WebComponentUtil.getIconCssClass(additionalButtonDisplayType), IconCssStyle.IN_ROW_STYLE) .appendColorHtmlValue(WebComponentUtil.getIconColor(additionalButtonDisplayType)); return builder; } - private DisplayType fixDisplayTypeIfNeeded(DisplayType displayType){ - if (displayType == null){ + private DisplayType fixDisplayTypeIfNeeded(DisplayType displayType) { + if (displayType == null) { displayType = new DisplayType(); } - if (displayType.getIcon() == null){ + if (displayType.getIcon() == null) { displayType.setIcon(new IconType()); } - if (displayType.getIcon().getCssClass() == null){ + if (displayType.getIcon().getCssClass() == null) { displayType.getIcon().setCssClass(""); } return displayType; } - protected void buttonClickPerformed(AjaxRequestTarget target, AssignmentObjectRelation relationSepc, CompiledObjectCollectionView collectionViews){ + protected void buttonClickPerformed(AjaxRequestTarget target, AssignmentObjectRelation relationSepc, CompiledObjectCollectionView collectionViews) { } protected boolean additionalButtonsExist() { return CollectionUtils.isNotEmpty(buttonDtos); } - protected boolean isDefaultButtonVisible(){ + protected boolean isDefaultButtonVisible() { return true; } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/MultifunctionalButton.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/MultifunctionalButton.java index 9aad623bf22..335187f3db0 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/MultifunctionalButton.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/MultifunctionalButton.java @@ -1,11 +1,20 @@ /* - * Copyright (c) 2010-2019 Evolveum and contributors + * Copyright (C) 2010-2020 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.web.component; +import java.util.List; +import java.util.Map; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.model.Model; + import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; @@ -18,15 +27,6 @@ import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.xml.ns._public.common.common_3.DisplayType; import com.evolveum.midpoint.xml.ns._public.common.common_3.IconType; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.behavior.AttributeAppender; -import org.apache.wicket.markup.repeater.RepeatingView; -import org.apache.wicket.model.Model; - -import java.util.List; -import java.util.Map; /** * Created by honchar @@ -36,28 +36,26 @@ public abstract class MultifunctionalButton extends BasePanel buttonDtos; + private final List buttonDtos; - public MultifunctionalButton(String id, List buttonDtos){ + public MultifunctionalButton(String id, List buttonDtos) { super(id); this.buttonDtos = buttonDtos; } @Override - protected void onInitialize(){ + protected void onInitialize() { super.onInitialize(); initLayout(); } - private void initLayout(){ + private void initLayout() { // List additionalButtons = getAdditionalButtonsObjects(); DisplayType defaultObjectButtonDisplayType = fixDisplayTypeIfNeeded(getDefaultObjectButtonDisplayType()); DisplayType mainButtonDisplayType = fixDisplayTypeIfNeeded(getMainButtonDisplayType()); //we set default button icon class if no other is defined - if (StringUtils.isEmpty(mainButtonDisplayType.getIcon().getCssClass())){ + if (StringUtils.isEmpty(mainButtonDisplayType.getIcon().getCssClass())) { mainButtonDisplayType.getIcon().setCssClass(defaultObjectButtonDisplayType.getIcon().getCssClass()); } final CompositedIconBuilder builder = new CompositedIconBuilder(); @@ -65,9 +63,7 @@ private void initLayout(){ .appendColorHtmlValue(WebComponentUtil.getIconColor(mainButtonDisplayType)); final Map layerIcons = getMainButtonLayerIcons(); if (layerIcons != null) { - layerIcons.entrySet().forEach(layerIconStyle -> { - builder.appendLayerIcon(layerIconStyle.getValue(), layerIconStyle.getKey()); - }); + layerIcons.forEach((key, value) -> builder.appendLayerIcon(value, key)); } AjaxCompositedIconButton mainButton = new AjaxCompositedIconButton(ID_MAIN_BUTTON, builder.build(), @@ -77,13 +73,13 @@ private void initLayout(){ @Override public void onClick(AjaxRequestTarget target) { - if (!additionalButtonsExist()){ + if (!additionalButtonsExist()) { buttonClickPerformed(target, null, null); } } }; mainButton.add(AttributeAppender.append(" data-toggle", additionalButtonsExist() ? "dropdown" : "")); - if(!additionalButtonsExist()){ + if (!additionalButtonsExist()) { mainButton.add(new VisibleBehaviour(this::isMainButtonVisible)); } add(mainButton); @@ -102,7 +98,7 @@ protected DisplayType getDefaultObjectButtonDisplayType() { } @Override - protected void buttonClickPerformed(AjaxRequestTarget target, AssignmentObjectRelation relationSepc, CompiledObjectCollectionView collectionViews){ + protected void buttonClickPerformed(AjaxRequestTarget target, AssignmentObjectRelation relationSepc, CompiledObjectCollectionView collectionViews) { MultifunctionalButton.this.buttonClickPerformed(target, relationSepc, collectionViews); } @@ -116,7 +112,7 @@ protected boolean isDefaultButtonVisible() { add(buttonsPanel); } - protected boolean isDefaultButtonVisible(){ + protected boolean isDefaultButtonVisible() { return true; } @@ -136,11 +132,10 @@ private CompositedIcon getCompositedIcon(MultiFunctinalButtonDto additionalButto /** * this method should return the display properties for the last button on the dropdown panel with additional buttons. * The last button is supposed to produce a default action (an action with no additional objects to process) - * @return */ protected abstract DisplayType getDefaultObjectButtonDisplayType(); - protected CompositedIconBuilder getAdditionalIconBuilder(DisplayType additionalButtonDisplayType){ + protected CompositedIconBuilder getAdditionalIconBuilder(DisplayType additionalButtonDisplayType) { CompositedIconBuilder builder = new CompositedIconBuilder(); builder.setBasicIcon(WebComponentUtil.getIconCssClass(additionalButtonDisplayType), IconCssStyle.IN_ROW_STYLE) .appendColorHtmlValue(WebComponentUtil.getIconColor(additionalButtonDisplayType)) @@ -148,32 +143,32 @@ protected CompositedIconBuilder getAdditionalIconBuilder(DisplayType additionalB return builder; } - private DisplayType fixDisplayTypeIfNeeded(DisplayType displayType){ - if (displayType == null){ + private DisplayType fixDisplayTypeIfNeeded(DisplayType displayType) { + if (displayType == null) { displayType = new DisplayType(); } - if (displayType.getIcon() == null){ + if (displayType.getIcon() == null) { displayType.setIcon(new IconType()); } - if (displayType.getIcon().getCssClass() == null){ + if (displayType.getIcon().getCssClass() == null) { displayType.getIcon().setCssClass(""); } return displayType; } - protected void buttonClickPerformed(AjaxRequestTarget target, AssignmentObjectRelation relationSepc, CompiledObjectCollectionView collectionViews){ + protected void buttonClickPerformed(AjaxRequestTarget target, AssignmentObjectRelation relationSepc, CompiledObjectCollectionView collectionViews) { } private boolean additionalButtonsExist() { return CollectionUtils.isNotEmpty(buttonDtos); } - protected boolean isMainButtonVisible(){ + protected boolean isMainButtonVisible() { return true; } - protected Map getMainButtonLayerIcons(){ + protected Map getMainButtonLayerIcons() { return null; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java index 5f4181cf498..fdacff400e7 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019 Evolveum and contributors + * Copyright (C) 2018-2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -34,7 +34,9 @@ import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismReferenceWrapper; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; import com.evolveum.midpoint.gui.impl.component.MultivalueContainerDetailsPanel; @@ -45,9 +47,7 @@ import com.evolveum.midpoint.gui.impl.prism.panel.ItemPanelSettings; import com.evolveum.midpoint.gui.impl.prism.panel.ItemPanelSettingsBuilder; import com.evolveum.midpoint.gui.impl.prism.wrapper.ConstructionValueWrapper; -import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismReferenceValueWrapperImpl; -import com.evolveum.midpoint.gui.api.prism.wrapper.PrismReferenceWrapper; import com.evolveum.midpoint.gui.impl.session.ObjectTabStorage; import com.evolveum.midpoint.model.api.AssignmentCandidatesSpecification; import com.evolveum.midpoint.model.api.AssignmentObjectRelation; @@ -90,7 +90,6 @@ public class AssignmentPanel extends BasePanel multivalueContainerListPanel = new MultivalueContainerListPanelWithDetailsPanel(ID_ASSIGNMENTS, getModel() != null ? getModel() : Model.of(), getTableId(), - getAssignmentsTabStorage()) { + getAssignmentsTabStorage()) { private static final long serialVersionUID = 1L; @@ -156,74 +155,73 @@ protected List createNewButtonDescription() { return newButtonDescription(); } + @Override + protected boolean getNewObjectGenericButtonVisibility() { + AssignmentCandidatesSpecification spec = loadAssignmentHolderSpecification(); + return spec == null || spec.isSupportGenericAssignment(); + } - @Override - protected boolean getNewObjectGenericButtonVisibility(){ - AssignmentCandidatesSpecification spec = loadAssignmentHolderSpecification(); - return spec == null || spec.isSupportGenericAssignment(); - } - - @Override - protected DisplayType getNewObjectButtonDisplayType() { - return WebComponentUtil.createDisplayType(GuiStyleConstants.EVO_ASSIGNMENT_ICON, "green", - AssignmentPanel.this.createStringResource(isInducement() ? - "AssignmentPanel.newInducementTitle" : "AssignmentPanel.newAssignmentTitle", "", "").getString()); - } + @Override + protected DisplayType getNewObjectButtonDisplayType() { + return WebComponentUtil.createDisplayType(GuiStyleConstants.EVO_ASSIGNMENT_ICON, "green", + AssignmentPanel.this.createStringResource(isInducement() ? + "AssignmentPanel.newInducementTitle" : "AssignmentPanel.newAssignmentTitle", "", "").getString()); + } - @Override - protected boolean isNewObjectButtonEnabled(){ - return !isAssignmentsLimitReached(); - } + @Override + protected boolean isNewObjectButtonEnabled() { + return !isAssignmentsLimitReached(); + } - @Override - protected void deleteItemPerformed(AjaxRequestTarget target, List> toDeleteList) { - int countAddedAssignments = 0; - for (PrismContainerValueWrapper assignment : toDeleteList) { - if (ValueStatus.ADDED.equals(assignment.getStatus())){ - countAddedAssignments++; + @Override + protected void deleteItemPerformed(AjaxRequestTarget target, List> toDeleteList) { + int countAddedAssignments = 0; + for (PrismContainerValueWrapper assignment : toDeleteList) { + if (ValueStatus.ADDED.equals(assignment.getStatus())) { + countAddedAssignments++; + } + } + boolean isLimitReached = isAssignmentsLimitReached(toDeleteList.size() - countAddedAssignments, true); + if (isLimitReached) { + warn(getParentPage().getString("AssignmentPanel.assignmentsLimitReachedWarning", assignmentsRequestsLimit)); + target.add(getPageBase().getFeedbackPanel()); + return; + } + super.deleteItemPerformed(target, toDeleteList); } - } - boolean isLimitReached = isAssignmentsLimitReached(toDeleteList.size() - countAddedAssignments, true); - if (isLimitReached) { - warn(getParentPage().getString("AssignmentPanel.assignmentsLimitReachedWarning", assignmentsRequestsLimit)); - target.add(getPageBase().getFeedbackPanel()); - return; - } - super.deleteItemPerformed(target, toDeleteList); - } - @Override - protected List> postSearch( - List> assignments) { - return customPostSearch(assignments); - } + @Override + protected List> postSearch( + List> assignments) { + return customPostSearch(assignments); + } - @Override - protected MultivalueContainerDetailsPanel getMultivalueContainerDetailsPanel( - ListItem> item) { - return createMultivalueContainerDetailsPanel(item); - } + @Override + protected MultivalueContainerDetailsPanel getMultivalueContainerDetailsPanel( + ListItem> item) { + return createMultivalueContainerDetailsPanel(item); + } - @Override - protected WebMarkupContainer getSearchPanel(String contentAreaId) { - return getCustomSearchPanel(contentAreaId); - } + @Override + protected WebMarkupContainer getSearchPanel(String contentAreaId) { + return getCustomSearchPanel(contentAreaId); + } - @Override - protected List initSearchableItems(PrismContainerDefinition containerDef) { - return createSearchableItems(containerDef); - } + @Override + protected List initSearchableItems(PrismContainerDefinition containerDef) { + return createSearchableItems(containerDef); + } - @Override - protected WebMarkupContainer initButtonToolbar(String id) { - WebMarkupContainer buttonToolbar = initCustomButtonToolbar(id); - if(buttonToolbar == null) { - return super.initButtonToolbar(id); - } - return buttonToolbar; - } + @Override + protected WebMarkupContainer initButtonToolbar(String id) { + WebMarkupContainer buttonToolbar = initCustomButtonToolbar(id); + if (buttonToolbar == null) { + return super.initButtonToolbar(id); + } + return buttonToolbar; + } - }; + }; multivalueContainerListPanel.add(new VisibleBehaviour(() -> getModel() != null && getModelObject() != null)); add(multivalueContainerListPanel); @@ -244,7 +242,6 @@ private List newButtonDescription() { return null; } - relations.forEach(relation -> { MultiFunctinalButtonDto buttonDto = new MultiFunctinalButtonDto(); buttonDto.setAssignmentObjectRelation(relation); @@ -266,19 +263,19 @@ private List newButtonDescription() { } private List getAssignmentObjectRelationList() { - if (AssignmentPanel.this.getModelObject() == null){ + if (AssignmentPanel.this.getModelObject() == null) { return null; } - if (isInducement()){ + if (isInducement()) { return null; } else { List assignmentRelationsList = WebComponentUtil.divideAssignmentRelationsByAllValues(loadAssignmentTargetRelationsList()); - if (assignmentRelationsList == null || assignmentRelationsList.isEmpty()){ + if (assignmentRelationsList == null || assignmentRelationsList.isEmpty()) { return assignmentRelationsList; } QName assignmentType = getAssignmentType(); - if (assignmentType == null){ + if (assignmentType == null) { return assignmentRelationsList; } List assignmentRelationsListFilteredByType = @@ -287,7 +284,7 @@ private List getAssignmentObjectRelationList() { QName objectType = assignmentRelation.getObjectTypes() != null && !assignmentRelation.getObjectTypes().isEmpty() ? assignmentRelation.getObjectTypes().get(0) : null; - if (QNameUtil.match(assignmentType, objectType)){ + if (QNameUtil.match(assignmentType, objectType)) { assignmentRelationsListFilteredByType.add(assignmentRelation); } }); @@ -295,7 +292,7 @@ private List getAssignmentObjectRelationList() { } } - protected Fragment initCustomButtonToolbar(String contentAreaId){ + protected Fragment initCustomButtonToolbar(String contentAreaId) { Fragment searchContainer = new Fragment(contentAreaId, ID_BUTTON_TOOLBAR_FRAGMENT, this); MultiCompositedButtonPanel newObjectIcon = getMultivalueContainerListPanel().getNewItemButton(ID_NEW_ITEM_BUTTON); @@ -304,7 +301,7 @@ protected Fragment initCustomButtonToolbar(String contentAreaId){ return searchContainer; } - protected List createSearchableItems(PrismContainerDefinition containerDef){ + protected List createSearchableItems(PrismContainerDefinition containerDef) { List defs = new ArrayList<>(); if (getAssignmentType() == null) { @@ -324,22 +321,22 @@ protected List createSearchableItems(PrismContainerDefinit } - protected QName getAssignmentType(){ + protected QName getAssignmentType() { return null; } - protected void initCustomPaging(){ - if (getModel() == null || getModelObject() == null){ + protected void initCustomPaging() { + if (getModel() == null || getModelObject() == null) { return; } getAssignmentsTabStorage().setPaging(getPrismContext().queryFactory().createPaging(0, (int) getParentPage().getItemsPerPage(UserProfileStorage.TableId.ASSIGNMENTS_TAB_TABLE))); } - protected ObjectTabStorage getAssignmentsTabStorage(){ - if (getModel() == null || getModelObject() == null){ + protected ObjectTabStorage getAssignmentsTabStorage() { + if (getModel() == null || getModelObject() == null) { return null; } - if (isInducement()){ + if (isInducement()) { return getParentPage().getSessionStorage().getInducementsTabStorage(); } else { return getParentPage().getSessionStorage().getAssignmentsTabStorage(); @@ -350,21 +347,20 @@ protected List> customPostSearch(List return assignments; } - protected boolean isNewObjectButtonVisible(PrismObject focusObject){ + protected boolean isNewObjectButtonVisible(PrismObject focusObject) { try { return getParentPage().isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_ASSIGN_ACTION_URI, AuthorizationPhaseType.REQUEST, focusObject, null, null, null); - } catch (Exception ex){ + } catch (Exception ex) { return WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_ASSIGN_ACTION_URI); } } - protected ObjectQuery createObjectQuery(){ + protected ObjectQuery createObjectQuery() { Collection delegationRelations = getParentPage().getRelationRegistry() .getAllRelationsFor(RelationKindType.DELEGATION); - //do not show archetype assignments ObjectReferenceType archetypeRef = new ObjectReferenceType(); archetypeRef.setType(ArchetypeType.COMPLEX_TYPE); @@ -385,10 +381,10 @@ protected ObjectQuery createObjectQuery(){ return query; } - protected void cancelAssignmentDetailsPerformed(AjaxRequestTarget target){ + protected void cancelAssignmentDetailsPerformed(AjaxRequestTarget target) { } - private List loadAssignmentTargetRelationsList(){ + private List loadAssignmentTargetRelationsList() { OperationResult result = new OperationResult(OPERATION_LOAD_ASSIGNMENT_TARGET_RELATIONS); List assignmentTargetRelations = new ArrayList<>(); PrismObject obj = getMultivalueContainerListPanel().getFocusObject(); @@ -396,21 +392,21 @@ private List loadAss AssignmentCandidatesSpecification spec = getPageBase().getModelInteractionService() .determineAssignmentTargetSpecification(obj, result); assignmentTargetRelations = spec != null ? spec.getAssignmentObjectRelations() : new ArrayList<>(); - } catch (SchemaException | ConfigurationException ex){ + } catch (SchemaException | ConfigurationException ex) { result.recordPartialError(ex.getLocalizedMessage()); LOGGER.error("Couldn't load assignment target specification for the object {} , {}", obj.getName(), ex.getLocalizedMessage()); } return assignmentTargetRelations; } - private AssignmentCandidatesSpecification loadAssignmentHolderSpecification(){ + private AssignmentCandidatesSpecification loadAssignmentHolderSpecification() { OperationResult result = new OperationResult(OPERATION_LOAD_ASSIGNMENT_HOLDER_SPECIFICATION); PrismObject obj = getMultivalueContainerListPanel().getFocusObject(); AssignmentCandidatesSpecification spec = null; try { spec = getPageBase().getModelInteractionService() .determineAssignmentHolderSpecification(obj, result); - } catch (SchemaException | ConfigurationException ex){ + } catch (SchemaException | ConfigurationException ex) { result.recordPartialError(ex.getLocalizedMessage()); LOGGER.error("Couldn't load assignment holder specification for the object {} , {}", obj.getName(), ex.getLocalizedMessage()); } @@ -427,21 +423,21 @@ protected List, String>> init private static final long serialVersionUID = 1L; @Override - protected DisplayType getIconDisplayType(IModel> rowModel){ + protected DisplayType getIconDisplayType(IModel> rowModel) { AssignmentType assignment = rowModel.getObject().getRealValue(); LOGGER.trace("Create icon for AssignmentType: " + assignment); - if (assignment != null && assignment.getTargetRef() != null && StringUtils.isNotEmpty(assignment.getTargetRef().getOid())){ + if (assignment != null && assignment.getTargetRef() != null && StringUtils.isNotEmpty(assignment.getTargetRef().getOid())) { List targetObjectList = WebComponentUtil.loadReferencedObjectList(Collections.singletonList(assignment.getTargetRef()), OPERATION_LOAD_ASSIGNMENTS_TARGET_OBJ, AssignmentPanel.this.getPageBase()); - if (CollectionUtils.isNotEmpty(targetObjectList) && targetObjectList.size() == 1){ + if (CollectionUtils.isNotEmpty(targetObjectList) && targetObjectList.size() == 1) { ObjectType targetObject = targetObjectList.get(0); DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType(targetObject, AssignmentPanel.this.getPageBase()); - if (displayType != null){ + if (displayType != null) { String disabledStyle; if (targetObject instanceof FocusType) { - disabledStyle = WebComponentUtil.getIconEnabledDisabled(((FocusType)targetObject).asPrismObject()); + disabledStyle = WebComponentUtil.getIconEnabledDisabled(((FocusType) targetObject).asPrismObject()); if (displayType.getIcon() != null && StringUtils.isNotEmpty(displayType.getIcon().getCssClass()) && - disabledStyle != null){ + disabledStyle != null) { displayType.getIcon().setCssClass(displayType.getIcon().getCssClass() + " " + disabledStyle); displayType.getIcon().setColor(""); } @@ -456,7 +452,7 @@ protected DisplayType getIconDisplayType(IModel>(createStringResource("PolicyRulesPanel.nameColumn")){ + columns.add(new LinkColumn>(createStringResource("PolicyRulesPanel.nameColumn")) { private static final long serialVersionUID = 1L; @Override @@ -490,7 +486,7 @@ public void onClick(AjaxRequestTarget target, IModel>> cellItem, String componentId, - IModel> rowModel) { + IModel> rowModel) { AssignmentType assignmentType = rowModel != null && rowModel.getObject() != null ? rowModel.getObject().getRealValue() : null; cellItem.add(new Label(componentId, AssignmentsUtil.getAssignmentSpecificInfoLabel(assignmentType, AssignmentPanel.this.getPageBase()))); @@ -500,11 +496,11 @@ public void populateItem(Item menuActionsList = getAssignmentMenuActions(); - columns.add(new InlineMenuButtonColumn>(menuActionsList, getPageBase()){ + columns.add(new InlineMenuButtonColumn>(menuActionsList, getPageBase()) { private static final long serialVersionUID = 1L; @Override - protected boolean isButtonMenuItemEnabled(IModel> rowModel){ + protected boolean isButtonMenuItemEnabled(IModel> rowModel) { if (rowModel != null && ValueStatus.ADDED.equals(rowModel.getObject().getStatus())) { return true; @@ -515,14 +511,14 @@ protected boolean isButtonMenuItemEnabled(IModel, String>> initColumns(){ + protected List, String>> initColumns() { return new ArrayList<>(); } - protected void assignmentDetailsPerformed(AjaxRequestTarget target){ + protected void assignmentDetailsPerformed(AjaxRequestTarget target) { } - protected void newAssignmentClickPerformed(AjaxRequestTarget target, AssignmentObjectRelation assignmentTargetRelation){ + protected void newAssignmentClickPerformed(AjaxRequestTarget target, AssignmentObjectRelation assignmentTargetRelation) { AssignmentPopup popupPanel = new AssignmentPopup(getPageBase().getMainPopupBodyId()) { private static final long serialVersionUID = 1L; @@ -534,7 +530,7 @@ protected void addPerformed(AjaxRequestTarget target, List newAs } @Override - protected List getAvailableObjectTypesList(){ + protected List getAvailableObjectTypesList() { if (assignmentTargetRelation == null || CollectionUtils.isEmpty(assignmentTargetRelation.getObjectTypes())) { return getObjectTypesList(); } else { @@ -543,25 +539,25 @@ protected List getAvailableObjectTypesList(){ } @Override - protected QName getPredefinedRelation(){ - if (assignmentTargetRelation == null){ + protected QName getPredefinedRelation() { + if (assignmentTargetRelation == null) { return AssignmentPanel.this.getPredefinedRelation(); } return !CollectionUtils.isEmpty(assignmentTargetRelation.getRelations()) ? assignmentTargetRelation.getRelations().get(0) : null; } @Override - protected List getArchetypeRefList(){ + protected List getArchetypeRefList() { return assignmentTargetRelation != null ? assignmentTargetRelation.getArchetypeRefs() : null; } @Override - protected ObjectFilter getSubtypeFilter(){ + protected ObjectFilter getSubtypeFilter() { return AssignmentPanel.this.getSubtypeFilter(); } @Override - protected boolean isEntitlementAssignment(){ + protected boolean isEntitlementAssignment() { return AssignmentPanel.this.isEntitlementAssignment(); } @@ -571,7 +567,7 @@ protected PrismContainerWrapper getAssignmentWrapperModel() { } @Override - protected boolean isOrgTreeTabVisible(){ + protected boolean isOrgTreeTabVisible() { return assignmentTargetRelation == null; } }; @@ -585,7 +581,7 @@ protected QName getPredefinedRelation() { return null; } - protected List getObjectTypesList(){ + protected List getObjectTypesList() { if (getAssignmentType() == null) { return WebComponentUtil.createAssignableTypesList(); } else { @@ -593,11 +589,11 @@ protected List getObjectTypesList(){ } } - protected boolean isEntitlementAssignment(){ + protected boolean isEntitlementAssignment() { return false; } - protected void addSelectedAssignmentsPerformed(AjaxRequestTarget target, List newAssignmentsList){ + protected void addSelectedAssignmentsPerformed(AjaxRequestTarget target, List newAssignmentsList) { if (CollectionUtils.isEmpty(newAssignmentsList)) { warn(getParentPage().getString("AssignmentTablePanel.message.noAssignmentSelected")); target.add(getPageBase().getFeedbackPanel()); @@ -627,7 +623,6 @@ protected void addSelectedAssignmentsPerformed(AjaxRequestTarget target, List createMultivalueContainerDetailsPanel(ListItem> item) { - if (isAssignmentsLimitReached()){ + if (isAssignmentsLimitReached()) { item.getModelObject().setReadOnly(true, true); - } else if (item.getModelObject().isReadOnly()){ + } else if (item.getModelObject().isReadOnly()) { item.getModelObject().setReadOnly(false, true); } - return new MultivalueContainerDetailsPanel(MultivalueContainerListPanelWithDetailsPanel.ID_ITEM_DETAILS, item.getModel()) { + return new MultivalueContainerDetailsPanel(MultivalueContainerListPanelWithDetailsPanel.ID_ITEM_DETAILS, item.getModel()) { private static final long serialVersionUID = 1L; @Override - protected ItemVisibility getBasicTabVisibity(ItemWrapper itemWrapper) { + protected ItemVisibility getBasicTabVisibity(ItemWrapper itemWrapper) { return AssignmentPanel.this.getContainerVisibility(itemWrapper); } @@ -683,7 +678,7 @@ protected IModel getKindIntentLabelModel() { }; } - protected Panel getBasicContainerPanel(String idPanel, IModel> model) { + protected Panel getBasicContainerPanel(String idPanel, IModel> model) { ItemPanelSettings settings = new ItemPanelSettingsBuilder() .visibilityHandler(this::getContainerVisibility) .editabilityHandler(this::getContainerReadability) @@ -691,11 +686,11 @@ protected Panel getBasicContainerPanel(String idPanel, IModel wrapper) { + protected boolean getContainerReadability(ItemWrapper wrapper) { return true; } - protected ItemVisibility getContainerVisibility(ItemWrapper wrapper) { + protected ItemVisibility getContainerVisibility(ItemWrapper wrapper) { if (QNameUtil.match(ActivationType.COMPLEX_TYPE, wrapper.getTypeName())) { return ItemVisibility.AUTO; } @@ -703,11 +698,11 @@ protected ItemVisibility getContainerVisibility(ItemWrapper wrapper) { return ItemVisibility.AUTO; } - if (ItemPath.create(AssignmentHolderType.F_ASSIGNMENT, AssignmentType.F_TARGET_REF).equivalent(wrapper.getPath().namedSegmentsOnly())){ + if (ItemPath.create(AssignmentHolderType.F_ASSIGNMENT, AssignmentType.F_TARGET_REF).equivalent(wrapper.getPath().namedSegmentsOnly())) { return ItemVisibility.HIDDEN; } - if (ItemPath.create(AbstractRoleType.F_INDUCEMENT, AssignmentType.F_TARGET_REF).equivalent(wrapper.getPath().namedSegmentsOnly())){ + if (ItemPath.create(AbstractRoleType.F_INDUCEMENT, AssignmentType.F_TARGET_REF).equivalent(wrapper.getPath().namedSegmentsOnly())) { return ItemVisibility.HIDDEN; } @@ -757,11 +752,10 @@ protected ItemVisibility getContainerVisibility(ItemWrapper wrapper) { return ItemVisibility.HIDDEN; } - return getTypedContainerVisibility(wrapper); } - protected ItemVisibility getTypedContainerVisibility(ItemWrapper wrapper) { + protected ItemVisibility getTypedContainerVisibility(ItemWrapper wrapper) { return ItemVisibility.AUTO; } @@ -776,7 +770,7 @@ private QName getRelationForDisplayNamePanel(PrismContainerValueWrapper getKindIntentLabelModelForDisplayNamePanel(PrismContainerValueWrapper modelObject) { AssignmentType assignment = modelObject.getRealValue(); - if (assignment.getConstruction() != null){ + if (assignment.getConstruction() != null) { PrismContainerValueWrapper constructionValue = null; try { PrismContainerWrapper construction = modelObject.findContainer(AssignmentType.F_CONSTRUCTION); @@ -802,11 +796,11 @@ private IModel getKindIntentLabelModelForDisplayNamePanel(PrismContainer return Model.of(); } - private List mergeNewAssignmentTargetTypeLists(List allowedByAssignmentTargetSpecification, List availableTypesList){ - if (CollectionUtils.isEmpty(allowedByAssignmentTargetSpecification)){ + private List mergeNewAssignmentTargetTypeLists(List allowedByAssignmentTargetSpecification, List availableTypesList) { + if (CollectionUtils.isEmpty(allowedByAssignmentTargetSpecification)) { return availableTypesList; } - if (CollectionUtils.isEmpty(availableTypesList)){ + if (CollectionUtils.isEmpty(availableTypesList)) { return availableTypesList; } List mergedList = new ArrayList<>(); @@ -823,7 +817,7 @@ private List mergeNewAssignmentTargetTypeLists(List allowedB } @SuppressWarnings("unchecked") - private IModel getDisplayModel(AssignmentType assignment){ + private IModel getDisplayModel(AssignmentType assignment) { return (IModel) () -> { if (assignment.getTargetRef() != null && assignment.getTargetRef().getOid() != null) { Task task = getPageBase().createSimpleTask("Load target"); @@ -844,7 +838,7 @@ private IModel getDisplayModel(AssignmentType assig } } else if (assignment.getPersonaConstruction() != null) { return (C) assignment.getPersonaConstruction(); - } else if (assignment.getPolicyRule() !=null) { + } else if (assignment.getPolicyRule() != null) { return (C) assignment.getPolicyRule(); } return null; @@ -874,9 +868,9 @@ public InlineMenuItemAction initAction() { }); } - } catch (Exception ex){ + } catch (Exception ex) { LOGGER.error("Couldn't check unassign authorization for the object: {}, {}", obj.getName(), ex.getLocalizedMessage()); - if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_ASSIGN_ACTION_URI)){ + if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_ASSIGN_ACTION_URI)) { menuItems.add(new ButtonInlineMenuItem(createStringResource("PageBase.button.unassign")) { private static final long serialVersionUID = 1L; @@ -934,7 +928,7 @@ public void onClick(AjaxRequestTarget target) { if (targetRef != null && targetRef.getValues() != null && targetRef.getValues().size() > 0) { PrismReferenceValueWrapperImpl refWrapper = targetRef.getValues().get(0); if (!StringUtils.isEmpty(refWrapper.getNewValue().getOid())) { - Class targetClass = ObjectTypes.getObjectTypeFromTypeQName(refWrapper.getRealValue().getType()).getClassDefinition(); + Class targetClass = ObjectTypes.getObjectTypeFromTypeQName(refWrapper.getRealValue().getType()).getClassDefinition(); WebComponentUtil.dispatchToObjectDetailsPage(targetClass, refWrapper.getNewValue().getOid(), AssignmentPanel.this, false); } } @@ -943,7 +937,7 @@ public void onClick(AjaxRequestTarget target) { } @Override - public boolean isHeaderMenuItem(){ + public boolean isHeaderMenuItem() { return false; } }); @@ -980,25 +974,25 @@ protected boolean isAssignmentsLimitReached() { @SuppressWarnings("deprecation") protected boolean isAssignmentsLimitReached(int selectedAssignmentsCount, boolean actionPerformed) { - if (assignmentsRequestsLimit < 0){ + if (assignmentsRequestsLimit < 0) { return false; } int changedItems = 0; List> assignmentsList = getModelObject().getValues(); - for (PrismContainerValueWrapper assignment : assignmentsList){ - if (assignment.hasChanged()){ + for (PrismContainerValueWrapper assignment : assignmentsList) { + if (assignment.hasChanged()) { changedItems++; } } return actionPerformed ? (changedItems + selectedAssignmentsCount) > assignmentsRequestsLimit : - (changedItems + selectedAssignmentsCount) >= assignmentsRequestsLimit; + (changedItems + selectedAssignmentsCount) >= assignmentsRequestsLimit; } - protected boolean isInducement(){ + protected boolean isInducement() { return getModelObject() != null && getModelObject().getPath().containsNameExactly(AbstractRoleType.F_INDUCEMENT); } - protected ObjectFilter getSubtypeFilter(){ + protected ObjectFilter getSubtypeFilter() { return null; } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionAssociationPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionAssociationPanel.java index 9cca088d9b5..53e19902952 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionAssociationPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionAssociationPanel.java @@ -1,20 +1,34 @@ /* - * Copyright (c) 2015-2018 Evolveum and contributors - *

+ * Copyright (C) 2015-2020 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.web.component.assignment; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import javax.xml.namespace.QName; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.LoadableDetachableModel; +import org.apache.wicket.model.Model; + import com.evolveum.midpoint.common.refinery.RefinedAssociationDefinition; import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.component.ObjectBrowserPanel; import com.evolveum.midpoint.gui.api.model.LoadableModel; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; -import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; -import com.evolveum.midpoint.prism.*; +import com.evolveum.midpoint.prism.PrismContainerValue; +import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.path.ItemName; import com.evolveum.midpoint.prism.query.ObjectFilter; import com.evolveum.midpoint.prism.util.ItemPathTypeUtil; @@ -24,19 +38,10 @@ import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.form.multivalue.GenericMultiValueLabelEditPanel; -import com.evolveum.midpoint.web.component.prism.*; +import com.evolveum.midpoint.web.component.prism.ValueStatus; import com.evolveum.midpoint.web.util.ExpressionUtil; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import com.evolveum.prism.xml.ns._public.types_3.ItemPathType; -import org.apache.commons.collections.CollectionUtils; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.markup.html.list.ListItem; -import org.apache.wicket.markup.html.list.ListView; -import org.apache.wicket.model.*; - -import javax.xml.namespace.QName; -import java.util.*; - /** * Created by honchar. @@ -59,7 +64,6 @@ public class ConstructionAssociationPanel extends BasePanel> resourceModel; private LoadableDetachableModel> refinedAssociationDefinitionsModel; - public ConstructionAssociationPanel(String id, IModel> model) { super(id, model); } @@ -93,7 +97,7 @@ protected PrismObject load() { @Override protected List load() { ConstructionType construction = getModelObject().getItem().getRealValue(); - if (construction == null){ + if (construction == null) { return new ArrayList<>(); } return WebComponentUtil.getRefinedAssociationDefinition(resourceModel.getObject().asObjectable(), construction.getKind(), @@ -123,7 +127,7 @@ protected void addValuePerformed(AjaxRequestTarget target) { addNewShadowRefValuePerformed(target, item.getModelObject()); } - protected void addFirstPerformed(AjaxRequestTarget target){ + protected void addFirstPerformed(AjaxRequestTarget target) { addNewShadowRefValuePerformed(target, item.getModelObject()); } @@ -131,10 +135,11 @@ protected void addFirstPerformed(AjaxRequestTarget target){ protected IModel createTextModel(final IModel model) { return new IModel() { private static final long serialVersionUID = 1L; + @Override public String getObject() { ObjectReferenceType obj = model.getObject(); - if (obj == null){ + if (obj == null) { return ""; } return WebComponentUtil.getDisplayNameOrName(obj, getPageBase(), OPERATION_LOAD_SHADOW_DISPLAY_NAME); @@ -168,13 +173,12 @@ protected void removeValuePerformed(AjaxRequestTarget target, ListItem load() { PrismContainerWrapper associationWrapper = getModelObject().findContainer(ConstructionType.F_ASSOCIATION); associationWrapper.getValues().forEach(associationValueWrapper -> { - if (ValueStatus.DELETED.equals(((PrismContainerValueWrapper) associationValueWrapper).getStatus())) { + if (ValueStatus.DELETED.equals(associationValueWrapper.getStatus())) { return; } - PrismContainerValue associationValue = (PrismContainerValue)((PrismContainerValueWrapper) associationValueWrapper).getNewValue(); + PrismContainerValue associationValue = ((PrismContainerValueWrapper) associationValueWrapper).getNewValue(); ResourceObjectAssociationType assoc = (ResourceObjectAssociationType) associationValue.asContainerable(); if (assoc.getOutbound() == null || assoc.getOutbound().getExpression() == null || ExpressionUtil.getShadowRefValue(assoc.getOutbound().getExpression(), @@ -216,8 +220,8 @@ public List load() { } }); return shadowsList; - } catch (SchemaException ex){ - + } catch (SchemaException ex) { + // nothing? } return null; } @@ -232,7 +236,7 @@ private List getAssociationsShadowRefs(boolean compareName, if (ValueStatus.DELETED.equals(((PrismContainerValueWrapper) associationValueWrapper).getStatus())) { return; } - PrismContainerValue associationValue = (PrismContainerValue) ((PrismContainerValueWrapper) associationValueWrapper).getNewValue(); + PrismContainerValue associationValue = ((PrismContainerValueWrapper) associationValueWrapper).getNewValue(); ResourceObjectAssociationType assoc = (ResourceObjectAssociationType) associationValue.asContainerable(); if (assoc == null || assoc.getOutbound() == null || assoc.getOutbound().getExpression() == null || ExpressionUtil.getShadowRefValue(assoc.getOutbound().getExpression(), getPageBase().getPrismContext()) == null) { @@ -247,20 +251,20 @@ private List getAssociationsShadowRefs(boolean compareName, shadowsList.addAll(ExpressionUtil.getShadowRefValue(assoc.getOutbound().getExpression(), getPageBase().getPrismContext())); } }); - } catch (SchemaException ex){ - + } catch (SchemaException ex) { + // nothing? } return shadowsList; } - private void addNewShadowRefValuePerformed(AjaxRequestTarget target, RefinedAssociationDefinition def){ + private void addNewShadowRefValuePerformed(AjaxRequestTarget target, RefinedAssociationDefinition def) { ObjectFilter filter = WebComponentUtil.createAssociationShadowRefFilter(def, getPageBase().getPrismContext(), resourceModel.getObject().getOid()); ObjectBrowserPanel objectBrowserPanel = new ObjectBrowserPanel( - getPageBase().getMainPopupBodyId(), ShadowType.class, Arrays.asList(ShadowType.COMPLEX_TYPE), - false, getPageBase(), - filter) { + getPageBase().getMainPopupBodyId(), ShadowType.class, + Collections.singletonList(ShadowType.COMPLEX_TYPE), + false, getPageBase(), filter) { private static final long serialVersionUID = 1L; @Override @@ -270,19 +274,20 @@ protected void onSelectPerformed(AjaxRequestTarget target, ShadowType object) { PrismContainerWrapper constructionContainerWrapper = ConstructionAssociationPanel.this.getModelObject(); PrismContainerWrapper associationWrapper = constructionContainerWrapper.findContainer(ConstructionType.F_ASSOCIATION); List> associationValueList = associationWrapper.getItem().getValues(); - PrismContainerValue associationValue = null; - if (CollectionUtils.isEmpty(associationValueList)){ + PrismContainerValue associationValue; + if (CollectionUtils.isEmpty(associationValueList)) { associationValue = associationWrapper.getItem().createNewValue(); } else { associationValue = associationValueList.get(0); } ItemName associationRefPath = def.getName(); - ((ResourceObjectAssociationType) associationValue.asContainerable()) + associationValue.asContainerable() .setRef(new ItemPathType(associationRefPath)); - ExpressionType newAssociationExpression = ((ResourceObjectAssociationType) associationValue.asContainerable()).beginOutbound().beginExpression(); - ExpressionUtil.addShadowRefEvaluatorValue(newAssociationExpression, object.getOid(), - getPageBase().getPrismContext()); - } catch (SchemaException ex){ + ExpressionType newAssociationExpression = + associationValue.asContainerable().beginOutbound().beginExpression(); + ExpressionUtil.addShadowRefEvaluatorValue( + newAssociationExpression, object.getOid(), getPageBase().getPrismContext()); + } catch (SchemaException ex) { LOGGER.error("Couldn't find association container: {}", ex.getLocalizedMessage()); } target.add(ConstructionAssociationPanel.this); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementsPanel.java index 7ccfe652378..e8054aee1ee 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementsPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementsPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Evolveum and contributors + * Copyright (C) 2018-2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -7,12 +7,10 @@ package com.evolveum.midpoint.web.component.assignment; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; -import com.evolveum.midpoint.prism.*; - import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -24,13 +22,14 @@ import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.impl.component.data.column.AbstractItemWrapperColumn.ColumnType; import com.evolveum.midpoint.gui.impl.component.data.column.PrismContainerWrapperColumn; import com.evolveum.midpoint.gui.impl.component.data.column.PrismPropertyWrapperColumn; -import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; import com.evolveum.midpoint.gui.impl.session.ObjectTabStorage; +import com.evolveum.midpoint.prism.*; import com.evolveum.midpoint.prism.delta.ItemDelta; import com.evolveum.midpoint.prism.delta.ObjectDelta; import com.evolveum.midpoint.prism.path.ItemPath; @@ -67,7 +66,7 @@ public class InducedEntitlementsPanel extends InducementsPanel { private MidpointFormValidator validator; - public InducedEntitlementsPanel(String id, IModel> inducementContainerWrapperModel){ + public InducedEntitlementsPanel(String id, IModel> inducementContainerWrapperModel) { super(id, inducementContainerWrapperModel); createValidator(); @@ -76,62 +75,63 @@ public InducedEntitlementsPanel(String id, IModel validateObject(PrismObject object, Collection> deltas) { - List errors = new ArrayList<>(); - for (ObjectDelta delta : deltas) { - if (AbstractRoleType.class.isAssignableFrom(delta.getObjectTypeClass())) { - switch (delta.getChangeType()) { - case MODIFY: - Collection> itemDeltas = delta.getModifications(); - for (ItemDelta itemDelta : itemDeltas) { - if (itemDelta.getPath().equivalent(AbstractRoleType.F_INDUCEMENT) && itemDelta.getValuesToAdd() != null) { - for (PrismValue value : itemDelta.getValuesToAdd()) { - errors.addAll(validateInducement(value.getRealValue())); - } + private static final long serialVersionUID = 1L; + + @Override + public Collection validateObject(PrismObject object, Collection> deltas) { + List errors = new ArrayList<>(); + for (ObjectDelta delta : deltas) { + if (AbstractRoleType.class.isAssignableFrom(delta.getObjectTypeClass())) { + switch (delta.getChangeType()) { + case MODIFY: + Collection> itemDeltas = delta.getModifications(); + for (ItemDelta itemDelta : itemDeltas) { + if (itemDelta.getPath().equivalent(AbstractRoleType.F_INDUCEMENT) && itemDelta.getValuesToAdd() != null) { + for (PrismValue value : itemDelta.getValuesToAdd()) { + errors.addAll(validateInducement(value.getRealValue())); } } - break; - case ADD: - if (delta != null && delta.getObjectToAdd().asObjectable() != null) { - for (AssignmentType assignment : ((AbstractRoleType)object.asObjectable()).getInducement()) { - errors.addAll(validateInducement(assignment)); - } + } + break; + case ADD: + if (delta != null && delta.getObjectToAdd().asObjectable() != null) { + for (AssignmentType assignment : ((AbstractRoleType) object.asObjectable()).getInducement()) { + errors.addAll(validateInducement(assignment)); } - break; - } + } + break; } } - return errors; } + return errors; + } - private Collection validateInducement(AssignmentType assignment) { - List errors = new ArrayList<>(); - //TODO impelemnt findContainer(ItemPath) - com.evolveum.midpoint.prism.Item, PrismContainerDefinition> association = assignment.asPrismContainerValue().findItem(ItemPath.create(AssignmentType.F_CONSTRUCTION, ConstructionType.F_ASSOCIATION)); - if (association != null && !association.getValues().isEmpty()) { - for (PrismContainerValue associationValue : association.getValues()){ - PrismContainer outbound = associationValue.findContainer(ResourceObjectAssociationType.F_OUTBOUND); - if (outbound == null || outbound.getValues().isEmpty()){ - SimpleValidationError error = new SimpleValidationError(); - error.setMessage(getPageBase().createStringResource("InducedEntitlementsPanel.validator.message").getString()); - ItemPathType path = new ItemPathType(); - path.setItemPath(ItemPath.create(AbstractRoleType.F_INDUCEMENT, AssignmentType.F_CONSTRUCTION, ConstructionType.F_ASSOCIATION, ResourceObjectAssociationType.F_OUTBOUND)); - error.setAttribute(path); - errors.add(error); - } + private Collection validateInducement(AssignmentType assignment) { + List errors = new ArrayList<>(); + //TODO impelemnt findContainer(ItemPath) + com.evolveum.midpoint.prism.Item, PrismContainerDefinition> association = + assignment.asPrismContainerValue().findItem(ItemPath.create(AssignmentType.F_CONSTRUCTION, ConstructionType.F_ASSOCIATION)); + if (association != null && !association.getValues().isEmpty()) { + for (PrismContainerValue associationValue : association.getValues()) { + PrismContainer outbound = associationValue.findContainer(ResourceObjectAssociationType.F_OUTBOUND); + if (outbound == null || outbound.getValues().isEmpty()) { + SimpleValidationError error = new SimpleValidationError(); + error.setMessage(getPageBase().createStringResource("InducedEntitlementsPanel.validator.message").getString()); + ItemPathType path = new ItemPathType(); + path.setItemPath(ItemPath.create(AbstractRoleType.F_INDUCEMENT, AssignmentType.F_CONSTRUCTION, ConstructionType.F_ASSOCIATION, ResourceObjectAssociationType.F_OUTBOUND)); + error.setAttribute(path); + errors.add(error); } } - return errors; } + return errors; + } - @Override - public Collection validateAssignment(AssignmentType assignment) { - return new ArrayList<>(); - } - }; + @Override + public Collection validateAssignment(AssignmentType assignment) { + return new ArrayList<>(); + } + }; } @Override @@ -157,11 +157,10 @@ protected UserProfileStorage.TableId getTableId() { return UserProfileStorage.TableId.INDUCED_ENTITLEMENTS_TAB_TABLE; } - private ObjectTabStorage getInducedEntitlementsTabStorage(){ + private ObjectTabStorage getInducedEntitlementsTabStorage() { return getParentPage().getSessionStorage().getInducedEntitlementsTabStorage(); } - @Override protected List, String>> initColumns() { List, String>> columns = new ArrayList<>(); @@ -172,25 +171,25 @@ protected List, String>> init columns.add(new PrismContainerWrapperColumn<>(getModel(), ItemPath.create(AssignmentType.F_CONSTRUCTION, ConstructionType.F_ASSOCIATION), getPageBase())); - columns.add(new AbstractColumn, String>(createStringResource("InducedEntitlements.value")){ + columns.add(new AbstractColumn, String>(createStringResource("InducedEntitlements.value")) { private static final long serialVersionUID = 1L; @Override public void populateItem(Item>> item, String componentId, - final IModel> rowModel) { + final IModel> rowModel) { - ExpressionType expressionType = getExpressionFromRowModel(rowModel, false); - List shadowsList = WebComponentUtil.loadReferencedObjectList(ExpressionUtil.getShadowRefValue( - expressionType, - InducedEntitlementsPanel.this.getPageBase().getPrismContext()), - OPERATION_LOAD_SHADOW_OBJECT, InducedEntitlementsPanel.this.getPageBase()); + ExpressionType expressionType = getExpressionFromRowModel(rowModel, false); + List shadowsList = WebComponentUtil.loadReferencedObjectList(ExpressionUtil.getShadowRefValue( + expressionType, + InducedEntitlementsPanel.this.getPageBase().getPrismContext()), + OPERATION_LOAD_SHADOW_OBJECT, InducedEntitlementsPanel.this.getPageBase()); - MultiValueChoosePanel valuesPanel = new MultiValueChoosePanel(componentId, - Model.ofList(shadowsList), Arrays.asList(ShadowType.class), false){ + MultiValueChoosePanel valuesPanel = new MultiValueChoosePanel(componentId, + Model.ofList(shadowsList), Collections.singletonList(ShadowType.class), false) { private static final long serialVersionUID = 1L; @Override - protected ObjectFilter getCustomFilter(){ + protected ObjectFilter getCustomFilter() { ConstructionType construction = rowModel.getObject().getRealValue().getConstruction(); return WebComponentUtil.getShadowTypeFilterForAssociation(construction, OPERATION_LOAD_RESOURCE_OBJECT, InducedEntitlementsPanel.this.getPageBase()); @@ -198,7 +197,7 @@ protected ObjectFilter getCustomFilter(){ @Override protected void removePerformedHook(AjaxRequestTarget target, ShadowType shadow) { - if (shadow != null && StringUtils.isNotEmpty(shadow.getOid())){ + if (shadow != null && StringUtils.isNotEmpty(shadow.getOid())) { ExpressionType expression = WebComponentUtil.getAssociationExpression(rowModel.getObject(), getPageBase()); ExpressionUtil.removeShadowRefEvaluatorValue(expression, shadow.getOid(), getPageBase().getPrismContext()); } @@ -207,7 +206,7 @@ protected void removePerformedHook(AjaxRequestTarget target, ShadowType shadow) @Override protected void choosePerformedHook(AjaxRequestTarget target, List selectedList) { ShadowType shadow = selectedList != null && selectedList.size() > 0 ? selectedList.get(0) : null; - if (shadow != null && StringUtils.isNotEmpty(shadow.getOid())){ + if (shadow != null && StringUtils.isNotEmpty(shadow.getOid())) { ExpressionType expression = getExpressionFromRowModel(rowModel, true); ExpressionUtil.addShadowRefEvaluatorValue(expression, shadow.getOid(), InducedEntitlementsPanel.this.getPageBase().getPrismContext()); @@ -223,7 +222,6 @@ protected void selectPerformed(AjaxRequestTarget target, List chosen valuesPanel.setOutputMarkupId(true); item.add(valuesPanel); - } }); @@ -268,37 +266,37 @@ private ConstructionAssociationPanel getConstructionAssociationPanel(String idPa return constructionDetailsPanel; } - protected List getObjectTypesList(){ - return Arrays.asList(ObjectTypes.RESOURCE); + protected List getObjectTypesList() { + return Collections.singletonList(ObjectTypes.RESOURCE); } @Override - protected boolean isEntitlementAssignment(){ + protected boolean isEntitlementAssignment() { return true; } @Override protected List> customPostSearch(List> assignments) { List> filteredAssignments = new ArrayList<>(); - if (assignments == null){ + if (assignments == null) { return filteredAssignments; } assignments.forEach(assignmentWrapper -> { - AssignmentType assignment = assignmentWrapper.getRealValue(); - if (assignment.getConstruction() != null && assignment.getConstruction().getAssociation() != null) { - List associations = assignment.getConstruction().getAssociation(); - if (associations.size() == 0 && ValueStatus.ADDED.equals(assignmentWrapper.getStatus())){ - filteredAssignments.add(assignmentWrapper); - return; - } - associations.forEach(association -> { - if (!filteredAssignments.contains(assignmentWrapper)) { - if (association.getRef() != null && association.getRef().getItemPath() != null && - !association.getRef().getItemPath().isEmpty()){ - filteredAssignments.add(assignmentWrapper); - } + AssignmentType assignment = assignmentWrapper.getRealValue(); + if (assignment.getConstruction() != null && assignment.getConstruction().getAssociation() != null) { + List associations = assignment.getConstruction().getAssociation(); + if (associations.size() == 0 && ValueStatus.ADDED.equals(assignmentWrapper.getStatus())) { + filteredAssignments.add(assignmentWrapper); + return; + } + associations.forEach(association -> { + if (!filteredAssignments.contains(assignmentWrapper)) { + if (association.getRef() != null && association.getRef().getItemPath() != null && + !association.getRef().getItemPath().isEmpty()) { + filteredAssignments.add(assignmentWrapper); } - }); + } + }); } }); return filteredAssignments; @@ -309,7 +307,7 @@ private ExpressionType getExpressionFromRowModel(IModel associationWrapper = assignment.findContainer(ItemPath.create(AssignmentType.F_CONSTRUCTION, ConstructionType.F_ASSOCIATION)); List> associationValueList = associationWrapper.getItem().getValues(); - PrismContainerValue associationValue = null; + PrismContainerValue associationValue; if (CollectionUtils.isEmpty(associationValueList)) { if (createIfNotExist) { associationValue = associationWrapper.createValue(); @@ -322,15 +320,15 @@ private ExpressionType getExpressionFromRowModel(IModel model/chosen object types */ public class MultiValueChoosePanel extends BasePanel> { - private static final long serialVersionUID = 1L; private static final Trace LOGGER = TraceManager.getTrace(MultiValueChoosePanel.class); @@ -58,14 +53,10 @@ public class MultiValueChoosePanel extends BasePanel typeQNames; - private Class defaultType; - - private Collection> types; + private final Class defaultType; + private final Collection> types; public MultiValueChoosePanel(String id, IModel> value, Collection> types) { this(id, value, null, false, types); @@ -101,7 +92,7 @@ protected void onInitialize() { // initialize types when component is in page and getPageBase() has meaning this.typeQNames = WebComponentUtil.resolveObjectTypesToQNames(types, getPageBase().getPrismContext()); - typeQNames.sort((t1, t2) -> t1.getLocalPart().compareTo(t2.getLocalPart())); + typeQNames.sort(Comparator.comparing(QName::getLocalPart)); } private void initLayout(final IModel> chosenValues, final List filterValues, @@ -168,7 +159,7 @@ protected ObjectQuery createChooseQuery(List values) { /** * @return css class for off-setting other values (not first, left to the - * first there is a label) + * first there is a label) */ protected String getOffsetClass() { return "col-md-offset-4"; @@ -182,9 +173,9 @@ protected IModel createTextModel(final IModel model) { public String getObject() { return ofNullable(model.getObject()) - .map(ObjectType::getName) - .map(PolyString::getOrig) - .orElse(null); + .map(ObjectType::getName) + .map(PolyString::getOrig) + .orElse(null); } }; } @@ -209,17 +200,15 @@ protected void onSelectPerformed(AjaxRequestTarget target, T focus) { if (!multiselect) { // asList alone is not modifiable, you can't add/remove // elements later - selectPerformed(target, new ArrayList<>(asList(focus))); + selectPerformed(target, new ArrayList<>(Collections.singletonList(focus))); } } - }; getPageBase().showMainPopup(objectBrowserPanel, target); - } - protected ObjectFilter getCustomFilter(){ + protected ObjectFilter getCustomFilter() { return null; } @@ -232,7 +221,7 @@ protected void selectPerformed(AjaxRequestTarget target, List chosenValues) { protected void addPerformed(AjaxRequestTarget target, List addedValues) { List modelList = getModelObject(); - if(modelList == null) { + if (modelList == null) { modelList = new ArrayList<>(); } addedValues.removeAll(modelList); // add values not already in @@ -243,8 +232,8 @@ protected void addPerformed(AjaxRequestTarget target, List addedValues) { target.add(MultiValueChoosePanel.this); } - public WebMarkupContainer getTextWrapperComponent(){ - return (WebMarkupContainer)get(ID_TEXT_WRAPPER); + public WebMarkupContainer getTextWrapperComponent() { + return (WebMarkupContainer) get(ID_TEXT_WRAPPER); } protected void initButtons(ListItem item, WebMarkupContainer parent) { @@ -269,7 +258,7 @@ public boolean isVisible() { buttonGroup.add(remove); parent.add(buttonGroup); -} + } private boolean isRemoveButtonVisible() { return true; @@ -297,7 +286,7 @@ protected void choosePerformedHook(AjaxRequestTarget target, List selected) { private Class userOrFirst(Collection> types) { // ugly hack to select UserType as default if available - if(types == null) { + if (types == null) { return null; } return types.stream() diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/form/multivalue/MultiValueObjectChoosePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/form/multivalue/MultiValueObjectChoosePanel.java index 5bffaa93f4e..394ce710a4a 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/form/multivalue/MultiValueObjectChoosePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/form/multivalue/MultiValueObjectChoosePanel.java @@ -1,19 +1,14 @@ /* - * Copyright (c) 2010-2019 Evolveum and contributors + * Copyright (C) 2010-2020 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.web.component.form.multivalue; -import com.evolveum.midpoint.gui.api.component.BasePanel; -import com.evolveum.midpoint.prism.Referencable; -import com.evolveum.midpoint.prism.query.ObjectFilter; -import com.evolveum.midpoint.web.component.AjaxButton; -import com.evolveum.midpoint.web.component.form.ValueChoosePanel; -import com.evolveum.midpoint.web.component.util.EnableBehaviour; -import com.evolveum.midpoint.web.component.util.VisibleBehaviour; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; +import java.util.List; +import javax.xml.namespace.QName; + import org.apache.commons.collections.CollectionUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; @@ -22,14 +17,20 @@ import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.model.IModel; -import javax.xml.namespace.QName; -import java.util.ArrayList; -import java.util.List; +import com.evolveum.midpoint.gui.api.component.BasePanel; +import com.evolveum.midpoint.prism.Referencable; +import com.evolveum.midpoint.prism.query.ObjectFilter; +import com.evolveum.midpoint.web.component.AjaxButton; +import com.evolveum.midpoint.web.component.form.ValueChoosePanel; +import com.evolveum.midpoint.web.component.util.EnableBehaviour; +import com.evolveum.midpoint.web.component.util.VisibleBehaviour; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; /** * Created by honchar */ -public abstract class MultiValueObjectChoosePanel extends BasePanel>{ +public abstract class MultiValueObjectChoosePanel extends BasePanel> { + private static final long serialVersionUID = 1L; private static final String ID_EMPTY_MODEL_CONTAINER = "emptyModelContainer"; @@ -45,22 +46,22 @@ public abstract class MultiValueObjectChoosePanel extend private boolean emptyObjectPanelDisplay = false; - public MultiValueObjectChoosePanel(String id, IModel> referenceListModel){ + public MultiValueObjectChoosePanel(String id, IModel> referenceListModel) { super(id, referenceListModel); } @Override - protected void onInitialize(){ + protected void onInitialize() { super.onInitialize(); initLayout(); } - private void initLayout(){ + private void initLayout() { initEmptyModelInputPanel(); initMultiValuesListPanel(); } - private void initEmptyModelInputPanel(){ + private void initEmptyModelInputPanel() { WebMarkupContainer emptyModelContainer = new WebMarkupContainer(ID_EMPTY_MODEL_CONTAINER); emptyModelContainer.setOutputMarkupId(true); emptyModelContainer.add(new VisibleBehaviour(() -> isEmptyModel() || emptyObjectPanelDisplay)); @@ -71,7 +72,7 @@ private void initEmptyModelInputPanel(){ public R getObject() { return null; } - }){ + }) { private static final long serialVersionUID = 1L; @Override @@ -123,80 +124,80 @@ public void onClick(AjaxRequestTarget target) { buttonsWhenEmptyContainer.add(removeWhenEmptyButton); } - private void initMultiValuesListPanel(){ - ListView multiValuesPanel = new ListView(ID_MULTI_SHADOW_REF_VALUE, MultiValueObjectChoosePanel.this.getModel()){ + private void initMultiValuesListPanel() { + ListView multiValuesPanel = new ListView(ID_MULTI_SHADOW_REF_VALUE, MultiValueObjectChoosePanel.this.getModel()) { private static final long serialVersionUID = 1L; - @Override - protected void populateItem(final ListItem item) { - ValueChoosePanel valueChoosePanel = new ValueChoosePanel(ID_REFERENCE_VALUE_INPUT, item.getModel()){ - private static final long serialVersionUID = 1L; - - @Override - protected ObjectFilter createCustomFilter() { - return MultiValueObjectChoosePanel.this.createCustomFilter(); - } - - @Override - public List getSupportedTypes() { - return MultiValueObjectChoosePanel.this.getSupportedTypes(); - } - - @Override - protected void choosePerformedHook(AjaxRequestTarget target, O object) { - chooseObjectPerformed(target, object); - } - }; - valueChoosePanel.setOutputMarkupId(true); - item.add(valueChoosePanel); - - WebMarkupContainer buttonsContainer = new WebMarkupContainer(ID_BUTTONS_CONTAINER); - buttonsContainer.setOutputMarkupId(true); - item.add(buttonsContainer); - - AjaxButton addButton = new AjaxButton(ID_ADD_BUTTON) { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - emptyObjectPanelDisplay = true; - target.add(MultiValueObjectChoosePanel.this); + @Override + protected void populateItem(final ListItem item) { + ValueChoosePanel valueChoosePanel = new ValueChoosePanel(ID_REFERENCE_VALUE_INPUT, item.getModel()) { + private static final long serialVersionUID = 1L; + + @Override + protected ObjectFilter createCustomFilter() { + return MultiValueObjectChoosePanel.this.createCustomFilter(); + } + + @Override + public List getSupportedTypes() { + return MultiValueObjectChoosePanel.this.getSupportedTypes(); + } + + @Override + protected void choosePerformedHook(AjaxRequestTarget target, O object) { + chooseObjectPerformed(target, object); + } + }; + valueChoosePanel.setOutputMarkupId(true); + item.add(valueChoosePanel); + + WebMarkupContainer buttonsContainer = new WebMarkupContainer(ID_BUTTONS_CONTAINER); + buttonsContainer.setOutputMarkupId(true); + item.add(buttonsContainer); + + AjaxButton addButton = new AjaxButton(ID_ADD_BUTTON) { + private static final long serialVersionUID = 1L; + + @Override + public void onClick(AjaxRequestTarget target) { + emptyObjectPanelDisplay = true; + target.add(MultiValueObjectChoosePanel.this); // MultiValueObjectChoosePanel.this.getModelObject().add(null); - } - }; - addButton.setOutputMarkupId(true); - addButton.add(new EnableBehaviour(() -> item.getModelObject() != null)); - buttonsContainer.add(addButton); - - AjaxLink removeButton = new AjaxLink(ID_REMOVE_BUTTON) { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - MultiValueObjectChoosePanel.this.getModelObject().remove(item.getModelObject()); - target.add(MultiValueObjectChoosePanel.this); - - } - }; - removeButton.setOutputMarkupId(true); - removeButton.add(new EnableBehaviour(() -> item.getModelObject() != null)); - buttonsContainer.add(removeButton); - } + } + }; + addButton.setOutputMarkupId(true); + addButton.add(new EnableBehaviour(() -> item.getModelObject() != null)); + buttonsContainer.add(addButton); + + AjaxLink removeButton = new AjaxLink(ID_REMOVE_BUTTON) { + private static final long serialVersionUID = 1L; + + @Override + public void onClick(AjaxRequestTarget target) { + MultiValueObjectChoosePanel.this.getModelObject().remove(item.getModelObject()); + target.add(MultiValueObjectChoosePanel.this); + + } + }; + removeButton.setOutputMarkupId(true); + removeButton.add(new EnableBehaviour(() -> item.getModelObject() != null)); + buttonsContainer.add(removeButton); + } }; multiValuesPanel.add(new VisibleBehaviour(() -> !isEmptyModel())); multiValuesPanel.setOutputMarkupId(true); add(multiValuesPanel); } - private boolean isEmptyModel(){ + private boolean isEmptyModel() { return CollectionUtils.isEmpty(getModelObject()); } - protected ObjectFilter createCustomFilter(){ + protected ObjectFilter createCustomFilter() { return null; } - protected void chooseObjectPerformed(AjaxRequestTarget target, O object){ + protected void chooseObjectPerformed(AjaxRequestTarget target, O object) { } protected abstract List getSupportedTypes(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/RelationDropDownChoicePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/RelationDropDownChoicePanel.java index a7a02c08d2c..c60769ea51b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/RelationDropDownChoicePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/RelationDropDownChoicePanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 Evolveum and contributors + * Copyright (C) 2010-2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -7,16 +7,12 @@ package com.evolveum.midpoint.web.component.input; import java.util.List; - import javax.xml.namespace.QName; -import com.evolveum.midpoint.web.component.util.EnableBehaviour; - import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.OnChangeAjaxBehavior; -import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.IChoiceRenderer; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; @@ -25,16 +21,9 @@ import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.prism.PrismConstants; -import com.evolveum.midpoint.prism.util.PolyStringUtils; -import com.evolveum.midpoint.schema.result.OperationResult; -import com.evolveum.midpoint.schema.util.ObjectTypeUtil; -import com.evolveum.midpoint.util.logging.Trace; -import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.form.DropDownFormGroup; +import com.evolveum.midpoint.web.component.util.EnableBehaviour; import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnChangeAjaxFormUpdatingBehavior; -import com.evolveum.midpoint.xml.ns._public.common.common_3.DisplayType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.RelationDefinitionType; -import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; /** * Created by honchar @@ -42,20 +31,12 @@ public class RelationDropDownChoicePanel extends BasePanel { private static final long serialVersionUID = 1L; - private static final String DOT_CLASS = RelationDropDownChoicePanel.class.getName() + "."; - private static final String OPERATION_LOAD_RELATION_DEFINITIONS = DOT_CLASS + "loadRelationDefinitions"; - private static final Trace LOGGER = TraceManager.getTrace(RelationDropDownChoicePanel.class); - private static final String ID_INPUT = "input"; - private List supportedRelations; - private boolean allowNull; + private final List supportedRelations; + private final boolean allowNull; private QName defaultRelation; -// public RelationDropDownChoicePanel(String id, IModel model, AreaCategoryType category) { -// this(id, model, category, false); -// } - public RelationDropDownChoicePanel(String id, QName defaultRelation, List supportedRelations, boolean allowNull) { super(id); this.supportedRelations = supportedRelations; @@ -64,13 +45,13 @@ public RelationDropDownChoicePanel(String id, QName defaultRelation, List } @Override - protected void onInitialize(){ + protected void onInitialize() { super.onInitialize(); ListModel supportedRelationsModel = new ListModel<>(supportedRelations); if (!allowNull && defaultRelation == null) { - if (CollectionUtils.isNotEmpty(supportedRelations)){ - List sortedRelations = WebComponentUtil.sortDropDownChoices(supportedRelationsModel, getRenderer()); + if (CollectionUtils.isNotEmpty(supportedRelations)) { + List sortedRelations = WebComponentUtil.sortDropDownChoices(supportedRelationsModel, getRenderer()); defaultRelation = sortedRelations.get(0); } else { defaultRelation = PrismConstants.Q_ANY; @@ -79,11 +60,11 @@ protected void onInitialize(){ } DropDownFormGroup input = new DropDownFormGroup(ID_INPUT, Model.of(defaultRelation), supportedRelationsModel, getRenderer(), getRelationLabelModel(), "relationDropDownChoicePanel.tooltip.relation", true, "col-md-4", - getRelationLabelModel() == null || StringUtils.isEmpty(getRelationLabelModel().getObject()) ? "" : "col-md-8", !allowNull){ + getRelationLabelModel() == null || StringUtils.isEmpty(getRelationLabelModel().getObject()) ? "" : "col-md-8", !allowNull) { private static final long serialVersionUID = 1L; @Override - protected String getNullValidDisplayValue(){ + protected String getNullValidDisplayValue() { return RelationDropDownChoicePanel.this.getNullValidDisplayValue(); } }; @@ -103,31 +84,31 @@ protected void onUpdate(AjaxRequestTarget target) { setOutputMarkupPlaceholderTag(true); } - protected IChoiceRenderer getRenderer(){ + protected IChoiceRenderer getRenderer() { return WebComponentUtil.getRelationChoicesRenderer(getPageBase()); } - protected boolean isRelationDropDownEnabled(){ + protected boolean isRelationDropDownEnabled() { return true; } - protected IModel getRelationLabelModel(){ + protected IModel getRelationLabelModel() { return createStringResource("relationDropDownChoicePanel.relation"); } - protected void onValueChanged(AjaxRequestTarget target){ + protected void onValueChanged(AjaxRequestTarget target) { } public QName getRelationValue() { QName relationValue = ((DropDownFormGroup) get(ID_INPUT)).getModelObject(); - if (relationValue == null){ + if (relationValue == null) { return PrismConstants.Q_ANY; } else { return relationValue; } } - protected String getNullValidDisplayValue(){ + protected String getNullValidDisplayValue() { return getString("DropDownChoicePanel.empty"); } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/model/operationStatus/ModelOperationStatusDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/model/operationStatus/ModelOperationStatusDto.java index 11890869cf4..41d124fa1c7 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/model/operationStatus/ModelOperationStatusDto.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/model/operationStatus/ModelOperationStatusDto.java @@ -1,12 +1,17 @@ /* - * Copyright (c) 2010-2017 Evolveum and contributors + * Copyright (C) 2010-2020 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.web.component.model.operationStatus; +import static org.apache.commons.collections.CollectionUtils.addIgnoreNull; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + import com.evolveum.midpoint.model.api.ModelInteractionService; import com.evolveum.midpoint.model.api.context.ModelContext; import com.evolveum.midpoint.model.api.context.ModelProjectionContext; @@ -19,16 +24,10 @@ import com.evolveum.midpoint.util.exception.ExpressionEvaluationException; import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.util.exception.SystemException; -import com.evolveum.midpoint.web.component.prism.show.WrapperScene; import com.evolveum.midpoint.web.component.prism.show.SceneDto; +import com.evolveum.midpoint.web.component.prism.show.WrapperScene; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; - -import static org.apache.commons.collections.CollectionUtils.addIgnoreNull; - /** * @author mederly */ @@ -39,7 +38,8 @@ public class ModelOperationStatusDto implements Serializable { public static final String F_FOCUS_NAME = "focusName"; public static final String F_PRIMARY_DELTA = "primaryDelta"; - private ModelState state; + private final ModelState state; + private String focusType; private String focusName; private SceneDto primarySceneDto; @@ -82,7 +82,6 @@ public ModelOperationStatusDto(ModelContext modelContext, ModelInteractionSer } } - public ModelState getState() { return state; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/PreviewChangesTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/PreviewChangesTabPanel.java index 36e7cae3a72..6b0e7edbb9d 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/PreviewChangesTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/PreviewChangesTabPanel.java @@ -1,11 +1,21 @@ /* - * Copyright (c) 2010-2019 Evolveum and contributors + * Copyright (C) 2010-2020 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.web.component.prism.show; +import static org.apache.commons.collections.CollectionUtils.addIgnoreNull; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; + import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.model.api.context.ModelContext; @@ -32,16 +42,6 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; import com.evolveum.midpoint.xml.ns._public.common.common_3.PolicyRuleEnforcerPreviewOutputType; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import static org.apache.commons.collections.CollectionUtils.addIgnoreNull; - /** * Created by kate on 22.8.2018. */ @@ -62,19 +62,19 @@ public class PreviewChangesTabPanel extends BasePanel> contextModel){ + public PreviewChangesTabPanel(String id, IModel> contextModel) { super(id, contextModel); } @Override - protected void onInitialize(){ + protected void onInitialize() { super.onInitialize(); initModels(); initLayout(); } - private void initModels(){ + private void initModels() { final List> primaryDeltas = new ArrayList<>(); final List> secondaryDeltas = new ArrayList<>(); final List primaryScenes; @@ -114,18 +114,8 @@ private void initModels(){ secondaryScenes.size() != 1 ? "PagePreviewChanges.secondaryChangesMore" : "PagePreviewChanges.secondaryChangesOne", secondaryScenes.size()); final SceneDto primarySceneDto = new SceneDto(primaryScene); final SceneDto secondarySceneDto = new SceneDto(secondaryScene); - primaryDeltasModel = new IModel() { - @Override - public SceneDto getObject() { - return primarySceneDto; - } - }; - secondaryDeltasModel = new IModel() { - @Override - public SceneDto getObject() { - return secondarySceneDto; - } - }; + primaryDeltasModel = (IModel) () -> primarySceneDto; + secondaryDeltasModel = (IModel) () -> secondarySceneDto; PolicyRuleEnforcerPreviewOutputType enforcements = modelContext != null ? modelContext.getPolicyRuleEnforcerPreviewOutput() @@ -161,7 +151,7 @@ public SceneDto getObject() { approvalsModel = Model.ofList(approvals); } - private void initLayout(){ + private void initLayout() { add(new ScenePanel(ID_PRIMARY_DELTAS_SCENE, primaryDeltasModel)); add(new ScenePanel(ID_SECONDARY_DELTAS_SCENE, secondaryDeltasModel)); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/ReferenceAutocomplete.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/ReferenceAutocomplete.java index 11d4202c7b1..904f0d235f6 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/ReferenceAutocomplete.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/ReferenceAutocomplete.java @@ -1,58 +1,53 @@ /* - * Copyright (c) 2020 Evolveum and contributors + * Copyright (C) 2020 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.web.component.search; -import com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteTextPanel; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +import org.apache.commons.lang.StringUtils; +import org.apache.wicket.extensions.ajax.markup.html.autocomplete.IAutoCompleteRenderer; +import org.apache.wicket.markup.html.form.FormComponent; +import org.apache.wicket.model.IModel; +import org.apache.wicket.util.convert.IConverter; +import com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteTextPanel; import com.evolveum.midpoint.gui.api.component.autocomplete.ReferenceConverter; import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; import com.evolveum.midpoint.prism.PrismObject; - -import com.evolveum.midpoint.prism.path.ItemPath; -import com.evolveum.midpoint.prism.query.*; +import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectTypeUtil; import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import org.apache.commons.collections.iterators.ArrayIterator; -import org.apache.commons.lang.StringUtils; -import org.apache.wicket.extensions.ajax.markup.html.autocomplete.IAutoCompleteRenderer; -import org.apache.wicket.markup.html.form.FormComponent; -import org.apache.wicket.model.IModel; -import org.apache.wicket.util.convert.IConverter; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - /** * @author honchar */ public abstract class ReferenceAutocomplete extends AutoCompleteTextPanel { private static final long serialVersionUID = 1L; - private PageBase pageBase; + private final PageBase pageBase; public ReferenceAutocomplete(String id, final IModel model, IAutoCompleteRenderer renderer, PageBase pageBase) { super(id, model, ObjectReferenceType.class, renderer); this.pageBase = pageBase; } - @Override public Iterator getIterator(String input) { FormComponent inputField = getBaseFormComponent(); String realInput = StringUtils.isEmpty(input) ? inputField.getRawInput() : input; - if (StringUtils.isEmpty(realInput)){ - return new ArrayIterator(); + if (StringUtils.isEmpty(realInput)) { + return Collections.emptyIterator(); } ObjectQuery query = pageBase.getPrismContext().queryFor(AbstractRoleType.class) .item(ObjectType.F_NAME) @@ -66,14 +61,14 @@ public Iterator getIterator(String input) { } @Override - protected IConverter getAutoCompleteConverter(Class type, IConverter originConverter){ + protected IConverter getAutoCompleteConverter(Class type, IConverter originConverter) { IConverter converter = super.getAutoCompleteConverter(type, originConverter); - return (IConverter) new ReferenceConverter((IConverter)converter, new ArrayList<>(), getBaseFormComponent(), pageBase); + return (IConverter) new ReferenceConverter((IConverter) converter, new ArrayList<>(), getBaseFormComponent(), pageBase); } protected abstract Class getReferenceTargetObjectType(); - protected int getMaxRowsCount(){ + protected int getMaxRowsCount() { return 20; } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/ReferenceValueSearchPopupPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/ReferenceValueSearchPopupPanel.java index 1f7867cbf57..1ef850bc8e1 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/ReferenceValueSearchPopupPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/ReferenceValueSearchPopupPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2019 Evolveum and contributors + * Copyright (C) 2010-2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -10,12 +10,6 @@ import java.util.List; import javax.xml.namespace.QName; -import com.evolveum.midpoint.gui.api.component.BasePanel; -import com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteReferenceRenderer; - -import com.evolveum.midpoint.web.component.util.VisibleBehaviour; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; - import org.apache.commons.collections.CollectionUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; @@ -25,14 +19,17 @@ import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; +import com.evolveum.midpoint.gui.api.component.BasePanel; +import com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteReferenceRenderer; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.prism.PrismConstants; -import com.evolveum.midpoint.util.DisplayableValue; import com.evolveum.midpoint.web.component.AjaxButton; import com.evolveum.midpoint.web.component.input.QNameObjectTypeChoiceRenderer; +import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; public class ReferenceValueSearchPopupPanel extends BasePanel { @@ -57,7 +54,7 @@ protected void onInitialize() { private void initLayout() { setOutputMarkupId(true); - TextField oidField = new TextField(ID_OID, new PropertyModel<>(getModel(), "oid")); + TextField oidField = new TextField<>(ID_OID, new PropertyModel<>(getModel(), "oid")); oidField.add(new AjaxFormComponentUpdatingBehavior("blur") { private static final long serialVersionUID = 1L; @@ -74,19 +71,18 @@ protected void onUpdate(AjaxRequestTarget target) { ReferenceAutocomplete nameField = new ReferenceAutocomplete(ID_NAME, Model.of(getModelObject()), new AutoCompleteReferenceRenderer(), - getPageBase()){ + getPageBase()) { private static final long serialVersionUID = 1L; @Override - protected Class getReferenceTargetObjectType(){ + protected Class getReferenceTargetObjectType() { List supportedTypes = getSupportedTargetList(); - if (CollectionUtils.isNotEmpty(supportedTypes)){ + if (CollectionUtils.isNotEmpty(supportedTypes)) { return (Class) WebComponentUtil.qnameToClass(getPageBase().getPrismContext(), supportedTypes.get(0)); } return (Class) ObjectType.class; } - }; nameField.getBaseFormComponent().add(new AjaxFormComponentUpdatingBehavior("blur") { @@ -104,7 +100,7 @@ protected void onUpdate(AjaxRequestTarget target) { nameField.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); add(nameField); - DropDownChoice type = new DropDownChoice<>(ID_TYPE, new PropertyModel(getModel(), "type"), + DropDownChoice type = new DropDownChoice<>(ID_TYPE, new PropertyModel<>(getModel(), "type"), getSupportedTargetList(), new QNameObjectTypeChoiceRenderer()); type.setNullValid(true); type.setOutputMarkupId(true); @@ -120,17 +116,16 @@ public boolean isEnabled() { type.add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); add(type); - if (getModelObject() != null && getModelObject().getRelation() == null){ + if (getModelObject() != null && getModelObject().getRelation() == null) { getModelObject().setRelation(PrismConstants.Q_ANY); } - List allowedRelations = new ArrayList(); - allowedRelations.addAll(getAllowedRelations()); + List allowedRelations = new ArrayList<>(getAllowedRelations()); if (!allowedRelations.contains(PrismConstants.Q_ANY)) { allowedRelations.add(0, PrismConstants.Q_ANY); } - DropDownChoice relation = new DropDownChoice<>(ID_RELATION, new PropertyModel(getModel(), "relation"), + DropDownChoice relation = new DropDownChoice<>(ID_RELATION, + new PropertyModel<>(getModel(), "relation"), allowedRelations, new QNameObjectTypeChoiceRenderer()); -// relation.setNullValid(true); relation.setOutputMarkupId(true); relation.add(new VisibleEnableBehaviour() { @@ -157,7 +152,7 @@ public void onClick(AjaxRequestTarget target) { } - protected void confirmPerformed(AjaxRequestTarget target){ + protected void confirmPerformed(AjaxRequestTarget target) { } @@ -169,5 +164,4 @@ protected List getSupportedTargetList() { return WebComponentUtil.createFocusTypeList(); } - } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPropertiesConfigPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPropertiesConfigPanel.java index 70ef7603390..45b01383ac9 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPropertiesConfigPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPropertiesConfigPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Evolveum and contributors + * Copyright (C) 2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -8,18 +8,9 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.List; -import com.evolveum.midpoint.gui.api.GuiStyleConstants; -import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder; -import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction; -import com.evolveum.midpoint.web.component.data.column.InlineMenuButtonColumn; - -import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem; -import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; - -import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction; - import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.Component; @@ -37,17 +28,25 @@ import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.StringResourceModel; +import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; -import com.evolveum.midpoint.prism.*; +import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder; +import com.evolveum.midpoint.prism.ItemDefinition; +import com.evolveum.midpoint.prism.PrismObjectDefinition; import com.evolveum.midpoint.prism.query.ObjectFilter; import com.evolveum.midpoint.util.QNameUtil; import com.evolveum.midpoint.web.component.AjaxButton; import com.evolveum.midpoint.web.component.data.BoxedTablePanel; import com.evolveum.midpoint.web.component.data.column.CheckBoxColumn; import com.evolveum.midpoint.web.component.data.column.CheckBoxHeaderColumn; +import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction; +import com.evolveum.midpoint.web.component.data.column.InlineMenuButtonColumn; import com.evolveum.midpoint.web.component.dialog.Popupable; import com.evolveum.midpoint.web.component.input.DropDownChoicePanel; +import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem; +import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; +import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction; import com.evolveum.midpoint.web.component.search.filter.BasicSearchFilter; import com.evolveum.midpoint.web.component.search.filter.ValueSearchFilterItem; import com.evolveum.midpoint.web.component.util.EnableBehaviour; @@ -75,8 +74,7 @@ public SearchPropertiesConfigPanel(String id, IModel> searc @Override protected void initConfigurationPanel(WebMarkupContainer configPanel) { - provider = - new SelectableListDataProvider, ValueSearchFilterItem>(getPageBase(), getSearchFilterItemModel()); + provider = new SelectableListDataProvider<>(getPageBase(), getSearchFilterItemModel()); WebMarkupContainer propertyConfigContainer = new WebMarkupContainer(ID_PROPERTY_CONFIG_CONTAINER); propertyConfigContainer.setOutputMarkupId(true); @@ -194,7 +192,7 @@ private List, String>> getTableCol IColumn, String> propertyColumn = new PropertyColumn, String>(getPageBase() .createStringResource("SearchPropertiesConfigPanel.table.column.property"), - "value." + ValueSearchFilterItem.F_PROPERTY_NAME){ + "value." + ValueSearchFilterItem.F_PROPERTY_NAME) { private static final long serialVersionUID = 1L; @@ -227,7 +225,8 @@ public String getCssClass() { @Override public void populateItem(Item>> item, String id, IModel> rowModel) { - List availableFilterNames = rowModel.getObject().getValue().getAvailableFilterNameList(); + List availableFilterNames = + rowModel.getObject().getValue().getAvailableFilterNameList(); DropDownChoicePanel filterPanel = WebComponentUtil.createEnumPanel(id, Model.ofList(availableFilterNames), new PropertyModel<>(rowModel, "value." + ValueSearchFilterItem.F_FILTER_TYPE_NAME), @@ -271,7 +270,7 @@ public String getCssClass() { CheckBoxColumn> negationColumn = new CheckBoxColumn>(getPageBase() .createStringResource("SearchPropertiesConfigPanel.table.column.applyNegotiation"), - "value." + ValueSearchFilterItem.F_APPLY_NEGATION){ + "value." + ValueSearchFilterItem.F_APPLY_NEGATION) { private static final long serialVersionUID = 1L; @Override @@ -283,7 +282,7 @@ public String getCssClass() { columns.add(negationColumn); InlineMenuButtonColumn> actionsColumn = new InlineMenuButtonColumn> - (getTableMenuItems(), getPageBase()){ + (getTableMenuItems(), getPageBase()) { private static final long serialVersionUID = 1L; @Override @@ -296,7 +295,7 @@ public String getCssClass() { return columns; } - private List getTableMenuItems(){ + private List getTableMenuItems() { InlineMenuItem deleteMenuItem = new ButtonInlineMenuItem(createStringResource("PageBase.button.delete")) { private static final long serialVersionUID = 1L; @@ -317,10 +316,10 @@ public CompositedIconBuilder getIconCompositedBuilder() { return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_DELETE_MENU_ITEM); } }; - return Arrays.asList(deleteMenuItem); + return Collections.singletonList(deleteMenuItem); } - private String getColumnStyleClass(){ + private String getColumnStyleClass() { return "mid-width-column"; } @@ -329,7 +328,8 @@ private LoadableModel> getAvailablePropertiesListModel() { @Override protected List load() { PrismObjectDefinition objectDef = SearchFactory.findObjectDefinition(getType(), null, getPageBase()); - List availableDefs = SearchFactory.getAvailableDefinitions(objectDef, true); + List availableDefs = + SearchFactory.getAvailableDefinitions(objectDef, true); List propertiesList = new ArrayList<>(); availableDefs.forEach(searchItemDef -> { if (!isPropertyAlreadyAdded(searchItemDef.getDef())) { @@ -341,10 +341,10 @@ protected List load() { }; } - private boolean isPropertyAlreadyAdded(ItemDefinition def){ + private boolean isPropertyAlreadyAdded(ItemDefinition def) { List> properties = provider.getAvailableData(); - for (SelectableBean prop : properties){ - if (QNameUtil.match(prop.getValue().getPropertyPath(), def.getItemName())){ + for (SelectableBean prop : properties) { + if (QNameUtil.match(prop.getValue().getPropertyPath(), def.getItemName())) { return true; } } @@ -358,7 +358,7 @@ private LoadableModel> getSearchFilterItemModel() { @Override protected List load() { BasicSearchFilter basicSearchFilter = getModelObject(); - if (basicSearchFilter == null){ + if (basicSearchFilter == null) { return new ArrayList<>(); } return basicSearchFilter.getValueSearchFilterItems(); @@ -375,26 +375,26 @@ private void propertyAddedPerformed(AjaxRequestTarget target) { } private void propertyDeletedPerformed(IModel> rowModel, AjaxRequestTarget target) { - if (rowModel == null || rowModel.getObject() == null || rowModel.getObject().getValue() == null){ + if (rowModel == null || rowModel.getObject() == null || rowModel.getObject().getValue() == null) { return; } getModelObject().deleteSearchFilterItem(rowModel.getObject().getValue().getPropertyDef()); target.add(SearchPropertiesConfigPanel.this); } - private DropDownChoicePanel getPropertyChoicePanel(){ + private DropDownChoicePanel getPropertyChoicePanel() { return (DropDownChoicePanel) get(createComponentPath(ID_CONFIGURATION_PANEL, ID_PROPERTY_CONFIG_CONTAINER, ID_PROPERTY_CHOICE)); } private ValueSearchFilterItem createDefaultValueFilter(Property property) { - if (property == null){ + if (property == null) { return null; } return new ValueSearchFilterItem(property, false); } @Override - protected void okButtonClicked(AjaxRequestTarget target){ + protected void okButtonClicked(AjaxRequestTarget target) { ObjectFilter configuredFilter = getModelObject().buildObjectFilter(); filterConfiguredPerformed(configuredFilter, target); } @@ -404,7 +404,7 @@ protected void cancelButtonClicked(AjaxRequestTarget target) { getPageBase().hideMainPopup(target); } - protected void filterConfiguredPerformed(ObjectFilter configuredFilter, AjaxRequestTarget target){ + protected void filterConfiguredPerformed(ObjectFilter configuredFilter, AjaxRequestTarget target) { } public int getWidth() { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SwitchablePropertyValuePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SwitchablePropertyValuePanel.java index 25b750a906f..88b29f25111 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SwitchablePropertyValuePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SwitchablePropertyValuePanel.java @@ -1,11 +1,26 @@ /* - * Copyright (c) 2010-2020 Evolveum and contributors + * Copyright (C) 2010-2020 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.web.component.search; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.wicket.Component; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.form.IChoiceRenderer; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.PropertyModel; + import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteTextPanel; import com.evolveum.midpoint.gui.api.model.LoadableModel; @@ -28,21 +43,6 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.behavior.AttributeAppender; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.form.IChoiceRenderer; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - /** * @author Kateryna Honchar */ @@ -54,9 +54,9 @@ public class SwitchablePropertyValuePanel extends BasePanel> model){ + public SwitchablePropertyValuePanel(String id, IModel> model) { super(id, model); isExpressionMode = getExpressionWrapper() != null; } @@ -67,7 +67,7 @@ protected void onInitialize() { initLayout(); } - private void initLayout(){ + private void initLayout() { setOutputMarkupId(true); WebMarkupContainer valueContainer = new WebMarkupContainer(ID_PROPERTY_VALUE_PANEL); @@ -78,17 +78,16 @@ private void initLayout(){ valueField.add(new VisibleBehaviour(() -> !isExpressionMode)); valueContainer.add(valueField); - ExpressionWrapper expression = getExpressionWrapper(); ExpressionType expressionType = null; if (expression != null) { Object expressionValue = expression.getExpression(); - if (expressionValue instanceof ExpressionType){ + if (expressionValue instanceof ExpressionType) { expressionType = (ExpressionType) expressionValue; } } - AceEditorPanel expressionField = new AceEditorPanel(ID_EXPRESSION_FIELD, null, - new ExpressionModel(Model.of(expressionType) , getPageBase()), 200){ + AceEditorPanel expressionField = new AceEditorPanel(ID_EXPRESSION_FIELD, null, + new ExpressionModel(Model.of(expressionType), getPageBase()), 200) { private static final long serialVersionUID = 1L; @@ -107,9 +106,9 @@ protected boolean isResizeToMaxHeight() { @Override public void onClick(AjaxRequestTarget target) { - if (isExpressionMode){ + if (isExpressionMode) { SwitchablePropertyValuePanel.this.getModelObject().getValue().setExpression(null); - if (isReferenceFilterValue()){ + if (isReferenceFilterValue()) { SwitchablePropertyValuePanel.this.getModelObject().getValue().setValue(new ObjectReferenceType()); } } else { @@ -131,19 +130,19 @@ protected String load() { } - private Component getValueField(String id) { + private Component getValueField(String id) { Component searchItemField = null; ValueSearchFilterItem valueSearchFilter = getModelObject().getValue(); ItemDefinition propertyDef = valueSearchFilter.getPropertyDef(); if (propertyDef != null) { PrismObject lookupTable = WebComponentUtil.findLookupTable(propertyDef, getPageBase()); if (propertyDef instanceof PrismReferenceDefinition) { - searchItemField = new ReferenceValueSearchPanel(id, new PropertyModel<>(getModel(), "value.value"), - (PrismReferenceDefinition) propertyDef){ + searchItemField = new ReferenceValueSearchPanel(id, new PropertyModel<>(getModel(), "value.value"), + (PrismReferenceDefinition) propertyDef) { private static final long serialVersionUID = 1L; @Override - protected void referenceValueUpdated(ObjectReferenceType ort){ + protected void referenceValueUpdated(ObjectReferenceType ort) { SwitchablePropertyValuePanel.this.getModelObject().getValue().setValue(ort); } }; @@ -167,15 +166,15 @@ public Iterator getIterator(String input) { }; } else if (CollectionUtils.isNotEmpty(allowedValues)) { List allowedValuesList = new ArrayList<>(); - allowedValues.forEach(val -> allowedValuesList.add((T)val.getValue())); + allowedValues.forEach(val -> allowedValuesList.add((T) val.getValue())); searchItemField = new DropDownChoicePanel(id, - new PropertyModel(getModel(), "value." + ValueSearchFilterItem.F_VALUE), + new PropertyModel<>(getModel(), "value." + ValueSearchFilterItem.F_VALUE), Model.ofList(allowedValuesList), new IChoiceRenderer() { private static final long serialVersionUID = 1L; @Override public Object getDisplayValue(T val) { - if (val instanceof DisplayableValue){ + if (val instanceof DisplayableValue) { return ((DisplayableValue) val).getLabel(); } return val; @@ -197,24 +196,23 @@ public T getObject(String id, IModel> choices) { } } } - if (searchItemField != null && searchItemField instanceof InputPanel){ + if (searchItemField instanceof InputPanel) { ((InputPanel) searchItemField).getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); } return searchItemField != null ? searchItemField : new WebMarkupContainer(id); } - private boolean isReferenceFilterValue(){ + private boolean isReferenceFilterValue() { ValueSearchFilterItem valueSearchFilter = getModelObject().getValue(); ItemDefinition propertyDef = valueSearchFilter.getPropertyDef(); return propertyDef instanceof PrismReferenceDefinition; } - private ExpressionWrapper getExpressionWrapper(){ + private ExpressionWrapper getExpressionWrapper() { SelectableBean filterModelObj = getModelObject(); - if (filterModelObj == null || filterModelObj.getValue() == null || filterModelObj.getValue().getExpression() == null){ + if (filterModelObj == null || filterModelObj.getValue() == null || filterModelObj.getValue().getExpression() == null) { return null; } return filterModelObj.getValue().getExpression(); } - } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/filter/ValueSearchFilterItem.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/filter/ValueSearchFilterItem.java index 1bbf5a0f206..ce2ad4d2da5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/filter/ValueSearchFilterItem.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/filter/ValueSearchFilterItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Evolveum and contributors + * Copyright (C) 2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -67,14 +67,14 @@ public static FilterName findFilterName(F filter) { return FilterName.SUBSTRING_ANCHOR_START; } else if (filter instanceof SubstringFilter && ((SubstringFilter) filter).isAnchorEnd() && !((SubstringFilter) filter).isAnchorStart()) { return FilterName.SUBSTRING_ANCHOR_END; - } else{ + } else { return findFilterName(filter.getClass()); } } - public static FilterName findFilterName(Class filterType){ - for (FilterName filterName : values()){ - if (filterName.getFilterType().equals(filterType.getInterfaces()[0])){ + public static FilterName findFilterName(Class filterType) { + for (FilterName filterName : values()) { + if (filterName.getFilterType().equals(filterType.getInterfaces()[0])) { return filterName; } } @@ -130,7 +130,7 @@ public ValueSearchFilterItem(Property property, boolean applyNegation) { propertyPath = property.getDefinition().getItemName(); propertyDef = property.getDefinition(); this.applyNegation = applyNegation; - if (propertyDef instanceof PrismReferenceDefinition){ + if (propertyDef instanceof PrismReferenceDefinition) { value = new ObjectReferenceType(); } parseFilterName(); @@ -211,7 +211,7 @@ public void setExpression(ExpressionWrapper expression) { this.expression = expression; } - public ObjectFilter buildFilter(PrismContext prismContext, Class type){ + public ObjectFilter buildFilter(PrismContext prismContext, Class type) { S_ConditionEntry conditionEntry = prismContext.queryFor(type).item(propertyPath); ObjectFilter builtFilter = null; if (FilterName.EQUAL.equals(filterTypeName)) { @@ -227,9 +227,9 @@ public ObjectFilter buildFilter(PrismContext prismContext, Class type){ } else if (FilterName.REF.equals(filterTypeName)) { if (value != null) { PrismReferenceValue refVal = null; - if (value instanceof PrismReferenceValue){ + if (value instanceof PrismReferenceValue) { refVal = (PrismReferenceValue) value; - } else if (value instanceof ObjectReferenceType){ + } else if (value instanceof ObjectReferenceType) { refVal = ((ObjectReferenceType) value).asReferenceValue(); } if (refVal.getParent() instanceof RefFilter) { @@ -247,36 +247,36 @@ public ObjectFilter buildFilter(PrismContext prismContext, Class type){ } else if (FilterName.SUBSTRING_ANCHOR_END.equals(filterTypeName)) { builtFilter = conditionEntry.endsWith(value).buildFilter(); } - if (builtFilter instanceof ValueFilter && matchingRule != null){ + if (builtFilter instanceof ValueFilter && matchingRule != null) { ((ValueFilter) builtFilter).setMatchingRule(matchingRule.getMatchingRuleName()); } - if (builtFilter instanceof ValueFilter && expression != null){ + if (builtFilter instanceof ValueFilter && expression != null) { ((ValueFilter) builtFilter).setExpression(expression); } - if (isApplyNegation()){ + if (isApplyNegation()) { builtFilter = prismContext.queryFactory().createNot(builtFilter); } return builtFilter != null ? builtFilter : prismContext.queryFor(type).buildFilter(); } - private void parseFilterName (){ - if (propertyDef instanceof PrismReferenceDefinition){ + private void parseFilterName() { + if (propertyDef instanceof PrismReferenceDefinition) { filterTypeName = FilterName.REF; } else if (filter != null) { filterTypeName = FilterName.findFilterName(filter); } } - public List getAvailableFilterNameList(){ - if (propertyDef == null){ + public List getAvailableFilterNameList() { + if (propertyDef == null) { return Arrays.asList(FilterName.values()); } - if (propertyDef instanceof PrismReferenceDefinition){ + if (propertyDef instanceof PrismReferenceDefinition) { return Collections.singletonList(FilterName.REF); } else { List filterNames = new ArrayList<>(); for (FilterName val : FilterName.values()) { - if (!FilterName.REF.equals(val)){ + if (!FilterName.REF.equals(val)) { filterNames.add(val); } } @@ -284,9 +284,9 @@ public List getAvailableFilterNameList(){ } } - public List getAvailableMatchingRuleList(){ + public List getAvailableMatchingRuleList() { List matchingRules = Arrays.asList(MatchingRule.values()); - if (propertyDef == null){ + if (propertyDef == null) { return matchingRules; } //todo diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wf/SwitchableApprovalProcessPreviewsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wf/SwitchableApprovalProcessPreviewsPanel.java index 126eae3443d..849b56f791b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wf/SwitchableApprovalProcessPreviewsPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wf/SwitchableApprovalProcessPreviewsPanel.java @@ -1,10 +1,9 @@ /* - * Copyright (c) 2010-2017 Evolveum and contributors + * Copyright (C) 2010-2020 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.web.component.wf; import java.util.Collections; @@ -55,7 +54,7 @@ public class SwitchableApprovalProcessPreviewsPanel extends BasePanel { private LoadableModel wholeProcessModel; public SwitchableApprovalProcessPreviewsPanel(String id, - IModel taskOidModel, IModel showNextStagesModel, PageBase parentPage) { + IModel taskOidModel, IModel showNextStagesModel, PageBase parentPage) { super(id, taskOidModel); initModels(parentPage); initLayout(showNextStagesModel); @@ -64,6 +63,7 @@ public SwitchableApprovalProcessPreviewsPanel(String id, private enum ProcessInfoBox { NEXT_STAGES, WHOLE_PROCESS } + private ProcessInfoBox displayedProcessInfoBox = ProcessInfoBox.WHOLE_PROCESS; private void initModels(PageBase parentPage) { @@ -81,7 +81,7 @@ protected ApprovalSchemaExecutionInformationType load() { } catch (Throwable t) { LoggingUtils.logUnexpectedException(LOGGER, "Couldn't get approval schema execution information for {}", t, getModelObject()); opTask.getResult().recordFatalError( - createStringResource("SwitchableApprovalProcessPreviewsPanel.message.approvalSchemaExecution.fatalError",t.getMessage()).getString(), t); + createStringResource("SwitchableApprovalProcessPreviewsPanel.message.approvalSchemaExecution.fatalError", t.getMessage()).getString(), t); } if (WebComponentUtil.showResultInPage(result)) { parentPage.showResult(result); @@ -149,9 +149,8 @@ private void initLayout(IModel showNextStagesModel) { @Override public void onClick(Optional target) { displayedProcessInfoBox = ProcessInfoBox.NEXT_STAGES; - ((AjaxRequestTarget) target.get()).add(SwitchableApprovalProcessPreviewsPanel.this); + target.get().add(SwitchableApprovalProcessPreviewsPanel.this); } - }); showNextStagesContainer.add(WebComponentUtil.createHelp(ID_SHOW_NEXT_STAGES_HELP)); showNextStagesContainer.add(new VisibleBehaviour(() -> @@ -165,13 +164,11 @@ public void onClick(Optional target) { @Override public void onClick(Optional target) { displayedProcessInfoBox = ProcessInfoBox.WHOLE_PROCESS; - ((AjaxRequestTarget) target.get()).add(SwitchableApprovalProcessPreviewsPanel.this); + target.get().add(SwitchableApprovalProcessPreviewsPanel.this); } }); showWholeProcessContainer.add(new VisibleBehaviour(() -> displayedProcessInfoBox != ProcessInfoBox.WHOLE_PROCESS)); showWholeProcessContainer.add(WebComponentUtil.createHelp(ID_SHOW_WHOLE_PROCESS_HELP)); add(showWholeProcessContainer); - } - } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/SynchronizationStep.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/SynchronizationStep.java index 99212feb4b2..32680726473 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/SynchronizationStep.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/SynchronizationStep.java @@ -1,12 +1,35 @@ /* - * Copyright (c) 2010-2019 Evolveum and contributors + * Copyright (C) 2010-2020 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.web.component.wizard.resource; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import javax.xml.namespace.QName; + +import org.apache.commons.lang3.StringUtils; +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.Component; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink; +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.*; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.repeater.Item; +import org.apache.wicket.markup.repeater.data.DataView; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.PropertyModel; +import org.apache.wicket.validation.IValidator; +import org.jetbrains.annotations.NotNull; + import com.evolveum.midpoint.gui.api.model.NonEmptyLoadableModel; import com.evolveum.midpoint.gui.api.model.NonEmptyWrapperModel; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; @@ -41,28 +64,6 @@ import com.evolveum.midpoint.web.util.ExpressionUtil; import com.evolveum.midpoint.web.util.InfoTooltipBehavior; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink; -import org.apache.wicket.behavior.AttributeAppender; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.*; -import org.apache.wicket.markup.html.list.ListItem; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.markup.repeater.data.DataView; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.validation.IValidator; -import org.jetbrains.annotations.NotNull; - -import javax.xml.namespace.QName; -import java.util.*; /** * @author lazyman @@ -153,7 +154,7 @@ private boolean isAnySelected() { private void initLayout() { final ListDataProvider syncProvider = new ListDataProvider<>(this, - new PropertyModel>(syncDtoModel, ResourceSynchronizationDto.F_OBJECT_SYNCRONIZATION_LIST)); + new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_OBJECT_SYNCRONIZATION_LIST)); //first row - object sync list WebMarkupContainer tableBody = new WebMarkupContainer(ID_TABLE_ROWS); @@ -163,10 +164,10 @@ private void initLayout() { //second row - ObjectSynchronizationType editor WebMarkupContainer objectSyncEditor = new WebMarkupContainer(ID_OBJECT_SYNC_EDITOR); objectSyncEditor.setOutputMarkupId(true); - objectSyncEditor.add(new VisibleEnableBehaviour(){ + objectSyncEditor.add(new VisibleEnableBehaviour() { @Override - public boolean isVisible(){ + public boolean isVisible() { return isAnySelected(); } @@ -200,8 +201,9 @@ protected void onSubmit(AjaxRequestTarget target) { AjaxLink delete = new AjaxLink(ID_OBJECT_SYNC_DELETE) { private static final long serialVersionUID = 1L; + @Override - public void onClick(AjaxRequestTarget target){ + public void onClick(AjaxRequestTarget target) { deleteSyncObjectPerformed(target, syncObject); } }; @@ -231,6 +233,7 @@ public String getObject() { AjaxLink add = new AjaxLink(ID_OBJECT_SYNC_ADD) { private static final long serialVersionUID = 1L; + @Override public void onClick(AjaxRequestTarget target) { addSyncObjectPerformed(target); @@ -250,7 +253,7 @@ protected void onConfigure() { } } - private void initObjectSyncEditor(WebMarkupContainer editor){ + private void initObjectSyncEditor(WebMarkupContainer editor) { Label editorLabel = new Label(ID_EDITOR_LABEL, new IModel() { @Override public String getObject() { @@ -276,9 +279,9 @@ public String getObject() { editor.add(editorDescription); DropDownChoice editorKind = new DropDownChoice<>(ID_EDITOR_KIND, - new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED + ".kind"), + new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED + ".kind"), WebComponentUtil.createReadonlyModelFromEnum(ShadowKindType.class), - new EnumChoiceRenderer<>()); + new EnumChoiceRenderer<>()); editorKind.setNullValid(true); editorKind.add(new UpdateNamesBehaviour()); parentPage.addEditingEnabledBehavior(editorKind); @@ -291,7 +294,7 @@ public String getObject() { editor.add(editorIntent); MultiValueAutoCompleteTextPanel editorObjectClass = new MultiValueAutoCompleteTextPanel(ID_EDITOR_OBJECT_CLASS, - new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED + ".objectClass"), true, parentPage.getReadOnlyModel()) { + new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED + ".objectClass"), true, parentPage.getReadOnlyModel()) { @Override protected IModel createTextModel(final IModel model) { @@ -319,7 +322,7 @@ protected String createAutoCompleteObjectLabel(QName object) { } @Override - protected IValidator createAutoCompleteValidator(){ + protected IValidator createAutoCompleteValidator() { return createObjectClassValidator(new IModel>() { @Override public List getObject() { @@ -333,25 +336,20 @@ public List getObject() { // TODO: switch to ObjectTypeSelectPanel DropDownChoice editorFocus = new DropDownChoice<>(ID_EDITOR_FOCUS, new PropertyModel<>(syncDtoModel, - ResourceSynchronizationDto.F_SELECTED + ".focusType"), - new IModel>() { - - @Override - public List getObject() { - return WebComponentUtil.createFocusTypeList(); - } - }, new QNameChoiceRenderer()); + ResourceSynchronizationDto.F_SELECTED + ".focusType"), + (IModel>) () -> + WebComponentUtil.createFocusTypeList(), new QNameChoiceRenderer()); editorFocus.setNullValid(true); editorFocus.add(new UpdateNamesBehaviour()); parentPage.addEditingEnabledBehavior(editorFocus); editor.add(editorFocus); CheckBox editorEnabled = new CheckBox(ID_EDITOR_ENABLED, new PropertyModel<>(syncDtoModel, - ResourceSynchronizationDto.F_SELECTED + ".enabled")); + ResourceSynchronizationDto.F_SELECTED + ".enabled")); parentPage.addEditingEnabledBehavior(editorEnabled); editor.add(editorEnabled); - AjaxSubmitLink editorCondition = new AjaxSubmitLink(ID_EDITOR_BUTTON_CONDITION){ + AjaxSubmitLink editorCondition = new AjaxSubmitLink(ID_EDITOR_BUTTON_CONDITION) { @Override protected void onSubmit(AjaxRequestTarget target) { @@ -361,7 +359,7 @@ protected void onSubmit(AjaxRequestTarget target) { addDisableClassModifier(editorCondition); editor.add(editorCondition); - AjaxSubmitLink editorConfirmation = new AjaxSubmitLink(ID_EDITOR_BUTTON_CONFIRMATION){ + AjaxSubmitLink editorConfirmation = new AjaxSubmitLink(ID_EDITOR_BUTTON_CONFIRMATION) { @Override protected void onSubmit(AjaxRequestTarget target) { @@ -372,7 +370,7 @@ protected void onSubmit(AjaxRequestTarget target) { editor.add(editorConfirmation); DropDownChoice editorObjectTemplate = new DropDownChoice<>(ID_EDITOR_OBJECT_TEMPLATE, - new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED + ".objectTemplateRef"), + new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED + ".objectTemplateRef"), new IModel>() { @Override @@ -385,7 +383,7 @@ public List getObject() { editor.add(editorObjectTemplate); CheckBox editorReconcile = new CheckBox(ID_EDITOR_RECONCILE, new PropertyModel<>(syncDtoModel, - ResourceSynchronizationDto.F_SELECTED + ".reconcile")); + ResourceSynchronizationDto.F_SELECTED + ".reconcile")); parentPage.addEditingEnabledBehavior(editorReconcile); editor.add(editorReconcile); @@ -394,8 +392,8 @@ public List getObject() { editor.add(opportunistic); MultiValueTextEditPanel editorCorrelation = new MultiValueTextEditPanel(ID_EDITOR_EDITOR_CORRELATION, - new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED + ".correlation"), - new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED_CORRELATION), + new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED + ".correlation"), + new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED_CORRELATION), false, true, parentPage.getReadOnlyModel()) { @Override @@ -407,11 +405,11 @@ public String getObject() { StringBuilder sb = new StringBuilder(); ConditionalSearchFilterType searchFilter = model.getObject(); - if(searchFilter != null && searchFilter.getDescription() != null){ + if (searchFilter != null && searchFilter.getDescription() != null) { sb.append(searchFilter.getDescription()); } - if(sb.toString().isEmpty()){ + if (sb.toString().isEmpty()) { sb.append(getString("SynchronizationStep.label.notSpecified")); } @@ -421,7 +419,7 @@ public String getObject() { } @Override - protected ConditionalSearchFilterType createNewEmptyItem(){ + protected ConditionalSearchFilterType createNewEmptyItem() { return new ConditionalSearchFilterType(); } @@ -441,15 +439,15 @@ protected void performRemoveValueHook(AjaxRequestTarget target, ListItem(ID_EDITOR_REACTION, - new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED + ".reaction"), - new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED_REACTION), + new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED + ".reaction"), + new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED_REACTION), false, true, parentPage.getReadOnlyModel()) { @Override @@ -491,12 +489,12 @@ public String getObject() { } @Override - protected SynchronizationReactionType createNewEmptyItem(){ + protected SynchronizationReactionType createNewEmptyItem() { return new SynchronizationReactionType(); } @Override - protected void editPerformed(AjaxRequestTarget target, SynchronizationReactionType object){ + protected void editPerformed(AjaxRequestTarget target, SynchronizationReactionType object) { reactionEditPerformed(target, object); } @@ -511,7 +509,7 @@ protected void performRemoveValueHook(AjaxRequestTarget target, ListItem createObjectSyncTypeDisplayModel(final ObjectSynchronizationType syncObject){ + private IModel createObjectSyncTypeDisplayModel(final ObjectSynchronizationType syncObject) { return new IModel() { @Override @@ -591,12 +589,12 @@ private static String getTypeDisplayName(@NotNull QName name) { return StringUtils.removeEnd(name.getLocalPart(), "Type"); } - private void addDisableClassModifier(Component component){ + private void addDisableClassModifier(Component component) { component.add(new AttributeAppender("class", new IModel() { @Override public String getObject() { - if(!isAnySelected()){ + if (!isAnySelected()) { return " disabled"; } @@ -605,15 +603,15 @@ public String getObject() { })); } - private Component getSyncObjectTable(){ + private Component getSyncObjectTable() { return get(ID_TABLE_ROWS); } - private Component getNavigator(){ + private Component getNavigator() { return get(ID_PAGING); } - private Component getSyncObjectEditor(){ + private Component getSyncObjectEditor() { return get(ID_OBJECT_SYNC_EDITOR); } @@ -625,20 +623,20 @@ public Component getCorrelationList() { return get(createComponentPath(ID_OBJECT_SYNC_EDITOR, ID_EDITOR_EDITOR_CORRELATION)); } - private Component getThirdRowContainer(){ + private Component getThirdRowContainer() { return get(ID_THIRD_ROW_CONTAINER); } - private void insertEmptyThirdRow(){ + private void insertEmptyThirdRow() { getThirdRowContainer().replaceWith(new WebMarkupContainer(ID_THIRD_ROW_CONTAINER)); } - private void conditionEditPerformed(AjaxRequestTarget target){ + private void conditionEditPerformed(AjaxRequestTarget target) { WebMarkupContainer newContainer = new SynchronizationExpressionEditor(ID_THIRD_ROW_CONTAINER, - new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED + ".condition"), parentPage) { + new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED + ".condition"), parentPage) { @Override - public String getLabel(){ + public String getLabel() { return "SynchronizationExpressionEditor.label.condition"; } }; @@ -647,12 +645,12 @@ public String getLabel(){ target.add(getThirdRowContainer(), get(ID_OBJECT_SYNC_EDITOR), getPageBase().getFeedbackPanel()); } - private void confirmationEditPerformed(AjaxRequestTarget target){ + private void confirmationEditPerformed(AjaxRequestTarget target) { WebMarkupContainer newContainer = new SynchronizationExpressionEditor(ID_THIRD_ROW_CONTAINER, - new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED + ".confirmation"), parentPage){ + new PropertyModel<>(syncDtoModel, ResourceSynchronizationDto.F_SELECTED + ".confirmation"), parentPage) { @Override - public String getLabel(){ + public String getLabel() { return "SynchronizationExpressionEditor.label.confirmation"; } }; @@ -674,7 +672,7 @@ private void correlationEditPerformed(AjaxRequestTarget target, @NotNull Conditi target.add(getThirdRowContainer(), get(ID_OBJECT_SYNC_EDITOR), getPageBase().getFeedbackPanel()); } - private void reactionEditPerformed(AjaxRequestTarget target, SynchronizationReactionType reaction){ + private void reactionEditPerformed(AjaxRequestTarget target, SynchronizationReactionType reaction) { WebMarkupContainer newContainer = new SynchronizationReactionEditor(ID_THIRD_ROW_CONTAINER, new Model<>(reaction), this, parentPage); getThirdRowContainer().replaceWith(newContainer); @@ -718,7 +716,7 @@ private void savePerformed() { saved = true; } } - } catch (CommonException|RuntimeException e) { + } catch (CommonException | RuntimeException e) { LoggingUtils.logUnexpectedException(LOGGER, "Couldn't save resource synchronization.", e); result.recordFatalError(getString("SynchronizationStep.message.cantSave", e)); } finally { @@ -788,7 +786,7 @@ private boolean isSelected(ObjectSynchronizationType syncObject) { return syncDtoModel.getObject().getSelected() == syncObject; } - private void addSyncObjectPerformed(AjaxRequestTarget target){ + private void addSyncObjectPerformed(AjaxRequestTarget target) { ObjectSynchronizationType syncObject = new ObjectSynchronizationType(); syncObject.setEnabled(true); //syncObject.setName(generateName(getString("SynchronizationStep.label.newObjectType"))); @@ -821,13 +819,4 @@ private void resetSelections(AjaxRequestTarget target) { } } } - - private String generateName(String prefix) { - List existing = new ArrayList<>(); - for (ObjectSynchronizationType sync : syncDtoModel.getObject().getObjectSynchronizationList()) { - CollectionUtils.addIgnoreNull(existing, sync.getName()); - } - return SchemaHandlingStep.generateName(existing, prefix); - } - } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java index 0a22b6b1589..04bfb90d16e 100755 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2018 Evolveum and contributors + * Copyright (C) 2010-2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -8,32 +8,8 @@ import java.util.*; import java.util.stream.Collectors; - import javax.xml.namespace.QName; -import com.evolveum.midpoint.gui.api.component.*; -import com.evolveum.midpoint.gui.api.component.tabs.PanelTab; -import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; -import com.evolveum.midpoint.model.api.context.ModelContext; -import com.evolveum.midpoint.prism.PrismContainer; -import com.evolveum.midpoint.prism.query.ObjectFilter; -import com.evolveum.midpoint.prism.query.ObjectQuery; -import com.evolveum.midpoint.schema.ObjectDeltaOperation; -import com.evolveum.midpoint.schema.constants.SchemaConstants; -import com.evolveum.midpoint.schema.util.ObjectTypeUtil; -import com.evolveum.midpoint.util.MiscUtil; -import com.evolveum.midpoint.util.exception.*; -import com.evolveum.midpoint.web.component.AjaxButton; -import com.evolveum.midpoint.web.component.prism.show.PagePreviewChanges; -import com.evolveum.midpoint.web.component.refresh.Refreshable; -import com.evolveum.midpoint.web.component.util.SelectableBean; -import com.evolveum.midpoint.web.component.util.VisibleBehaviour; -import com.evolveum.midpoint.web.page.admin.configuration.PageSystemConfiguration; -import com.evolveum.midpoint.web.page.admin.server.OperationalButtonsPanel; -import com.evolveum.midpoint.web.page.admin.server.RefreshableTabPanel; -import com.evolveum.midpoint.web.security.util.SecurityUtils; -import com.evolveum.midpoint.xml.ns._public.common.common_3.*; - import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.Component; @@ -55,35 +31,59 @@ import org.apache.wicket.util.time.Duration; import org.jetbrains.annotations.NotNull; +import com.evolveum.midpoint.gui.api.component.AssignmentPopup; +import com.evolveum.midpoint.gui.api.component.FocusTypeAssignmentPopupTabPanel; +import com.evolveum.midpoint.gui.api.component.tabs.PanelTab; +import com.evolveum.midpoint.gui.api.factory.wrapper.PrismObjectWrapperFactory; +import com.evolveum.midpoint.gui.api.factory.wrapper.WrapperContext; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.prism.ItemStatus; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; import com.evolveum.midpoint.gui.api.prism.wrapper.PrismObjectWrapper; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; -import com.evolveum.midpoint.gui.api.factory.wrapper.PrismObjectWrapperFactory; -import com.evolveum.midpoint.gui.api.factory.wrapper.WrapperContext; import com.evolveum.midpoint.model.api.ModelExecuteOptions; import com.evolveum.midpoint.model.api.authentication.CompiledGuiProfile; +import com.evolveum.midpoint.model.api.context.ModelContext; +import com.evolveum.midpoint.prism.PrismContainer; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.delta.ObjectDelta; +import com.evolveum.midpoint.prism.query.ObjectFilter; +import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.schema.GetOperationOptions; +import com.evolveum.midpoint.schema.ObjectDeltaOperation; import com.evolveum.midpoint.schema.SelectorOptions; import com.evolveum.midpoint.schema.constants.ObjectTypes; +import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.schema.util.ObjectTypeUtil; 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.AuthorizationException; +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.AjaxButton; import com.evolveum.midpoint.web.component.ObjectSummaryPanel; import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectMainPanel; +import com.evolveum.midpoint.web.component.prism.show.PagePreviewChanges; import com.evolveum.midpoint.web.component.progress.ProgressPanel; import com.evolveum.midpoint.web.component.progress.ProgressReportingAwarePage; +import com.evolveum.midpoint.web.component.refresh.Refreshable; +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.PageSystemConfiguration; +import com.evolveum.midpoint.web.page.admin.server.OperationalButtonsPanel; +import com.evolveum.midpoint.web.page.admin.server.RefreshableTabPanel; import com.evolveum.midpoint.web.page.admin.users.dto.FocusSubwrapperDto; +import com.evolveum.midpoint.web.security.util.SecurityUtils; import com.evolveum.midpoint.web.util.OnePageParameterEncoder; import com.evolveum.midpoint.web.util.validation.MidpointFormValidator; import com.evolveum.midpoint.web.util.validation.SimpleValidationError; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; /** * @author semancik @@ -123,8 +123,8 @@ public abstract class PageAdminObjectDetails extends PageA private boolean saveOnConfigure; // ugly hack - whether to invoke 'Save' when returning to this page private boolean editingFocus = false; //before we got isOidParameterExists status depending only on oid parameter existence - //we should set editingFocus=true not only when oid parameter exists but also - //when object is given as a constructor parameter + //we should set editingFocus=true not only when oid parameter exists but also + //when object is given as a constructor parameter // TODO put this into correct place protected boolean previewRequested; @@ -159,7 +159,7 @@ protected void onTimer(AjaxRequestTarget target) { @Override protected IModel createPageTitleModel() { - if (PageAdminObjectDetails.this instanceof PageSystemConfiguration){ + if (PageAdminObjectDetails.this instanceof PageSystemConfiguration) { return super.createPageTitleModel(); } @@ -249,7 +249,6 @@ protected void reviveModels() throws SchemaException { public abstract Class getCompileTimeClass(); - public void initialize(final PrismObject objectToEdit) { boolean isNewObject = objectToEdit == null && StringUtils.isEmpty(getObjectOidParameter()); @@ -346,19 +345,19 @@ private IModel loadModelForSummaryPanel() { @Override protected O load() { - PrismObjectWrapper wrapper = getObjectWrapper(); + PrismObjectWrapper wrapper = getObjectWrapper(); if (wrapper == null) { return null; } - PrismObject object = wrapper.getObject(); + PrismObject object = wrapper.getObject(); loadParentOrgs(object); return object.asObjectable(); } }; } - protected void setSummaryPanelVisibility(ObjectSummaryPanel summaryPanel){ + protected void setSummaryPanelVisibility(ObjectSummaryPanel summaryPanel) { summaryPanel.add(new VisibleEnableBehaviour() { private static final long serialVersionUID = 1L; @@ -369,7 +368,7 @@ public boolean isVisible() { }); } - private void initOperationalButtonsPanel(){ + private void initOperationalButtonsPanel() { OperationalButtonsPanel opButtonPanel = new OperationalButtonsPanel(ID_BUTTONS) { private static final long serialVersionUID = 1L; @@ -403,11 +402,11 @@ protected boolean shouldTrigger() { public boolean isRefreshEnabled() { return false; - } + } - public void refresh(AjaxRequestTarget target) { + public void refresh(AjaxRequestTarget target) { refresh(target, true); - } + } public void refresh(AjaxRequestTarget target, boolean soft) { @@ -432,11 +431,11 @@ public void refresh(AjaxRequestTarget target, boolean soft) { } } - public int getRefreshInterval() { + public int getRefreshInterval() { return 30; - } + } - protected void initOperationalButtons(RepeatingView repeatingView){ + protected void initOperationalButtons(RepeatingView repeatingView) { if (getObjectArchetypeRef() != null && CollectionUtils.isNotEmpty(getArchetypeOidsListToAssign())) { AjaxButton changeArchetype = new AjaxButton(repeatingView.newChildId(), createStringResource("PageAdminObjectDetails.button.changeArchetype")) { @Override @@ -450,11 +449,11 @@ public void onClick(AjaxRequestTarget target) { } } - protected OperationalButtonsPanel getOperationalButtonsPanel(){ + protected OperationalButtonsPanel getOperationalButtonsPanel() { return (OperationalButtonsPanel) get(ID_BUTTONS); } - private void changeArchetypeButtonClicked(AjaxRequestTarget target){ + private void changeArchetypeButtonClicked(AjaxRequestTarget target) { AssignmentPopup changeArchetypePopup = new AssignmentPopup(getMainPopupBodyId()) { @@ -480,14 +479,13 @@ protected void addPerformed(AjaxRequestTarget target, List newAs try { ObjectDelta delta = getPrismContext().deltaFor(getCompileTimeClass()) .item(AssignmentHolderType.F_ASSIGNMENT) - .delete(oldArchetypAssignment.clone()) + .delete(oldArchetypAssignment.clone()) .asObjectDelta(getObjectWrapper().getOid()); delta.addModificationAddContainer(AssignmentHolderType.F_ASSIGNMENT, newAssignmentsList.iterator().next()); Task task = createSimpleTask(OPERATION_EXECUTE_ARCHETYPE_CHANGES); getModelService().executeChanges(MiscUtil.createCollection(delta), null, task, result); - } catch (Exception e) { LOGGER.error("Cannot find assignment wrapper: {}", e.getMessage(), e); result.recordFatalError(getString("PageAdminObjectDetails.change.archetype.failed", e.getMessage()), e); @@ -536,8 +534,8 @@ protected void onSelectionPerformed(AjaxRequestTarget target, IModel getObjectSelectCheckBoxEnableModel(IModel> rowModel){ - if (rowModel == null){ + protected IModel getObjectSelectCheckBoxEnableModel(IModel> rowModel) { + if (rowModel == null) { return Model.of(false); } List selectedObjects = getSelectedObjectsList(); @@ -545,14 +543,13 @@ protected IModel getObjectSelectCheckBoxEnableModel(IModel getWarningMessageModel(){ + protected IModel getWarningMessageModel() { return createStringResource("PageAdminObjectDetails.button.changeArchetype.warningMessage"); } }; @@ -602,28 +599,28 @@ private AssignmentType getOldArchetypeAssignment(OperationResult result) { return oldAssignments.iterator().next(); } - private List getArchetypeOidsListToAssign(){ + private List getArchetypeOidsListToAssign() { List archetypeOidsList = getFilteredArchetypeOidsList(); ObjectReferenceType archetypeRef = getObjectArchetypeRef(); - if (archetypeRef != null && StringUtils.isNotEmpty(archetypeRef.getOid())){ - if (archetypeOidsList.contains(archetypeRef.getOid())){ + if (archetypeRef != null && StringUtils.isNotEmpty(archetypeRef.getOid())) { + if (archetypeOidsList.contains(archetypeRef.getOid())) { archetypeOidsList.remove(archetypeRef.getOid()); } } return archetypeOidsList; } - private List getFilteredArchetypeOidsList(){ + private List getFilteredArchetypeOidsList() { OperationResult result = new OperationResult(OPERATION_LOAD_FILTERED_ARCHETYPES); PrismObject obj = getObjectWrapper().getObject(); List oidsList = new ArrayList<>(); try { List filteredArchetypes = getModelInteractionService().getFilteredArchetypesByHolderType(obj, result); - if (filteredArchetypes != null){ + if (filteredArchetypes != null) { filteredArchetypes.forEach(archetype -> oidsList.add(archetype.getOid())); } - } catch (SchemaException ex){ + } catch (SchemaException ex) { result.recordPartialError(ex.getLocalizedMessage()); LOGGER.error("Couldn't load assignment target specification for the object {} , {}", obj.getName(), ex.getLocalizedMessage()); } @@ -715,7 +712,6 @@ protected PrismObjectWrapper loadObjectWrapper(PrismObject objectToEdit, b context.setReadOnly(isReadonly); } - try { wrapper = factory.createObjectWrapper(object, itemStatus, context); } catch (Exception ex) { @@ -812,8 +808,8 @@ public void saveOrPreviewPerformed(AjaxRequestTarget target, OperationResult res // (error message is still displayed) delta = null; - if(task == null) { - task = createSimpleTask(OPERATION_SEND_TO_SUBMIT); + if (task == null) { + task = createSimpleTask(OPERATION_SEND_TO_SUBMIT); } ModelExecuteOptions options = getOptions(previewOnly); @@ -854,7 +850,7 @@ public void saveOrPreviewPerformed(AjaxRequestTarget target, OperationResult res if (checkValidationErrors(target, validationErrors)) { return; } - if (isSaveInBackground() && !previewOnly){ + if (isSaveInBackground() && !previewOnly) { progressPanel.executeChangesInBackground(deltas, previewOnly, options, task, result, target); } else { progressPanel.executeChanges(deltas, previewOnly, options, task, result, target); @@ -903,7 +899,7 @@ public void saveOrPreviewPerformed(AjaxRequestTarget target, OperationResult res if (checkValidationErrors(target, validationErrors)) { return; } - if (isSaveInBackground() && !previewOnly){ + if (isSaveInBackground() && !previewOnly) { progressPanel.executeChangesInBackground(deltas, previewOnly, options, task, result, target); } else { progressPanel.executeChanges(deltas, previewOnly, options, task, result, target); @@ -913,13 +909,13 @@ public void saveOrPreviewPerformed(AjaxRequestTarget target, OperationResult res if (checkValidationErrors(target, validationErrors)) { return; } - if (isSaveInBackground() && !previewOnly){ + if (isSaveInBackground() && !previewOnly) { progressPanel.executeChangesInBackground(deltas, previewOnly, options, task, result, target); } else { progressPanel.executeChanges(deltas, previewOnly, options, task, result, target); } - } else if (previewOnly && delta.isEmpty() && delegationChangesExist){ - if (isSaveInBackground() && !previewOnly){ + } else if (previewOnly && delta.isEmpty() && delegationChangesExist) { + if (isSaveInBackground() && !previewOnly) { progressPanel.executeChangesInBackground(deltas, previewOnly, options, task, result, target); } else { progressPanel.executeChanges(deltas, previewOnly, options, task, result, target); @@ -965,7 +961,7 @@ public void saveOrPreviewPerformed(AjaxRequestTarget target, OperationResult res LOGGER.trace("returning from saveOrPreviewPerformed"); } - protected boolean processDeputyAssignments(boolean previewOnly){ + protected boolean processDeputyAssignments(boolean previewOnly) { return false; } @@ -1025,7 +1021,7 @@ protected boolean isKeepDisplayingResults() { return getMainPanel().getExecuteChangeOptionsDto().isKeepDisplayingResults(); } - protected boolean isSaveInBackground(){ + protected boolean isSaveInBackground() { return getMainPanel().getExecuteChangeOptionsDto().isSaveInBackground(); } @@ -1077,7 +1073,7 @@ public List getObjectFormTypes() { return objectForms; } List validObjectForms = new ArrayList<>(); - for (ObjectFormType objectForm: objectForms) { + for (ObjectFormType objectForm : objectForms) { if (isSupportedObjectType(objectForm.getType())) { validObjectForms.add(objectForm); } @@ -1087,7 +1083,7 @@ public List getObjectFormTypes() { protected boolean isSupportedObjectType(QName type) { ObjectTypes objectType = ObjectTypes.getObjectType(getCompileTimeClass()); - return QNameUtil.match(objectType.getTypeQName(),type); + return QNameUtil.match(objectType.getTypeQName(), type); } public void setSaveOnConfigure(boolean saveOnConfigure) { @@ -1111,7 +1107,7 @@ public void finishProcessing(AjaxRequestTarget target, Collection, ModelContext> modelContextMap){ + protected void processAdditionalFocalObjectsForPreview(Map, ModelContext> modelContextMap) { } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCases.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCases.java index afb8c33ff42..5f323c4cfbc 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCases.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCases.java @@ -1,11 +1,25 @@ /* - * Copyright (c) 2010-2019 Evolveum and contributors + * Copyright (C) 2010-2020 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.web.page.admin.cases; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder; +import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; +import org.apache.wicket.extensions.markup.html.repeater.util.SortParam; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.request.mapper.parameter.PageParameters; + import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; @@ -34,17 +48,8 @@ import com.evolveum.midpoint.web.page.admin.users.component.ExecuteChangeOptionsDto; import com.evolveum.midpoint.web.session.UserProfileStorage; import com.evolveum.midpoint.web.util.OnePageParameterEncoder; -import com.evolveum.midpoint.xml.ns._public.common.common_3.*; -import org.apache.commons.collections.CollectionUtils; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder; -import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; -import org.apache.wicket.extensions.markup.html.repeater.util.SortParam; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; -import org.apache.wicket.request.mapper.parameter.PageParameters; - -import java.util.*; +import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.MetadataType; /** * @author acope on 9/14/17. @@ -98,23 +103,22 @@ protected List, String>> initColumns() { } @Override - protected Class getType(){ + protected Class getType() { return CaseType.class; } @Override - protected UserProfileStorage.TableId getTableId(){ + protected UserProfileStorage.TableId getTableId() { return UserProfileStorage.TableId.TABLE_CASES; } - @Override - protected boolean isCreateNewObjectEnabled(){ + protected boolean isCreateNewObjectEnabled() { return false; } @Override - protected Collection> getQueryOptions(){ + protected Collection> getQueryOptions() { return getOperationOptionsBuilder() .item(CaseType.F_OBJECT_REF).resolve() .item(CaseType.F_TARGET_REF).resolve() @@ -122,7 +126,7 @@ protected Collection> getQueryOptions(){ } @Override - protected void setDefaultSorting(BaseSortableDataProvider> provider){ + protected void setDefaultSorting(BaseSortableDataProvider> provider) { provider.setSort(MetadataType.F_CREATE_TIMESTAMP.getLocalPart(), SortOrder.DESCENDING); } @@ -144,13 +148,14 @@ public InlineMenuItemAction initAction() { @Override public void onClick(AjaxRequestTarget target) { - if (getRowModel() == null && warnIfNoCaseSelected(target)){ + if (getRowModel() == null && warnIfNoCaseSelected(target)) { return; } if (getRowModel() == null) { stopCaseProcessConfirmed(target); } else { - stopCaseProcessConfirmed(target, Arrays.asList(getRowModel().getObject().getValue())); + stopCaseProcessConfirmed(target, + Collections.singletonList(getRowModel().getObject().getValue())); } } }; @@ -158,8 +163,8 @@ public void onClick(AjaxRequestTarget target) { @Override public IModel getEnabled() { - IModel> rowModel = ((ColumnMenuAction>)getAction()).getRowModel(); - if (rowModel != null && rowModel.getObject() != null && rowModel.getObject().getValue() != null){ + IModel> rowModel = ((ColumnMenuAction>) getAction()).getRowModel(); + if (rowModel != null && rowModel.getObject() != null && rowModel.getObject().getValue() != null) { return Model.of(!CaseTypeUtil.isClosed(rowModel.getObject().getValue())); } else { return super.getEnabled(); @@ -167,12 +172,12 @@ public IModel getEnabled() { } @Override - public CompositedIconBuilder getIconCompositedBuilder(){ + public CompositedIconBuilder getIconCompositedBuilder() { return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_STOP_MENU_ITEM); } @Override - public IModel getConfirmationMessageModel(){ + public IModel getConfirmationMessageModel() { return getObjectListPanel().getSelectedObjectsCount() > 0 ? createStringResource("pageCases.button.stopProcess.multiple.confirmationMessage", getObjectListPanel().getSelectedObjectsCount()) : createStringResource("pageCases.button.stopProcess.confirmationMessage"); @@ -188,27 +193,28 @@ public InlineMenuItemAction initAction() { @Override public void onClick(AjaxRequestTarget target) { - if (getRowModel() == null && warnIfNoCaseSelected(target)){ + if (getRowModel() == null && warnIfNoCaseSelected(target)) { return; } if (getRowModel() == null) { deleteCaseObjectsConfirmed(target); } else { - deleteCaseObjectsConfirmed(target, Arrays.asList(getRowModel().getObject().getValue())); + deleteCaseObjectsConfirmed(target, + Collections.singletonList(getRowModel().getObject().getValue())); } } }; } @Override - public CompositedIconBuilder getIconCompositedBuilder(){ + public CompositedIconBuilder getIconCompositedBuilder() { return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_DELETE_MENU_ITEM); } @Override public IModel getEnabled() { - IModel> rowModel = ((ColumnMenuAction>)getAction()).getRowModel(); - if (rowModel != null && rowModel.getObject() != null && rowModel.getObject().getValue() != null){ + IModel> rowModel = ((ColumnMenuAction>) getAction()).getRowModel(); + if (rowModel != null && rowModel.getObject() != null && rowModel.getObject().getValue() != null) { return Model.of(!CaseTypeUtil.isClosed(rowModel.getObject().getValue())); } else { return super.getEnabled(); @@ -216,7 +222,7 @@ public IModel getEnabled() { } @Override - public IModel getConfirmationMessageModel(){ + public IModel getConfirmationMessageModel() { return getObjectListPanel().getSelectedObjectsCount() > 0 ? createStringResource("pageCases.button.delete.multiple.confirmationMessage", getObjectListPanel().getSelectedObjectsCount()) : createStringResource("pageCases.button.delete.confirmationMessage"); @@ -227,21 +233,12 @@ public IModel getConfirmationMessageModel(){ return menu; } - private String getObjectRef(IModel> caseModel) { - CaseType caseModelObject = caseModel.getObject().getValue(); - if (caseModelObject == null || caseModelObject.getObjectRef() == null) { - return ""; - } - return WebComponentUtil.getEffectiveName(caseModelObject.getObjectRef(), AbstractRoleType.F_DISPLAY_NAME, PageCases.this, - OPERATION_LOAD_REFERENCE_DISPLAY_NAME); - } - - private void deleteCaseObjectsConfirmed(AjaxRequestTarget target){ + private void deleteCaseObjectsConfirmed(AjaxRequestTarget target) { deleteCaseObjectsConfirmed(target, getObjectListPanel().getSelectedObjects()); } - private void deleteCaseObjectsConfirmed(AjaxRequestTarget target, List casesToDelete){ - if (casesToDelete == null){ + private void deleteCaseObjectsConfirmed(AjaxRequestTarget target, List casesToDelete) { + if (casesToDelete == null) { return; } OperationResult result = new OperationResult(OPERATION_DELETE_CASE_OBJECT); @@ -258,12 +255,12 @@ private void deleteCaseObjectsConfirmed(AjaxRequestTarget target, List getObjectListPanel().clearCache(); } - private void stopCaseProcessConfirmed(AjaxRequestTarget target){ + private void stopCaseProcessConfirmed(AjaxRequestTarget target) { stopCaseProcessConfirmed(target, getObjectListPanel().getSelectedObjects()); } - private void stopCaseProcessConfirmed(AjaxRequestTarget target, List casesToStop){ - if (casesToStop == null){ + private void stopCaseProcessConfirmed(AjaxRequestTarget target, List casesToStop) { + if (casesToStop == null) { return; } OperationResult result = new OperationResult(OPERATION_STOP_CASE_PROCESS); @@ -271,7 +268,7 @@ private void stopCaseProcessConfirmed(AjaxRequestTarget target, List c Task task = createSimpleTask(OPERATION_STOP_CASE_PROCESS); try { getWorkflowService().cancelCase(caseObject.getOid(), task, result); - } catch (Exception ex){ + } catch (Exception ex) { LOGGER.error("Couldn't stop case process: {}", ex.getLocalizedMessage()); result.recordFatalError(createStringResource("PageCases.message.stopCaseProcessConfirmed.fatalError").getString(), ex); } @@ -284,8 +281,8 @@ private void stopCaseProcessConfirmed(AjaxRequestTarget target, List c getObjectListPanel().clearCache(); } - private boolean warnIfNoCaseSelected(AjaxRequestTarget target){ - if (CollectionUtils.isEmpty(getObjectListPanel().getSelectedObjects())){ + private boolean warnIfNoCaseSelected(AjaxRequestTarget target) { + if (CollectionUtils.isEmpty(getObjectListPanel().getSelectedObjects())) { warn(getString("PageCases.noCaseSelected")); target.add(getFeedbackPanel()); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/CertDecisionHelper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/CertDecisionHelper.java index a99d9c1afa3..c840781491c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/CertDecisionHelper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/CertDecisionHelper.java @@ -1,12 +1,29 @@ /* - * Copyright (c) 2010-2015 Evolveum and contributors + * Copyright (C) 2010-2020 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.web.page.admin.certification; +import static com.evolveum.midpoint.gui.api.util.WebComponentUtil.dispatchToObjectDetailsPage; + +import java.io.Serializable; +import java.util.List; +import javax.xml.namespace.QName; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; +import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn; +import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; +import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; +import org.apache.wicket.markup.repeater.Item; +import org.apache.wicket.markup.repeater.RepeatingView; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; + import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.schema.constants.ObjectTypes; @@ -18,30 +35,11 @@ import com.evolveum.midpoint.web.page.admin.certification.dto.SearchingUtils; import com.evolveum.midpoint.web.page.admin.certification.handlers.CertGuiHandler; import com.evolveum.midpoint.web.page.admin.certification.handlers.CertGuiHandlerRegistry; -import com.evolveum.midpoint.web.page.admin.home.dto.AssignmentItemDto; import com.evolveum.midpoint.web.util.ObjectTypeGuiDescriptor; import com.evolveum.midpoint.web.util.TooltipBehavior; import com.evolveum.midpoint.xml.ns._public.common.common_3.DisplayType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; -import org.apache.commons.collections.CollectionUtils; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; -import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn; -import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; -import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.markup.repeater.RepeatingView; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; - -import javax.xml.namespace.QName; -import java.io.Serializable; -import java.util.List; - -import static com.evolveum.midpoint.gui.api.util.WebComponentUtil.dispatchToObjectDetailsPage; - /** * Some common functionality used from PageCertCampaign and PageCertDecisions. * TODO finish the refactoring @@ -122,8 +120,8 @@ public void populateItem(Item> cellItem, String componentId, RepeatingView reviewersPanel = new RepeatingView(componentId); if (dto instanceof CertWorkItemDto) { List reviewersList = ((CertWorkItemDto) dto).getReviewerRefList(); - if (CollectionUtils.isNotEmpty(reviewersList)){ - for (ObjectReferenceType reviewer : reviewersList){ + if (CollectionUtils.isNotEmpty(reviewersList)) { + for (ObjectReferenceType reviewer : reviewersList) { reviewersPanel.add(new LinkPanel(reviewersPanel.newChildId(), Model.of(WebComponentUtil.getDisplayNameOrName(reviewer))) { private static final long serialVersionUID = 1L; @@ -176,5 +174,4 @@ public void populateItem(Item> item, Strin }; return column; } - } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java index fd8444f9970..de2a4c3912c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java @@ -1,5 +1,5 @@ -/* Copyright (c) 2010-2020 Evolveum and contributors - * +/* + * Copyright (C) 2010-2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -12,8 +12,6 @@ import java.util.stream.Collectors; import javax.xml.namespace.QName; -import com.evolveum.midpoint.web.page.admin.configuration.component.DebugSearchFragment; - import org.apache.commons.collections.IteratorUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.AttributeModifier; @@ -37,7 +35,6 @@ import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; -import com.evolveum.midpoint.model.api.ModelExecuteOptions; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.query.ObjectFilter; import com.evolveum.midpoint.prism.query.ObjectPaging; @@ -74,6 +71,7 @@ import com.evolveum.midpoint.web.component.search.Search; import com.evolveum.midpoint.web.component.search.SearchFactory; import com.evolveum.midpoint.web.page.admin.configuration.component.DebugButtonPanel; +import com.evolveum.midpoint.web.page.admin.configuration.component.DebugSearchFragment; import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction; import com.evolveum.midpoint.web.page.admin.configuration.component.PageDebugDownloadBehaviour; import com.evolveum.midpoint.web.page.admin.configuration.dto.DebugConfDialogDto; @@ -93,10 +91,10 @@ */ @PageDescriptor( urls = { - @Url(mountUrl = "/admin/config/debugs", matchUrlForSecurity = "/admin/config/debugs")}, + @Url(mountUrl = "/admin/config/debugs", matchUrlForSecurity = "/admin/config/debugs") }, action = { - @AuthorizationAction(actionUri = PageAdminConfiguration.AUTH_CONFIGURATION_ALL, label = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_LABEL, description = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_DESCRIPTION), - @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_CONFIGURATION_DEBUGS_URL, label = "PageDebugList.auth.debugs.label", description = "PageDebugList.auth.debugs.description") }) + @AuthorizationAction(actionUri = PageAdminConfiguration.AUTH_CONFIGURATION_ALL, label = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_LABEL, description = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_DESCRIPTION), + @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_CONFIGURATION_DEBUGS_URL, label = "PageDebugList.auth.debugs.label", description = "PageDebugList.auth.debugs.description") }) public class PageDebugList extends PageAdminConfiguration { private static final Trace LOGGER = TraceManager.getTrace(PageDebugList.class); @@ -114,17 +112,16 @@ public class PageDebugList extends PageAdminConfiguration { private static final String ID_TABLE = "table"; - private static final String ID_TABLE_HEADER = "tableHeader"; - // search form model; - private IModel searchModel; - private IModel showAllItemsModel = Model.of(true); // todo make this persistent (in user session) + private final IModel searchModel; + // todo make this persistent (in user session) + private final IModel showAllItemsModel = Model.of(true); // confirmation dialog model - private IModel confDialogModel; - private IModel>> resourcesModel; - private IModel> objectClassListModel; + private final IModel confDialogModel; + private final IModel>> resourcesModel; + private final IModel> objectClassListModel; public PageDebugList() { searchModel = new LoadableModel(false) { @@ -167,12 +164,12 @@ protected List> load() { @Override protected List load() { - if (searchModel != null && searchModel.getObject() != null && searchModel.getObject().getResource() != null){ + if (searchModel != null && searchModel.getObject() != null && searchModel.getObject().getResource() != null) { ObjectViewDto objectViewDto = searchModel.getObject().getResource(); OperationResult result = new OperationResult(OPERATION_LOAD_RESOURCE_OBJECT); - PrismObject resource = WebModelServiceUtils.loadObject(ResourceType.class, objectViewDto.getOid(), PageDebugList.this, + PrismObject resource = WebModelServiceUtils.loadObject(ResourceType.class, objectViewDto.getOid(), PageDebugList.this, createSimpleTask(OPERATION_LOAD_RESOURCE_OBJECT), result); - if (resource != null){ + if (resource != null) { return WebComponentUtil.loadResourceObjectClassValues(resource.asObjectable(), PageDebugList.this); } } @@ -335,7 +332,7 @@ public boolean isEnabled() { DebugObjectItem.F_RESOURCE_TYPE)); } - column = new AbstractColumn(new Model(), null) { + column = new AbstractColumn(new Model<>(), null) { private static final long serialVersionUID = 1L; @Override @@ -435,7 +432,7 @@ public IModel getVisible() { return Model.of(ObjectTypes.SHADOW.equals(dto.getType())); } - }); + }); headerMenuItems.add(new InlineMenuItem(createStringResource("pageDebugList.menu.exportAll"), true) { private static final long serialVersionUID = 1L; @@ -543,12 +540,12 @@ private Table getListTable() { private void listObjectsPerformed(AjaxRequestTarget target, boolean isOidSearch) { DebugSearchDto dto = searchModel.getObject(); - if (isOidSearch && StringUtils.isNotEmpty(dto.getOidFilter())){ + if (isOidSearch && StringUtils.isNotEmpty(dto.getOidFilter())) { OperationResult result = new OperationResult(OPERATION_LOAD_OBJECT_BY_OID); Task task = createSimpleTask(OPERATION_LOAD_OBJECT_BY_OID); PrismObject objectToDisplay = WebModelServiceUtils.loadObject(ObjectType.class, dto.getOidFilter(), PageDebugList.this, task, result); - if (objectToDisplay != null && objectToDisplay.getCompileTimeClass() != null){ + if (objectToDisplay != null && objectToDisplay.getCompileTimeClass() != null) { dto.setType(ObjectTypes.getObjectType(objectToDisplay.getCompileTimeClass())); } } @@ -573,7 +570,7 @@ private void setupSearchDto(DebugSearchDto dto) { private void listObjectsPerformed(ObjectQuery query, boolean isOidSearch, AjaxRequestTarget target) { DebugSearchDto dto = searchModel.getObject(); - if (!isOidSearch){ + if (!isOidSearch) { searchModel.getObject().setOidFilter(null); } @@ -603,7 +600,7 @@ private ObjectQuery createQuery(ObjectQuery searchQuery) { ObjectFilter inOidFilter = getPrismContext().queryFor(ObjectType.class).id(oidFilterValue).buildFilter(); filters.add(inOidFilter); - if (searchQuery == null){ + if (searchQuery == null) { ObjectQuery query = getPrismContext().queryFor(ObjectType.class) .build(); query.addFilter(inOidFilter); @@ -617,7 +614,7 @@ private ObjectQuery createQuery(ObjectQuery searchQuery) { String oid = dto.getResource().getOid(); QName objectClass = dto.getObjectClass(); ObjectFilter objectFilter; - if (objectClass != null){ + if (objectClass != null) { objectFilter = getPrismContext().queryFor(ShadowType.class) .item(ShadowType.F_RESOURCE_REF).ref(oid) .and() @@ -823,8 +820,9 @@ private void deleteSelected(AjaxRequestTarget target, DebugObjectItem item) { } private void deleteAllIdentities(AjaxRequestTarget target) { - DeleteAllPanel dialog = new DeleteAllPanel(getMainPopupBodyId()){ + DeleteAllPanel dialog = new DeleteAllPanel(getMainPopupBodyId()) { private static final long serialVersionUID = 1L; + @Override public void yesPerformed(AjaxRequestTarget target) { hideMainPopup(target); @@ -976,5 +974,4 @@ private void finishOperation(OperationResult result, String taskOid, AjaxRequest target.add(getFeedbackPanel()); } - } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/AuditLogViewerPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/AuditLogViewerPanel.java index 209897c3818..305780a8097 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/AuditLogViewerPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/AuditLogViewerPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2018 Evolveum and contributors + * Copyright (C) 2010-2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -10,29 +10,11 @@ import static org.apache.commons.collections.CollectionUtils.isNotEmpty; import java.io.Serializable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; - import javax.xml.datatype.XMLGregorianCalendar; import javax.xml.namespace.QName; -import com.evolveum.midpoint.gui.api.util.WebPrismUtil; -import com.evolveum.midpoint.gui.impl.Channel; -import com.evolveum.midpoint.prism.ItemDefinition; -import com.evolveum.midpoint.prism.path.ItemPath; -import com.evolveum.midpoint.prism.schema.PrismSchema; -import com.evolveum.midpoint.task.api.Task; -import com.evolveum.midpoint.web.component.util.VisibleBehaviour; -import com.evolveum.midpoint.web.session.AuditLogStorage; -import com.evolveum.midpoint.web.session.PageStorage; -import com.evolveum.midpoint.web.util.InfoTooltipBehavior; - -import com.evolveum.midpoint.xml.ns._public.common.common_3.*; - import org.apache.commons.lang.StringUtils; import org.apache.wicket.AttributeModifier; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -58,10 +40,16 @@ import com.evolveum.midpoint.gui.api.component.path.ItemPathPanel; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; +import com.evolveum.midpoint.gui.api.util.WebPrismUtil; +import com.evolveum.midpoint.gui.impl.Channel; +import com.evolveum.midpoint.prism.ItemDefinition; +import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.prism.schema.PrismSchema; import com.evolveum.midpoint.schema.constants.ObjectTypes; import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectTypeUtil; +import com.evolveum.midpoint.task.api.Task; import com.evolveum.midpoint.util.QNameUtil; import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.util.exception.SystemException; @@ -74,17 +62,22 @@ import com.evolveum.midpoint.web.component.input.DatePanel; import com.evolveum.midpoint.web.component.input.DropDownChoicePanel; import com.evolveum.midpoint.web.component.input.TextPanel; +import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour; import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnChangeAjaxFormUpdatingBehavior; import com.evolveum.midpoint.web.page.admin.reports.PageAuditLogDetails; import com.evolveum.midpoint.web.page.admin.reports.dto.AuditEventRecordProvider; import com.evolveum.midpoint.web.page.admin.reports.dto.AuditSearchDto; +import com.evolveum.midpoint.web.session.AuditLogStorage; +import com.evolveum.midpoint.web.session.PageStorage; import com.evolveum.midpoint.web.session.UserProfileStorage; import com.evolveum.midpoint.web.util.DateValidator; +import com.evolveum.midpoint.web.util.InfoTooltipBehavior; import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventRecordType; import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventStageType; import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventTypeType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; /** @@ -141,7 +134,6 @@ public abstract class AuditLogViewerPanel extends BasePanel { static final Trace LOGGER = TraceManager.getTrace(AuditLogViewerPanel.class); - private static final String OPERATION_RESOLVE_REFENRENCE_NAME = AuditLogViewerPanel.class.getSimpleName() + ".resolveReferenceName()"; private static final String OPERATION_LOAD_AUDIT_CONFIGURATION = AuditLogViewerPanel.class.getSimpleName() @@ -149,17 +141,15 @@ public abstract class AuditLogViewerPanel extends BasePanel { private static final int DEFAULT_PAGE_SIZE = 10; - private boolean isHistory = false; + private final boolean isHistory; - public AuditLogViewerPanel(String id, IModel model, boolean isHistory) { + public AuditLogViewerPanel(String id, IModel model, boolean isHistory) { super(id, model); - this.isHistory = isHistory; - } @Override - protected void onInitialize(){ + protected void onInitialize() { super.onInitialize(); initLayout(); } @@ -180,7 +170,7 @@ private void initParametersPanel(Form mainForm) { mainForm.add(parametersPanel); DatePanel from = new DatePanel(ID_FROM, new PropertyModel<>( - getModel(), AuditSearchDto.F_FROM)); + getModel(), AuditSearchDto.F_FROM)); DateValidator dateFromValidator = WebComponentUtil.getRangeValidator(mainForm, ItemPath.create(AuditSearchDto.F_FROM)); dateFromValidator.setMessageKey("AuditLogViewerPanel.dateValidatorMessage"); dateFromValidator.setDateFrom((DateTimeField) from.getBaseFormComponent()); @@ -193,7 +183,7 @@ private void initParametersPanel(Form mainForm) { parametersPanel.add(getHelpComponent(ID_FROM_FIELD_HELP, WebPrismUtil.getHelpText(getItemDefinition(AuditEventRecordType.F_TIMESTAMP)))); DatePanel to = new DatePanel(ID_TO, new PropertyModel<>(getModel(), - AuditSearchDto.F_TO)); + AuditSearchDto.F_TO)); DateValidator dateToValidator = WebComponentUtil.getRangeValidator(mainForm, ItemPath.create(AuditSearchDto.F_FROM)); dateToValidator.setMessageKey("AuditLogViewerPanel.dateValidatorMessage"); @@ -220,14 +210,14 @@ private void initParametersPanel(Form mainForm) { resourceOidContainer.add(getHelpComponent(ID_RESOURCE_OID_FIELD_HELP, "")); ItemPathPanel changedItemPanel = new ItemPathPanel(ID_CHANGED_ITEM, new PropertyModel<>(getModel(), - AuditSearchDto.F_CHANGED_ITEM), true, getAuditLogStorage() != null ? - getAuditLogStorage().getSearchDto().getChangedItemPanelMode() : ItemPathPanel.ItemPathPanelMode.NAMESPACE_MODE){ + AuditSearchDto.F_CHANGED_ITEM), true, getAuditLogStorage() != null ? + getAuditLogStorage().getSearchDto().getChangedItemPanelMode() : ItemPathPanel.ItemPathPanelMode.NAMESPACE_MODE) { private static final long serialVersionUID = 1L; @Override - protected void switchButtonClickPerformed(AjaxRequestTarget target){ + protected void switchButtonClickPerformed(AjaxRequestTarget target) { super.switchButtonClickPerformed(target); - if (getAuditLogStorage() != null){ + if (getAuditLogStorage() != null) { getAuditLogStorage().getSearchDto().setChangedItemPanelMode(getPanelMode()); } } @@ -261,13 +251,13 @@ protected void switchButtonClickPerformed(AjaxRequestTarget target){ IModel model = getModel(); IModel auditSearchModel = Model.of(); - if(model != null && model.getObject() != null && model.getObject().getCollectionRef() != null) { + if (model != null && model.getObject() != null && model.getObject().getCollectionRef() != null) { ObjectReferenceType ref = model.getObject().getCollectionRef().getCollectionRef(); Task task = getPageBase().createSimpleTask("Search collection"); - ObjectCollectionType collection = (ObjectCollectionType)WebModelServiceUtils.loadObject(ref, + ObjectCollectionType collection = (ObjectCollectionType) WebModelServiceUtils.loadObject(ref, getPageBase(), task, task.getResult()).getRealValue(); if (collection != null && collection.getFilter() == null && collection.getAuditSearch() != null - && collection.getAuditSearch().getRecordQuery() != null){ + && collection.getAuditSearch().getRecordQuery() != null) { auditSearchModel.setObject(collection.getAuditSearch()); } } @@ -290,10 +280,10 @@ protected void switchButtonClickPerformed(AjaxRequestTarget target){ usedIntervalContainer.add(getHelpComponent(ID_USED_INTERVAL_FIELD_HELP, "")); DropDownChoicePanel eventType = new DropDownChoicePanel<>( - ID_EVENT_TYPE, new PropertyModel<>( - getModel(), AuditSearchDto.F_EVENT_TYPE), new ListModel<>( - Arrays.asList(AuditEventTypeType.values())), - new EnumChoiceRenderer<>(), true); + ID_EVENT_TYPE, new PropertyModel<>( + getModel(), AuditSearchDto.F_EVENT_TYPE), new ListModel<>( + Arrays.asList(AuditEventTypeType.values())), + new EnumChoiceRenderer<>(), true); eventType.getBaseFormComponent().add(new EmptyOnChangeAjaxFormUpdatingBehavior()); eventType.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); eventType.setOutputMarkupId(true); @@ -305,23 +295,23 @@ protected void switchButtonClickPerformed(AjaxRequestTarget target){ eventStage.setOutputMarkupId(true); eventStage.add(new VisibleEnableBehaviour() { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - @Override - public boolean isVisible() { - return !isHistory; - } + @Override + public boolean isVisible() { + return !isHistory; + } }); parametersPanel.add(eventStage); ListModel eventStageListModel = new ListModel<>( - Arrays.asList(AuditEventStageType.values())); + Arrays.asList(AuditEventStageType.values())); PropertyModel eventStageModel = new PropertyModel<>( - getModel(), AuditSearchDto.F_EVENT_STAGE); + getModel(), AuditSearchDto.F_EVENT_STAGE); DropDownChoicePanel eventStageField = new DropDownChoicePanel<>( - ID_EVENT_STAGE_FIELD, eventStageModel, eventStageListModel, - new EnumChoiceRenderer<>(), true); + ID_EVENT_STAGE_FIELD, eventStageModel, eventStageListModel, + new EnumChoiceRenderer<>(), true); eventStageField.getBaseFormComponent().add(new EmptyOnChangeAjaxFormUpdatingBehavior()); eventStageField.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); eventStageField.setOutputMarkupId(true); @@ -342,18 +332,16 @@ public boolean isVisible() { List channelList = WebComponentUtil.getChannelList(); List channelQnameList = new ArrayList<>(); - for (int i = 0; i < channelList.size(); i++) { - String channel = channelList.get(i); + for (String channel : channelList) { if (channel != null) { QName channelQName = QNameUtil.uriToQName(channel); channelQnameList.add(channelQName); } } -// ListModel channelListModel = new ListModel<>(channelQnameList); - PropertyModel channelModel = new PropertyModel<>(getModel(), - AuditSearchDto.F_CHANNEL); + PropertyModel channelModel = + new PropertyModel<>(getModel(), AuditSearchDto.F_CHANNEL); DropDownChoicePanel channel = new DropDownChoicePanel<>(ID_CHANNEL, channelModel, - Model.ofList(Arrays.asList(Channel.values())), + Model.ofList(Arrays.asList(Channel.values())), new EnumChoiceRenderer<>(), true); channel.getBaseFormComponent().add(new EmptyOnChangeAjaxFormUpdatingBehavior()); channel.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); @@ -374,12 +362,12 @@ public boolean isVisible() { WebMarkupContainer targetOwnerName = new WebMarkupContainer(ID_TARGET_OWNER_NAME); targetOwnerName.add(new VisibleEnableBehaviour() { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - @Override - public boolean isVisible() { - return !isHistory; - } + @Override + public boolean isVisible() { + return !isHistory; + } }); parametersPanel.add(targetOwnerName); @@ -395,20 +383,20 @@ public boolean isVisible() { private static final long serialVersionUID = 1L; - @Override - public boolean isVisible() { - return !isHistory; - } + @Override + public boolean isVisible() { + return !isHistory; + } }); parametersPanel.add(targetName); - List> allowedClassesAll = new ArrayList<>(); - allowedClassesAll.addAll(ObjectTypes.getAllObjectTypes()); + List> allowedClassesAll = + new ArrayList<>(ObjectTypes.getAllObjectTypes()); MultiValueChoosePanel chooseTargetPanel = new MultiValueChoosePanel<>( - ID_TARGET_NAME_FIELD, - new PropertyModel<>(getModel(), AuditSearchDto.F_TARGET_NAMES_OBJECTS), - allowedClassesAll); + ID_TARGET_NAME_FIELD, + new PropertyModel<>(getModel(), AuditSearchDto.F_TARGET_NAMES_OBJECTS), + allowedClassesAll); chooseTargetPanel.setOutputMarkupId(true); targetName.add(chooseTargetPanel); targetName.add(getHelpComponent(ID_TARGET_NAME_FIELD_HELP, @@ -425,7 +413,7 @@ protected void onSubmit(AjaxRequestTarget target) { } @Override - protected void onError(AjaxRequestTarget target){ + protected void onError(AjaxRequestTarget target) { target.add(getPageBase().getFeedbackPanel()); } }; @@ -438,12 +426,12 @@ protected void onError(AjaxRequestTarget target){ @Override protected void onSubmit(AjaxRequestTarget target) { - resetAuditSearchStorage(); + resetAuditSearchStorage(); searchUpdatePerformed(target); } @Override - protected void onError(AjaxRequestTarget target){ + protected void onError(AjaxRequestTarget target) { target.add(getPageBase().getFeedbackPanel()); } }; @@ -453,18 +441,18 @@ protected void onError(AjaxRequestTarget target){ WebMarkupContainer valueRefTargetNameContainer = new WebMarkupContainer(ID_VALUE_REF_TARGET_NAMES); valueRefTargetNameContainer.add(new VisibleEnableBehaviour() { - @Override - public boolean isVisible() { - return !isHistory; - } + @Override + public boolean isVisible() { + return !isHistory; + } }); parametersPanel.add(valueRefTargetNameContainer); MultiValueChoosePanel chooseValueRefTargetNamePanel = new MultiValueChoosePanel<>( - ID_VALUE_REF_TARGET_NAMES_FIELD, - new PropertyModel<>(getModel(), AuditSearchDto.F_VALUE_REF_TARGET_NAME), - allowedClassesAll); + ID_VALUE_REF_TARGET_NAMES_FIELD, + new PropertyModel<>(getModel(), AuditSearchDto.F_VALUE_REF_TARGET_NAME), + allowedClassesAll); chooseValueRefTargetNamePanel.setOutputMarkupId(true); valueRefTargetNameContainer.add(chooseValueRefTargetNamePanel); valueRefTargetNameContainer.add(getHelpComponent(ID_VALUE_REF_TARGET_NAMES_FIELD_HELP, "")); @@ -478,13 +466,13 @@ private VisibleEnableBehaviour getVisibleBehaviourForUsedQueryComponent() { @Override public boolean isVisible() { IModel model = getModel(); - if(model != null && model.getObject() != null && model.getObject().getCollectionRef() != null) { + if (model != null && model.getObject() != null && model.getObject().getCollectionRef() != null) { ObjectReferenceType ref = model.getObject().getCollectionRef().getCollectionRef(); Task task = getPageBase().createSimpleTask("Search collection"); - ObjectCollectionType collection = (ObjectCollectionType)WebModelServiceUtils.loadObject(ref, + ObjectCollectionType collection = (ObjectCollectionType) WebModelServiceUtils.loadObject(ref, getPageBase(), task, task.getResult()).getRealValue(); if (collection != null && collection.getFilter() == null && collection.getAuditSearch() != null - && collection.getAuditSearch().getRecordQuery() != null){ + && collection.getAuditSearch().getRecordQuery() != null) { return true; } } @@ -496,13 +484,7 @@ public boolean isVisible() { // Serializable as it becomes part of panel which is serialized private Function objectReferenceTransformer = (Function & Serializable) (ObjectType o) -> - ObjectTypeUtil.createObjectRef(o, getPageBase().getPrismContext()); - - // Serializable as it becomes part of panel which is serialized - private Function stringTransformer = - (Function & Serializable) (ObjectType o) -> - o.getName().getOrig(); - + ObjectTypeUtil.createObjectRef(o, getPageBase().getPrismContext()); private IModel getCollectionRefForAuditEventModel() { return new IModel() { @@ -536,7 +518,7 @@ private Map getAuditEventProviderParameters() { parameters.put(AuditEventRecordProvider.PARAMETER_HOST_IDENTIFIER, search.getHostIdentifier()); parameters.put(AuditEventRecordProvider.PARAMETER_REQUEST_IDENTIFIER, search.getRequestIdentifier()); - if (StringUtils.isNotEmpty(search.getResourceOid())){ + if (StringUtils.isNotEmpty(search.getResourceOid())) { parameters.put(AuditEventRecordProvider.PARAMETER_RESOURCE_OID, search.getResourceOid()); } if (search.getInitiatorName() != null) { @@ -596,7 +578,7 @@ protected void saveCurrentPage(long from, long count) { } @Override - protected PageStorage getPageStorage(){ + protected PageStorage getPageStorage() { return getAuditLogStorage(); } @@ -636,32 +618,30 @@ public void setShowPaging(boolean show) { //we don't need to do anything here } - }; + }; table.setShowPaging(true); table.setCurrentPage(getCurrentPage()); table.setOutputMarkupId(true); mainForm.add(table); } - protected abstract AuditLogStorage getAuditLogStorage(); protected abstract void resetAuditSearchStorage(); - protected void updateAuditSearchStorage(AuditSearchDto searchDto){ + protected void updateAuditSearchStorage(AuditSearchDto searchDto) { getAuditLogStorage().setSearchDto(searchDto); getAuditLogStorage().setPageNumber(0); } - protected void updateCurrentPage(long current){ + protected void updateCurrentPage(long current) { getAuditLogStorage().setPageNumber(current); } - protected long getCurrentPage(){ + protected long getCurrentPage() { return getAuditLogStorage().getPageNumber(); } - - private BoxedTablePanel getAuditLogViewerTable(){ + private BoxedTablePanel getAuditLogViewerTable() { return (BoxedTablePanel) get(ID_MAIN_FORM).get(ID_TABLE); } @@ -674,7 +654,7 @@ protected List> initColumns() { private static final long serialVersionUID = 1L; @Override - protected IModel createLinkModel(final IModel rowModel){ + protected IModel createLinkModel(final IModel rowModel) { return new IModel() { private static final long serialVersionUID = 1L; @@ -685,6 +665,7 @@ public String getObject() { } }; } + @Override public void onClick(AjaxRequestTarget target, IModel rowModel) { AuditEventRecordType record = rowModel.getObject(); @@ -705,7 +686,7 @@ public void onClick(AjaxRequestTarget target, IModel rowMo @Override public void populateItem(Item> item, String componentId, - IModel rowModel) { + IModel rowModel) { AuditEventRecordType auditEventRecordType = rowModel.getObject(); createReferenceColumn(auditEventRecordType.getInitiatorRef(), item, componentId); } @@ -714,8 +695,8 @@ public void populateItem(Item> item, String if (!isHistory) { IColumn eventStageColumn = new PropertyColumn( - createStringResource("PageAuditLogViewer.eventStageLabel"), - AuditEventRecordProvider.EVENT_STAGE_PARAMETER, "eventStage"){ + createStringResource("PageAuditLogViewer.eventStageLabel"), + AuditEventRecordProvider.EVENT_STAGE_PARAMETER, "eventStage") { private static final long serialVersionUID = 1L; @Override @@ -726,8 +707,8 @@ public IModel getDataModel(IModel rowModel) { columns.add(eventStageColumn); } IColumn eventTypeColumn = new PropertyColumn( - createStringResource("PageAuditLogViewer.eventTypeLabel"), - AuditEventRecordProvider.EVENT_TYPE_PARAMETER, "eventType"){ + createStringResource("PageAuditLogViewer.eventTypeLabel"), + AuditEventRecordProvider.EVENT_TYPE_PARAMETER, "eventType") { private static final long serialVersionUID = 1L; @Override @@ -744,8 +725,8 @@ public IModel getDataModel(IModel rowModel) { @Override public void populateItem(Item> item, String componentId, - IModel rowModel) { - AuditEventRecordType auditEventRecordType = (AuditEventRecordType) rowModel.getObject(); + IModel rowModel) { + AuditEventRecordType auditEventRecordType = rowModel.getObject(); createReferenceColumn(auditEventRecordType.getTargetRef(), item, componentId); } }; @@ -759,8 +740,8 @@ public void populateItem(Item> item, String @Override public void populateItem(Item> item, String componentId, - IModel rowModel) { - AuditEventRecordType auditEventRecordType = (AuditEventRecordType) rowModel.getObject(); + IModel rowModel) { + AuditEventRecordType auditEventRecordType = rowModel.getObject(); createReferenceColumn(auditEventRecordType.getTargetOwnerRef(), item, componentId); } }; @@ -773,8 +754,8 @@ public void populateItem(Item> item, String @Override public void populateItem(Item> item, String componentId, - IModel rowModel) { - AuditEventRecordType auditEventRecordType = (AuditEventRecordType) rowModel.getObject(); + IModel rowModel) { + AuditEventRecordType auditEventRecordType = rowModel.getObject(); String channel = auditEventRecordType.getChannel(); Channel channelValue = null; for (Channel chan : Channel.values()) { @@ -818,46 +799,42 @@ private void createReferenceColumn(ObjectReferenceType ref, Item item, String co item.add(new AttributeModifier("style", new Model<>("width: 10%;"))); } - private void searchUpdatePerformed(AjaxRequestTarget target){ + private void searchUpdatePerformed(AjaxRequestTarget target) { getPageBase().getFeedbackPanel().getFeedbackMessages().clear(); target.add(getPageBase().getFeedbackPanel()); target.add(getMainFormComponent()); } - private Form getMainFormComponent(){ + private Form getMainFormComponent() { return (Form) get(ID_MAIN_FORM); } - private Label getHelpComponent(String id, String helpInfo){ + private Label getHelpComponent(String id, String helpInfo) { Label help = new Label(id); - help.add(AttributeModifier.replace("title",createStringResource(helpInfo != null ? helpInfo : ""))); + help.add(AttributeModifier.replace("title", createStringResource(helpInfo != null ? helpInfo : ""))); help.add(new InfoTooltipBehavior()); help.add(new VisibleBehaviour(() -> StringUtils.isNotEmpty(helpInfo))); return help; } - private ItemDefinition getItemDefinition(ItemPath itemPath){ + private ItemDefinition getItemDefinition(ItemPath itemPath) { PrismSchema auditSchema = getPageBase().getPrismContext().getSchemaRegistry().findSchemaByCompileTimeClass(AuditEventRecordType.class); - if (auditSchema != null){ + if (auditSchema != null) { return auditSchema.findComplexTypeDefinitionByType(AuditEventRecordType.COMPLEX_TYPE).findItemDefinition(itemPath); } return null; } - private boolean isResourceOidAuditEnabled(){ + private boolean isResourceOidAuditEnabled() { OperationResult result = new OperationResult(OPERATION_LOAD_AUDIT_CONFIGURATION); try { SystemConfigurationAuditType auditConfig = getPageBase().getModelInteractionService().getAuditConfiguration(result); - if (auditConfig != null && auditConfig.getEventRecording() != null){ + if (auditConfig != null && auditConfig.getEventRecording() != null) { return Boolean.TRUE.equals(auditConfig.getEventRecording().isRecordResourceOids()); } - } catch (Exception ex){ + } catch (Exception ex) { LOGGER.error("Cannot load audit configuration: {}", ex.getMessage()); } return false; } - - private ItemPathPanel getChangedItemPanel(){ - return (ItemPathPanel) get(getPageBase().createComponentPath(ID_MAIN_FORM, ID_PARAMETERS_PANEL, ID_CHANGED_ITEM)); - } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceDetailsTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceDetailsTabPanel.java index 9ec015d6d90..83bef689712 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceDetailsTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceDetailsTabPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2019 Evolveum and contributors + * Copyright (C) 2010-2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -9,14 +9,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; - import javax.xml.namespace.QName; -import com.evolveum.midpoint.prism.path.ItemPath; -import com.evolveum.midpoint.web.page.admin.server.PageTask; - -import com.evolveum.midpoint.xml.ns._public.common.common_3.*; - import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -40,6 +34,7 @@ import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.PrismProperty; +import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.processor.ObjectClassComplexTypeDefinition; import com.evolveum.midpoint.schema.result.OperationResult; @@ -57,7 +52,9 @@ import com.evolveum.midpoint.web.component.util.ListDataProvider; import com.evolveum.midpoint.web.component.util.SelectableBeanImpl; import com.evolveum.midpoint.web.page.admin.resources.dto.ResourceConfigurationDto; +import com.evolveum.midpoint.web.page.admin.server.PageTask; import com.evolveum.midpoint.web.util.OnePageParameterEncoder; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; public class ResourceDetailsTabPanel extends Panel { @@ -76,7 +73,7 @@ public class ResourceDetailsTabPanel extends Panel { LoadableModel capabilitiesModel; - private PageBase parentPage; + private final PageBase parentPage; public ResourceDetailsTabPanel(String id, final IModel model, PageBase parentPage) { super(id, model); @@ -112,17 +109,17 @@ protected void initLayout(IModel model, PageBase parentPage) { List resourceConfigList = createResourceConfigList(resource); ListDataProvider resourceConfigProvider = new ListDataProvider<>( - ResourceDetailsTabPanel.this, new ListModel<>(resourceConfigList)); + ResourceDetailsTabPanel.this, new ListModel<>(resourceConfigList)); List> columns = Arrays.asList( - new ColumnTypeDto("ShadowType.kind", "objectTypeDefinition.kind", + new ColumnTypeDto<>("ShadowType.kind", "objectTypeDefinition.kind", ShadowType.F_KIND.getLocalPart()), - new ColumnTypeDto("ShadowType.objectClass", + new ColumnTypeDto<>("ShadowType.objectClass", "objectTypeDefinition.objectClass.localPart", ShadowType.F_OBJECT_CLASS.getLocalPart()), - new ColumnTypeDto("ShadowType.intent", "objectTypeDefinition.intent", + new ColumnTypeDto<>("ShadowType.intent", "objectTypeDefinition.intent", ShadowType.F_INTENT.getLocalPart()), - new ColumnTypeDto("ResourceType.isSync", "sync", null)); + new ColumnTypeDto<>("ResourceType.isSync", "sync", null)); List, String>> tableColumns = ColumnUtils.createColumns(columns); @@ -135,7 +132,7 @@ public void populateItem(Item item, String componentId, final IModel rowModel) { RepeatingView repeater = new RepeatingView(componentId); for (final TaskType task : conf.getDefinedTasks()) { repeater.add(new LinkPanel(repeater.newChildId(), - new Model<>(task.getName().getOrig())) { + new Model<>(task.getName().getOrig())) { @Override public void onClick(AjaxRequestTarget target) { @@ -220,7 +217,7 @@ private BasicInfoBoxPanel createSourceTargetInfo(ResourceType resource) { String backgroundColor = "bg-aqua"; SourceTarget sourceTarget = determineIfSourceOrTarget(resource); - String numberKey = null; + String numberKey; switch (sourceTarget) { case SOURCE: numberKey = "PageResource.resource.source"; @@ -336,11 +333,11 @@ private InfoBoxPanel createSchemaStatusInfo(ResourceType resource) { String backgroundColor = "bg-gray"; String icon = "fa fa-times"; - String numberMessage = null; + String numberMessage; String description = null; Integer progress = null; - RefinedResourceSchema refinedSchema = null; + RefinedResourceSchema refinedSchema; try { refinedSchema = RefinedResourceSchemaImpl.getRefinedSchema(resource); if (refinedSchema != null) { @@ -387,7 +384,7 @@ private InfoBoxPanel createSchemaStatusInfo(ResourceType resource) { private ObjectSynchronizationType getSynchronizationFor( ResourceObjectTypeDefinitionType obejctTypesDefinition, List synchronizationPolicies, PrismObject resource) - throws SchemaException { + throws SchemaException { for (ObjectSynchronizationType synchronizationPolicy : synchronizationPolicies) { if (SynchronizationUtils.isPolicyApplicable(obejctTypesDefinition.getObjectClass(), @@ -405,7 +402,7 @@ private ObjectSynchronizationType getSynchronizationFor( private List getTaskFor(List> tasks, ObjectSynchronizationType synchronizationPolicy, PrismObject resource) - throws SchemaException { + throws SchemaException { List syncTasks = new ArrayList<>(); for (PrismObject task : tasks) { PrismProperty taskKind = task @@ -474,7 +471,7 @@ private boolean isOutboundDefined(ResourceAttributeDefinitionType attr) { private boolean isInboundDefined(ResourceAttributeDefinitionType attr) { return attr.getInbound() != null && CollectionUtils.isNotEmpty(attr.getInbound()) && (attr.getInbound().get(0).getTarget() != null - || attr.getInbound().get(0).getExpression() != null); + || attr.getInbound().get(0).getExpression() != null); } private boolean isSynchronizationDefined(ResourceType resource) { @@ -496,161 +493,9 @@ private boolean isSynchronizationDefined(ResourceType resource) { } return true; - } return false; - - } - - private SourceTarget determineCredentialsMappings(ResourceType resource) { - if (resource.getSchemaHandling() != null - && CollectionUtils.isNotEmpty(resource.getSchemaHandling().getObjectType())) { - - boolean hasOutbound = false; - boolean hasInbound = false; - - for (ResourceObjectTypeDefinitionType resourceObjectTypeDefinition : resource.getSchemaHandling() - .getObjectType()) { - - if (hasInbound && hasOutbound) { - return SourceTarget.SOURCE_TARGET; - } - - if (resourceObjectTypeDefinition.getCredentials() == null) { - continue; - } - - if (resourceObjectTypeDefinition.getCredentials().getPassword() == null) { - continue; - } - - ResourcePasswordDefinitionType passwordDef = resourceObjectTypeDefinition.getCredentials() - .getPassword(); - if (!hasOutbound) { - hasOutbound = passwordDef.getOutbound() != null; - } - - if (!hasInbound) { - hasInbound = CollectionUtils.isNotEmpty(passwordDef.getInbound()); - } - } - - if (hasInbound) { - return SourceTarget.SOURCE; - } - - if (hasOutbound) { - return SourceTarget.TARGET; - } - - } - - return SourceTarget.NOT_DEFINED; - } - - private SourceTarget determineActivationMappings(ResourceType resource) { - if (resource.getSchemaHandling() != null - && CollectionUtils.isNotEmpty(resource.getSchemaHandling().getObjectType())) { - - boolean hasOutbound = false; - boolean hasInbound = false; - - for (ResourceObjectTypeDefinitionType resourceObjectTypeDefinition : resource.getSchemaHandling() - .getObjectType()) { - - if (hasInbound && hasOutbound) { - return SourceTarget.SOURCE_TARGET; - } - - if (resourceObjectTypeDefinition.getActivation() == null) { - continue; - } - - if (!hasOutbound) { - ResourceActivationDefinitionType activationDef = resourceObjectTypeDefinition - .getActivation(); - if (activationDef.getAdministrativeStatus() != null && CollectionUtils - .isNotEmpty(activationDef.getAdministrativeStatus().getOutbound())) { - hasOutbound = true; - } - } - - if (!hasOutbound) { - ResourceActivationDefinitionType activationDef = resourceObjectTypeDefinition - .getActivation(); - if (activationDef.getValidFrom() != null - && CollectionUtils.isNotEmpty(activationDef.getValidFrom().getOutbound())) { - hasOutbound = true; - } - } - - if (!hasOutbound) { - ResourceActivationDefinitionType activationDef = resourceObjectTypeDefinition - .getActivation(); - if (activationDef.getValidTo() != null - && CollectionUtils.isNotEmpty(activationDef.getValidTo().getOutbound())) { - hasOutbound = true; - } - } - - if (!hasOutbound) { - ResourceActivationDefinitionType activationDef = resourceObjectTypeDefinition - .getActivation(); - if (activationDef.getExistence() != null - && CollectionUtils.isNotEmpty(activationDef.getExistence().getOutbound())) { - hasOutbound = true; - } - } - - if (!hasInbound) { - ResourceActivationDefinitionType activationDef = resourceObjectTypeDefinition - .getActivation(); - if (activationDef.getAdministrativeStatus() != null && CollectionUtils - .isNotEmpty(activationDef.getAdministrativeStatus().getInbound())) { - hasInbound = true; - } - } - - if (!hasInbound) { - ResourceActivationDefinitionType activationDef = resourceObjectTypeDefinition - .getActivation(); - if (activationDef.getValidFrom() != null - && CollectionUtils.isNotEmpty(activationDef.getValidFrom().getInbound())) { - hasInbound = true; - } - } - - if (!hasInbound) { - ResourceActivationDefinitionType activationDef = resourceObjectTypeDefinition - .getActivation(); - if (activationDef.getValidTo() != null - && CollectionUtils.isNotEmpty(activationDef.getValidTo().getInbound())) { - hasInbound = true; - } - } - - if (!hasInbound) { - ResourceActivationDefinitionType activationDef = resourceObjectTypeDefinition - .getActivation(); - if (activationDef.getExistence() != null - && CollectionUtils.isNotEmpty(activationDef.getExistence().getInbound())) { - hasInbound = true; - } - } - } - - if (hasInbound) { - return SourceTarget.SOURCE; - } - - if (hasOutbound) { - return SourceTarget.TARGET; - } - - } - - return SourceTarget.NOT_DEFINED; } private SourceTarget determineIfSourceOrTarget(ResourceType resource) { @@ -708,7 +553,7 @@ private enum SourceTarget { NOT_DEFINED("fa fa-square-o"), SOURCE("fa fa-sign-in"), TARGET("fa fa-sign-out"), SOURCE_TARGET("fa fa-exchange"); - private String cssClass; + private final String cssClass; SourceTarget(String cssClass) { this.cssClass = cssClass; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/AbstractRoleMemberPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/AbstractRoleMemberPanel.java index dfe534a2abb..34a653b107a 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/AbstractRoleMemberPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/AbstractRoleMemberPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2017 Evolveum and contributors + * Copyright (C) 2010-2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -90,10 +90,6 @@ protected enum QueryScope { SELECTED, ALL, ALL_DIRECT } - protected enum MemberOperation { - ADD, REMOVE, RECOMPUTE - } - private static final Trace LOGGER = TraceManager.getTrace(AbstractRoleMemberPanel.class); private static final String DOT_CLASS = AbstractRoleMemberPanel.class.getName() + "."; protected static final String OPERATION_LOAD_MEMBER_RELATIONS = DOT_CLASS + "loadMemberRelationsList"; @@ -116,8 +112,8 @@ protected enum MemberOperation { protected static final String ID_SEARCH_BY_RELATION = "searchByRelation"; - private static Map> authorizations = new HashMap<>(); - private static Map tablesId = new HashMap<>(); + private static final Map> authorizations = new HashMap<>(); + private static final Map tablesId = new HashMap<>(); static { tablesId.put(RoleType.COMPLEX_TYPE, TableId.ROLE_MEMBER_PANEL); @@ -241,7 +237,7 @@ protected List createToolbarButtonsList(String buttonId) { @Override protected IColumn, String> createIconColumn() { - return (IColumn) ColumnUtils.createIconColumn(pageBase); + return ColumnUtils.createIconColumn(pageBase); } @Override @@ -335,14 +331,15 @@ private MultifunctionalButton createAssignButton(String buttonId) { @Override protected void buttonClickPerformed(AjaxRequestTarget target, AssignmentObjectRelation relation, CompiledObjectCollectionView collectionView) { - List relations = relation != null && !CollectionUtils.isEmpty(relation.getRelations()) ? - Arrays.asList(relation.getRelations().get(0)) : getSupportedRelations().getAvailableRelationList(); - AvailableRelationDto avariableRelations = new AvailableRelationDto(relations, getSupportedRelations().getDefaultRelation()); + List relations = relation != null && !CollectionUtils.isEmpty(relation.getRelations()) + ? Collections.singletonList(relation.getRelations().get(0)) + : getSupportedRelations().getAvailableRelationList(); + AvailableRelationDto availableRelations = new AvailableRelationDto(relations, getSupportedRelations().getDefaultRelation()); List objectTypes = relation != null && !CollectionUtils.isEmpty(relation.getObjectTypes()) ? relation.getObjectTypes() : null; List archetypeRefList = relation != null && !CollectionUtils.isEmpty(relation.getArchetypeRefs()) ? relation.getArchetypeRefs() : null; - assignMembers(target, avariableRelations, objectTypes, archetypeRefList, relation == null); + assignMembers(target, availableRelations, objectTypes, archetypeRefList, relation == null); } @Override @@ -541,10 +538,8 @@ private boolean isAuthorized(String action) { } private List loadMemberRelationsList() { - List assignmentTargetRelations = new ArrayList<>(); AssignmentCandidatesSpecification spec = loadCandidateSpecification(); - assignmentTargetRelations = spec != null ? spec.getAssignmentObjectRelations() : new ArrayList<>(); - return assignmentTargetRelations; + return spec != null ? spec.getAssignmentObjectRelations() : new ArrayList<>(); } private AssignmentCandidatesSpecification loadCandidateSpecification() { @@ -656,7 +651,8 @@ protected void createFocusMemberPerformed(AjaxRequestTarget target, AssignmentOb try { List newReferences = new ArrayList<>(); if (CollectionUtils.isEmpty(relationSpec.getRelations())) { - relationSpec.setRelations(Arrays.asList(RelationTypes.MEMBER.getRelation())); + relationSpec.setRelations( + Collections.singletonList(RelationTypes.MEMBER.getRelation())); } ObjectReferenceType memberRef = ObjectTypeUtil.createObjectRef(AbstractRoleMemberPanel.this.getModelObject(), relationSpec.getRelations().get(0)); newReferences.add(memberRef); @@ -1008,7 +1004,9 @@ public void yesPerformed(AjaxRequestTarget target) { protected ObjectQuery createContentQuery() { CheckFormGroup isIndirect = getIndirectmembersPanel(); - List relations = QNameUtil.match(getSelectedRelation(), PrismConstants.Q_ANY) ? getSupportedRelations().getAvailableRelationList() : Arrays.asList(getSelectedRelation()); + List relations = QNameUtil.match(getSelectedRelation(), PrismConstants.Q_ANY) + ? getSupportedRelations().getAvailableRelationList() + : Collections.singletonList(getSelectedRelation()); return createMemberQuery(isIndirect != null ? isIndirect.getValue() : false, relations); } @@ -1031,8 +1029,8 @@ private SearchBoxScopeType getSearchScopeValue() { } protected ObjectTypes getSearchType() { - DropDownFormGroup searchByTypeChoice = (DropDownFormGroup) get( - createComponentPath(ID_FORM, ID_OBJECT_TYPE)); + DropDownFormGroup searchByTypeChoice = + (DropDownFormGroup) get(createComponentPath(ID_FORM, ID_OBJECT_TYPE)); QName typeName = searchByTypeChoice.getModelObject(); return ObjectTypes.getObjectTypeFromTypeQName(typeName); } @@ -1138,10 +1136,6 @@ protected boolean isRelationColumnVisible() { return false; } - private String getMemberObjectDisplayName(ObjectType object) { - return getMemberObjectDisplayName(object, false); - } - private String getMemberObjectDisplayName(ObjectType object, boolean translate) { if (object == null) { return ""; @@ -1241,8 +1235,8 @@ protected MemberPanelStorage getMemberPanelStorage() { } protected SearchBoxScopeType getSearchScope() { - DropDownFormGroup searchorgScope = (DropDownFormGroup) get( - createComponentPath(ID_FORM, ID_SEARCH_SCOPE)); - return searchorgScope.getModelObject(); + DropDownFormGroup searchOrgScope = + (DropDownFormGroup) get(createComponentPath(ID_FORM, ID_SEARCH_SCOPE)); + return searchOrgScope.getModelObject(); } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTask.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTask.java index 47013c43862..8b2ac688d91 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTask.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTask.java @@ -1,7 +1,16 @@ +/* + * Copyright (C) 2010-2020 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.web.page.admin.server; import java.io.InputStream; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; import org.apache.commons.collections.CollectionUtils; import org.apache.wicket.Page; @@ -379,10 +388,8 @@ public void yesPerformed(AjaxRequestTarget target) { } private void deleteItem(AjaxRequestTarget target, ItemName... itemName) throws SchemaException { - List items = Arrays.asList(itemName); - Collection> itemDeltas = new ArrayList<>(); - for (ItemName item : items) { + for (ItemName item : itemName) { ItemDelta delta = createDeleteItemDelta(item); if (delta == null) { LOGGER.trace("Nothing to delete for {}", item); @@ -709,7 +716,7 @@ private void applyOldPage continue; } List values = iw.getValues(); - PrismContainerWrapper oldValWrapper = null; + PrismContainerWrapper oldValWrapper; try { oldValWrapper = rememberedObjectWrapper.findContainer(iw.getPath()); if (oldValWrapper != null) { @@ -800,5 +807,4 @@ private boolean isSimilarVirtualContainer(PrismContainerValueWrapperImpl val1, P } return true; } - } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTablePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTablePanel.java index eee1dec7021..7dba547aab3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTablePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTablePanel.java @@ -1,18 +1,15 @@ /* - * Copyright (c) 2010-2019 Evolveum and contributors + * Copyright (C) 2010-2020 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.web.page.admin.server; import java.util.*; import java.util.stream.Collectors; import javax.xml.datatype.XMLGregorianCalendar; -import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder; - import org.apache.commons.collections.CollectionUtils; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -33,6 +30,7 @@ import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.component.MainObjectListPanel; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; +import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder; import com.evolveum.midpoint.model.api.ModelPublicConstants; import com.evolveum.midpoint.model.api.TaskService; import com.evolveum.midpoint.prism.xml.XmlTypeConverter; @@ -77,7 +75,7 @@ description = PageAdminTasks.AUTH_TASKS_ALL_DESCRIPTION), @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_TASKS_URL, label = "PageTasks.auth.tasks.label", - description = "PageTasks.auth.tasks.description")}) + description = "PageTasks.auth.tasks.description") }) public class TaskTablePanel extends MainObjectListPanel { private static final Trace LOGGER = TraceManager.getTrace(TaskTablePanel.class); @@ -101,7 +99,6 @@ public TaskTablePanel(String id, UserProfileStorage.TableId tableId, Collection< super(id, TaskType.class, tableId, options); } - @Override protected void objectDetailsPerformed(AjaxRequestTarget target, TaskType object) { taskDetailsPerformed(object.getOid()); @@ -196,7 +193,7 @@ private void taskDetailsPerformed(String oid) { private List, String>> initTaskColumns() { List, String>> columns = new ArrayList<>(); - if (!isCollectionViewPanelForCompiledView()){ + if (!isCollectionViewPanelForCompiledView()) { columns.add(createTaskCategoryColumn()); } columns.addAll(initCustomTaskColumns()); @@ -209,7 +206,7 @@ private IColumn, String> createTaskCategoryColumn() { @Override public void populateItem(Item>> item, String componentId, - final IModel> rowModel) { + final IModel> rowModel) { item.add(new Label(componentId, WebComponentUtil.createCategoryNameModel(TaskTablePanel.this, new PropertyModel<>(rowModel, SelectableBeanImpl.F_VALUE + "." + TaskType.F_CATEGORY.getLocalPart())))); } @@ -225,7 +222,6 @@ public IModel getDataModel(IModel> rowModel) { protected List, String>> initCustomTaskColumns() { List, String>> columns = new ArrayList<>(); - columns.add(createTaskExecutionStatusColumn()); columns.add(createProgressColumn()); @@ -331,7 +327,7 @@ private String getBucketedTaskProgressDescription(TaskType taskType) { if (expectedBuckets == null) { return String.valueOf(completeBuckets); } else { - return (completeBuckets*100/expectedBuckets) + "%"; + return (completeBuckets * 100 / expectedBuckets) + "%"; } } @@ -343,14 +339,13 @@ private Integer getCompleteBuckets(TaskType taskType) { return TaskWorkStateTypeUtil.getCompleteBucketsNumber(taskType); } - private String getPlainTaskProgressDescription(TaskType taskType) { Long currentProgress = taskType.getProgress(); if (currentProgress == null && taskType.getExpectedTotal() == null) { return ""; // the task handler probably does not report progress at all } else { StringBuilder sb = new StringBuilder(); - if (currentProgress != null){ + if (currentProgress != null) { sb.append(currentProgress); } else { sb.append("0"); @@ -382,13 +377,13 @@ public InlineMenuItemAction initAction() { @Override public void onClick(AjaxRequestTarget target) { - suspendTasksPerformed(target, getRowModel()); + suspendTasksPerformed(target, getRowModel()); } }; } @Override - public CompositedIconBuilder getIconCompositedBuilder(){ + public CompositedIconBuilder getIconCompositedBuilder() { return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_SUSPEND_MENU_ITEM); } @@ -401,7 +396,7 @@ public IModel getConfirmationMessageModel() { @Override public IModel getVisible() { IModel> rowModel = ((ColumnMenuAction) getAction()).getRowModel(); - if (rowModel == null){ + if (rowModel == null) { return Model.of(Boolean.TRUE); } SelectableBean rowModelObj = rowModel.getObject(); @@ -419,13 +414,13 @@ public InlineMenuItemAction initAction() { @Override public void onClick(AjaxRequestTarget target) { - resumeTasksPerformed(target, getRowModel()); + resumeTasksPerformed(target, getRowModel()); } }; } @Override - public CompositedIconBuilder getIconCompositedBuilder(){ + public CompositedIconBuilder getIconCompositedBuilder() { return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_RESUME_MENU_ITEM); } @@ -438,7 +433,7 @@ public IModel getConfirmationMessageModel() { @Override public IModel getVisible() { IModel> rowModel = ((ColumnMenuAction) getAction()).getRowModel(); - if (rowModel == null){ + if (rowModel == null) { return Model.of(Boolean.TRUE); } SelectableBean rowModelObj = rowModel.getObject(); @@ -457,13 +452,13 @@ public InlineMenuItemAction initAction() { @Override public void onClick(AjaxRequestTarget target) { - scheduleTasksPerformed(target, getRowModel()); + scheduleTasksPerformed(target, getRowModel()); } }; } @Override - public CompositedIconBuilder getIconCompositedBuilder(){ + public CompositedIconBuilder getIconCompositedBuilder() { return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_START_MENU_ITEM); } @@ -476,7 +471,7 @@ public IModel getConfirmationMessageModel() { @Override public IModel getVisible() { IModel> rowModel = ((ColumnMenuAction) getAction()).getRowModel(); - if (rowModel == null){ + if (rowModel == null) { return Model.of(Boolean.TRUE); } SelectableBean rowModelObj = rowModel.getObject(); @@ -521,6 +516,7 @@ public void onClick(AjaxRequestTarget target) { } }; } + @Override public IModel getConfirmationMessageModel() { String actionName = createStringResource("pageTasks.message.reconcileWorkersAction").getString(); @@ -632,7 +628,7 @@ public InlineMenuItemAction initAction() { @Override public void onClick(AjaxRequestTarget target) { - deleteWorkStatePerformed(target, getRowModel()); + deleteWorkStatePerformed(target, getRowModel()); } }; } @@ -646,7 +642,7 @@ public IModel getConfirmationMessageModel() { @Override public IModel getVisible() { IModel> rowModel = ((ColumnMenuAction) getAction()).getRowModel(); - if (rowModel == null){ + if (rowModel == null) { return Model.of(Boolean.TRUE); } SelectableBean rowModelObj = rowModel.getObject(); @@ -708,7 +704,7 @@ private void suspendTasksPerformed(AjaxRequestTarget target, IModel rowModel, boolean isHeader) { return task != null && TaskTypeUtil.isCoordinator(task); } - // must be static, otherwise JVM crashes (probably because of some wicket serialization issues) @SuppressWarnings("unchecked") private static boolean isManageableTreeRoot(IModel rowModel, boolean isHeader) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTabsVisibility.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTabsVisibility.java index 94dd4cf07e8..862442b6ee6 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTabsVisibility.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTabsVisibility.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2019 Evolveum and contributors + * Copyright (C) 2010-2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/TreeTablePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/TreeTablePanel.java index 6239246c358..aa57d03dc31 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/TreeTablePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/TreeTablePanel.java @@ -76,7 +76,7 @@ public class TreeTablePanel extends BasePanel { private static final long serialVersionUID = 1L; - private PageBase parentPage; + private final PageBase parentPage; @Override public PageBase getPageBase() { @@ -476,15 +476,13 @@ private void selectTreeItemPerformed(TreeSelectableBean selected, AjaxR private void moveRootPerformed(final TreeSelectableBean root, AjaxRequestTarget target) { - final SelectableBeanImpl orgToMove = root; - OrgTreeAssignablePanel orgAssignablePanel = new OrgTreeAssignablePanel( parentPage.getMainPopupBodyId(), false) { private static final long serialVersionUID = 1L; @Override protected void onItemSelect(SelectableBeanImpl selected, AjaxRequestTarget target) { - moveConfirmPerformed(orgToMove, selected, target); + moveConfirmPerformed(root, selected, target); } @Override @@ -723,5 +721,4 @@ private void editRootPerformed(SelectableBeanImpl root, AjaxRequestTarg parameters.add(OnePageParameterEncoder.PARAMETER, root.getValue().getOid()); getPageBase().navigateToNext(PageOrgUnit.class, parameters); } - } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/login/SelfRegistrationDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/login/SelfRegistrationDto.java index 860b96b6ab7..fc6fee69985 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/login/SelfRegistrationDto.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/login/SelfRegistrationDto.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2019 Evolveum and contributors + * Copyright (C) 2010-2020 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. @@ -9,17 +9,17 @@ import java.io.Serializable; import java.util.List; -import com.evolveum.midpoint.model.api.authentication.MidpointAuthentication; -import com.evolveum.midpoint.model.api.authentication.ModuleAuthentication; -import com.evolveum.midpoint.web.security.module.authentication.MailNonceModuleAuthentication; -import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import com.evolveum.midpoint.model.api.authentication.MidpointAuthentication; +import com.evolveum.midpoint.model.api.authentication.ModuleAuthentication; import com.evolveum.midpoint.schema.util.SecurityPolicyUtil; import com.evolveum.midpoint.util.exception.SchemaException; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContextHolder; +import com.evolveum.midpoint.web.security.module.authentication.MailNonceModuleAuthentication; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; public class SelfRegistrationDto implements Serializable { @@ -67,7 +67,6 @@ public void initPostAuthenticationDto(SecurityPolicyType securityPolicy) throws init(securityPolicy, selfRegistration); } - private void init(SecurityPolicyType securityPolicy, SelfRegistrationPolicyType selfRegistration) throws SchemaException { this.name = selfRegistration.getName(); this.defaultRoles = selfRegistration.getDefaultRole(); @@ -107,7 +106,7 @@ public boolean isEmpty() { && mailAuthenticationPolicy == null && smsAuthenticationPolicy == null && noncePolicy == null; } - public AuthenticationPolicy getAuthenticationMethod () { + public AuthenticationPolicy getAuthenticationMethod() { if (mailAuthenticationPolicy != null) { return AuthenticationPolicy.MAIL; } @@ -149,127 +148,6 @@ private SelfRegistrationPolicyType getPostAuthenticationPolicy(SecurityPolicyTyp return selfRegistrationPolicy; } -// private AbstractAuthenticationPolicyType getAuthenticationPolicy(String selfRegistrationAuthPoliocyName, -// SecurityPolicyType securityPolicy) throws SchemaException { -// MailAuthenticationPolicyType mailAuthPolicy = getMailAuthenticationPolicy( -// selfRegistrationAuthPoliocyName, securityPolicy); -// SmsAuthenticationPolicyType smsAuthPolicy = getSmsAuthenticationPolicy( -// selfRegistrationAuthPoliocyName, securityPolicy); -// return checkAndGetAuthPolicyConsistence(mailAuthPolicy, smsAuthPolicy); -// -// } - -// private MailAuthenticationPolicyType getMailAuthenticationPolicy(String authName, -// SecurityPolicyType securityPolicy) throws SchemaException { -// AuthenticationsPolicyType authPolicies = securityPolicy.getAuthentication(); -// if (authPolicies == null) { -// return null; -// } -// return getAuthenticationPolicy(authName, authPolicies.getMailAuthentication()); -// } -// -// private SmsAuthenticationPolicyType getSmsAuthenticationPolicy(String authName, -// SecurityPolicyType securityPolicy) throws SchemaException { -// AuthenticationsPolicyType authPolicies = securityPolicy.getAuthentication(); -// if (authPolicies == null) { -// return null; -// } -// return getAuthenticationPolicy(authName, authPolicies.getSmsAuthentication()); -// } -// -// private AbstractAuthenticationPolicyType checkAndGetAuthPolicyConsistence( -// MailAuthenticationPolicyType mailPolicy, SmsAuthenticationPolicyType smsPolicy) -// throws SchemaException { -// if (mailPolicy != null && smsPolicy != null) { -// throw new SchemaException( -// "Found both, mail and sms authentication method for registration. Only one of them can be present at the moment"); -// } -// -// if (mailPolicy != null) { -// return mailPolicy; -// } -// -// return smsPolicy; -// -// } - -// private T getAuthenticationPolicy(String authName, -// List authPolicies) throws SchemaException { -// -// List smsPolicies = new ArrayList<>(); -// -// for (T smsAuthPolicy : authPolicies) { -// if (smsAuthPolicy.getName() == null && authName != null) { -// continue; -// } -// -// if (smsAuthPolicy.getName() != null && authName == null) { -// continue; -// } -// -// if (smsAuthPolicy.getName() == null && authName == null) { -// smsPolicies.add(smsAuthPolicy); -// } -// -// if (smsAuthPolicy.getName().equals(authName)) { -// smsPolicies.add(smsAuthPolicy); -// } -// -// } -// -// if (smsPolicies.size() > 1) { -// throw new SchemaException( -// "Found more than one mail authentication policy. Please review your configuration"); -// } -// -// if (smsPolicies.size() == 0) { -// return null; -// } -// -// return smsPolicies.iterator().next(); -// -// } - -// private NonceCredentialsPolicyType getCredentialPolicy(String policyName, -// SecurityPolicyType securityPolicy) throws SchemaException { -// CredentialsPolicyType credentialsPolicy = securityPolicy.getCredentials(); -// if (credentialsPolicy == null) { -// return null; -// } -// -// List noncePolicies = credentialsPolicy.getNonce(); -// -// List availableNoncePolicies = new ArrayList<>(); -// for (NonceCredentialsPolicyType noncePolicy : noncePolicies) { -// if (noncePolicy.getName() == null && policyName == null) { -// availableNoncePolicies.add(noncePolicy); -// } -// -// if (noncePolicy.getName() == null && policyName != null) { -// continue; -// } -// -// if (noncePolicy.getName() != null && policyName == null) { -// continue; -// } -// -// if (noncePolicy.getName().equals(policyName)) { -// availableNoncePolicies.add(noncePolicy); -// } -// } -// -// if (availableNoncePolicies.size() > 1) { -// throw new SchemaException( -// "Found more than one nonce credentials policy. Please review your configuration"); -// } -// -// if (availableNoncePolicies.size() == 0) { -// return null; -// } -// -// return availableNoncePolicies.iterator().next(); -// } - public boolean isMailMailAuthentication() { return mailAuthenticationPolicy != null; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/AbstractShoppingCartTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/AbstractShoppingCartTabPanel.java index 4474b9dbbe9..383fdad706e 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/AbstractShoppingCartTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/AbstractShoppingCartTabPanel.java @@ -1,11 +1,27 @@ /* - * Copyright (c) 2016-2018 Evolveum and contributors + * Copyright (C) 2016-2020 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.web.page.self; +import java.util.ArrayList; +import java.util.List; +import javax.xml.namespace.QName; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.wicket.ajax.AjaxChannel; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.markup.repeater.Item; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; + import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; @@ -17,8 +33,6 @@ import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.task.api.Task; -import com.evolveum.midpoint.util.logging.Trace; -import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.AjaxButton; import com.evolveum.midpoint.web.component.assignment.*; import com.evolveum.midpoint.web.component.data.ObjectDataProvider; @@ -30,21 +44,6 @@ import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus; import com.evolveum.midpoint.web.session.RoleCatalogStorage; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.wicket.ajax.AjaxChannel; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; -import org.apache.wicket.behavior.AttributeAppender; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; - -import javax.xml.namespace.QName; -import java.util.ArrayList; -import java.util.List; /** * Created by honchar. @@ -68,18 +67,17 @@ public abstract class AbstractShoppingCartTabPanel e private static final String OPERATION_LOAD_ASSIGNABLE_RELATIONS_LIST = DOT_CLASS + "loadAssignableRelationsList"; private static final String OPERATION_LOAD_ASSIGNMENTS_LIMIT = DOT_CLASS + "loadAssignmentsLimit"; private static final String OPERATION_LOAD_ASSIGNMENT_TARGET_USER = DOT_CLASS + "loadAssignmentTargetUser"; - private static final Trace LOGGER = TraceManager.getTrace(AbstractShoppingCartTabPanel.class); - private RoleManagementConfigurationType roleManagementConfig; - LoadableModel targetUserModel; + private final RoleManagementConfigurationType roleManagementConfig; + private LoadableModel targetUserModel; - public AbstractShoppingCartTabPanel(String id, RoleManagementConfigurationType roleManagementConfig){ + public AbstractShoppingCartTabPanel(String id, RoleManagementConfigurationType roleManagementConfig) { super(id); this.roleManagementConfig = roleManagementConfig; } @Override - protected void onInitialize(){ + protected void onInitialize() { super.onInitialize(); targetUserModel = new LoadableModel(true) { @Override @@ -93,12 +91,12 @@ protected UserType load() { @Override protected void onDetach() { super.onDetach(); - if (targetUserModel != null){ + if (targetUserModel != null) { targetUserModel.reset(); } } - private void initLayout(){ + private void initLayout() { setOutputMarkupId(true); initLeftSidePanel(); @@ -113,7 +111,7 @@ private void initLayout(){ initParametersPanel(shoppingCartContainer); } - protected void initLeftSidePanel(){ + protected void initLeftSidePanel() { } private void initSearchPanel(WebMarkupContainer shoppingCartContainer) { @@ -140,42 +138,43 @@ protected void searchPerformed(ObjectQuery query, AjaxRequestTarget target) { target.add(AbstractShoppingCartTabPanel.this); } - private void initShoppingCartItemsPanel(WebMarkupContainer shoppingCartContainer){ + private void initShoppingCartItemsPanel(WebMarkupContainer shoppingCartContainer) { GridViewComponent> catalogItemsGrid = new GridViewComponent>(ID_SHOPPING_CART_ITEMS_PANEL, - new LoadableModel>() { - @Override - protected ObjectDataProvider load() { - return getTabPanelProvider(); - } - }) { - private static final long serialVersionUID = 1L; - - @Override - protected void populateItem(Item item) { - item.add(new RoleCatalogItemButton(getCellItemId(), item.getModel()){ + new LoadableModel>() { + @Override + protected ObjectDataProvider load() { + return getTabPanelProvider(); + } + }) { private static final long serialVersionUID = 1L; @Override - protected void assignmentAddedToShoppingCartPerformed(AjaxRequestTarget target){ - int assignmentsLimit = getRoleCatalogStorage().getAssignmentRequestLimit(); - if (AssignmentsUtil.isShoppingCartAssignmentsLimitReached(assignmentsLimit, AbstractShoppingCartTabPanel.this.getPageBase())) { - target.add(AbstractShoppingCartTabPanel.this); - } - AbstractShoppingCartTabPanel.this.assignmentAddedToShoppingCartPerformed(target); - } - - @Override - protected QName getNewAssignmentRelation(){ - return AbstractShoppingCartTabPanel.this.getNewAssignmentRelation(); + protected void populateItem(Item item) { + item.add(new RoleCatalogItemButton(getCellItemId(), item.getModel()) { + private static final long serialVersionUID = 1L; + + @Override + protected void assignmentAddedToShoppingCartPerformed(AjaxRequestTarget target) { + int assignmentsLimit = getRoleCatalogStorage().getAssignmentRequestLimit(); + if (AssignmentsUtil.isShoppingCartAssignmentsLimitReached(assignmentsLimit, AbstractShoppingCartTabPanel.this.getPageBase())) { + target.add(AbstractShoppingCartTabPanel.this); + } + AbstractShoppingCartTabPanel.this.assignmentAddedToShoppingCartPerformed(target); + } + + @Override + protected QName getNewAssignmentRelation() { + return AbstractShoppingCartTabPanel.this.getNewAssignmentRelation(); + } + }); } - }); - } - }; - catalogItemsGrid.add(new VisibleEnableBehaviour(){ + }; + catalogItemsGrid.add(new VisibleEnableBehaviour() { private static final long serialVersionUID = 1L; + @Override - public boolean isVisible(){ + public boolean isVisible() { return isShoppingCartItemsPanelVisible(); } }); @@ -183,7 +182,7 @@ public boolean isVisible(){ shoppingCartContainer.add(catalogItemsGrid); } - private void initParametersPanel(WebMarkupContainer shoppingCartContainer){ + private void initParametersPanel(WebMarkupContainer shoppingCartContainer) { WebMarkupContainer parametersPanel = new WebMarkupContainer(ID_PARAMETERS_PANEL); parametersPanel.setOutputMarkupId(true); shoppingCartContainer.add(parametersPanel); @@ -193,7 +192,7 @@ private void initParametersPanel(WebMarkupContainer shoppingCartContainer){ initButtonsPanel(parametersPanel); } - private void initTargetUserSelectionPanel(WebMarkupContainer parametersPanel){ + private void initTargetUserSelectionPanel(WebMarkupContainer parametersPanel) { UserSelectionButton targetUserPanel = new UserSelectionButton(ID_TARGET_USER_PANEL, new IModel>() { @Override @@ -202,21 +201,21 @@ public List getObject() { AbstractShoppingCartTabPanel.this.getPageBase()); } }, - true, createStringResource("AssignmentCatalogPanel.selectTargetUser")){ + true, createStringResource("AssignmentCatalogPanel.selectTargetUser")) { private static final long serialVersionUID = 1L; @Override - protected String getUserButtonLabel(){ + protected String getUserButtonLabel() { return getTargetUserSelectionButtonLabel(getModelObject()); } @Override - protected String getTargetUserButtonClass(){ + protected String getTargetUserButtonClass() { return "btn-sm"; } @Override - protected void onDeleteSelectedUsersPerformed(AjaxRequestTarget target){ + protected void onDeleteSelectedUsersPerformed(AjaxRequestTarget target) { super.onDeleteSelectedUsersPerformed(target); getRoleCatalogStorage().setTargetUserOidsList(new ArrayList<>()); @@ -225,8 +224,8 @@ protected void onDeleteSelectedUsersPerformed(AjaxRequestTarget target){ } @Override - protected void multipleUsersSelectionPerformed(AjaxRequestTarget target, List usersList){ - if (CollectionUtils.isNotEmpty(usersList)){ + protected void multipleUsersSelectionPerformed(AjaxRequestTarget target, List usersList) { + if (CollectionUtils.isNotEmpty(usersList)) { List usersOidsList = new ArrayList<>(); usersList.forEach(user -> usersOidsList.add(user.getOid())); getRoleCatalogStorage().setTargetUserOidsList(usersOidsList); @@ -240,49 +239,50 @@ protected void multipleUsersSelectionPerformed(AjaxRequestTarget target, List assignableRelationsList = getAvailableRelationsList(); - if (CollectionUtils.isNotEmpty(assignableRelationsList)){ - if (assignableRelationsList.contains(SchemaConstants.ORG_DEFAULT)){ + if (CollectionUtils.isNotEmpty(assignableRelationsList)) { + if (assignableRelationsList.contains(SchemaConstants.ORG_DEFAULT)) { getRoleCatalogStorage().setSelectedRelation(SchemaConstants.ORG_DEFAULT); } else { getRoleCatalogStorage().setSelectedRelation(assignableRelationsList.get(0)); } } relationContainer.add(new RelationDropDownChoicePanel(ID_RELATION, getRoleCatalogStorage().getSelectedRelation(), - assignableRelationsList, false){ + assignableRelationsList, false) { private static final long serialVersionUID = 1L; @Override - protected void onValueChanged(AjaxRequestTarget target){ + protected void onValueChanged(AjaxRequestTarget target) { getRoleCatalogStorage().setSelectedRelation(getRelationValue()); target.add(AbstractShoppingCartTabPanel.this); } @Override - protected IModel getRelationLabelModel(){ + protected IModel getRelationLabelModel() { return Model.of(); } }); } - private List getAvailableRelationsList(){ + private List getAvailableRelationsList() { List availableRelations = WebComponentUtil.getCategoryRelationChoices(AreaCategoryType.SELF_SERVICE, getPageBase()); Task task = getPageBase().createSimpleTask(OPERATION_LOAD_ASSIGNABLE_RELATIONS_LIST); OperationResult result = task.getResult(); - List assignableRelationsList = WebComponentUtil.getAssignableRelationsList(getTargetUser().asPrismObject(), (Class) ObjectTypes.getObjectTypeClass(getQueryType()), + List assignableRelationsList = WebComponentUtil.getAssignableRelationsList( + getTargetUser().asPrismObject(), ObjectTypes.getObjectTypeClass(getQueryType()), WebComponentUtil.AssignmentOrder.ASSIGNMENT, result, task, getPageBase()); - if (CollectionUtils.isEmpty(assignableRelationsList)){ + if (CollectionUtils.isEmpty(assignableRelationsList)) { return availableRelations; } return assignableRelationsList; } - private void initButtonsPanel(WebMarkupContainer parametersPanel){ + private void initButtonsPanel(WebMarkupContainer parametersPanel) { AjaxButton addAllButton = new AjaxButton(ID_ADD_ALL_BUTTON, createStringResource("AbstractShoppingCartTabPanel.addAllButton")) { private static final long serialVersionUID = 1L; @@ -297,11 +297,11 @@ protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { attributes.setEventPropagation(AjaxRequestAttributes.EventPropagation.BUBBLE); } }; - addAllButton.add(new VisibleEnableBehaviour(){ + addAllButton.add(new VisibleEnableBehaviour() { private static final long serialVersionUID = 1L; @Override - public boolean isVisible(){ + public boolean isVisible() { ObjectDataProvider provider = getGridViewComponent().getProvider(); return provider != null && provider.size() > 0; @@ -339,11 +339,11 @@ public void onClick(AjaxRequestTarget ajaxRequestTarget) { parametersPanel.add(goToShoppingCartButton); } - private String getTargetUserSelectionButtonLabel(List usersList){ - if (usersList == null || usersList.size() == 0){ + private String getTargetUserSelectionButtonLabel(List usersList) { + if (usersList == null || usersList.size() == 0) { return createStringResource("AssignmentCatalogPanel.requestForMe").getString(); - } else if (usersList.size() == 1){ - if (usersList.get(0).getOid().equals(getPageBase().getPrincipalFocus().getOid())){ + } else if (usersList.size() == 1) { + if (usersList.get(0).getOid().equals(getPageBase().getPrincipalFocus().getOid())) { return createStringResource("AssignmentCatalogPanel.requestForMe").getString(); } else { return usersList.get(0).getName().getOrig(); @@ -354,18 +354,15 @@ private String getTargetUserSelectionButtonLabel(List usersList){ } } - private QName getRelationParameterValue(){ - return getRelationDropDown().getRelationValue(); + private RelationDropDownChoicePanel getRelationDropDown() { + return (RelationDropDownChoicePanel) get(createComponentPath(ID_SHOPPING_CART_CONTAINER, ID_PARAMETERS_PANEL, ID_RELATION_CONTAINER, ID_RELATION)); } - private RelationDropDownChoicePanel getRelationDropDown(){ - return (RelationDropDownChoicePanel)get(createComponentPath(ID_SHOPPING_CART_CONTAINER, ID_PARAMETERS_PANEL, ID_RELATION_CONTAINER, ID_RELATION)); - } + private void addAllAssignmentsPerformed(AjaxRequestTarget target) { + List availableProviderData = + getGridViewComponent().getProvider().getAvailableData(); - private void addAllAssignmentsPerformed(AjaxRequestTarget target){ - List availableProviderData = getGridViewComponent().getProvider().getAvailableData(); - - if (availableProviderData != null){ + if (availableProviderData != null) { int assignmentsLimit = AssignmentsUtil.loadAssignmentsLimit(new OperationResult(OPERATION_LOAD_ASSIGNMENTS_LIMIT), getPageBase()); int addedAssignmentsCount = availableProviderData.size() + getRoleCatalogStorage().getAssignmentShoppingCart().size(); @@ -375,7 +372,6 @@ private void addAllAssignmentsPerformed(AjaxRequestTarget target){ return; } - availableProviderData.forEach(newAssignment -> { AssignmentEditorDto assignmentToAdd = newAssignment.clone(); assignmentToAdd.getTargetRef().setRelation(getNewAssignmentRelation()); @@ -413,15 +409,15 @@ public ObjectQuery getQuery() { return provider; } - private boolean isAlreadyAssigned(PrismObject obj, AssignmentEditorDto assignmentDto){ + private boolean isAlreadyAssigned(PrismObject obj, AssignmentEditorDto assignmentDto) { UserType user = targetUserModel.getObject(); - if (user == null || user.getAssignment() == null){ + if (user == null || user.getAssignment() == null) { return false; } boolean isAssigned = false; List assignedRelationsList = new ArrayList<>(); - for (AssignmentType assignment : user.getAssignment()){ - if (assignment.getTargetRef() != null && assignment.getTargetRef().getOid().equals(obj.getOid())){ + for (AssignmentType assignment : user.getAssignment()) { + if (assignment.getTargetRef() != null && assignment.getTargetRef().getOid().equals(obj.getOid())) { isAssigned = true; assignedRelationsList.add(assignment.getTargetRef().getRelation()); } @@ -430,11 +426,11 @@ private boolean isAlreadyAssigned(PrismObject obj, AssignmentE return isAssigned; } - protected boolean isShoppingCartItemsPanelVisible(){ + protected boolean isShoppingCartItemsPanelVisible() { return true; } - protected void appendItemsPanelStyle(WebMarkupContainer container){ + protected void appendItemsPanelStyle(WebMarkupContainer container) { container.add(AttributeAppender.append("class", "col-md-12")); } @@ -459,7 +455,7 @@ protected ObjectQuery createContentQuery() { return memberQuery; } - private SearchPanel getSearchPanel(){ + private SearchPanel getSearchPanel() { return (SearchPanel) get(createComponentPath(ID_SHOPPING_CART_CONTAINER, ID_SEARCH_FORM, ID_SEARCH)); } @@ -468,24 +464,26 @@ private ObjectFilter getAssignableRolesFilter() { Task task = getPageBase().createSimpleTask(OPERATION_LOAD_ASSIGNABLE_ROLES); OperationResult result = task.getResult(); UserType targetUser = targetUserModel.getObject(); - if (targetUser == null){ + if (targetUser == null) { return null; } - return WebComponentUtil.getAssignableRolesFilter(targetUser.asPrismObject(), (Class) ObjectTypes.getObjectTypeClass(getQueryType()), - getNewAssignmentRelation(), WebComponentUtil.AssignmentOrder.ASSIGNMENT, result, task, getPageBase()); + return WebComponentUtil.getAssignableRolesFilter( + targetUser.asPrismObject(), ObjectTypes.getObjectTypeClass(getQueryType()), + getNewAssignmentRelation(), WebComponentUtil.AssignmentOrder.ASSIGNMENT, + result, task, getPageBase()); } - private Class getQueryClass(){ - return (Class)WebComponentUtil.qnameToClass(getPageBase().getPrismContext(), getQueryType()); + private Class getQueryClass() { + return (Class) WebComponentUtil.qnameToClass(getPageBase().getPrismContext(), getQueryType()); } protected abstract QName getQueryType(); - private UserType getTargetUser(){ + private UserType getTargetUser() { String targetUserOid = getRoleCatalogStorage().isSelfRequest() ? getPageBase().getPrincipalFocus().getOid() : getRoleCatalogStorage().getTargetUserOidsList().get(0); - if (StringUtils.isEmpty(targetUserOid)){ + if (StringUtils.isEmpty(targetUserOid)) { return null; } OperationResult result = new OperationResult(OPERATION_LOAD_ASSIGNMENT_TARGET_USER); @@ -495,7 +493,7 @@ private UserType getTargetUser(){ return targetUser != null ? targetUser.asObjectable() : null; } - protected void assignmentAddedToShoppingCartPerformed(AjaxRequestTarget target){ + protected void assignmentAddedToShoppingCartPerformed(AjaxRequestTarget target) { getPage().success(getPageBase().createStringResource("AbstractShoppingCartTabPanel.itemIsAddedToShoppingCart", getRoleCatalogStorage().getAssignmentShoppingCart().size()).getString()); getPageBase().reloadShoppingCartIcon(target); @@ -508,11 +506,11 @@ protected QName getNewAssignmentRelation() { getRoleCatalogStorage().getSelectedRelation() : WebComponentUtil.getDefaultRelationOrFail(); } - protected RoleCatalogStorage getRoleCatalogStorage(){ + protected RoleCatalogStorage getRoleCatalogStorage() { return getPageBase().getSessionStorage().getRoleCatalog(); } - protected GridViewComponent getGridViewComponent(){ - return (GridViewComponent)get(createComponentPath(ID_SHOPPING_CART_CONTAINER, ID_SHOPPING_CART_ITEMS_PANEL)); + protected GridViewComponent getGridViewComponent() { + return (GridViewComponent) get(createComponentPath(ID_SHOPPING_CART_CONTAINER, ID_SHOPPING_CART_ITEMS_PANEL)); } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAbstractSelfCredentials.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAbstractSelfCredentials.java index c783783d7f4..973c627f2fa 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAbstractSelfCredentials.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAbstractSelfCredentials.java @@ -1,8 +1,8 @@ /* - * Copyright (c) 2010-2019 Evolveum and contributors + * Copyright (C) 2010-2020 Evolveum and contributors * - * This work is dual-licensed under the Apache License 2.0 - * and European Union Public License. See LICENSE file for details. + * 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.web.page.self; @@ -75,8 +75,7 @@ public abstract class PageAbstractSelfCredentials extends PageSelf { private static final String OPERATION_CHECK_PASSWORD = DOT_CLASS + "checkPassword"; private static final String OPERATION_GET_CREDENTIALS_POLICY = DOT_CLASS + "getCredentialsPolicy"; - - private LoadableModel model; + private final LoadableModel model; public PageAbstractSelfCredentials() { model = new LoadableModel(false) { @@ -119,7 +118,7 @@ private MyPasswordsDto loadPageModel() { PrismReference reference = focus.findReference(FocusType.F_LINK_REF); if (reference == null || CollectionUtils.isEmpty(reference.getValues())) { - LOGGER.debug("No accounts found for user {}.", new Object[]{focusOid}); + LOGGER.debug("No accounts found for user {}.", focusOid); return dto; } @@ -180,7 +179,6 @@ private void addAccountsToMyPasswordsDto(MyPasswordsDto dto, List account = getModelService().getObject(ShadowType.class, accountOid, options, task, subResult); - dto.getAccounts().add(createPasswordAccountDto(account, task, subResult)); subResult.recordSuccessIfUnknown(); } catch (Exception ex) { @@ -190,7 +188,6 @@ private void addAccountsToMyPasswordsDto(MyPasswordsDto dto, List mainForm = new com.evolveum.midpoint.web.component.form.Form<>(ID_MAIN_FORM); @@ -284,7 +281,7 @@ protected void onSavePerformed(AjaxRequestTarget target) { LOGGER.debug("Check old password"); MyPasswordsDto modelObject = getModelObject(); if (modelObject.getOldPassword() == null - || modelObject.getOldPassword().trim().equals("")){ + || modelObject.getOldPassword().trim().equals("")) { warn(getString("PageSelfCredentials.specifyOldPasswordMessage")); target.add(getFeedbackPanel()); return; @@ -313,7 +310,7 @@ protected void onSavePerformed(AjaxRequestTarget target) { } } - if (getModelObject().getPassword() == null ) { + if (getModelObject().getPassword() == null) { warn(getString("PageSelfCredentials.emptyPasswordFiled")); target.add(getFeedbackPanel()); return; @@ -339,20 +336,20 @@ protected void onSavePerformed(AjaxRequestTarget target) { Collection> deltas = new ArrayList<>(); for (PasswordAccountDto accDto : selectedAccounts) { - PrismObjectDefinition objDef = accDto.isMidpoint() ? - registry.findObjectDefinitionByCompileTimeClass(UserType.class) : - registry.findObjectDefinitionByCompileTimeClass(ShadowType.class); - - PropertyDelta delta = getPrismContext().deltaFactory().property() - .createModificationReplaceProperty(valuePath, objDef, password); - if (oldPassword != null) { - delta.addEstimatedOldValue(getPrismContext().itemFactory().createPropertyValue(oldPassword)); - } + PrismObjectDefinition objDef = accDto.isMidpoint() ? + registry.findObjectDefinitionByCompileTimeClass(UserType.class) : + registry.findObjectDefinitionByCompileTimeClass(ShadowType.class); + + PropertyDelta delta = getPrismContext().deltaFactory().property() + .createModificationReplaceProperty(valuePath, objDef, password); + if (oldPassword != null) { + delta.addEstimatedOldValue(getPrismContext().itemFactory().createPropertyValue(oldPassword)); + } - Class type = accDto.isMidpoint() ? UserType.class : ShadowType.class; + Class type = accDto.isMidpoint() ? UserType.class : ShadowType.class; - deltas.add(getPrismContext().deltaFactory().object().createModifyDelta(accDto.getOid(), delta, type - )); + deltas.add(getPrismContext().deltaFactory().object().createModifyDelta(accDto.getOid(), delta, type + )); } getModelService().executeChanges(deltas, null, createSimpleTask(OPERATION_SAVE_PASSWORD, SchemaConstants.CHANNEL_SELF_SERVICE_URI), result); @@ -371,7 +368,7 @@ protected void onSavePerformed(AjaxRequestTarget target) { protected void setNullEncryptedPasswordData() { MyPasswordsDto dto = model.getObject(); ProtectedStringType password = dto.getPassword(); - if (password != null){ + if (password != null) { password.setEncryptedData(null); } } @@ -380,11 +377,11 @@ protected void setNullEncryptedPasswordData() { protected abstract void finishChangePassword(OperationResult result, AjaxRequestTarget target); - protected List getSelectedAccountsList(){ + protected List getSelectedAccountsList() { List passwordAccountDtos = model.getObject().getAccounts(); List selectedAccountList = new ArrayList<>(); if (model.getObject().getPropagation() != null - && model.getObject().getPropagation().equals(CredentialsPropagationUserControlType.MAPPING)){ + && model.getObject().getPropagation().equals(CredentialsPropagationUserControlType.MAPPING)) { selectedAccountList.addAll(passwordAccountDtos); } else { for (PasswordAccountDto passwordAccountDto : passwordAccountDtos) { @@ -395,15 +392,18 @@ protected List getSelectedAccountsList(){ } return selectedAccountList; } + private void onCancelPerformed() { redirectBack(); } - private boolean getPasswordOutbound(PrismObject shadow, Task task, OperationResult result) throws ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, SecurityViolationException { + private boolean getPasswordOutbound(PrismObject shadow, Task task, OperationResult result) + throws ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, SecurityViolationException { try { //TODO cannot be null? - PrismObject resource = shadow.asObjectable().getResourceRef().asReferenceValue().getObject(); + PrismObject resource = + shadow.asObjectable().getResourceRef().asReferenceValue().getObject(); //what to return when we don't have resource? if (resource == null) { return false; @@ -411,7 +411,7 @@ private boolean getPasswordOutbound(PrismObject shadow, Task task, O RefinedObjectClassDefinition rOCDef = getModelInteractionService().getEditObjectClassDefinition(shadow, resource, AuthorizationPhaseType.REQUEST, task, result); - if (rOCDef == null){ + if (rOCDef == null) { return false; } @@ -441,18 +441,17 @@ private boolean getPasswordOutbound(PrismObject shadow, Task task, O } - private boolean hasPasswordCapability(PrismObject shadow) { ShadowType shadowType = shadow.asObjectable(); ResourceType resource = (ResourceType) shadowType.getResourceRef().asReferenceValue().getObject().asObjectable(); ResourceObjectTypeDefinitionType resourceObjectTypeDefinitionType = ResourceTypeUtil.findObjectTypeDefinition(resource.asPrismObject(), shadowType.getKind(), shadowType.getIntent()); - return ResourceTypeUtil.isPasswordCapabilityEnabled(resource, resourceObjectTypeDefinitionType); + return ResourceTypeUtil.isPasswordCapabilityEnabled(resource, resourceObjectTypeDefinitionType); } - private CredentialsPolicyType getPasswordCredentialsPolicy (PrismObject focus){ + private CredentialsPolicyType getPasswordCredentialsPolicy(PrismObject focus) { LOGGER.debug("Getting credentials policy"); Task task = createSimpleTask(OPERATION_GET_CREDENTIALS_POLICY); OperationResult result = new OperationResult(OPERATION_GET_CREDENTIALS_POLICY); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java index 02955358c48..16e4d090dfe 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java @@ -1,18 +1,35 @@ /* - * Copyright (c) 2010-2019 Evolveum and contributors + * Copyright (C) 2010-2020 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.web.page.self; +import static com.evolveum.midpoint.xml.ns._public.common.common_3.PartialProcessingTypeType.SKIP; + +import java.util.*; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; +import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; +import org.apache.wicket.markup.html.form.TextArea; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.jetbrains.annotations.NotNull; + 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.model.api.ModelExecuteOptions; import com.evolveum.midpoint.model.api.context.*; import com.evolveum.midpoint.prism.*; -import com.evolveum.midpoint.prism.delta.*; +import com.evolveum.midpoint.prism.delta.ContainerDelta; +import com.evolveum.midpoint.prism.delta.DeltaSetTriple; +import com.evolveum.midpoint.prism.delta.ItemDelta; +import com.evolveum.midpoint.prism.delta.ObjectDelta; import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.prism.query.QueryFactory; @@ -44,21 +61,6 @@ import com.evolveum.midpoint.web.session.SessionStorage; import com.evolveum.midpoint.web.util.OnePageParameterEncoder; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.map.HashedMap; -import org.apache.commons.lang.StringUtils; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; -import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; -import org.apache.wicket.markup.html.form.TextArea; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; -import org.jetbrains.annotations.NotNull; - -import java.util.*; - -import static com.evolveum.midpoint.xml.ns._public.common.common_3.PartialProcessingTypeType.SKIP; /** * Created by honchar. @@ -69,8 +71,8 @@ description = PageSelf.AUTH_SELF_ALL_DESCRIPTION), @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_SELF_REQUESTS_ASSIGNMENTS_URL, label = "PageAssignmentShoppingCart.auth.requestAssignments.label", - description = "PageAssignmentShoppingCart.auth.requestAssignments.description")}) -public class PageAssignmentsList extends PageBase{ + description = "PageAssignmentShoppingCart.auth.requestAssignments.description") }) +public class PageAssignmentsList extends PageBase { private static final String ID_ASSIGNMENT_TABLE_PANEL = "assignmentTablePanel"; private static final String ID_FORM = "mainForm"; private static final String ID_BACK = "back"; @@ -87,20 +89,19 @@ public class PageAssignmentsList extends PageBase{ private static final String OPERATION_LOAD_ASSIGNMENT_TARGET_USER_OBJECT = "loadAssignmentTargetUserObject"; private IModel> assignmentsModel; - private OperationResult backgroundTaskOperationResult = null; - IModel descriptionModel; + private IModel descriptionModel; private boolean conflictProblemExists = false; - private boolean loadConflicts = false; + private final boolean loadConflicts; - public PageAssignmentsList(){ + public PageAssignmentsList() { this(false); } - public PageAssignmentsList(boolean loadConflicts){ + public PageAssignmentsList(boolean loadConflicts) { this.loadConflicts = loadConflicts; initModels(); - if (loadConflicts){ + if (loadConflicts) { getSessionStorage().getRoleCatalog().setConflictsList(getAssignmentConflicts()); } initLayout(); @@ -119,7 +120,7 @@ public void initLayout() { add(mainForm); AssignmentTablePanel panel = new AssignmentTablePanel(ID_ASSIGNMENT_TABLE_PANEL, - assignmentsModel){ + assignmentsModel) { private static final long serialVersionUID = 1L; @Override @@ -183,7 +184,7 @@ protected void onDeleteSelectedUsersPerformed(AjaxRequestTarget target) { @Override protected void multipleUsersSelectionPerformed(AjaxRequestTarget target, List usersList) { - if (CollectionUtils.isNotEmpty(usersList)){ + if (CollectionUtils.isNotEmpty(usersList)) { List usersOidsList = new ArrayList<>(); usersList.forEach(user -> usersOidsList.add(user.getOid())); getSessionStorage().getRoleCatalog().setTargetUserOidsList(usersOidsList); @@ -227,18 +228,16 @@ public void onClick(AjaxRequestTarget target) { } } - @Override protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { super.updateAjaxAttributes(attributes); attributes.setEventPropagation(AjaxRequestAttributes.EventPropagation.BUBBLE); } - }; - requestAssignments.add(new VisibleEnableBehaviour(){ + requestAssignments.add(new VisibleEnableBehaviour() { @Override - public boolean isEnabled(){ + public boolean isEnabled() { return (getSessionStorage().getRoleCatalog().isMultiUserRequest() || onlyWarnings() || areConflictsResolved()) && !conflictProblemExists && @@ -262,9 +261,9 @@ protected void onSubmit(AjaxRequestTarget target) { } }; - resolveAssignments.add(new VisibleEnableBehaviour(){ + resolveAssignments.add(new VisibleEnableBehaviour() { @Override - public boolean isVisible(){ + public boolean isVisible() { return !getSessionStorage().getRoleCatalog().isMultiUserRequest() && !areConflictsResolved(); } @@ -295,7 +294,7 @@ private void onSingleUserRequestPerformed(AjaxRequestTarget target) { result.recomputeStatus(); } - if (hasBackgroundTaskOperation(result)){ + if (hasBackgroundTaskOperation(result)) { result.setMessage(createStringResource("PageAssignmentsList.requestInProgress").getString()); showResult(result); clearStorage(); @@ -314,10 +313,10 @@ private void onSingleUserRequestPerformed(AjaxRequestTarget target) { showResult(result); } - private void targetUserChangePerformed(AjaxRequestTarget target){ + private void targetUserChangePerformed(AjaxRequestTarget target) { PageAssignmentsList.this.getFeedbackMessages().clear(); conflictProblemExists = false; - if (loadConflicts){ + if (loadConflicts) { getSessionStorage().getRoleCatalog().setConflictsList(getAssignmentConflicts()); } target.add(PageAssignmentsList.this); @@ -339,55 +338,55 @@ private ModelExecuteOptions createOptions() { // TODO initial partial processing options - MID-4059 (but it's not so important here, because the task runs on background) private void onMultiUserRequestPerformed(AjaxRequestTarget target) { - OperationResult result = new OperationResult(OPERATION_REQUEST_ASSIGNMENTS); - Task operationalTask = createSimpleTask(OPERATION_REQUEST_ASSIGNMENTS); - String executionTaskOid = null; - try { - TaskType task = WebComponentUtil.createSingleRecurrenceTask( - createStringResource(OPERATION_REQUEST_ASSIGNMENTS).getString(), - UserType.COMPLEX_TYPE, - getTaskQuery(), prepareDelta(null, result), createOptions(), TaskCategory.EXECUTE_CHANGES, PageAssignmentsList.this); - executionTaskOid = WebModelServiceUtils.runTask(task, operationalTask, result, PageAssignmentsList.this); - } catch (SchemaException e) { - result.recordFatalError(result.getOperation(), e); - result.setMessage(createStringResource("PageAssignmentsList.requestError").getString()); - LoggingUtils.logUnexpectedException(LOGGER, - "Failed to execute operaton " + result.getOperation(), e); - target.add(getFeedbackPanel()); - } - if (hasBackgroundTaskOperation(result) || StringUtils.isNotEmpty(executionTaskOid)) { - result.setMessage(createStringResource("PageAssignmentsList.requestInProgress").getString()); - showResult(result); - clearStorage(); - setResponsePage(PageAssignmentShoppingCart.class); - return; - } - if (WebComponentUtil.isSuccessOrHandledError(result) - || OperationResultStatus.IN_PROGRESS.equals(result.getStatus())) { - clearStorage(); - result.setMessage(createStringResource("PageAssignmentsList.requestSuccess").getString()); - setResponsePage(PageAssignmentShoppingCart.class); - } else { - result.setMessage(createStringResource("PageAssignmentsList.requestError").getString()); - target.add(getFeedbackPanel()); - target.add(PageAssignmentsList.this.get(ID_FORM)); - } + OperationResult result = new OperationResult(OPERATION_REQUEST_ASSIGNMENTS); + Task operationalTask = createSimpleTask(OPERATION_REQUEST_ASSIGNMENTS); + String executionTaskOid = null; + try { + TaskType task = WebComponentUtil.createSingleRecurrenceTask( + createStringResource(OPERATION_REQUEST_ASSIGNMENTS).getString(), + UserType.COMPLEX_TYPE, + getTaskQuery(), prepareDelta(null, result), createOptions(), TaskCategory.EXECUTE_CHANGES, PageAssignmentsList.this); + executionTaskOid = WebModelServiceUtils.runTask(task, operationalTask, result, PageAssignmentsList.this); + } catch (SchemaException e) { + result.recordFatalError(result.getOperation(), e); + result.setMessage(createStringResource("PageAssignmentsList.requestError").getString()); + LoggingUtils.logUnexpectedException(LOGGER, + "Failed to execute operaton " + result.getOperation(), e); + target.add(getFeedbackPanel()); + } + if (hasBackgroundTaskOperation(result) || StringUtils.isNotEmpty(executionTaskOid)) { + result.setMessage(createStringResource("PageAssignmentsList.requestInProgress").getString()); showResult(result); + clearStorage(); + setResponsePage(PageAssignmentShoppingCart.class); + return; + } + if (WebComponentUtil.isSuccessOrHandledError(result) + || OperationResultStatus.IN_PROGRESS.equals(result.getStatus())) { + clearStorage(); + result.setMessage(createStringResource("PageAssignmentsList.requestSuccess").getString()); + setResponsePage(PageAssignmentShoppingCart.class); + } else { + result.setMessage(createStringResource("PageAssignmentsList.requestError").getString()); + target.add(getFeedbackPanel()); + target.add(PageAssignmentsList.this.get(ID_FORM)); + } + showResult(result); } - private void clearStorage(){ + private void clearStorage() { SessionStorage storage = getSessionStorage(); if (storage.getRoleCatalog().getAssignmentShoppingCart() != null) { storage.getRoleCatalog().getAssignmentShoppingCart().clear(); } - if (storage.getRoleCatalog().getTargetUserOidsList() != null){ + if (storage.getRoleCatalog().getTargetUserOidsList() != null) { storage.getRoleCatalog().getTargetUserOidsList().clear(); } storage.getRoleCatalog().setRequestDescription(""); } private ContainerDelta handleAssignmentDeltas(ObjectDelta focusDelta, - List assignments, PrismContainerDefinition def) throws SchemaException { + List assignments, PrismContainerDefinition def) throws SchemaException { ContainerDelta assDelta = getPrismContext().deltaFactory().container().create(ItemPath.EMPTY_PATH, def.getItemName(), def); for (AssignmentEditorDto assDto : assignments) { @@ -405,7 +404,7 @@ private ContainerDelta handleAssignmentDeltas(ObjectDelta focusDelta, break; case MODIFY: if (!assDto.isModified(getPrismContext())) { - LOGGER.trace("Assignment '{}' not modified.", new Object[]{assDto.getName()}); + LOGGER.trace("Assignment '{}' not modified.", assDto.getName()); continue; } @@ -423,17 +422,15 @@ private ContainerDelta handleAssignmentDeltas(ObjectDelta focusDelta, return assDelta; } - - private boolean hasBackgroundTaskOperation(OperationResult result){ + private boolean hasBackgroundTaskOperation(OperationResult result) { String caseOid = OperationResult.referenceToCaseOid(result.findAsynchronousOperationReference()); return StringUtils.isNotEmpty(caseOid); } private void handleModifyAssignmentDelta(AssignmentEditorDto assDto, - PrismContainerDefinition assignmentDef, PrismContainerValue newValue, ObjectDelta focusDelta) + PrismContainerDefinition assignmentDef, PrismContainerValue newValue, ObjectDelta focusDelta) throws SchemaException { - LOGGER.debug("Handling modified assignment '{}', computing delta.", - new Object[]{assDto.getName()}); + LOGGER.debug("Handling modified assignment '{}', computing delta.", assDto.getName()); PrismValue oldValue = assDto.getOldValue(); Collection deltas = oldValue.diff(newValue); @@ -449,14 +446,11 @@ private void handleModifyAssignmentDelta(AssignmentEditorDto assDto, } } - private List getAssignmentConflicts(){ - ModelContext modelContext = null; - + private List getAssignmentConflicts() { ObjectDelta delta; OperationResult result = new OperationResult(OPERATION_PREVIEW_ASSIGNMENT_CONFLICTS); Task task = createSimpleTask(OPERATION_PREVIEW_ASSIGNMENT_CONFLICTS); - List conflictsList = new ArrayList<>(); - Map conflictsMap = new HashedMap(); + Map conflictsMap = new HashMap<>(); try { PrismObject user = getTargetUser(); delta = user.createModifyDelta(); @@ -468,10 +462,10 @@ private List getAssignmentConflicts(){ partialProcessing.setInbound(SKIP); partialProcessing.setProjection(SKIP); ModelExecuteOptions recomputeOptions = executeOptions().partialProcessing(partialProcessing); - modelContext = getModelInteractionService() + ModelContext modelContext = getModelInteractionService() .previewChanges(MiscUtil.createCollection(delta), recomputeOptions, task, result); - DeltaSetTriple evaluatedAssignmentTriple = modelContext - .getEvaluatedAssignmentTriple(); + DeltaSetTriple evaluatedAssignmentTriple = + modelContext.getEvaluatedAssignmentTriple(); if (evaluatedAssignmentTriple != null) { Collection addedAssignments = evaluatedAssignmentTriple.getPlusSet(); for (EvaluatedAssignment evaluatedAssignment : addedAssignments) { @@ -493,22 +487,21 @@ private List getAssignmentConflicts(){ LoggingUtils.logUnexpectedException(LOGGER, "Couldn't get assignments conflicts. Reason: ", e); error("Couldn't get assignments conflicts. Reason: " + e); } - conflictsList.addAll(conflictsMap.values()); - return conflictsList; + return new ArrayList<>(conflictsMap.values()); } - private String getSubresultWarningMessages(OperationResult result){ - if (result == null || result.getSubresults() == null){ - return ""; - } - StringBuilder sb = new StringBuilder(); - result.getSubresults().forEach(subresult ->{ - if (subresult.isWarning()){ - sb.append(subresult.getMessage()); - sb.append("\n"); - } - }); - return sb.toString(); + private String getSubresultWarningMessages(OperationResult result) { + if (result == null || result.getSubresults() == null) { + return ""; + } + StringBuilder sb = new StringBuilder(); + result.getSubresults().forEach(subresult -> { + if (subresult.isWarning()) { + sb.append(subresult.getMessage()); + sb.append("\n"); + } + }); + return sb.toString(); } private void fillInConflictedObjects(EvaluatedAssignment evaluatedAssignment, Collection> triggers, boolean isWarning, Map conflictsMap) { @@ -516,56 +509,56 @@ private void fillInConflictedObjects(EvaluatedAssignment evaluatedAssi for (EvaluatedPolicyRuleTrigger trigger : triggers) { if (trigger instanceof EvaluatedExclusionTrigger) { - fillInFromEvaluatedExclusionTrigger(evaluatedAssignment, (EvaluatedExclusionTrigger) trigger, isWarning, conflictsMap); - } else if (trigger instanceof EvaluatedCompositeTrigger) { - EvaluatedCompositeTrigger compositeTrigger = (EvaluatedCompositeTrigger) trigger; - Collection> innerTriggers = compositeTrigger.getInnerTriggers(); - fillInConflictedObjects(evaluatedAssignment, innerTriggers, isWarning, conflictsMap); - } + fillInFromEvaluatedExclusionTrigger(evaluatedAssignment, (EvaluatedExclusionTrigger) trigger, isWarning, conflictsMap); + } else if (trigger instanceof EvaluatedCompositeTrigger) { + EvaluatedCompositeTrigger compositeTrigger = (EvaluatedCompositeTrigger) trigger; + Collection> innerTriggers = compositeTrigger.getInnerTriggers(); + fillInConflictedObjects(evaluatedAssignment, innerTriggers, isWarning, conflictsMap); + } } } private void fillInFromEvaluatedExclusionTrigger(EvaluatedAssignment evaluatedAssignment, EvaluatedExclusionTrigger exclusionTrigger, boolean isWarning, Map conflictsMap) { -// EvaluatedExclusionTrigger exclusionTrigger = (EvaluatedExclusionTrigger) trigger; - EvaluatedAssignment conflictingAssignment = exclusionTrigger.getConflictingAssignment(); - PrismObject addedAssignmentTargetObj = (PrismObject)evaluatedAssignment.getTarget(); - PrismObject exclusionTargetObj = (PrismObject)conflictingAssignment.getTarget(); - - AssignmentConflictDto dto1 = new AssignmentConflictDto<>(exclusionTargetObj, - conflictingAssignment.getAssignmentType(true) != null); - AssignmentConflictDto dto2 = new AssignmentConflictDto<>(addedAssignmentTargetObj, - evaluatedAssignment.getAssignmentType(true) != null); - ConflictDto conflict = new ConflictDto(dto1, dto2, isWarning); - String oid1 = exclusionTargetObj.getOid(); - String oid2 = addedAssignmentTargetObj.getOid(); - if (!conflictsMap.containsKey(oid1 + oid2) && !conflictsMap.containsKey(oid2 + oid1)) { - conflictsMap.put(oid1 + oid2, conflict); - } else if (!isWarning) { - // error is stronger than warning, so we replace (potential) warnings with this error - // TODO Kate please review this - if (conflictsMap.containsKey(oid1 + oid2)) { - conflictsMap.replace(oid1 + oid2, conflict); - } - if (conflictsMap.containsKey(oid2 + oid1)) { - conflictsMap.replace(oid2 + oid1, conflict); - } - } + EvaluatedAssignment conflictingAssignment = exclusionTrigger.getConflictingAssignment(); + PrismObject addedAssignmentTargetObj = (PrismObject) evaluatedAssignment.getTarget(); + PrismObject exclusionTargetObj = (PrismObject) conflictingAssignment.getTarget(); + + AssignmentConflictDto dto1 = new AssignmentConflictDto<>(exclusionTargetObj, + conflictingAssignment.getAssignmentType(true) != null); + AssignmentConflictDto dto2 = new AssignmentConflictDto<>(addedAssignmentTargetObj, + evaluatedAssignment.getAssignmentType(true) != null); + ConflictDto conflict = new ConflictDto(dto1, dto2, isWarning); + String oid1 = exclusionTargetObj.getOid(); + String oid2 = addedAssignmentTargetObj.getOid(); + if (!conflictsMap.containsKey(oid1 + oid2) && !conflictsMap.containsKey(oid2 + oid1)) { + conflictsMap.put(oid1 + oid2, conflict); + } else if (!isWarning) { + // error is stronger than warning, so we replace (potential) warnings with this error + // TODO Kate please review this + if (conflictsMap.containsKey(oid1 + oid2)) { + conflictsMap.replace(oid1 + oid2, conflict); + } + if (conflictsMap.containsKey(oid2 + oid1)) { + conflictsMap.replace(oid2 + oid1, conflict); + } + } } - private boolean onlyWarnings(){ + + private boolean onlyWarnings() { List list = getSessionStorage().getRoleCatalog().getConflictsList(); - for (ConflictDto dto : list){ - if (!dto.isWarning()){ + for (ConflictDto dto : list) { + if (!dto.isWarning()) { return false; } } return true; } - private boolean areConflictsResolved(){ + private boolean areConflictsResolved() { List list = getSessionStorage().getRoleCatalog().getConflictsList(); - for (ConflictDto dto : list){ - if (!dto.isResolved()){ + for (ConflictDto dto : list) { + if (!dto.isResolved()) { return false; } } @@ -574,10 +567,10 @@ private boolean areConflictsResolved(){ private ObjectDelta prepareDelta(PrismObject user, OperationResult result) { ObjectDelta delta = null; - try{ + try { delta = getPrismContext().deltaFactory().object() .createModificationAddContainer(UserType.class, user == null ? "fakeOid" : user.getOid(), - FocusType.F_ASSIGNMENT, getAddAssignmentContainerValues(assignmentsModel.getObject())); + FocusType.F_ASSIGNMENT, getAddAssignmentContainerValues(assignmentsModel.getObject())); if (!getSessionStorage().getRoleCatalog().isMultiUserRequest()) { delta.addModificationDeleteContainer(FocusType.F_ASSIGNMENT, getDeleteAssignmentContainerValues(user.asObjectable())); @@ -590,10 +583,10 @@ private ObjectDelta prepareDelta(PrismObject user, OperationResult res } - private ObjectQuery getTaskQuery(){ - List targetUsersOids = getSessionStorage().getRoleCatalog().isSelfRequest() ? - Arrays.asList(getPrincipalFocus().getOid()) : - getSessionStorage().getRoleCatalog().getTargetUserOidsList(); + private ObjectQuery getTaskQuery() { + List targetUsersOids = getSessionStorage().getRoleCatalog().isSelfRequest() + ? Collections.singletonList(getPrincipalFocus().getOid()) + : getSessionStorage().getRoleCatalog().getTargetUserOidsList(); QueryFactory queryFactory = getPrismContext().queryFactory(); return queryFactory.createQuery(queryFactory.createInOid(targetUsersOids)); } @@ -618,32 +611,32 @@ private PrismContainerValue[] getDeleteAssignmentContainerValues(UserType user) return deleteAssignmentValues.toArray(new PrismContainerValue[0]); } - private List getAssignmentsToRemoveList(UserType user){ + private List getAssignmentsToRemoveList(UserType user) { List conflicts = getSessionStorage().getRoleCatalog().getConflictsList(); List assignmentsToRemoveOids = new ArrayList<>(); - for (ConflictDto dto : conflicts){ - if (dto.isResolved()){ - if (dto.getAssignment1().isResolved() && dto.getAssignment1().isOldAssignment()){ + for (ConflictDto dto : conflicts) { + if (dto.isResolved()) { + if (dto.getAssignment1().isResolved() && dto.getAssignment1().isOldAssignment()) { assignmentsToRemoveOids.add(dto.getAssignment1().getAssignmentTargetObject().getOid()); - } else if (dto.getAssignment2().isResolved() && dto.getAssignment2().isOldAssignment()){ + } else if (dto.getAssignment2().isResolved() && dto.getAssignment2().isOldAssignment()) { assignmentsToRemoveOids.add(dto.getAssignment2().getAssignmentTargetObject().getOid()); } } } List assignmentsToDelete = new ArrayList<>(); - for (AssignmentType assignment : user.getAssignment()){ - if (assignment.getTargetRef() == null){ + for (AssignmentType assignment : user.getAssignment()) { + if (assignment.getTargetRef() == null) { continue; } - if (assignmentsToRemoveOids.contains(assignment.getTargetRef().getOid())){ + if (assignmentsToRemoveOids.contains(assignment.getTargetRef().getOid())) { assignmentsToDelete.add(new AssignmentEditorDto(UserDtoStatus.DELETE, assignment, this)); } } return assignmentsToDelete; } - private TextArea getDescriptionComponent(){ + private TextArea getDescriptionComponent() { return (TextArea) get(ID_FORM).get(ID_DESCRIPTION); } @@ -655,7 +648,7 @@ private PrismObject getTargetUser() throws SchemaException { OperationResult result = new OperationResult(OPERATION_LOAD_ASSIGNMENT_TARGET_USER_OBJECT); PrismObject user = WebModelServiceUtils.loadObject(UserType.class, targetUserOid, PageAssignmentsList.this, task, result); - if (user == null){ + if (user == null) { return null; } getPrismContext().adopt(user); @@ -663,28 +656,16 @@ private PrismObject getTargetUser() throws SchemaException { } @Override - public boolean canRedirectBack(){ + public boolean canRedirectBack() { return true; } - private boolean isCreatedConflict(Map oidsMap, String oid1, String oid2){ - if ((oidsMap.containsKey(oid1) && oidsMap.get(oid1).equals(oid2)) - || (oidsMap.containsKey(oid2) && oidsMap.get(oid2).equals(oid1))){ - return true; - } - return false; - } - - private Component getTargetUserSelectionButton(){ - return get(ID_FORM).get(ID_TARGET_USER_PANEL); - } - - private String getTargetUserSelectionButtonLabel(List usersList){ - if (usersList == null || usersList.size() == 0){ + private String getTargetUserSelectionButtonLabel(List usersList) { + if (usersList == null || usersList.size() == 0) { String label = createStringResource("AssignmentCatalogPanel.requestFor", createStringResource("AssignmentCatalogPanel.requestForMe").getString()).getString(); return label; - } else if (usersList.size() == 1){ + } else if (usersList.size() == 1) { String name = usersList.get(0).getName().getOrig(); return createStringResource("AssignmentCatalogPanel.requestFor", name).getString(); } else {