diff --git a/gui/admin-gui/pom.xml b/gui/admin-gui/pom.xml index cad8d07a654..ffe6cabaec0 100644 --- a/gui/admin-gui/pom.xml +++ b/gui/admin-gui/pom.xml @@ -573,10 +573,6 @@ org.apache.commons commons-configuration2 - - commons-collections - commons-collections - commons-beanutils commons-beanutils 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..4e2a78b1c17 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.collections4.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(), + 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/FocusTypeAssignmentPopupTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusTypeAssignmentPopupTabPanel.java index 83b474bb7ce..154f8f8dfd3 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.commons.collections4.CollectionUtils; 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,34 +87,40 @@ 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(); - ObjectFilter filter = WebComponentUtil.getAssignableRolesFilter(getTargetedAssignemntObject(), (Class) getObjectType().getClassDefinition(), - isInducement() ? WebComponentUtil.AssignmentOrder.INDUCEMENT : WebComponentUtil.AssignmentOrder.ASSIGNMENT, result, task, getPageBase()); + ObjectFilter filter = WebComponentUtil.getAssignableRolesFilter( + getTargetedAssignemntObject(), + (Class) getObjectType().getClassDefinition(), + isInducement() + ? WebComponentUtil.AssignmentOrder.INDUCEMENT + : WebComponentUtil.AssignmentOrder.ASSIGNMENT, + result, task, getPageBase()); if (query == null) { query = getPrismContext().queryFactory().createQuery(); } @@ -123,9 +128,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 +138,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 +153,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..deabfd3230f 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.collections4.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,40 @@ 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<>(); + private final AvailableRelationDto supportedRelationList; + private final List archetypeReferenceList; - public MemberPopupTabPanel(String id, AvailableRelationDto supportedRelationList){ - super(id); - this.supportedRelationList = supportedRelationList; + 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 +82,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 +109,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/ObjectListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java index ef07ce98928..34ff1fae0d6 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java @@ -1,34 +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.*; +import static java.util.Collections.singleton; + import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; +import javax.xml.namespace.QName; -import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; -import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView; -import com.evolveum.midpoint.prism.*; -import com.evolveum.midpoint.prism.path.ItemPath; -import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; -import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; -import com.evolveum.midpoint.schema.constants.ExpressionConstants; -import com.evolveum.midpoint.schema.constants.ObjectTypes; -import com.evolveum.midpoint.schema.result.OperationResult; -import com.evolveum.midpoint.schema.util.MiscSchemaUtil; -import com.evolveum.midpoint.task.api.Task; -import com.evolveum.midpoint.util.exception.*; -import com.evolveum.midpoint.web.component.data.column.InlineMenuButtonColumn; -import com.evolveum.midpoint.web.component.search.*; -import com.evolveum.midpoint.web.component.util.SelectableBean; -import com.evolveum.midpoint.web.component.util.SerializableSupplier; -import com.evolveum.midpoint.web.component.util.VisibleBehaviour; -import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusPresentationProperties; -import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import org.apache.commons.lang3.StringUtils; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -39,16 +23,36 @@ import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.model.*; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.StringResourceModel; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.util.string.StringValue; +import org.jetbrains.annotations.NotNull; import com.evolveum.midpoint.gui.api.model.LoadableModel; 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.authentication.CompiledObjectCollectionView; +import com.evolveum.midpoint.prism.Item; +import com.evolveum.midpoint.prism.ItemDefinition; +import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.prism.PrismPropertyValue; +import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.prism.query.ObjectOrdering; import com.evolveum.midpoint.prism.query.ObjectPaging; import com.evolveum.midpoint.prism.query.ObjectQuery; +import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.GetOperationOptions; import com.evolveum.midpoint.schema.SelectorOptions; +import com.evolveum.midpoint.schema.constants.ExpressionConstants; +import com.evolveum.midpoint.schema.constants.ObjectTypes; +import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.schema.util.MiscSchemaUtil; +import com.evolveum.midpoint.task.api.Task; +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.BaseSortableDataProvider; @@ -57,17 +61,17 @@ import com.evolveum.midpoint.web.component.data.Table; 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.InlineMenuButtonColumn; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; +import com.evolveum.midpoint.web.component.search.*; +import com.evolveum.midpoint.web.component.util.SelectableBean; import com.evolveum.midpoint.web.component.util.SelectableListDataProvider; +import com.evolveum.midpoint.web.component.util.SerializableSupplier; +import com.evolveum.midpoint.web.component.util.VisibleBehaviour; +import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusPresentationProperties; import com.evolveum.midpoint.web.session.PageStorage; import com.evolveum.midpoint.web.session.UserProfileStorage.TableId; -import org.apache.wicket.request.mapper.parameter.PageParameters; -import org.apache.wicket.util.string.StringValue; -import org.jetbrains.annotations.NotNull; - -import javax.xml.namespace.QName; - -import static java.util.Collections.singleton; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; /** * @author katkav @@ -87,11 +91,11 @@ public abstract class ObjectListPanel extends BasePanel private LoadableModel searchModel; - private Collection> options; + private final Collection> options; - private boolean multiselect; + private final boolean multiselect; - private TableId tableId; + private final TableId tableId; private String addutionalBoxCssClasses; @@ -102,8 +106,6 @@ public Class getType() { return (Class) type.getClassDefinition(); } - - /** * @param defaultType specifies type of the object that will be selected by default. It can be changed. */ @@ -119,9 +121,9 @@ public ObjectListPanel(String id, Class defaultType, TableId tableI } public ObjectListPanel(String id, Class defaultType, TableId tableId, Collection> options, - boolean multiselect) { + boolean multiselect) { super(id); - this.type = defaultType != null ? ObjectTypes.getObjectType(defaultType) : null; + this.type = defaultType != null ? ObjectTypes.getObjectType(defaultType) : null; this.options = options; this.multiselect = multiselect; this.tableId = tableId;//(!isCollectionViewPanel()) ? tableId : UserProfileStorage.TableId.COLLECTION_VIEW_TABLE; //TODO why? @@ -138,7 +140,7 @@ public boolean isMultiselect() { return multiselect; } - public int getSelectedObjectsCount(){ + public int getSelectedObjectsCount() { List selectedList = getSelectedObjects(); return selectedList.size(); } @@ -166,7 +168,7 @@ private void initLayout() { } - protected LoadableModel initSearchModel(){ + protected LoadableModel initSearchModel() { return new LoadableModel(false) { private static final long serialVersionUID = 1L; @@ -236,7 +238,7 @@ protected Search createSearch() { private BoxedTablePanel> createTable() { List, String>> columns; - if (isCustomColumnsListConfigured()){ + if (isCustomColumnsListConfigured()) { columns = initCustomColumns(); } else { columns = initColumns(); @@ -254,7 +256,6 @@ private BoxedTablePanel> createTable() { BaseSortableDataProvider> provider = initProvider(); - BoxedTablePanel> table = new BoxedTablePanel>(ID_TABLE, provider, columns, tableId, tableId == null ? 10 : getPageBase().getSessionStorage().getUserProfile().getPagingSize(getTableIdKeyValue())) { @@ -280,7 +281,7 @@ protected WebMarkupContainer createButtonToolbar(String id) { } @Override - protected boolean hideFooterIfSinglePage(){ + protected boolean hideFooterIfSinglePage() { return ObjectListPanel.this.hideFooterIfSinglePage(); } @@ -306,7 +307,6 @@ public boolean isAutoRefreshEnabled() { return table; } - protected WebMarkupContainer createHeader(String headerId) { return initSearch(headerId); } @@ -319,7 +319,7 @@ protected List, String>> initCustomColumns() { LOGGER.trace("Start to init custom columns for table of type {}", type); List, String>> columns = new ArrayList<>(); List customColumns = getGuiObjectColumnTypeList(); - if (customColumns == null){ + if (customColumns == null) { return columns; } @@ -336,7 +336,7 @@ protected List, String>> initCustomColumns() { return columns; } - protected List, String>> getCustomColumnsTransformed(List customColumns){ + protected List, String>> getCustomColumnsTransformed(List customColumns) { List, String>> columns = new ArrayList<>(); if (customColumns == null || customColumns.isEmpty()) { return columns; @@ -411,7 +411,7 @@ public IModel getDataModel(IModel> rowModel) { } if (item != null) { if (item.getDefinition() != null && item.getDefinition().getValueEnumerationRef() != null && - item.getDefinition().getValueEnumerationRef().getOid() != null){ + item.getDefinition().getValueEnumerationRef().getOid() != null) { String lookupTableOid = item.getDefinition().getValueEnumerationRef().getOid(); Task task = getPageBase().createSimpleTask("loadLookupTable"); OperationResult result = task.getResult(); @@ -436,7 +436,7 @@ public IModel getDataModel(IModel> rowModel) { return columns; } - private IModel getItemValuesString(Item item, PrismObject lookupTable){ + private IModel getItemValuesString(Item item, PrismObject lookupTable) { return Model.of(item.getValues().stream() .filter(Objects::nonNull) .map(itemValue -> { @@ -447,8 +447,8 @@ private IModel getItemValuesString(Item item, PrismObject) itemValue).getValue().toString(); LookupTableType lookupTableObject = lookupTable.asObjectable(); String rowLabel = ""; - for (LookupTableRowType lookupTableRow : lookupTableObject.getRow()){ - if (lookupTableRow.getKey().equals(lookupTableKey)){ + for (LookupTableRowType lookupTableRow : lookupTableObject.getRow()) { + if (lookupTableRow.getKey().equals(lookupTableKey)) { rowLabel = lookupTableRow.getLabel() != null ? lookupTableRow.getLabel().getOrig() : lookupTableRow.getValue(); break; } @@ -471,7 +471,7 @@ protected List, String>> initColumns() { columns.add(checkboxColumn); } - IColumn, String> iconColumn = (IColumn) ColumnUtils.createIconColumn(getPageBase()); + IColumn, String> iconColumn = ColumnUtils.createIconColumn(getPageBase()); columns.add(iconColumn); IColumn, String> nameColumn = createNameColumn(null, null, null); @@ -519,7 +519,7 @@ public SelectableBean createDataObjectWrapper(O obj) { @NotNull @Override protected List createObjectOrderings(SortParam sortParam) { - List customOrdering = createCustomOrdering(sortParam); + List customOrdering = createCustomOrdering(sortParam); if (customOrdering != null) { return customOrdering; } @@ -532,7 +532,7 @@ public boolean isOrderingDisabled() { } @Override - public boolean isUseObjectCounting(){ + public boolean isUseObjectCounting() { return isCountingEnabled(); } }; @@ -550,7 +550,7 @@ protected Collection> createOptions(Collect return getObjectCollectionView().getOptions(); } - if (options == null){ + if (options == null) { if (ResourceType.class.equals(type.getClassDefinition())) { options = SelectorOptions.createCollection(GetOperationOptions.createNoFetch()); } @@ -563,7 +563,7 @@ protected Collection> createOptions(Collect return options; } - protected String getTableIdKeyValue(){ + protected String getTableIdKeyValue() { if (tableId == null) { return null; } @@ -573,7 +573,7 @@ protected String getTableIdKeyValue(){ return tableId.name() + "." + getCollectionNameParameterValue().toString(); } - protected List getPreselectedObjectList(){ + protected List getPreselectedObjectList() { return null; } @@ -584,45 +584,46 @@ protected List createCustomOrdering(SortParam sortParam) /** * should be overrided in case when ObjectListPanel is used * for additional panel of some object type (e.g. members panel on the org tree page) + * * @return */ - protected GuiObjectListPanelConfigurationType getAdditionalPanelConfig(){ + protected GuiObjectListPanelConfigurationType getAdditionalPanelConfig() { return null; } - protected boolean isOrderingDisabled(){ + protected boolean isOrderingDisabled() { CompiledObjectCollectionView guiObjectListViewType = getObjectCollectionView(); - if (isAdditionalPanel()){ + if (isAdditionalPanel()) { if (guiObjectListViewType != null && guiObjectListViewType.getAdditionalPanels() != null && guiObjectListViewType.getAdditionalPanels().getMemberPanel() != null && - guiObjectListViewType.getAdditionalPanels().getMemberPanel().isDisableSorting() != null){ + guiObjectListViewType.getAdditionalPanels().getMemberPanel().isDisableSorting() != null) { return guiObjectListViewType.getAdditionalPanels().getMemberPanel().isDisableSorting(); } } else { - if (guiObjectListViewType != null && guiObjectListViewType.isDisableSorting() != null){ + if (guiObjectListViewType != null && guiObjectListViewType.isDisableSorting() != null) { return guiObjectListViewType.isDisableSorting(); } } return false; } - protected boolean isCountingEnabled(){ + protected boolean isCountingEnabled() { CompiledObjectCollectionView guiObjectListViewType = getObjectCollectionView(); - if (isAdditionalPanel()){ + if (isAdditionalPanel()) { if (guiObjectListViewType != null && guiObjectListViewType.getAdditionalPanels() != null && guiObjectListViewType.getAdditionalPanels().getMemberPanel() != null && - guiObjectListViewType.getAdditionalPanels().getMemberPanel().isDisableCounting() != null){ + guiObjectListViewType.getAdditionalPanels().getMemberPanel().isDisableCounting() != null) { return !guiObjectListViewType.getAdditionalPanels().getMemberPanel().isDisableCounting(); } } else { - if (guiObjectListViewType != null && guiObjectListViewType.isDisableCounting() != null){ + if (guiObjectListViewType != null && guiObjectListViewType.isDisableCounting() != null) { return !guiObjectListViewType.isDisableCounting(); } } return true; } - protected boolean isAdditionalPanel(){ + protected boolean isAdditionalPanel() { return false; } @@ -665,7 +666,7 @@ protected WebMarkupContainer createTableButtonToolbar(String id) { return null; } - protected String getStorageKey(){ + protected String getStorageKey() { if (isCollectionViewPanelForCompiledView()) { StringValue collectionName = getCollectionNameParameterValue(); @@ -681,7 +682,7 @@ protected String getStorageKey(){ return key; } - protected PageStorage getPageStorage(String storageKey){ + protected PageStorage getPageStorage(String storageKey) { PageStorage storage = getSession().getSessionStorage().getPageStorageMap().get(storageKey); if (storage == null) { storage = getSession().getSessionStorage().initPageStorage(storageKey); @@ -691,7 +692,7 @@ protected PageStorage getPageStorage(String storageKey){ protected boolean isRefreshEnabled() { if (getAutoRefreshInterval() == 0) { - return manualRefreshEnabled == null ? false : manualRefreshEnabled.booleanValue(); + return manualRefreshEnabled != null && manualRefreshEnabled.booleanValue(); } if (manualRefreshEnabled == null) { @@ -703,7 +704,7 @@ protected boolean isRefreshEnabled() { protected int getAutoRefreshInterval() { - CompiledObjectCollectionView view = getObjectCollectionView(); + CompiledObjectCollectionView view = getObjectCollectionView(); if (view == null) { // if (BooleanUtils.isTrue(manualRefreshEnabled)) { // return DEFAULT_AUTOREFRESH_INTERVAL; @@ -745,7 +746,7 @@ protected CompiledObjectCollectionView getObjectCollectionView() { Task task = getPageBase().createSimpleTask("Create view from dashboard"); @NotNull DashboardType dashboard = WebModelServiceUtils.loadObject(DashboardType.class, dashboardOid, getPageBase(), task, task.getResult()).getRealValue(); if (dashboard != null) { - for (DashboardWidgetType widget :dashboard.getWidget()) { + for (DashboardWidgetType widget : dashboard.getWidget()) { if (widget.getIdentifier().equals(dashboardWidgetName) && widget.getData() != null && widget.getData().getCollection() != null) { CollectionRefSpecificationType collectionSpec = widget.getData().getCollection(); @@ -771,9 +772,9 @@ protected CompiledObjectCollectionView getObjectCollectionView() { return getPageBase().getCompiledGuiProfile().findObjectCollectionView(WebComponentUtil.classToQName(getPageBase().getPrismContext(), getType()), collectionName); } - private StringValue getCollectionNameParameterValue(){ + private StringValue getCollectionNameParameterValue() { PageParameters parameters = getPageBase().getPageParameters(); - return parameters == null ? null : parameters.get(PageBase.PARAMETER_OBJECT_COLLECTION_NAME); + return parameters == null ? null : parameters.get(PageBase.PARAMETER_OBJECT_COLLECTION_NAME); } protected boolean isCollectionViewPanelForWidget() { @@ -794,7 +795,6 @@ protected boolean isCollectionViewPanel() { return isCollectionViewPanelForCompiledView() || isCollectionViewPanelForWidget(); } - @SuppressWarnings("unchecked") protected BaseSortableDataProvider> getDataProvider() { BoxedTablePanel> table = getTable(); @@ -804,7 +804,7 @@ protected BaseSortableDataProvider> getDataProvider() { } - protected Collection> getOptions(){ + protected Collection> getOptions() { return options; } @@ -813,7 +813,6 @@ protected BoxedTablePanel> getTable() { return (BoxedTablePanel>) get(createComponentPath(ID_MAIN_FORM, ID_TABLE)); } - @SuppressWarnings("deprecation") private void searchPerformed(ObjectQuery query, AjaxRequestTarget target) { @@ -860,16 +859,16 @@ public void refreshTable(Class newTypeClass, AjaxRequestTarget target) { } } - target.add((Component) table); + target.add(table); target.add(getPageBase().getFeedbackPanel()); } - protected boolean isTypeChanged(Class newTypeClass){ + protected boolean isTypeChanged(Class newTypeClass) { return !getType().equals(newTypeClass); } - public void resetSearchModel(){ + public void resetSearchModel() { String storageKey = getStorageKey(); if (StringUtils.isNotEmpty(storageKey)) { PageStorage storage = getPageStorage(storageKey); @@ -908,12 +907,12 @@ protected ObjectQuery createContentQuery() { return query; } - private ObjectQuery addArchetypeFilter(ObjectQuery query){ - if (!isCollectionViewPanel()){ + private ObjectQuery addArchetypeFilter(ObjectQuery query) { + if (!isCollectionViewPanel()) { return query; } CompiledObjectCollectionView view = getObjectCollectionView(); - if (view == null){ + if (view == null) { getFeedbackMessages().add(ObjectListPanel.this, "Unable to load collection view list", 0); return query; } @@ -935,7 +934,7 @@ protected ObjectQuery addFilterToContentQuery(ObjectQuery query) { return query; } - protected void setDefaultSorting(BaseSortableDataProvider> provider){ + protected void setDefaultSorting(BaseSortableDataProvider> provider) { //should be overrided if needed } @@ -945,8 +944,8 @@ public StringResourceModel createStringResource(String resourceKey, Object... ob protected abstract IColumn, String> createCheckboxColumn(); - protected IColumn, String> createIconColumn(){ - return (IColumn) ColumnUtils.createIconColumn(getPageBase()); + protected IColumn, String> createIconColumn() { + return ColumnUtils.createIconColumn(getPageBase()); } protected abstract IColumn, String> createNameColumn(IModel columnNameModel, String itemPath, @@ -968,25 +967,25 @@ public void addPerformed(AjaxRequestTarget target, List selected) { getPageBase().hideMainPopup(target); } - private List getGuiObjectColumnTypeList(){ + private List getGuiObjectColumnTypeList() { CompiledObjectCollectionView guiObjectListViewType = getObjectCollectionView(); return guiObjectListViewType != null ? guiObjectListViewType.getColumns() : null; } - private boolean isCustomColumnsListConfigured(){ + private boolean isCustomColumnsListConfigured() { List columnList = getGuiObjectColumnTypeList(); return columnList != null && !columnList.isEmpty(); } - private String getItemDisplayName(GuiObjectColumnType column){ + private String getItemDisplayName(GuiObjectColumnType column) { ItemDefinition itemDefinition = getPageBase().getPrismContext().getSchemaRegistry() .findObjectDefinitionByCompileTimeClass(type.getClassDefinition()).findItemDefinition(column.getPath().getItemPath()); return itemDefinition == null ? "" : itemDefinition.getDisplayName(); } - public ObjectPaging getCurrentTablePaging(){ + public ObjectPaging getCurrentTablePaging() { String storageKey = getStorageKey(); - if (StringUtils.isEmpty(storageKey)){ + if (StringUtils.isEmpty(storageKey)) { return null; } PageStorage storage = getPageStorage(storageKey); @@ -996,7 +995,7 @@ public ObjectPaging getCurrentTablePaging(){ return storage.getPaging(); } - protected boolean hideFooterIfSinglePage(){ + protected boolean hideFooterIfSinglePage() { return false; } 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..ebb56c1410d 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 @@ -18,7 +18,7 @@ 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.commons.collections4.CollectionUtils; import org.apache.wicket.markup.html.form.FormComponent; import org.apache.wicket.util.convert.ConversionException; import org.apache.wicket.util.convert.IConverter; 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..d7ffd525660 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,9 +14,7 @@ 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.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.wicket.AttributeModifier; import org.apache.wicket.Component; @@ -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/page/PageBase.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java index c27d3fe7664..93be58aa047 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java @@ -14,7 +14,7 @@ import javax.management.ObjectName; import javax.xml.namespace.QName; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.Validate; import org.apache.commons.lang3.ObjectUtils; 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 eb4081e9842..fee5ff770f0 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 @@ -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. @@ -23,10 +23,6 @@ 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.lang.BooleanUtils; import org.apache.commons.lang.StringUtils; @@ -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; @@ -203,12 +202,6 @@ public final class WebComponentUtil { private static final String KEY_BOOLEAN_TRUE = "Boolean.TRUE"; private static final String KEY_BOOLEAN_FALSE = "Boolean.FALSE"; - /** - * To be used only for tests when there's no MidpointApplication. - * (Quite a hack. Replace eventually by a more serious solution.) - */ - private static RelationRegistry staticallyProvidedRelationRegistry; - private static Map, Class> objectDetailsPageMap; private static Map, Class> createNewObjectPageMap; @@ -228,7 +221,7 @@ public final class WebComponentUtil { objectDetailsPageMap.put(ObjectCollectionType.class, PageObjectCollection.class); } - static{ + static { createNewObjectPageMap = new HashMap<>(); createNewObjectPageMap.put(ResourceType.class, PageResourceWizard.class); } @@ -280,14 +273,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; - AssignmentOrder(int order){ + AssignmentOrder(int order) { this.order = order; } @@ -337,13 +330,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 +348,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 +363,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 +376,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 +390,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 +408,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 +593,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 +707,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 +717,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 +737,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); } @@ -843,9 +836,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 +884,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 Arrays.asList(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 +916,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 +964,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 +979,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 +991,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 +1084,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 +1135,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 +1152,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 +1178,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()); @@ -1208,10 +1202,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 +1366,6 @@ public static String getDisplayName(PrismContainerValu } } - String escaped = org.apache.commons.lang.StringEscapeUtils.escapeHtml(displayName); return escaped; } @@ -1393,7 +1386,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 +1416,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 +1429,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 +1445,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 +1631,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 +1727,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(); @@ -1931,11 +1923,7 @@ public static boolean isOfKind(QName relation, RelationKindType kind) { } protected static RelationRegistry getRelationRegistry() { - if (staticallyProvidedRelationRegistry != null) { - return staticallyProvidedRelationRegistry; - } else { - return MidPointApplication.get().getRelationRegistry(); - } + return MidPointApplication.get().getRelationRegistry(); } public static boolean isManagerRelation(QName relation) { @@ -2027,15 +2015,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 +2047,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 +2127,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 +2135,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 +2153,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 +2175,7 @@ public static void initNewObjectWithReference } public static String createErrorIcon(OperationResult result) { - if (result == null){ + if (result == null) { return ""; } OperationResultStatus status = result.getStatus(); @@ -2229,7 +2216,6 @@ public static PrismContext getPrismContext(Component component) { return ((MidPointApplication) component.getApplication()).getPrismContext(); } - public static List getChannelList() { List channels = new ArrayList<>(); @@ -2258,8 +2244,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 +2333,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 +2371,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 +2526,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 +2556,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,7 +2574,7 @@ public static boolean isSubscriptionIdCorrect(String subscriptionId){ return false; } VerhoeffCheckDigit checkDigit = new VerhoeffCheckDigit(); - if (checkDigit.isValid(subscriptionId)){ + if (checkDigit.isValid(subscriptionId)) { return true; } return false; @@ -2606,19 +2591,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 +2611,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 +2622,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 +2640,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 +2663,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 +2685,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 +2709,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; @@ -2829,7 +2813,6 @@ public static boolean isPasswordSupported(ShadowType shadowType) { } - public static boolean isAssociationSupported(ShadowType shadowType) { ObjectReferenceType resourceRef = shadowType.getResourceRef(); if (resourceRef == null) { @@ -2858,7 +2841,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 +2856,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 +2870,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 +2882,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 +2901,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 +2929,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 +2962,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 +3058,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; @@ -3163,19 +3146,14 @@ private Map prepareExtensionValues(Collection oids) throw return menuItems; } - @SuppressWarnings("unused") - public static RelationRegistry getStaticallyProvidedRelationRegistry() { - return staticallyProvidedRelationRegistry; - } - 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 +3161,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 { @@ -3230,7 +3208,7 @@ public static List getAssignableRelationsList(PrismObject(roleSpec.getRelationMap().keySet()) : null; + new ArrayList<>(roleSpec.getRelationMap().keySet()) : null; } catch (Exception ex) { LoggingUtils.logUnexpectedException(LOGGER, "Couldn't load assignable relations list", ex); result.recordFatalError(pageBase.createStringResource("WebComponentUtil.message.getAssignableRelationsList.fatalError").getString(), ex); @@ -3243,7 +3221,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 +3309,7 @@ public static List getRefinedAssociationDefinition } public static String getAssociationDisplayName(RefinedAssociationDefinition assocDef) { - if (assocDef == null){ + if (assocDef == null) { return ""; } StringBuilder sb = new StringBuilder(); @@ -3353,7 +3331,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 +3347,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 +3364,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 +3391,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 +3401,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 +3418,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 +3454,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 +3468,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 +3494,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 +3505,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 +3530,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 +3540,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 +3561,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 +3595,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 +3607,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 +3631,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 +3652,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 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 +3696,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 +3706,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 +3729,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){ + QName objectType = CollectionUtils.isNotEmpty(relationSpec.getObjectTypes()) ? relationSpec.getObjectTypes().get(0) : null; + if (StringUtils.isEmpty(WebComponentUtil.getIconCssClass(objectTypeDisplay)) && objectType != null) { objectTypeDisplay.getIcon().setCssClass(WebComponentUtil.createDefaultBlackIcon(objectType)); } if (StringUtils.isNotEmpty(WebComponentUtil.getIconCssClass(objectTypeDisplay))) { @@ -3788,7 +3764,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 +3774,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 +3796,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(); @@ -3852,21 +3827,18 @@ public static void deleteSyncTokenPerformed(AjaxRequestTarget target, ResourceTy * The idea is to divide the list of AssignmentObjectRelation objects in such way that each AssignmentObjectRelation * in the list will contain not more than 1 relation. This will simplify creating of a new_assignment_button * on some panels - * - * @param initialRelationsList - * @return */ - public static List divideAssignmentRelationsByRelationValue(List initialRelationsList){ - if (org.apache.commons.collections.CollectionUtils.isEmpty(initialRelationsList)){ + public static List divideAssignmentRelationsByRelationValue(List initialRelationsList) { + if (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())){ + if (CollectionUtils.isEmpty(assignmentTargetRelation.getObjectTypes()) && + CollectionUtils.isEmpty(assignmentTargetRelation.getRelations())) { return; } - if (org.apache.commons.collections.CollectionUtils.isEmpty(assignmentTargetRelation.getRelations())){ + if (CollectionUtils.isEmpty(assignmentTargetRelation.getRelations())) { combinedRelationList.add(assignmentTargetRelation); } else { assignmentTargetRelation.getRelations().forEach(relation -> { @@ -3890,16 +3862,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 +3890,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 +3913,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 +3930,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 +3945,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 +3986,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 +4001,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 +4016,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 +4065,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 +4086,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 +4111,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 +4134,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 +4147,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 +4165,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 +4185,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 +4232,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 +4244,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 +4301,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 +4332,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 +4340,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 +4351,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 +4382,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 +4407,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 +4432,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 +4443,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 +4461,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 +4558,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; 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..3347de19363 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.apache.commons.collections4.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..6782720988e 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.collections4.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..d3945fd4a2c 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,20 +8,18 @@ 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.commons.collections4.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.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; - public PolyStringEditorPanel(String id, IModel model, LookupTableType predefinedValuesLookupTable, boolean hasValueEnumerationRef){ + public PolyStringEditorPanel(String id, IModel model, LookupTableType predefinedValuesLookupTable, boolean hasValueEnumerationRef) { super(id); this.model = model; this.predefinedValuesLookupTable = predefinedValuesLookupTable; @@ -80,12 +82,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 +98,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 +108,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 +170,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 +192,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 +202,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); @@ -224,7 +226,7 @@ public void detach() { languageEditorContainer.add(new VisibleBehaviour(() -> CollectionUtils.isNotEmpty(getLanguageChoicesModel().getObject()))); fullDataContainer.add(languageEditorContainer); - final DropDownChoicePanel languageChoicePanel = new DropDownChoicePanel(ID_LANGUAGES_LIST, langChoiceModel, + final DropDownChoicePanel languageChoicePanel = new DropDownChoicePanel<>(ID_LANGUAGES_LIST, langChoiceModel, getLanguageChoicesModel(), true); languageChoicePanel.setOutputMarkupId(true); languageChoicePanel.getBaseFormComponent().add(new EmptyOnChangeAjaxFormUpdatingBehavior()); @@ -240,8 +242,8 @@ protected void onUpdate(AjaxRequestTarget ajaxRequestTarget) { }); 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 +251,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 +287,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 +294,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 +330,8 @@ public void onClick(AjaxRequestTarget target) { }; removeButton.setOutputMarkupId(true); listItem.add(removeButton); - } - }; + } + }; languagesContainer.setOutputMarkupId(true); fullDataContainer.add(languagesContainer); @@ -344,26 +345,25 @@ public void onClick(AjaxRequestTarget target) { } }; showHideLanguagesButton.setOutputMarkupId(true); -// showHideLanguagesButton.add(AttributeAppender.append("style", "cursor: pointer;")); origValueWithButton.add(showHideLanguagesButton); } - private String getLocalizedPolyStringValue(){ + private String getLocalizedPolyStringValue() { return ((PageBase) getPage()).getLocalizationService().translate(getModelObject(), WebComponentUtil.getCurrentLocale(), false); } - private IModel> getLanguageChoicesModel(){ + private IModel> getLanguageChoicesModel() { return new IModel>() { @Override public List getObject() { - List allLanguagesList = new ArrayList<>(); + 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)){ + } else if (!languageExists(localeValue) || localeValue.equals(currentlySelectedLang)) { allLanguagesList.add(locale.getLocale().getLanguage()); } }); @@ -372,7 +372,7 @@ public List getObject() { }; } - private IModel> getLanguagesListModel(){ + private IModel> getLanguagesListModel() { return new IModel>() { private static final long serialVersionUID = 1L; @@ -390,26 +390,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 +404,7 @@ protected String load() { }); } - private AttributeAppender getInputFieldClassAppender(){ + private AttributeAppender getInputFieldClassAppender() { return AttributeModifier.append("class", new LoadableModel() { @Override protected String load() { @@ -427,58 +413,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 +478,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..f3edb434b4f 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,29 @@ /* - * 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.commons.collections4.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"; @@ -67,7 +62,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..494ab9e77eb 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,421 @@ -/* - * 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-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.collections4.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); + } +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AjaxButton.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AjaxButton.java index efb1a806847..4d25a835a1c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AjaxButton.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AjaxButton.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/component/MultiCompositedButtonPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/MultiCompositedButtonPanel.java index c85256d96d1..72cffea185c 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 @@ -12,7 +12,7 @@ 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.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.behavior.AttributeAppender; 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..a1700a928d7 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 @@ -18,7 +18,7 @@ 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.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.behavior.AttributeAppender; 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..3593d0f0331 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 @@ -12,7 +12,7 @@ import java.util.List; import javax.xml.namespace.QName; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; 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..9eab0e83e47 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 @@ -28,7 +28,7 @@ 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.commons.collections4.CollectionUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; 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..c629915769e 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 @@ -13,7 +13,7 @@ import com.evolveum.midpoint.prism.*; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/form/multivalue/MultiValueChoosePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/form/multivalue/MultiValueChoosePanel.java index f69e64b16d3..a37e3d72ba4 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/form/multivalue/MultiValueChoosePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/form/multivalue/MultiValueChoosePanel.java @@ -6,16 +6,12 @@ */ package com.evolveum.midpoint.web.component.form.multivalue; -import static java.util.Arrays.asList; import static java.util.Optional.ofNullable; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - +import java.util.*; import javax.xml.namespace.QName; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; import org.apache.wicket.ajax.markup.html.AjaxLink; @@ -39,13 +35,12 @@ import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; + /** - * * @param 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,13 @@ public class MultiValueChoosePanel extends BasePanel typeQNames; - private Class defaultType; + private final Class defaultType; - private Collection> types; + private final Collection> types; public MultiValueChoosePanel(String id, IModel> value, Collection> types) { this(id, value, null, false, types); @@ -101,7 +95,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 +162,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 +176,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 +203,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 +224,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 +235,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 +261,7 @@ public boolean isVisible() { buttonGroup.add(remove); parent.add(buttonGroup); -} + } private boolean isRemoveButtonVisible() { return true; @@ -297,7 +289,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..5b46c74f961 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 @@ -6,6 +6,17 @@ */ package com.evolveum.midpoint.web.component.form.multivalue; +import java.util.List; +import javax.xml.namespace.QName; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.IModel; + import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.prism.Referencable; import com.evolveum.midpoint.prism.query.ObjectFilter; @@ -14,22 +25,11 @@ 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 org.apache.commons.collections.CollectionUtils; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.list.ListItem; -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; /** * 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 +45,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 +71,7 @@ private void initEmptyModelInputPanel(){ public R getObject() { return null; } - }){ + }) { private static final long serialVersionUID = 1L; @Override @@ -123,80 +123,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..629f0364e4d 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 @@ -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.collections4.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 @@ -44,18 +33,13 @@ public class RelationDropDownChoicePanel extends BasePanel { 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 +48,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 +63,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 +87,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..86d816bd0e3 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 @@ -7,6 +7,12 @@ package com.evolveum.midpoint.web.component.model.operationStatus; +import static org.apache.commons.collections4.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 +25,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 +39,7 @@ 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; @@ -51,7 +51,7 @@ public ModelOperationStatusDto(ModelContext modelContext, ModelInteractionSer if (modelContext.getFocusContext() != null) { // focusType & focusName - PrismObject object = modelContext.getFocusContext().getObjectNew(); + PrismObject object = modelContext.getFocusContext().getObjectNew(); if (object == null) { object = modelContext.getFocusContext().getObjectOld(); } @@ -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..6235d2b5a37 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 @@ -6,6 +6,16 @@ */ package com.evolveum.midpoint.web.component.prism.show; +import static org.apache.commons.collections4.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; @@ -161,7 +161,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..a62903e8526 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 @@ -6,53 +6,48 @@ */ package com.evolveum.midpoint.web.component.search; -import com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteTextPanel; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.apache.commons.collections4.iterators.ObjectArrayIterator; +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 new ObjectArrayIterator<>(); } 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..7804cb0d7a2 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 @@ -16,7 +16,7 @@ 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.commons.collections4.CollectionUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; import org.apache.wicket.markup.html.form.DropDownChoice; 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..877168483ef 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 @@ -20,7 +20,7 @@ import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; 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..7991c94c72a 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 @@ -6,6 +6,21 @@ */ package com.evolveum.midpoint.web.component.search; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.apache.commons.collections4.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 */ @@ -56,7 +56,7 @@ 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 { @@ -138,12 +137,12 @@ private Component getValueField(String id) { 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,7 +166,7 @@ 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), Model.ofList(allowedValuesList), new IChoiceRenderer() { @@ -175,7 +174,7 @@ public Iterator getIterator(String input) { @Override public Object getDisplayValue(T val) { - if (val instanceof DisplayableValue){ + if (val instanceof DisplayableValue) { return ((DisplayableValue) val).getLabel(); } return val; @@ -197,21 +196,21 @@ public T getObject(String id, IModel> choices) { } } } - if (searchItemField != null && searchItemField instanceof InputPanel){ + if (searchItemField != null && 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..b961482023b 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 @@ -13,7 +13,7 @@ import java.util.List; import javax.xml.namespace.QName; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import com.evolveum.midpoint.prism.*; import com.evolveum.midpoint.prism.query.*; @@ -48,7 +48,7 @@ public enum FilterName { SUBSTRING_ANCHOR_END(SubstringFilter.class); // SUBSTRING_ANCHOR_START_AND_END("SUBSTRING_ANCHOR_START_AND_END"); //seems repeats usual substring - private Class filterType; + private final Class filterType; FilterName(Class filterType) { this.filterType = filterType; @@ -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; } } @@ -93,7 +93,7 @@ public enum MatchingRule { UUID(PrismConstants.UUID_MATCHING_RULE_NAME), DEFAULT(PrismConstants.DEFAULT_MATCHING_RULE_NAME); - private QName matchingRuleName; + private final QName matchingRuleName; MatchingRule(QName matchingRuleName) { this.matchingRuleName = matchingRuleName; @@ -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..91c8740b759 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 @@ -10,7 +10,7 @@ import java.util.Collections; import java.util.Optional; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxFallbackLink; import org.apache.wicket.markup.html.WebMarkupContainer; @@ -55,7 +55,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 +64,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 +82,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,7 +150,7 @@ 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); } }); @@ -165,7 +166,7 @@ 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)); 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..bf999aaf4ce 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 @@ -7,6 +7,31 @@ 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.collections4.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 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 +66,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 @@ -163,10 +166,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 +203,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 +235,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 +255,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 +281,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 +296,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 +324,7 @@ protected String createAutoCompleteObjectLabel(QName object) { } @Override - protected IValidator createAutoCompleteValidator(){ + protected IValidator createAutoCompleteValidator() { return createObjectClassValidator(new IModel>() { @Override public List getObject() { @@ -333,7 +338,7 @@ public List getObject() { // TODO: switch to ObjectTypeSelectPanel DropDownChoice editorFocus = new DropDownChoice<>(ID_EDITOR_FOCUS, new PropertyModel<>(syncDtoModel, - ResourceSynchronizationDto.F_SELECTED + ".focusType"), + ResourceSynchronizationDto.F_SELECTED + ".focusType"), new IModel>() { @Override @@ -347,11 +352,11 @@ public List getObject() { 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 +366,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 +377,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 +390,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 +399,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 +412,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 +426,7 @@ public String getObject() { } @Override - protected ConditionalSearchFilterType createNewEmptyItem(){ + protected ConditionalSearchFilterType createNewEmptyItem() { return new ConditionalSearchFilterType(); } @@ -441,15 +446,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 +496,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 +516,7 @@ protected void performRemoveValueHook(AjaxRequestTarget target, ListItem createObjectSyncTypeDisplayModel(final ObjectSynchronizationType syncObject){ + private IModel createObjectSyncTypeDisplayModel(final ObjectSynchronizationType syncObject) { return new IModel() { @Override @@ -591,12 +596,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 +610,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 +630,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 +652,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 +679,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 +723,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 +793,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"))); 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..93298843403 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 @@ -8,33 +8,9 @@ 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.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.Component; import org.apache.wicket.Page; @@ -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/ApprovalCaseTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/ApprovalCaseTabPanel.java index 13a443324ec..1a150bfed90 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/ApprovalCaseTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/ApprovalCaseTabPanel.java @@ -6,6 +6,13 @@ */ package com.evolveum.midpoint.web.page.admin.cases; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.Model; + import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.prism.wrapper.PrismObjectWrapper; @@ -20,12 +27,6 @@ import com.evolveum.midpoint.web.page.admin.workflow.dto.DecisionDto; import com.evolveum.midpoint.web.session.UserProfileStorage; import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseType; -import org.apache.commons.collections.CollectionUtils; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.model.Model; - -import java.util.ArrayList; -import java.util.List; /** * Created by honchar @@ -43,14 +44,14 @@ public ApprovalCaseTabPanel(String id, Form> mainFo } @Override - protected void onInitialize(){ + protected void onInitialize() { super.onInitialize(); initLayout(); } - private void initLayout(){ + private void initLayout() { SwitchableApprovalProcessPreviewsPanel approvalPanel = new SwitchableApprovalProcessPreviewsPanel(ID_APPROVAL_CASE_PANEL, Model.of(getObjectWrapper().getOid()), - Model.of(ApprovalContextUtil.isInStageBeforeLastOne(getObjectWrapper().getObject().asObjectable())), getPageBase()); + Model.of(ApprovalContextUtil.isInStageBeforeLastOne(getObjectWrapper().getObject().asObjectable())), getPageBase()); approvalPanel.setOutputMarkupId(true); approvalPanel.add(new VisibleBehaviour(() -> CaseTypeUtil.approvalSchemaExists(getObjectWrapper().getObject().asObjectable()))); add(approvalPanel); @@ -64,7 +65,7 @@ private void initLayout(){ DecisionsPanel historyPanel = new DecisionsPanel(ID_HISTORY_PANEL, Model.ofList(decisionList), UserProfileStorage.TableId.PAGE_WORK_ITEM_HISTORY_PANEL, - (int) getPageBase().getItemsPerPage(UserProfileStorage.TableId.PAGE_WORK_ITEM_HISTORY_PANEL)); + (int) getPageBase().getItemsPerPage(UserProfileStorage.TableId.PAGE_WORK_ITEM_HISTORY_PANEL)); historyPanel.setOutputMarkupId(true); historyContainer.add(historyPanel); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/CaseWorkItemListWithDetailsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/CaseWorkItemListWithDetailsPanel.java index d197cf1a089..bb92b4ae914 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/CaseWorkItemListWithDetailsPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/CaseWorkItemListWithDetailsPanel.java @@ -6,18 +6,30 @@ */ package com.evolveum.midpoint.web.page.admin.cases; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.collections4.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.WebMarkupContainer; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; + import com.evolveum.midpoint.gui.api.component.DisplayNamePanel; 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.impl.component.MultivalueContainerDetailsPanel; import com.evolveum.midpoint.gui.impl.component.MultivalueContainerListPanelWithDetailsPanel; import com.evolveum.midpoint.gui.impl.factory.panel.ItemRealValueModel; -import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; import com.evolveum.midpoint.gui.impl.session.ObjectTabStorage; import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.query.ObjectQuery; -import com.evolveum.midpoint.schema.util.*; +import com.evolveum.midpoint.schema.util.CaseWorkItemUtil; import com.evolveum.midpoint.web.component.AjaxButton; import com.evolveum.midpoint.web.component.breadcrumbs.Breadcrumb; import com.evolveum.midpoint.web.component.breadcrumbs.BreadcrumbPageInstance; @@ -30,17 +42,6 @@ import com.evolveum.midpoint.web.session.UserProfileStorage; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; -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.WebMarkupContainer; -import org.apache.wicket.markup.html.list.ListItem; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; - -import java.util.ArrayList; -import java.util.List; /** * Created by honchar @@ -53,12 +54,12 @@ public abstract class CaseWorkItemListWithDetailsPanel extends MultivalueContain private static final String ID_CANCEL_BUTTON = "cancelButton"; private WorkItemDetailsPanel workItemDetails = null; - public CaseWorkItemListWithDetailsPanel(String id, IModel> model, UserProfileStorage.TableId tableId, PageStorage pageStorage){ + public CaseWorkItemListWithDetailsPanel(String id, IModel> model, UserProfileStorage.TableId tableId, PageStorage pageStorage) { super(id, model, tableId, pageStorage); } @Override - protected void onInitialize(){ + protected void onInitialize() { super.onInitialize(); AjaxButton cancelButton = new AjaxButton(ID_CANCEL_BUTTON, createStringResource("MultivalueContainerListPanel.cancelButton")) { @@ -82,7 +83,7 @@ public void onClick(AjaxRequestTarget ajaxRequestTarget) { protected CaseWorkItemType load() { return getDetailsPanelItemsList().size() > 0 ? getDetailsPanelItemsList().get(0).getRealValue() : null; } - }){ + }) { private static final long serialVersionUID = 1L; @Override @@ -101,15 +102,15 @@ protected WorkItemDelegationRequestType getDelegationRequest(UserType delegate) } @Override - protected Component getCustomForm(){ + protected Component getCustomForm() { return workItemDetails != null ? workItemDetails.getCustomForm() : null; } @Override - protected void afterActionFinished(AjaxRequestTarget target){ + protected void afterActionFinished(AjaxRequestTarget target) { Breadcrumb previousBreadcrumb = getPageBase().getPreviousBreadcrumb(); if (previousBreadcrumb instanceof BreadcrumbPageInstance && - ((BreadcrumbPageInstance)previousBreadcrumb).getPage() instanceof PageCaseWorkItem){ + ((BreadcrumbPageInstance) previousBreadcrumb).getPage() instanceof PageCaseWorkItem) { getPageBase().redirectBack(3); } else { getPageBase().redirectBack(); @@ -141,7 +142,7 @@ protected boolean enableActionNewObject() { } @Override - protected boolean isSearchEnabled(){ + protected boolean isSearchEnabled() { return false; } @@ -162,7 +163,7 @@ protected List> postSearch( } @Override - protected boolean isButtonPanelVisible(){ + protected boolean isButtonPanelVisible() { return false; } @@ -181,13 +182,13 @@ protected MultivalueContainerDetailsPanel getMultivalueContain // @Override // public void itemDetailsPerformed(AjaxRequestTarget target, IModel> model){} - private ObjectTabStorage getWorkitemsTabStorage(){ + private ObjectTabStorage getWorkitemsTabStorage() { return getPageBase().getSessionStorage().getCaseWorkitemsTabStorage(); } private MultivalueContainerDetailsPanel createWorkItemDetailsPanel( ListItem> item) { - MultivalueContainerDetailsPanel detailsPanel = new MultivalueContainerDetailsPanel(MultivalueContainerListPanelWithDetailsPanel.ID_ITEM_DETAILS, item.getModel()) { + MultivalueContainerDetailsPanel detailsPanel = new MultivalueContainerDetailsPanel(MultivalueContainerListPanelWithDetailsPanel.ID_ITEM_DETAILS, item.getModel()) { private static final long serialVersionUID = 1L; @@ -217,8 +218,7 @@ protected void addBasicContainerValuePanel(String idPanel) { return detailsPanel; } - - private List, String>> getWorkItemColumns(){ + private List, String>> getWorkItemColumns() { List, String>> columns = new ArrayList<>(); // columns.add(new IconColumn>(Model.of("")) { @@ -239,7 +239,7 @@ private List, String>> getW // } // // }); - columns.add(new LinkColumn>(createStringResource("PolicyRulesPanel.nameColumn")){ + columns.add(new LinkColumn>(createStringResource("PolicyRulesPanel.nameColumn")) { private static final long serialVersionUID = 1L; @Override @@ -265,11 +265,11 @@ public void onClick(AjaxRequestTarget target, IModel> rowModel){ + private CaseWorkItemType unwrapRowModel(IModel> rowModel) { return rowModel.getObject().getRealValue(); } - private CaseWorkItemType unwrapPanelModel(){ + private CaseWorkItemType unwrapPanelModel() { return getModelObject() != null && CollectionUtils.isNotEmpty(getModelObject().getValues()) ? getModelObject().getValues().get(0).getRealValue() : null; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java index 257fc8972a0..96a65326804 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java @@ -9,7 +9,7 @@ import java.util.Collection; import java.util.List; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.behavior.AttributeAppender; @@ -30,8 +30,6 @@ import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.CaseTypeUtil; import com.evolveum.midpoint.security.api.AuthorizationConstants; -import com.evolveum.midpoint.util.logging.Trace; -import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.application.AuthorizationAction; import com.evolveum.midpoint.web.application.PageDescriptor; import com.evolveum.midpoint.web.component.AjaxButton; @@ -48,11 +46,10 @@ description = "PageAdminCases.auth.casesAll.description"), @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_CASE_URL, label = "PageCase.auth.case.label", - description = "PageCase.auth.case.description")}) -public class PageCase extends PageAdminObjectDetails { + description = "PageCase.auth.case.description") }) +public class PageCase extends PageAdminObjectDetails { private static final long serialVersionUID = 1L; - private static final Trace LOGGER = TraceManager.getTrace(PageCase.class); private static final String DOT_CLASS = PageCase.class.getName() + "."; private static final String OPERATION_LOAD_CONNECTED_TASK = DOT_CLASS + "loadConnectedTask"; @@ -62,7 +59,7 @@ public PageCase() { this(null, true); } - public PageCase(PrismObject unitToEdit, boolean isNewObject) { + public PageCase(PrismObject unitToEdit, boolean isNewObject) { initialize(unitToEdit, isNewObject, true); } @@ -71,7 +68,6 @@ public PageCase(PageParameters parameters) { initialize(null, false, true); } - @Override protected AbstractObjectMainPanel createMainPanel(String id) { return new AssignmentHolderTypeMainPanel(id, getObjectModel(), this) { @@ -141,7 +137,7 @@ public String getCount() { } }); } - if (WebComponentUtil.hasArchetypeAssignment(getCase(), SystemObjectsType.ARCHETYPE_OPERATION_REQUEST.value())){ + if (WebComponentUtil.hasArchetypeAssignment(getCase(), SystemObjectsType.ARCHETYPE_OPERATION_REQUEST.value())) { tabs.add( new CountablePanelTab(parentPage.createStringResource("PageCase.childCasesTab"), getTabVisibility(ComponentConstants.UI_CASE_TAB_CHILD_CASES_URL, false, parentPage)) { @@ -186,7 +182,7 @@ protected boolean getOptionsPanelVisibility() { } @Override - protected boolean isReadonly(){ + protected boolean isReadonly() { return true; } }; @@ -202,7 +198,7 @@ protected ObjectSummaryPanel createSummaryPanel(IModel summa return new CaseSummaryPanel(ID_SUMMARY_PANEL, CaseType.class, summaryModel, this); } - protected void initOperationalButtons(RepeatingView repeatingView){ + protected void initOperationalButtons(RepeatingView repeatingView) { OperationResult result = new OperationResult(OPERATION_LOAD_CONNECTED_TASK); ObjectQuery query = getPrismContext().queryFor(TaskType.class) .item(TaskType.F_OBJECT_REF) @@ -241,7 +237,7 @@ public Class getCompileTimeClass() { } @Override - protected CaseType createNewObject(){ + protected CaseType createNewObject() { return new CaseType(); } @@ -250,12 +246,12 @@ protected Class getRestartResponsePage() { return PageCases.class; } - private int countWorkItems(){ + private int countWorkItems() { List workItemsList = getObjectModel().getObject().getObject().asObjectable().getWorkItem(); return workItemsList == null ? 0 : workItemsList.size(); } - private int countChildrenCases(){ + private int countChildrenCases() { CaseType currentCase = getObjectModel().getObject().getObject().asObjectable(); ObjectQuery childrenCasesQuery = getPrismContext().queryFor(CaseType.class) .item(CaseType.F_PARENT_REF).ref(currentCase.getOid()) @@ -263,11 +259,6 @@ private int countChildrenCases(){ return WebModelServiceUtils.countObjects(CaseType.class, childrenCasesQuery, PageCase.this); } - private int countEvents(){ - List eventsList = getObjectModel().getObject().getObject().asObjectable().getEvent(); - return eventsList == null ? 0 : eventsList.size(); - } - private CaseType getCase() { return getObjectWrapper().getObject().asObjectable(); } 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..2feccd489f4 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 @@ -6,6 +6,20 @@ */ package com.evolveum.midpoint.web.page.admin.cases; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.apache.commons.collections4.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,10 @@ 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.AbstractRoleType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.MetadataType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; /** * @author acope on 9/14/17. @@ -98,23 +105,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 +128,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,7 +150,7 @@ public InlineMenuItemAction initAction() { @Override public void onClick(AjaxRequestTarget target) { - if (getRowModel() == null && warnIfNoCaseSelected(target)){ + if (getRowModel() == null && warnIfNoCaseSelected(target)) { return; } if (getRowModel() == null) { @@ -158,8 +164,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 +173,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,7 +194,7 @@ public InlineMenuItemAction initAction() { @Override public void onClick(AjaxRequestTarget target) { - if (getRowModel() == null && warnIfNoCaseSelected(target)){ + if (getRowModel() == null && warnIfNoCaseSelected(target)) { return; } if (getRowModel() == null) { @@ -201,14 +207,14 @@ public void onClick(AjaxRequestTarget target) { } @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"); @@ -236,12 +242,12 @@ private String getObjectRef(IModel 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 +264,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 +277,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 +290,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..d58fb886331 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 @@ -7,6 +7,24 @@ 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.collections4.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 +36,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 +121,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; 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..7a0150ac6e5 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 @@ -12,9 +12,7 @@ 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.collections4.IteratorUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.AttributeModifier; import org.apache.wicket.Component; @@ -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 a66d552aa30..bb5882d579d 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 @@ -7,31 +7,14 @@ package com.evolveum.midpoint.web.page.admin.reports.component; import static java.util.stream.Collectors.toList; -import static org.apache.commons.collections.CollectionUtils.isNotEmpty; +import static org.apache.commons.collections4.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.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; @@ -57,6 +40,11 @@ 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; @@ -73,17 +61,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; /** @@ -140,7 +133,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() @@ -158,7 +150,7 @@ public AuditLogViewerPanel(String id, IModel( - 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()); @@ -192,7 +184,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"); @@ -219,14 +211,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()); } } @@ -278,10 +270,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); @@ -293,23 +285,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); @@ -339,9 +331,9 @@ public boolean isVisible() { } // ListModel channelListModel = new ListModel<>(channelQnameList); PropertyModel channelModel = new PropertyModel<>(getModel(), - AuditSearchDto.F_CHANNEL); + 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()); @@ -362,12 +354,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); @@ -383,10 +375,10 @@ public boolean isVisible() { private static final long serialVersionUID = 1L; - @Override - public boolean isVisible() { - return !isHistory; - } + @Override + public boolean isVisible() { + return !isHistory; + } }); parametersPanel.add(targetName); @@ -394,9 +386,9 @@ public boolean isVisible() { allowedClassesAll.addAll(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, @@ -413,7 +405,7 @@ protected void onSubmit(AjaxRequestTarget target) { } @Override - protected void onError(AjaxRequestTarget target){ + protected void onError(AjaxRequestTarget target) { target.add(getPageBase().getFeedbackPanel()); } }; @@ -426,12 +418,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()); } }; @@ -441,18 +433,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, "")); @@ -466,7 +458,7 @@ private VisibleEnableBehaviour getVisibleBehaviourForUsedQueryComponent() { @Override public boolean isVisible() { IModel model = getModel(); - if(model == null || model.getObject() == null + if (model == null || model.getObject() == null || model.getObject().getCollection() == null || model.getObject().getCollection().getAuditSearch() == null || model.getObject().getCollection().getAuditSearch().getRecordQuery() == null) { @@ -480,13 +472,12 @@ 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()); + 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(); - + o.getName().getOrig(); private IModel getCollectionFroAuditEventModel() { return new IModel() { @@ -520,7 +511,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) { @@ -580,7 +571,7 @@ protected void saveCurrentPage(long from, long count) { } @Override - protected PageStorage getPageStorage(){ + protected PageStorage getPageStorage() { return getAuditLogStorage(); } @@ -620,32 +611,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); } @@ -658,7 +647,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; @@ -669,6 +658,7 @@ public String getObject() { } }; } + @Override public void onClick(AjaxRequestTarget target, IModel rowModel) { AuditEventRecordType record = rowModel.getObject(); @@ -689,7 +679,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); } @@ -698,8 +688,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 @@ -710,8 +700,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 @@ -728,7 +718,7 @@ public IModel getDataModel(IModel rowModel) { @Override public void populateItem(Item> item, String componentId, - IModel rowModel) { + IModel rowModel) { AuditEventRecordType auditEventRecordType = (AuditEventRecordType) rowModel.getObject(); createReferenceColumn(auditEventRecordType.getTargetRef(), item, componentId); } @@ -743,7 +733,7 @@ public void populateItem(Item> item, String @Override public void populateItem(Item> item, String componentId, - IModel rowModel) { + IModel rowModel) { AuditEventRecordType auditEventRecordType = (AuditEventRecordType) rowModel.getObject(); createReferenceColumn(auditEventRecordType.getTargetOwnerRef(), item, componentId); } @@ -757,7 +747,7 @@ public void populateItem(Item> item, String @Override public void populateItem(Item> item, String componentId, - IModel rowModel) { + IModel rowModel) { AuditEventRecordType auditEventRecordType = (AuditEventRecordType) rowModel.getObject(); String channel = auditEventRecordType.getChannel(); Channel channelValue = null; @@ -802,46 +792,46 @@ 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(){ + 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..02356db052c 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 @@ -9,15 +9,9 @@ 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.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; @@ -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 { @@ -112,7 +109,7 @@ 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", @@ -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) { @@ -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) { 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 0c74e5efa98..c049d415de8 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 @@ -37,7 +37,7 @@ import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction; import com.evolveum.midpoint.web.session.MemberPanelStorage; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.Component; import org.apache.wicket.RestartResponseException; @@ -89,8 +89,6 @@ import org.apache.wicket.model.StringResourceModel; -import static com.evolveum.midpoint.web.component.data.column.ColumnUtils.createStringResource; - public abstract class AbstractRoleMemberPanel extends BasePanel { private static final long serialVersionUID = 1L; 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..5c4821d3773 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 @@ -3,7 +3,7 @@ import java.io.InputStream; import java.util.*; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.wicket.Page; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.behavior.AttributeAppender; 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..ea82217b061 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 @@ -11,9 +11,7 @@ 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.commons.collections4.CollectionUtils; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.behavior.AttributeAppender; @@ -33,6 +31,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 +76,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 +100,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 +194,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 +207,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 +223,6 @@ public IModel getDataModel(IModel> rowModel) { protected List, String>> initCustomTaskColumns() { List, String>> columns = new ArrayList<>(); - columns.add(createTaskExecutionStatusColumn()); columns.add(createProgressColumn()); @@ -331,7 +328,7 @@ private String getBucketedTaskProgressDescription(TaskType taskType) { if (expectedBuckets == null) { return String.valueOf(completeBuckets); } else { - return (completeBuckets*100/expectedBuckets) + "%"; + return (completeBuckets * 100 / expectedBuckets) + "%"; } } @@ -343,14 +340,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 +378,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 +397,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 +415,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 +434,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 +453,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 +472,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 +517,7 @@ public void onClick(AjaxRequestTarget target) { } }; } + @Override public IModel getConfirmationMessageModel() { String actionName = createStringResource("pageTasks.message.reconcileWorkersAction").getString(); @@ -632,7 +629,7 @@ public InlineMenuItemAction initAction() { @Override public void onClick(AjaxRequestTarget target) { - deleteWorkStatePerformed(target, getRowModel()); + deleteWorkStatePerformed(target, getRowModel()); } }; } @@ -646,7 +643,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 +705,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..19af328c046 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 @@ -9,7 +9,7 @@ import java.io.Serializable; import java.util.List; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; 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 bbfd230c7c9..31b6fabea80 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 @@ -11,7 +11,7 @@ import java.util.List; import javax.xml.namespace.QName; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.wicket.RestartResponseException; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.WebMarkupContainer; @@ -65,7 +65,7 @@ /** * Used as a main component of the Org tree page. - * + *

* todo create function computeHeight() in midpoint.js, update height properly * when in "mobile" mode... [lazyman] todo implement midpoint theme for tree * [lazyman] @@ -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() { @@ -105,7 +105,6 @@ public PageBase getPageBase() { protected static final String ID_MANAGER_MENU = "managerMenu"; protected static final String ID_MANAGER_MENU_BODY = "managerMenuBody"; - private static final Trace LOGGER = TraceManager.getTrace(TreeTablePanel.class); public TreeTablePanel(String id, IModel rootOid, PageBase parentPage) { @@ -378,7 +377,7 @@ public IModel getVisible() { return items; } - private boolean isAllowRead(OrgType org){ + private boolean isAllowRead(OrgType org) { boolean allowRead = false; try { allowRead = org == null || @@ -392,7 +391,7 @@ private boolean isAllowRead(OrgType org){ return allowRead; } - private boolean isAllowModify(OrgType org){ + private boolean isAllowModify(OrgType org) { boolean allowModify = false; try { allowModify = org == null || @@ -406,7 +405,7 @@ private boolean isAllowModify(OrgType org){ return allowModify; } - private boolean isAllowAddNew(){ + private boolean isAllowAddNew() { boolean allowAddNew = false; try { allowAddNew = parentPage.isAuthorized(ModelAuthorizationAction.ADD.getUrl(), @@ -419,8 +418,7 @@ private boolean isAllowAddNew(){ return allowAddNew; } - - private boolean isAllowDelete(OrgType org){ + private boolean isAllowDelete(OrgType org) { boolean allowDelete = false; try { allowDelete = org == null || @@ -434,7 +432,7 @@ private boolean isAllowDelete(OrgType org){ return allowDelete; } - // TODO: merge this with AbstractRoleMemeberPanel.initObjectForAdd, also see MID-3233 + // TODO: merge this with AbstractRoleMemberPanel.initObjectForAdd, also see MID-3233 private void initObjectForAdd(ObjectReferenceType parentOrgRef, QName type, QName relation, AjaxRequestTarget target) throws SchemaException { TreeTablePanel.this.getPageBase().hideMainPopup(target); @@ -490,7 +488,7 @@ protected void onItemSelect(SelectableBeanImpl selected, AjaxRequestTar } @Override - protected OrgType getAssignmentOwnerObject(){ + protected OrgType getAssignmentOwnerObject() { return root.getValue(); } }; @@ -501,7 +499,7 @@ protected OrgType getAssignmentOwnerObject(){ } private void moveConfirmPerformed(SelectableBeanImpl orgToMove, SelectableBeanImpl selected, - AjaxRequestTarget target) { + AjaxRequestTarget target) { getPageBase().hideMainPopup(target); Task task = getPageBase().createSimpleTask(OPERATION_MOVE_OBJECT); @@ -516,7 +514,7 @@ private void moveConfirmPerformed(SelectableBeanImpl orgToMove, Selecta ); try { - for ( ObjectReferenceType parentOrgRef : toMove.getParentOrgRef()) { + for (ObjectReferenceType parentOrgRef : toMove.getParentOrgRef()) { AssignmentType oldRoot = new AssignmentType(); oldRoot.setTargetRef(ObjectTypeUtil.createObjectRef(parentOrgRef.asReferenceValue().getObject(), getPageBase().getPrismContext())); @@ -548,7 +546,7 @@ private void moveConfirmPerformed(SelectableBeanImpl orgToMove, Selecta parentPage.showResult(result); target.add(parentPage.getFeedbackPanel()); - if(parentPage instanceof PageOrgTree && ((PageOrgTree) parentPage).getTabPanel() != null + if (parentPage instanceof PageOrgTree && ((PageOrgTree) parentPage).getTabPanel() != null && ((PageOrgTree) parentPage).getTabPanel().getTabbedPanel() != null) { ((PageOrgTree) parentPage).getTabPanel().getTabbedPanel().setSelectedTab(0); } @@ -651,7 +649,7 @@ public String getObject() { @Override public void yesPerformed(AjaxRequestTarget target) { - deleteNodeConfirmedPerformed(orgToDelete, target); + deleteNodeConfirmedPerformed(orgToDelete, target); } }; @@ -677,7 +675,6 @@ private boolean hasChildren(SelectableBeanImpl orgToDelete) { } } - private void deleteNodeConfirmedPerformed(SelectableBeanImpl orgToDelete, AjaxRequestTarget target) { OperationResult result = new OperationResult(OPERATION_DELETE_OBJECT); 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..a8137bd243d 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 @@ -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.collections4.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; } 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..4bfde427fbc 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 @@ -6,6 +6,22 @@ */ package com.evolveum.midpoint.web.page.self; +import java.util.ArrayList; +import java.util.List; +import javax.xml.namespace.QName; + +import org.apache.commons.collections4.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); + 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(); + } + }); } - - @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,49 @@ 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 +296,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 +338,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 +353,14 @@ 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){ + 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 +370,6 @@ private void addAllAssignmentsPerformed(AjaxRequestTarget target){ return; } - availableProviderData.forEach(newAssignment -> { AssignmentEditorDto assignmentToAdd = newAssignment.clone(); assignmentToAdd.getTargetRef().setRelation(getNewAssignmentRelation()); @@ -413,15 +407,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 +424,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 +453,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 +462,24 @@ 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()), + 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 +489,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 +502,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..3f917c8a523 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 @@ -11,7 +11,7 @@ import java.util.Collections; import java.util.List; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.markup.html.tabs.AbstractTab; import org.apache.wicket.extensions.markup.html.tabs.ITab; @@ -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,6 +392,7 @@ protected List getSelectedAccountsList(){ } return selectedAccountList; } + private void onCancelPerformed() { redirectBack(); } @@ -411,7 +409,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 +439,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..cd7d2ab9a43 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 @@ -6,13 +6,31 @@ */ 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.collections4.CollectionUtils; +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 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 +62,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 +72,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"; @@ -92,15 +95,14 @@ public class PageAssignmentsList extends PageBase{ private boolean conflictProblemExists = false; private boolean loadConflicts = false; - - 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 +121,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 +185,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 +229,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 +262,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 +295,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 +314,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 +339,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 +405,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.", new Object[] { assDto.getName() }); continue; } @@ -423,17 +423,16 @@ 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()}); + new Object[] { assDto.getName() }); PrismValue oldValue = assDto.getOldValue(); Collection deltas = oldValue.diff(newValue); @@ -449,14 +448,14 @@ private void handleModifyAssignmentDelta(AssignmentEditorDto assDto, } } - private List getAssignmentConflicts(){ + private List getAssignmentConflicts() { ModelContext modelContext = null; 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(); @@ -497,18 +496,18 @@ private List getAssignmentConflicts(){ return conflictsList; } - 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 +515,57 @@ 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 +574,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,7 +590,7 @@ private ObjectDelta prepareDelta(PrismObject user, OperationResult res } - private ObjectQuery getTaskQuery(){ + private ObjectQuery getTaskQuery() { List targetUsersOids = getSessionStorage().getRoleCatalog().isSelfRequest() ? Arrays.asList(getPrincipalFocus().getOid()) : getSessionStorage().getRoleCatalog().getTargetUserOidsList(); @@ -618,32 +618,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 +655,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 +663,28 @@ private PrismObject getTargetUser() throws SchemaException { } @Override - public boolean canRedirectBack(){ + public boolean canRedirectBack() { return true; } - private boolean isCreatedConflict(Map oidsMap, String oid1, String oid2){ + 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))){ + || (oidsMap.containsKey(oid2) && oidsMap.get(oid2).equals(oid1))) { return true; } return false; } - private Component getTargetUserSelectionButton(){ + 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 { diff --git a/infra/common/pom.xml b/infra/common/pom.xml index 0110200dbe8..e8bd00089d5 100644 --- a/infra/common/pom.xml +++ b/infra/common/pom.xml @@ -76,8 +76,8 @@ commons-configuration2 - commons-collections - commons-collections + org.apache.commons + commons-collections4 ch.qos.logback diff --git a/infra/common/src/main/java/com/evolveum/midpoint/common/SynchronizationUtils.java b/infra/common/src/main/java/com/evolveum/midpoint/common/SynchronizationUtils.java index 7131b68c70d..714ecc869a7 100644 --- a/infra/common/src/main/java/com/evolveum/midpoint/common/SynchronizationUtils.java +++ b/infra/common/src/main/java/com/evolveum/midpoint/common/SynchronizationUtils.java @@ -9,16 +9,15 @@ import java.util.ArrayList; import java.util.List; - import javax.xml.datatype.XMLGregorianCalendar; import javax.xml.namespace.QName; -import com.evolveum.midpoint.prism.PrismContext; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import com.evolveum.midpoint.common.refinery.RefinedResourceSchema; import com.evolveum.midpoint.common.refinery.RefinedResourceSchemaImpl; +import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.delta.PropertyDelta; import com.evolveum.midpoint.prism.delta.builder.S_MaybeDelete; @@ -30,12 +29,7 @@ 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.xml.ns._public.common.common_3.ObjectSynchronizationType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowKindType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.SynchronizationSituationDescriptionType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.SynchronizationSituationType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; public class SynchronizationUtils { @@ -70,7 +64,6 @@ public static List> createSynchronizationSituationAndDescriptio timestamp, sourceChannel, full, prismContext); propertyDeltas.add(syncDescriptionDelta); - propertyDeltas.addAll(createSynchronizationTimestampsDelta(shadow, timestamp, full, prismContext)); PropertyDelta syncSituationDelta = createSynchronizationSituationDelta(shadow, situation, prismContext); @@ -90,8 +83,7 @@ private static PropertyDelta createSync syncSituationDescription.setFull(full); S_MaybeDelete builder = prismContext.deltaFor(ShadowType.class) - .item(ShadowType.F_SYNCHRONIZATION_SITUATION_DESCRIPTION).add(syncSituationDescription); - + .item(ShadowType.F_SYNCHRONIZATION_SITUATION_DESCRIPTION).add(syncSituationDescription); List oldSituationDescriptions = getSituationFromSameChannel( shadow, sourceChannel); @@ -104,8 +96,8 @@ private static PropertyDelta createSync public static List> createSynchronizationTimestampsDelta( PrismObject shadow, PrismContext prismContext) { - XMLGregorianCalendar timestamp = XmlTypeConverter - .createXMLGregorianCalendar(System.currentTimeMillis()); + XMLGregorianCalendar timestamp = XmlTypeConverter + .createXMLGregorianCalendar(System.currentTimeMillis()); return createSynchronizationTimestampsDelta(shadow, timestamp, true, prismContext); } @@ -160,7 +152,6 @@ public static boolean isPolicyApplicable(QName objectClass, ShadowKindType kind, } } - RefinedResourceSchema schema = RefinedResourceSchemaImpl.getRefinedSchema(resource); if (schema == null) { throw new SchemaException("No schema defined in resource. Possible configuration problem?"); @@ -173,7 +164,7 @@ public static boolean isPolicyApplicable(QName objectClass, ShadowKindType kind, String policyIntent = synchronizationPolicy.getIntent(); - ObjectClassComplexTypeDefinition policyObjectClass = null; + ObjectClassComplexTypeDefinition policyObjectClass; if (StringUtils.isEmpty(policyIntent)) { policyObjectClass = schema.findDefaultObjectClassDefinition(policyKind); policyIntent = policyObjectClass.getIntent(); diff --git a/infra/common/src/main/java/com/evolveum/midpoint/common/refinery/CompositeRefinedObjectClassDefinitionImpl.java b/infra/common/src/main/java/com/evolveum/midpoint/common/refinery/CompositeRefinedObjectClassDefinitionImpl.java index 08f94d53b20..9237bcd6a92 100644 --- a/infra/common/src/main/java/com/evolveum/midpoint/common/refinery/CompositeRefinedObjectClassDefinitionImpl.java +++ b/infra/common/src/main/java/com/evolveum/midpoint/common/refinery/CompositeRefinedObjectClassDefinitionImpl.java @@ -1,22 +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.common.refinery; +import static java.util.Collections.emptySet; + +import java.util.*; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import javax.xml.namespace.QName; + +import org.apache.commons.collections4.CollectionUtils; +import org.jetbrains.annotations.NotNull; + import com.evolveum.midpoint.common.ResourceObjectPattern; import com.evolveum.midpoint.prism.*; -import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.prism.path.ItemName; +import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.schema.ResourceShadowDiscriminator; -import com.evolveum.midpoint.schema.processor.MutableObjectClassComplexTypeDefinition; -import com.evolveum.midpoint.schema.processor.ObjectClassComplexTypeDefinition; -import com.evolveum.midpoint.schema.processor.ObjectClassComplexTypeDefinitionImpl; -import com.evolveum.midpoint.schema.processor.ResourceAttributeContainer; -import com.evolveum.midpoint.schema.processor.SearchHierarchyScope; +import com.evolveum.midpoint.schema.processor.*; import com.evolveum.midpoint.schema.util.SchemaDebugUtil; import com.evolveum.midpoint.util.DebugUtil; import com.evolveum.midpoint.util.QNameUtil; @@ -26,23 +34,10 @@ import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.PagedSearchCapabilityType; import com.evolveum.prism.xml.ns._public.types_3.ItemPathType; -import org.apache.commons.collections.CollectionUtils; -import org.jetbrains.annotations.NotNull; - -import javax.xml.namespace.QName; -import java.util.*; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static java.util.Collections.emptySet; - /** * Used to represent combined definition of structural and auxiliary object classes. * * @author semancik - * */ public class CompositeRefinedObjectClassDefinitionImpl implements CompositeRefinedObjectClassDefinition { private static final long serialVersionUID = 1L; @@ -268,9 +263,7 @@ public Collection getNamesOfAssociations() { @Override public boolean isEmpty() { return structuralObjectClassDefinition.isEmpty() - && !auxiliaryObjectClassDefinitions.stream() - .filter(def -> def.isEmpty()) - .findAny().isPresent(); + && auxiliaryObjectClassDefinitions.stream().noneMatch(def -> def.isEmpty()); } @Override @@ -406,7 +399,7 @@ public boolean isObjectCountingEnabled(ResourceType resourceType) { public T findLocalItemDefinition(@NotNull QName name, @NotNull Class clazz, boolean caseInsensitive) { T itemDef = structuralObjectClassDefinition.findLocalItemDefinition(name, clazz, caseInsensitive); if (itemDef == null) { - for (RefinedObjectClassDefinition auxiliaryObjectClassDefinition: auxiliaryObjectClassDefinitions) { + for (RefinedObjectClassDefinition auxiliaryObjectClassDefinition : auxiliaryObjectClassDefinitions) { itemDef = auxiliaryObjectClassDefinition.findLocalItemDefinition(name, clazz, caseInsensitive); if (itemDef != null) { break; @@ -428,19 +421,19 @@ public Collection> getAttributeDefinitio if (auxiliaryObjectClassDefinitions.isEmpty()) { return structuralObjectClassDefinition.getAttributeDefinitions(); } - Collection> defs = new ArrayList<>(); - defs.addAll((Collection)structuralObjectClassDefinition.getAttributeDefinitions()); - for(RefinedObjectClassDefinition auxiliaryObjectClassDefinition: auxiliaryObjectClassDefinitions) { - for (RefinedAttributeDefinition auxRAttrDef: auxiliaryObjectClassDefinition.getAttributeDefinitions()) { + Collection> defs = new ArrayList<>( + structuralObjectClassDefinition.getAttributeDefinitions()); + for (RefinedObjectClassDefinition auxiliaryObjectClassDefinition : auxiliaryObjectClassDefinitions) { + for (RefinedAttributeDefinition auxRAttrDef : auxiliaryObjectClassDefinition.getAttributeDefinitions()) { boolean add = true; - for (RefinedAttributeDefinition def: defs) { + for (RefinedAttributeDefinition def : defs) { if (def.getItemName().equals(auxRAttrDef.getItemName())) { add = false; break; } } if (add) { - ((Collection)defs).add(auxRAttrDef); + defs.add(auxRAttrDef); } } } @@ -504,7 +497,7 @@ public RefinedAttributeDefinition findAttributeDefinition(@NotNull QName } public RefinedAssociationDefinition findAssociationDefinition(QName name) { - for (RefinedAssociationDefinition assocType: getAssociationDefinitions()) { + for (RefinedAssociationDefinition assocType : getAssociationDefinitions()) { if (QNameUtil.match(assocType.getName(), name)) { return assocType; } @@ -579,9 +572,7 @@ public Class getTypeClass() { @Override public boolean containsAttributeDefinition(ItemPathType pathType) { return getRefinedObjectClassDefinitionsStream() - .filter(def -> containsAttributeDefinition(pathType)) - .findAny() - .isPresent(); + .anyMatch(def -> containsAttributeDefinition(pathType)); } private Stream getRefinedObjectClassDefinitionsStream() { @@ -591,9 +582,7 @@ private Stream getRefinedObjectClassDefinitionsStr @Override public boolean containsAttributeDefinition(QName attributeName) { return getRefinedObjectClassDefinitionsStream() - .filter(def -> containsAttributeDefinition(attributeName)) - .findAny() - .isPresent(); + .anyMatch(def -> containsAttributeDefinition(attributeName)); } @Override @@ -634,7 +623,7 @@ public ResourcePasswordDefinitionType getPasswordDefinition() { return findInDefinitions(def -> def.getPasswordDefinition()); } - private T findInDefinitions(Function transform) { + private T findInDefinitions(Function transform) { if (structuralObjectClassDefinition != null) { T val = transform.apply(structuralObjectClassDefinition); if (val != null) { @@ -642,7 +631,7 @@ private T findInDefinitions(Function transfo } } // TODO what if there is a conflict? - for (RefinedObjectClassDefinition auxiliaryObjectClassDefinition: auxiliaryObjectClassDefinitions) { + for (RefinedObjectClassDefinition auxiliaryObjectClassDefinition : auxiliaryObjectClassDefinitions) { T val = transform.apply(auxiliaryObjectClassDefinition); if (val != null) { return val; @@ -675,9 +664,9 @@ public boolean accept(Visitor visitor, SmartVisitation v @Override public CompositeRefinedObjectClassDefinitionImpl clone() { RefinedObjectClassDefinition structuralObjectClassDefinitionClone = structuralObjectClassDefinition.clone(); - Collection auxiliaryObjectClassDefinitionsClone = null; + Collection auxiliaryObjectClassDefinitionsClone; auxiliaryObjectClassDefinitionsClone = new ArrayList<>(this.auxiliaryObjectClassDefinitions.size()); - for(RefinedObjectClassDefinition auxiliaryObjectClassDefinition: this.auxiliaryObjectClassDefinitions) { + for (RefinedObjectClassDefinition auxiliaryObjectClassDefinition : this.auxiliaryObjectClassDefinitions) { auxiliaryObjectClassDefinitionsClone.add(auxiliaryObjectClassDefinition.clone()); } return new CompositeRefinedObjectClassDefinitionImpl(structuralObjectClassDefinitionClone, auxiliaryObjectClassDefinitionsClone); @@ -745,18 +734,18 @@ public String getHumanReadableName() { if (getDisplayName() != null) { return getDisplayName(); } else { - return getKind()+":"+getIntent(); + return getKind() + ":" + getIntent(); } } @Override public String toString() { if (auxiliaryObjectClassDefinitions.isEmpty()) { - return getDebugDumpClassName() + getMutabilityFlag() + " ("+getTypeName()+")"; + return getDebugDumpClassName() + getMutabilityFlag() + " (" + getTypeName() + ")"; } else { StringBuilder sb = new StringBuilder(); sb.append(getDebugDumpClassName()).append(getMutabilityFlag()).append("(").append(getTypeName()); - for (RefinedObjectClassDefinition auxiliaryObjectClassDefinition: auxiliaryObjectClassDefinitions) { + for (RefinedObjectClassDefinition auxiliaryObjectClassDefinition : auxiliaryObjectClassDefinitions) { sb.append("+").append(auxiliaryObjectClassDefinition.getTypeName()); } sb.append(")"); diff --git a/infra/common/src/main/java/com/evolveum/midpoint/common/refinery/RefinedObjectClassDefinitionImpl.java b/infra/common/src/main/java/com/evolveum/midpoint/common/refinery/RefinedObjectClassDefinitionImpl.java index d81119a8920..cace16b00b8 100644 --- a/infra/common/src/main/java/com/evolveum/midpoint/common/refinery/RefinedObjectClassDefinitionImpl.java +++ b/infra/common/src/main/java/com/evolveum/midpoint/common/refinery/RefinedObjectClassDefinitionImpl.java @@ -6,6 +6,19 @@ */ package com.evolveum.midpoint.common.refinery; +import static java.util.Collections.emptySet; + +import java.util.*; +import java.util.function.Consumer; +import java.util.function.Supplier; +import java.util.stream.Collectors; +import javax.xml.namespace.QName; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang.Validate; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + import com.evolveum.midpoint.common.ResourceObjectPattern; import com.evolveum.midpoint.prism.*; import com.evolveum.midpoint.prism.path.ItemName; @@ -31,18 +44,6 @@ import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.CountObjectsCapabilityType; import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.PagedSearchCapabilityType; import com.evolveum.prism.xml.ns._public.query_3.SearchFilterType; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.Validate; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import javax.xml.namespace.QName; -import java.util.*; -import java.util.function.Consumer; -import java.util.function.Supplier; -import java.util.stream.Collectors; - -import static java.util.Collections.emptySet; /** * @author semancik @@ -368,16 +369,16 @@ public PrismObject createBlankShadow(RefinedObjectClassDefinition de accountShadow = getPrismContext().createObject(ShadowType.class); } catch (SchemaException e) { // This should not happen - throw new SystemException("Internal error instantiating account shadow: "+e.getMessage(), e); + throw new SystemException("Internal error instantiating account shadow: " + e.getMessage(), e); } ShadowType accountShadowType = accountShadow.asObjectable(); accountShadowType - .intent(getIntent()) - .kind(getKind()) - .tag(tag) - .objectClass(getObjectClassDefinition().getTypeName()) - .resourceRef(getResourceOid(), ResourceType.COMPLEX_TYPE); + .intent(getIntent()) + .kind(getKind()) + .tag(tag) + .objectClass(getObjectClassDefinition().getTypeName()) + .resourceRef(getResourceOid(), ResourceType.COMPLEX_TYPE); // Setup definition PrismObjectDefinition newDefinition = accountShadow.getDefinition().cloneWithReplacedDefinition( @@ -507,7 +508,6 @@ public AttributeFetchStrategyType getPasswordFetchStrategy() { return password.getFetchStrategy(); } - @Override public ObjectReferenceType getSecurityPolicyRef() { if (schemaHandlingObjectTypeDefinitionType == null) { @@ -520,15 +520,14 @@ public ObjectReferenceType getSecurityPolicyRef() { @Deprecated // Remove in 4.4 public ObjectReferenceType getPasswordPolicy() { ResourcePasswordDefinitionType password = getPasswordDefinition(); - if (password == null || password.getPasswordPolicyRef() == null){ + if (password == null || password.getPasswordPolicyRef() == null) { return null; } return password.getPasswordPolicyRef(); } - @Override - public ResourceActivationDefinitionType getActivationSchemaHandling(){ + public ResourceActivationDefinitionType getActivationSchemaHandling() { if (schemaHandlingObjectTypeDefinitionType == null) { return null; } @@ -552,7 +551,7 @@ public ResourceBidirectionalMappingType getActivationBidirectionalMappingType(QN } else if (QNameUtil.match(ActivationType.F_LOCKOUT_EXPIRATION_TIMESTAMP, propertyName)) { return null; // todo implement this } else { - throw new IllegalArgumentException("Unknown activation property "+propertyName); + throw new IllegalArgumentException("Unknown activation property " + propertyName); } } @@ -582,7 +581,7 @@ public CapabilitiesType getCapabilities() { } CapabilitiesType capabilitiesType = new CapabilitiesType(getPrismContext()); capabilitiesType.setConfigured(configuredCapabilities); - return capabilitiesType; + return capabilitiesType; } @Override @@ -704,7 +703,6 @@ public LayerRefinedObjectClassDefinition forLayer(@NotNull LayerType layerType) return LayerRefinedObjectClassDefinitionImpl.wrap(this, layerType); } - //region Delegations ======================================================== @NotNull @Override @@ -933,14 +931,14 @@ static RefinedObjectClassDefinition parse(ResourceObjectTypeDefinitionType entTy intent = SchemaConstants.INTENT_DEFAULT; } RefinedObjectClassDefinition rObjectClassDef = parseRefinedObjectClass(entTypeDefType, - resourceType, rSchema, prismContext, kind, intent, kind.value(), kind.value() + " type definition '"+intent+"' in " + contextDescription); + resourceType, rSchema, prismContext, kind, intent, kind.value(), kind.value() + " type definition '" + intent + "' in " + contextDescription); return rObjectClassDef; } private static void parseProtected(RefinedObjectClassDefinition rAccountDef, ResourceObjectTypeDefinitionType accountTypeDefType, PrismContext prismContext) throws SchemaException { - for (ResourceObjectPatternType protectedType: accountTypeDefType.getProtected()) { + for (ResourceObjectPatternType protectedType : accountTypeDefType.getProtected()) { ResourceObjectPattern protectedPattern = convertToPattern(protectedType, rAccountDef, prismContext); rAccountDef.getProtectedObjectPatterns().add(protectedPattern); } @@ -960,8 +958,8 @@ private static ResourceObjectPattern convertToPattern(ResourceObjectPatternType } public static RefinedObjectClassDefinition parseFromSchema(ObjectClassComplexTypeDefinition objectClassDef, ResourceType resourceType, - RefinedResourceSchema rSchema, - PrismContext prismContext, String contextDescription) throws SchemaException { + RefinedResourceSchema rSchema, + PrismContext prismContext, String contextDescription) throws SchemaException { RefinedObjectClassDefinitionImpl rOcDef = new RefinedObjectClassDefinitionImpl(resourceType.getOid(), objectClassDef); @@ -1007,7 +1005,7 @@ private static RefinedObjectClassDefinition parseRefinedObjectClass(ResourceObje throw new SchemaException("Object class " + objectClass + " was not found in " + contextDescription); } } else { - throw new SchemaException("Definition of "+typeDesc+" type " + schemaHandlingObjDefType.getIntent() + " does not have objectclass, in " + contextDescription); + throw new SchemaException("Definition of " + typeDesc + " type " + schemaHandlingObjDefType.getIntent() + " does not have objectclass, in " + contextDescription); } RefinedObjectClassDefinitionImpl rOcDef = new RefinedObjectClassDefinitionImpl(resourceType.getOid(), objectClassDef); @@ -1048,7 +1046,7 @@ private static RefinedObjectClassDefinition parseRefinedObjectClass(ResourceObje rOcDef.setSearchHierarchyScope(SearchHierarchyScope.SUB); break; default: - throw new SchemaException("Unknown search hierarchy scope: "+rOcDef.schemaHandlingObjectTypeDefinitionType.getSearchHierarchyScope()); + throw new SchemaException("Unknown search hierarchy scope: " + rOcDef.schemaHandlingObjectTypeDefinitionType.getSearchHierarchyScope()); } } @@ -1059,7 +1057,7 @@ void parseAssociations(RefinedResourceSchema rSchema) throws SchemaException { if (schemaHandlingObjectTypeDefinitionType == null) { return; } - for (ResourceObjectAssociationType resourceObjectAssociationType: schemaHandlingObjectTypeDefinitionType.getAssociation()) { + for (ResourceObjectAssociationType resourceObjectAssociationType : schemaHandlingObjectTypeDefinitionType.getAssociation()) { RefinedAssociationDefinition rAssocDef = new RefinedAssociationDefinition(resourceObjectAssociationType); ShadowKindType assocKind = rAssocDef.getKind(); RefinedObjectClassDefinition assocTarget = rSchema.getRefinedDefinition(assocKind, rAssocDef.getIntents()); @@ -1073,10 +1071,10 @@ void parseAuxiliaryObjectClasses(RefinedResourceSchema rSchema) throws SchemaExc return; } List auxiliaryObjectClassQNames = schemaHandlingObjectTypeDefinitionType.getAuxiliaryObjectClass(); - for (QName auxiliaryObjectClassQName: auxiliaryObjectClassQNames) { + for (QName auxiliaryObjectClassQName : auxiliaryObjectClassQNames) { RefinedObjectClassDefinition auxiliaryObjectClassDef = rSchema.getRefinedDefinition(auxiliaryObjectClassQName); if (auxiliaryObjectClassDef == null) { - throw new SchemaException("Auxiliary object class "+auxiliaryObjectClassQName+" specified in "+this+" does not exist"); + throw new SchemaException("Auxiliary object class " + auxiliaryObjectClassQName + " specified in " + this + " does not exist"); } auxiliaryObjectClassDefinitions.add(auxiliaryObjectClassDef); } @@ -1089,7 +1087,7 @@ void parseAttributes(RefinedResourceSchema rSchema, String contextDescription) t } parseAttributesFrom(rSchema, getObjectClassDefinition(), false, contextDescription); - for (RefinedObjectClassDefinition auxiliaryObjectClassDefinition: auxiliaryObjectClassDefinitions) { + for (RefinedObjectClassDefinition auxiliaryObjectClassDefinition : auxiliaryObjectClassDefinitions) { parseAttributesFrom(rSchema, auxiliaryObjectClassDefinition, true, contextDescription); } @@ -1120,7 +1118,7 @@ private void parseAttributesFrom(RefinedResourceSchema rSchema, ObjectClassCompl // TODO !!!! fix the cast RefinedAttributeDefinition rAttrDef = RefinedAttributeDefinitionImpl.parse(road, attrDefType, ocDef, - rSchema.getPrismContext(), "in "+kind+" type " + intent + ", in " + contextDescription); + rSchema.getPrismContext(), "in " + kind + " type " + intent + ", in " + contextDescription); if (!auxiliary) { processIdentifiers(rAttrDef, ocDef); } @@ -1129,8 +1127,8 @@ private void parseAttributesFrom(RefinedResourceSchema rSchema, ObjectClassCompl if (auxiliary) { continue; } else { - throw new SchemaException("Duplicate definition of attribute " + rAttrDef.getItemName() + " in "+kind+" type " + - intent + ", in " + contextDescription); + throw new SchemaException("Duplicate definition of attribute " + rAttrDef.getItemName() + " in " + kind + " type " + + intent + ", in " + contextDescription); } } add(rAttrDef); @@ -1145,15 +1143,15 @@ private void processIdentifiers(RefinedAttributeDefinition rAttrDef, ObjectClass QName attrName = rAttrDef.getItemName(); if (objectClassDef.isPrimaryIdentifier(attrName)) { - ((Collection)getPrimaryIdentifiers()).add(rAttrDef); + ((Collection) getPrimaryIdentifiers()).add(rAttrDef); } if (rAttrDef.isSecondaryIdentifierOverride() == null) { if (objectClassDef.isSecondaryIdentifier(attrName)) { - ((Collection)getSecondaryIdentifiers()).add(rAttrDef); + ((Collection) getSecondaryIdentifiers()).add(rAttrDef); } } else if (rAttrDef.isSecondaryIdentifierOverride()) { - ((Collection)getSecondaryIdentifiers()).add(rAttrDef); + ((Collection) getSecondaryIdentifiers()).add(rAttrDef); } } @@ -1167,7 +1165,7 @@ private ResourceAttributeDefinitionType findAttributeDefinitionType(QName attrNa if (foundAttrDefType == null) { foundAttrDefType = attrDefType; } else { - throw new SchemaException("Duplicate definition of attribute " + ref + " in "+kind+" type " + throw new SchemaException("Duplicate definition of attribute " + ref + " in " + kind + " type " + rOcDefType.getIntent() + ", in " + contextDescription); } } @@ -1210,7 +1208,7 @@ public static String debugDump(int indent, LayerType layer, RefinedObjectClassDe sb.append(",layer=").append(layer); } sb.append(")"); - for (RefinedAttributeDefinition rAttrDef: _this.getAttributeDefinitions()) { + for (RefinedAttributeDefinition rAttrDef : _this.getAttributeDefinitions()) { sb.append("\n"); sb.append(rAttrDef.debugDump(indent + 1, layer)); } @@ -1229,7 +1227,7 @@ public String getHumanReadableName() { if (getDisplayName() != null) { return getDisplayName(); } else if (getKind() != null) { - return getKind()+":"+getIntent(); + return getKind() + ":" + getIntent(); } else { return getTypeName().getLocalPart(); } @@ -1238,9 +1236,9 @@ public String getHumanReadableName() { @Override public String toString() { if (getKind() == null) { - return getDebugDumpClassName() + getMutabilityFlag() + "("+PrettyPrinter.prettyPrint(getTypeName())+")"; + return getDebugDumpClassName() + getMutabilityFlag() + "(" + PrettyPrinter.prettyPrint(getTypeName()) + ")"; } else { - return getDebugDumpClassName() + getMutabilityFlag() + "("+getKind()+":"+getIntent()+"="+PrettyPrinter.prettyPrint(getTypeName())+")"; + return getDebugDumpClassName() + getMutabilityFlag() + "(" + getKind() + ":" + getIntent() + "=" + PrettyPrinter.prettyPrint(getTypeName()) + ")"; } } diff --git a/infra/schema/pom.xml b/infra/schema/pom.xml index bc43ffafefe..4d9dc544c5f 100644 --- a/infra/schema/pom.xml +++ b/infra/schema/pom.xml @@ -1,12 +1,14 @@ - + 4.0.0 @@ -76,10 +78,6 @@ org.springframework spring-context - - commons-collections - commons-collections - commons-lang commons-lang diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/statistics/IterativeTaskInformation.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/statistics/IterativeTaskInformation.java index ec0a53d97b1..001f23fb29d 100644 --- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/statistics/IterativeTaskInformation.java +++ b/infra/schema/src/main/java/com/evolveum/midpoint/schema/statistics/IterativeTaskInformation.java @@ -7,18 +7,19 @@ package com.evolveum.midpoint.schema.statistics; -import com.evolveum.midpoint.prism.xml.XmlTypeConverter; -import com.evolveum.midpoint.util.QNameUtil; -import com.evolveum.midpoint.xml.ns._public.common.common_3.IterativeTaskInformationType; -import org.apache.commons.collections.buffer.CircularFifoBuffer; -import org.jetbrains.annotations.NotNull; - -import javax.xml.datatype.DatatypeConstants; -import javax.xml.namespace.QName; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Locale; +import javax.xml.datatype.DatatypeConstants; +import javax.xml.namespace.QName; + +import org.apache.commons.collections4.queue.CircularFifoQueue; +import org.jetbrains.annotations.NotNull; + +import com.evolveum.midpoint.prism.xml.XmlTypeConverter; +import com.evolveum.midpoint.util.QNameUtil; +import com.evolveum.midpoint.xml.ns._public.common.common_3.IterativeTaskInformationType; /** * @author Pavol Mederly @@ -61,7 +62,7 @@ public class IterativeTaskInformation { protected String currentObjectOid; protected Date currentObjectStartTimestamp; - protected CircularFifoBuffer lastFailures = new CircularFifoBuffer(LAST_FAILURES_KEPT); + protected CircularFifoQueue lastFailures = new CircularFifoQueue<>(LAST_FAILURES_KEPT); public IterativeTaskInformation() { this(null); @@ -212,7 +213,6 @@ public static void addTo(@NotNull IterativeTaskInformationType sum, IterativeTas } public List getLastFailures() { - //noinspection unchecked return new ArrayList<>(lastFailures); } diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/CaseTypeUtil.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/CaseTypeUtil.java index 5c029a3998e..f4ed23b1ace 100644 --- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/CaseTypeUtil.java +++ b/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/CaseTypeUtil.java @@ -7,18 +7,19 @@ package com.evolveum.midpoint.schema.util; +import java.util.ArrayList; +import java.util.List; +import javax.xml.datatype.XMLGregorianCalendar; + +import org.apache.commons.collections4.CollectionUtils; +import org.jetbrains.annotations.NotNull; + import com.evolveum.midpoint.prism.PrismContainer; import com.evolveum.midpoint.prism.PrismContainerable; import com.evolveum.midpoint.prism.PrismObjectValue; import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; -import org.apache.commons.collections.CollectionUtils; -import org.jetbrains.annotations.NotNull; - -import javax.xml.datatype.XMLGregorianCalendar; -import java.util.ArrayList; -import java.util.List; /** * @author mederly @@ -39,7 +40,7 @@ public static CaseType getCase(CaseWorkItemType workItem) { return null; } - @SuppressWarnings({"unchecked", "raw"}) + @SuppressWarnings({ "unchecked", "raw" }) PrismContainerable parent = workItem.asPrismContainerValue().getParent(); if (!(parent instanceof PrismContainer)) { return null; @@ -48,7 +49,7 @@ public static CaseType getCase(CaseWorkItemType workItem) { if (!(parentParent instanceof PrismObjectValue)) { return null; } - @SuppressWarnings({"unchecked", "raw"}) + @SuppressWarnings({ "unchecked", "raw" }) PrismObjectValue parentParentPov = (PrismObjectValue) parentParent; return parentParentPov.asObjectable(); } @@ -66,8 +67,8 @@ public static String getRequesterComment(CaseType aCase) { return businessContext != null ? businessContext.getComment() : null; } - public static boolean isManualProvisioningCase(CaseType aCase){ - if (aCase == null || CollectionUtils.isEmpty(aCase.getArchetypeRef())){ + public static boolean isManualProvisioningCase(CaseType aCase) { + if (aCase == null || CollectionUtils.isEmpty(aCase.getArchetypeRef())) { return false; } return aCase != null && ObjectTypeUtil.hasArchetype(aCase, SystemObjectsType.ARCHETYPE_MANUAL_CASE.value()); @@ -87,7 +88,7 @@ public static List getAllCurrentAssignees(CaseType aCase) { return rv; } - public static boolean approvalSchemaExists(CaseType aCase){ + public static boolean approvalSchemaExists(CaseType aCase) { return aCase != null && aCase.getApprovalContext() != null && aCase.getApprovalContext().getApprovalSchema() != null && !aCase.getApprovalContext().getApprovalSchema().asPrismContainerValue().isEmpty(); } diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/CaseWorkItemUtil.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/CaseWorkItemUtil.java index 35e462c590c..c87db793f61 100644 --- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/CaseWorkItemUtil.java +++ b/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/CaseWorkItemUtil.java @@ -7,18 +7,22 @@ package com.evolveum.midpoint.schema.util; -import com.evolveum.midpoint.prism.*; -import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseWorkItemType; -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.jetbrains.annotations.NotNull; - import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.jetbrains.annotations.NotNull; + +import com.evolveum.midpoint.prism.PrismContainer; +import com.evolveum.midpoint.prism.PrismContainerValue; +import com.evolveum.midpoint.prism.PrismContainerable; +import com.evolveum.midpoint.prism.PrismValue; +import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseWorkItemType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; + /** * @author bpowers */ @@ -38,7 +42,7 @@ public static CaseType getCase(CaseWorkItemType workItem) { if (workItem == null) { return null; } - @SuppressWarnings({"unchecked", "raw"}) + @SuppressWarnings({ "unchecked", "raw" }) PrismContainerable parent = workItem.asPrismContainerValue().getParent(); if (!(parent instanceof PrismContainer)) { return null; @@ -47,7 +51,7 @@ public static CaseType getCase(CaseWorkItemType workItem) { if (!(parentParent instanceof PrismContainerValue)) { return null; } - @SuppressWarnings({"unchecked", "raw"}) + @SuppressWarnings({ "unchecked", "raw" }) PrismContainerValue parentParentPcv = (PrismContainerValue) parentParent; return parentParentPcv.asContainerable(); } @@ -73,17 +77,17 @@ public static boolean isCaseWorkItemClosed(CaseWorkItemType workItem) { return workItem != null && workItem.getCloseTimestamp() != null; } - public static boolean isWorkItemClaimable(CaseWorkItemType workItem){ + public static boolean isWorkItemClaimable(CaseWorkItemType workItem) { return workItem != null && (workItem.getOriginalAssigneeRef() == null || StringUtils.isEmpty(workItem.getOriginalAssigneeRef().getOid())) && !doesAssigneeExist(workItem) && CollectionUtils.isNotEmpty(workItem.getCandidateRef()); } - public static boolean doesAssigneeExist(CaseWorkItemType workItem){ - if (workItem == null || CollectionUtils.isEmpty(workItem.getAssigneeRef())){ + public static boolean doesAssigneeExist(CaseWorkItemType workItem) { + if (workItem == null || CollectionUtils.isEmpty(workItem.getAssigneeRef())) { return false; } - for (ObjectReferenceType assignee : workItem.getAssigneeRef()){ - if (StringUtils.isNotEmpty(assignee.getOid())){ + for (ObjectReferenceType assignee : workItem.getAssigneeRef()) { + if (StringUtils.isNotEmpty(assignee.getOid())) { return true; } } diff --git a/model/model-impl/pom.xml b/model/model-impl/pom.xml index d346eb4ee1f..32b7518a457 100644 --- a/model/model-impl/pom.xml +++ b/model/model-impl/pom.xml @@ -1,6 +1,6 @@ - + 4.0.0 @@ -119,8 +121,8 @@ commons-codec - commons-collections - commons-collections + org.apache.commons + commons-collections4 diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportFunctions.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportFunctions.java index bbdeed7b178..e7f21ec716f 100644 --- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportFunctions.java +++ b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportFunctions.java @@ -1,11 +1,28 @@ /* - * 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.report.impl; +import static com.evolveum.midpoint.schema.util.CertCampaignTypeUtil.norm; +import static com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignStateType.CLOSED; +import static com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignType.F_STATE; +import static com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType.F_NAME; + +import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; +import javax.xml.datatype.DatatypeConfigurationException; +import javax.xml.datatype.DatatypeFactory; +import javax.xml.datatype.XMLGregorianCalendar; +import javax.xml.namespace.QName; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.Validate; + import com.evolveum.midpoint.audit.api.AuditEventRecord; import com.evolveum.midpoint.audit.api.AuditEventStage; import com.evolveum.midpoint.audit.api.AuditService; @@ -26,24 +43,6 @@ import com.evolveum.midpoint.wf.api.WorkflowConstants; 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.commons.lang.Validate; - -import javax.xml.namespace.QName; -import java.util.*; -import java.util.Map.Entry; -import java.util.Objects; -import java.util.stream.Collectors; - -import static com.evolveum.midpoint.schema.util.CertCampaignTypeUtil.norm; -import static com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignStateType.CLOSED; -import static com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignType.F_STATE; -import static com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType.F_NAME; -import javax.xml.datatype.DatatypeConfigurationException; -import javax.xml.datatype.DatatypeFactory; -import javax.xml.datatype.XMLGregorianCalendar; - public class ReportFunctions { private static final Trace LOGGER = TraceManager.getTrace(ReportFunctions.class); @@ -248,13 +247,11 @@ private List transformToWorkflows(List audit .filter(record -> record.getMessage() == null || !record.getMessage().contains("(no decision)")) .forEach(filtered::add); - wf.stream().findFirst().ifPresent(record -> { - - workflowsFiltered.put(record.getTimestamp(), filtered); - }); + wf.stream().findFirst().ifPresent(record -> + workflowsFiltered.put(record.getTimestamp(), filtered)); }); - return workflowsFiltered.entrySet().stream().map(Entry::getValue).flatMap(List::stream) + return workflowsFiltered.values().stream().flatMap(List::stream) .collect(Collectors.toList()); } @@ -290,13 +287,13 @@ List searchObjects(Class type, ObjectQuery query) { return ret; } - ObjectFilter createEqualFilter(QName propertyName, Class type, T realValue) throws SchemaException { + ObjectFilter createEqualFilter(QName propertyName, Class type, T realValue) { return prismContext.queryFor(type) .item(propertyName).eq(realValue) .buildFilter(); } - ObjectFilter createEqualFilter(ItemPath propertyPath, Class type, T realValue) throws SchemaException { + ObjectFilter createEqualFilter(ItemPath propertyPath, Class type, T realValue) { return prismContext.queryFor(type) .item(propertyPath).eq(realValue) .buildFilter(); @@ -311,7 +308,7 @@ ObjectFilter createEqualFilter(ItemPath propertyPat // return RefFilter.createReferenceEqual(propertyPath, type, prismContext, oids); // } -// Object parseObjectFromXML (String xml) throws SchemaException { + // Object parseObjectFromXML (String xml) throws SchemaException { // return prismContext.parserFor(xml).xml().parseAnyData(); // } public List> searchApprovalWorkItems() @@ -323,7 +320,7 @@ public List> searchApprovalWorkItems() /* * @param days - return only workitems with createTimestamp older than (now-days), 0 to return all * @sortColumn - optionally AbstractWorkItemType QName to asc sort results (e.g. AbstractWorkItemType.F_CREATE_TIMESTAMP) - */ + */ public List> searchApprovalWorkItems(int days, QName sortColumn) throws CommunicationException, ObjectNotFoundException, SchemaException, SecurityViolationException, ConfigurationException, ExpressionEvaluationException, DatatypeConfigurationException { @@ -334,16 +331,16 @@ public List> searchApprovalWorkItems(int d if (days > 0) { XMLGregorianCalendar since = (new Clock()).currentTimeXMLGregorianCalendar(); DatatypeFactory df = DatatypeFactory.newInstance(); - since.add (df.newDuration(false, 0, 0, days, 0, 0, 0)); + since.add(df.newDuration(false, 0, 0, days, 0, 0, 0)); query.addFilter(prismContext.queryFor(AbstractWorkItemType.class) - .item(AbstractWorkItemType.F_CREATE_TIMESTAMP).lt(since).buildFilter()); + .item(AbstractWorkItemType.F_CREATE_TIMESTAMP).lt(since).buildFilter()); } if (sortColumn != null) { query.addFilter(prismContext.queryFor(AbstractWorkItemType.class) - .asc(sortColumn) - .buildFilter()); + .asc(sortColumn) + .buildFilter()); } Object[] itemsToResolve = { CaseWorkItemType.F_ASSIGNEE_REF, ItemPath.create(PrismConstants.T_PARENT, CaseType.F_OBJECT_REF), @@ -357,7 +354,7 @@ public List> searchApprovalWorkItems(int d /** * Retrieves all definitions. * Augments them by count of campaigns (all + open ones). - * + *

* TODO query parameters, customizable sorting * definitions and campaigns counts are expected to be low, so we can afford to go through all of them here */ @@ -368,11 +365,11 @@ public Collection> searc Collection> options = SelectorOptions.createCollection(GetOperationOptions.createResolveNames()); List> definitions = model.searchObjects(AccessCertificationDefinitionType.class, null, options, task, result); - final Map> definitionsForReportMap = new HashMap<>(); + final Map> definitionsForReportMap = new HashMap<>(); for (PrismObject definition : definitions) { // create subclass with the values copied from the superclass PrismObject definitionForReport = prismContext.createObjectable(AccessCertificationDefinitionForReportType.class).asPrismObject(); - for (Item item : definition.getValue().getItems()) { + for (Item item : definition.getValue().getItems()) { definitionForReport.getValue().add(item.clone()); } definitionsForReportMap.put(definition.getOid(), definitionForReport); @@ -386,11 +383,11 @@ public Collection> searc if (definitionObject != null) { AccessCertificationDefinitionForReportType definition = definitionObject.asObjectable(); int campaigns = definition.getCampaigns() != null ? definition.getCampaigns() : 0; - definition.setCampaigns(campaigns+1); + definition.setCampaigns(campaigns + 1); AccessCertificationCampaignStateType state = campaign.getState(); if (state != AccessCertificationCampaignStateType.CREATED && state != CLOSED) { int openCampaigns = definition.getOpenCampaigns() != null ? definition.getOpenCampaigns() : 0; - definition.setOpenCampaigns(openCampaigns+1); + definition.setOpenCampaigns(openCampaigns + 1); } } } @@ -399,7 +396,7 @@ public Collection> searc model.searchObjectsIterative(AccessCertificationCampaignType.class, null, handler, null, task, result); List> rv = new ArrayList<>(definitionsForReportMap.values()); - Collections.sort(rv, (o1, o2) -> { + rv.sort((o1, o2) -> { String n1 = o1.asObjectable().getName().getOrig(); String n2 = o2.asObjectable().getName().getOrig(); if (n1 == null) { @@ -534,13 +531,13 @@ public List> getCertificationCampai Task task = taskManager.createTaskInstance(); ObjectQuery query = prismContext.queryFor(AccessCertificationCampaignType.class) - .asc(F_NAME) - .build(); + .asc(F_NAME) + .build(); if (!Boolean.TRUE.equals(alsoClosedCampaigns)) { query.addFilter( prismContext.queryFor(AccessCertificationCampaignType.class) - .not().item(F_STATE).eq(CLOSED) - .buildFilter() + .not().item(F_STATE).eq(CLOSED) + .buildFilter() ); } diff --git a/model/rest-impl/pom.xml b/model/rest-impl/pom.xml index a52dd520985..8d398cc92a8 100644 --- a/model/rest-impl/pom.xml +++ b/model/rest-impl/pom.xml @@ -1,6 +1,6 @@ commons-collections commons-collections @@ -1324,7 +1325,7 @@ org.apache.commons commons-collections4 - 4.1 + 4.3 org.apache.directory.api @@ -1726,6 +1727,9 @@ + + org.apache.commons:commons-collections +