From 9918c4fedcb81144de88d3bd86018cc32a70a084 Mon Sep 17 00:00:00 2001 From: kate Date: Tue, 26 Mar 2019 11:50:04 +0100 Subject: [PATCH 1/2] translations fix --- .../ConstructionDetailsPanelChainedModel.html | 53 ---- .../ConstructionDetailsPanelChainedModel.java | 245 ------------------ .../localization/Midpoint.properties | 4 +- .../localization/Midpoint_en.properties | 4 +- .../resources/localization/schema.properties | 2 +- .../localization/schema_en.properties | 2 +- 6 files changed, 6 insertions(+), 304 deletions(-) delete mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionDetailsPanelChainedModel.html delete mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionDetailsPanelChainedModel.java diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionDetailsPanelChainedModel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionDetailsPanelChainedModel.html deleted file mode 100644 index c479b405a5f..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionDetailsPanelChainedModel.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - -
-
- -
-
-
- -
-
-
- -
-
- -
-
-
-
-
-
-
-
-
- diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionDetailsPanelChainedModel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionDetailsPanelChainedModel.java deleted file mode 100644 index f11ab8b38cd..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionDetailsPanelChainedModel.java +++ /dev/null @@ -1,245 +0,0 @@ -/** - * Copyright (c) 2015-2018 Evolveum - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.evolveum.midpoint.web.component.assignment; - -import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition; -import com.evolveum.midpoint.common.refinery.RefinedResourceSchema; -import com.evolveum.midpoint.gui.api.component.BasePanel; -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.prism.PrismObject; -import com.evolveum.midpoint.schema.result.OperationResult; -import com.evolveum.midpoint.task.api.Task; -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.input.DropDownChoicePanel; -import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ConstructionType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowKindType; -import org.apache.wicket.ajax.AjaxEventBehavior; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.markup.html.form.ChoiceRenderer; -import org.apache.wicket.markup.html.form.DropDownChoice; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.TextField; -import org.apache.wicket.model.*; -import sun.security.provider.SHA; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * Created by honchar. - */ -public class ConstructionDetailsPanelChainedModel extends BasePanel { - private static final long serialVersionUID = 1L; - - private static final Trace LOGGER = TraceManager.getTrace(ConstructionDetailsPanelChainedModel.class); - private static final String DOT_CLASS = ConstructionDetailsPanelChainedModel.class.getName() + "."; - private static final String OPERATION_LOAD_RESOURCE = DOT_CLASS + "loadResource"; - - private static final String ID_FORM = "constructionForm"; - private static final String ID_KIND_FIELD = "kindField"; - private static final String ID_INTENT_FIELD = "intentField"; - - private IModel intentChoicesModel; - private LoadableDetachableModel> resourceModel; - private IModel kindModel; - - public ConstructionDetailsPanelChainedModel(String id, IModel constructionModel) { - super(id, constructionModel); - } - - @Override - protected void onInitialize() { - super.onInitialize(); - initModels(); - initLayout(); - } - - private void initModels() { - resourceModel = new LoadableDetachableModel>() { - @Override - protected PrismObject load() { - ObjectReferenceType resourceRef = getModelObject().getResourceRef(); - Task loadResourceTask = getPageBase().createSimpleTask(OPERATION_LOAD_RESOURCE); - OperationResult result = new OperationResult(OPERATION_LOAD_RESOURCE); - PrismObject resource = WebModelServiceUtils.loadObject(resourceRef, getPageBase(), loadResourceTask, result); - result.computeStatusIfUnknown(); - if (!result.isAcceptable()) { - LOGGER.error("Cannot find resource referenced from construction. {}", result.getMessage()); - result.recordPartialError("Could not find resource referenced from construction."); - return null; - } - return resource; - } - }; - kindModel = new IModel() { - @Override - public ShadowKindType getObject() { - return getModelObject().getKind(); - } - - @Override - public void setObject(ShadowKindType shadowKindType) { - getModelObject().setKind(shadowKindType); - } - - @Override - public void detach() { - - } - }; - intentChoicesModel = new ChainingModel(kindModel) { - private static final long serialVersionUID = 1L; - - @Override - public String getObject() { - - List availableIntentValues = new ArrayList<>(); - try { - if (resourceModel.getObject() == null) { - return availableIntentValues.toString(); - } - RefinedResourceSchema refinedSchema = RefinedResourceSchema.getRefinedSchema(resourceModel.getObject()); - if (refinedSchema != null) { - ShadowKindType kind = ((IModel) super.getChainedModel()).getObject(); - List definitions = refinedSchema.getRefinedDefinitions(kind); - for (RefinedObjectClassDefinition def : definitions) { - if (def.getIntent() != null) { - availableIntentValues.add(def.getIntent()); - } - } - } - } catch (SchemaException ex) { - LOGGER.error("Cannot get refined resource schema for resource {}. {}", resourceModel.getObject().getName().getOrig(), ex.getLocalizedMessage()); - } - - return availableIntentValues.toString(); - } - - @Override - public void setObject(String o){ - super.setObject(o); - } - }; - } - - private void initLayout() { - CompoundPropertyModel constrModel = new CompoundPropertyModel(getModel()){ - @Override - public Object getObject(){ - Object o = super.getObject(); - return o; - } - - @Override - public void setObject(Object o){ - super.setObject(o); - } - }; - Form form = new Form(ID_FORM, constrModel); - form.setOutputMarkupId(true); - - DropDownChoice kindChoice = new DropDownChoice<>("kind", Model.ofList(Arrays.asList(ShadowKindType.values()))); - kindChoice.setOutputMarkupId(true); - kindChoice.add(new EmptyOnBlurAjaxFormUpdatingBehaviour(){ - @Override - protected void onUpdate(AjaxRequestTarget ajaxRequestTarget) { -// ajaxRequestTarget.add(form); - } - }); -// kindChoice.add(new AjaxEventBehavior("blur") { -// @Override -// protected void onEvent(AjaxRequestTarget ajaxRequestTarget) { -// ajaxRequestTarget.add(form); -// } -// }); - form.add(kindChoice); - DropDownChoice intentDropdown = new DropDownChoice<>("intent", new IModel>() { - @Override - public List getObject() { - List availableIntentValues = new ArrayList<>(); - try { - if (resourceModel.getObject() == null) { - return availableIntentValues; - } - RefinedResourceSchema refinedSchema = RefinedResourceSchema.getRefinedSchema(resourceModel.getObject()); - if (refinedSchema != null) { - ConstructionType m = (ConstructionType) constrModel.getObject(); - ShadowKindType kind = m.getKind(); - List definitions = refinedSchema.getRefinedDefinitions(kind); - for (RefinedObjectClassDefinition def : definitions) { - if (def.getIntent() != null) { - availableIntentValues.add(def.getIntent()); - } - } - } - } catch (SchemaException ex) { - LOGGER.error("Cannot get refined resource schema for resource {}. {}", resourceModel.getObject().getName().getOrig(), ex.getLocalizedMessage()); - } - - return availableIntentValues; - } - @Override - public void setObject(List o) { - // - } - - @Override - public void detach(){ - - } - }); - - intentDropdown.setOutputMarkupId(true); - form.add(intentDropdown); - - add(form); - - -// DropDownChoice kindDropDown = new DropDownChoice(ID_KIND_FIELD, kindModel, Model.ofList(Arrays.asList(ShadowKindType.values()))){ -// @Override -// protected void onSelectionChanged(ShadowKindType newSelection) { -// if (newSelection == null){ -// ConstructionDetailsPanelChainedModel.this.getModelObject().setKind(null); -// return; -// } -// if (newSelection instanceof ShadowKindType){ -// ConstructionDetailsPanelChainedModel.this.getModelObject().setKind((ShadowKindType) newSelection); -// } -// } -// }; -// kindDropDown.add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); -// -// kindDropDown.setOutputMarkupId(true); -// add(kindDropDown); -// -// TextField intentDropDown = new TextField(ID_INTENT_FIELD, intentChoicesModel); -// DropDownChoicePanel intentDropDown = new DropDownChoicePanel(ID_INTENT_FIELD, -// PropertyModel.of(getModel(), ConstructionType.F_INTENT.getLocalPart()), intentChoicesModel); -// intentDropDown.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); -// intentDropDown.setOutputMarkupId(true); -// add(intentDropDown); - - } - -} diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint.properties b/gui/admin-gui/src/main/resources/localization/Midpoint.properties index b0a92d34ad8..c507a771df5 100755 --- a/gui/admin-gui/src/main/resources/localization/Midpoint.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint.properties @@ -2106,7 +2106,7 @@ pageSystemConfiguration.adminGui.title=Admin GUI pageSystemConfiguration.system.title=System pageSystemConfiguration.objectPolicy.title=Object policy pageSystemConfiguration.globalPolicyRule.title=Global policy rule -pageSystemConfiguration.globalAccountSynchronization.title=Global account synchronization +pageSystemConfiguration.globalAccountSynchronization.title=Global projection policy pageSystemConfiguration.cleanupPolicy.title=Cleanup policy pageSystemConfiguration.roleManagement.title=Role management pageSystemConfiguration.internals.title=Internals configuration @@ -3189,7 +3189,7 @@ SystemConfigPanel.mail.username=Username SystemConfigPanel.misc.enableExperimentalCode=Enable MODEL experimental code SystemConfigPanel.notification.redirectToFile.placeholder=Filename SystemConfigPanel.notification.redirectToFile=Redirect to file -SystemConfigPanel.title.accountSynchronization=Global account synchronization settings +SystemConfigPanel.title.accountSynchronization=Global projection policy SystemConfigPanel.title.basic=Basic SystemConfigPanel.title.connectorFramework=Connector frameworks configuration SystemConfigPanel.title.misc=Miscellaneous diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties b/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties index 1693f241017..eed4d792ca3 100644 --- a/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties @@ -2098,7 +2098,7 @@ pageSystemConfiguration.adminGui.title=Admin GUI pageSystemConfiguration.system.title=System pageSystemConfiguration.objectPolicy.title=Object policy pageSystemConfiguration.globalPolicyRule.title=Global policy rule -pageSystemConfiguration.globalAccountSynchronization.title=Global account synchronization +pageSystemConfiguration.globalAccountSynchronization.title=Global projection policy pageSystemConfiguration.cleanupPolicy.title=Cleanup policy pageSystemConfiguration.roleManagement.title=Role management pageSystemConfiguration.internals.title=Internals configuration @@ -3175,7 +3175,7 @@ SystemConfigPanel.mail.username=Username SystemConfigPanel.misc.enableExperimentalCode=Enable MODEL experimental code SystemConfigPanel.notification.redirectToFile.placeholder=Filename SystemConfigPanel.notification.redirectToFile=Redirect to file -SystemConfigPanel.title.accountSynchronization=Global account synchronization settings +SystemConfigPanel.title.accountSynchronization=Global projection policy SystemConfigPanel.title.basic=Basic SystemConfigPanel.title.connectorFramework=Connector frameworks configuration SystemConfigPanel.title.misc=Miscellaneous diff --git a/infra/schema/src/main/resources/localization/schema.properties b/infra/schema/src/main/resources/localization/schema.properties index aedaf3abc3c..ab88909a6f7 100755 --- a/infra/schema/src/main/resources/localization/schema.properties +++ b/infra/schema/src/main/resources/localization/schema.properties @@ -812,7 +812,7 @@ ServiceType.type=Type ServiceType.displayOrder=Display Order ServiceType.URL=URL SystemConfigurationType.globalSecurityPolicyRef=Global security policy -SystemConfigurationType.globalAccountSynchronizationSettings=Global account synchronization settings +SystemConfigurationType.globalAccountSynchronizationSettings=Global projection policy configuration SystemConfigurationType.logging=Logging SystemConfigurationType.notificationConfiguration=Notification configuration SystemConfigurationType.workflowConfiguration=Workflow configuration diff --git a/infra/schema/src/main/resources/localization/schema_en.properties b/infra/schema/src/main/resources/localization/schema_en.properties index 7744d241078..8d41d561b1b 100644 --- a/infra/schema/src/main/resources/localization/schema_en.properties +++ b/infra/schema/src/main/resources/localization/schema_en.properties @@ -812,7 +812,7 @@ ServiceType.type=Type ServiceType.displayOrder=Display Order ServiceType.URL=URL SystemConfigurationType.globalSecurityPolicyRef=Global security policy -SystemConfigurationType.globalAccountSynchronizationSettings=Global account synchronization settings +SystemConfigurationType.globalAccountSynchronizationSettings=Global projection policy configuration SystemConfigurationType.logging=Logging SystemConfigurationType.notificationConfiguration=Notification configuration SystemConfigurationType.workflowConfiguration=Workflow configuration From 67ceb9cdab9280d3ba64fa2a4cc2e7246197e33a Mon Sep 17 00:00:00 2001 From: kate Date: Tue, 26 Mar 2019 13:41:45 +0100 Subject: [PATCH 2/2] fix MID-5204 sequentialSearch capability paging --- .../midpoint/web/component/data/BoxedTablePanel.java | 6 +++--- .../midpoint/web/component/wf/WorkItemsPanel.java | 8 ++++---- .../web/page/admin/workflow/ProcessInstancesPanel.java | 8 ++++---- .../midpoint/web/page/self/PageSelfDashboard.java | 8 ++++---- .../evolveum/midpoint/provisioning/impl/ShadowCache.java | 6 +++++- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BoxedTablePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BoxedTablePanel.java index 2618e2683ff..9f10495b752 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BoxedTablePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BoxedTablePanel.java @@ -119,7 +119,7 @@ protected Item newRowItem(String id, int index, IModel rowModel) { box.add(createHeader(ID_HEADER)); WebMarkupContainer footer = createFooter(ID_FOOTER); - footer.add(new VisibleBehaviour(() -> isFooterVisible(provider.size(), pageSize))); + footer.add(new VisibleBehaviour(() -> !hideFooterIfSinglePage() || provider.size() > pageSize)); box.add(footer); } @@ -136,8 +136,8 @@ protected Item customizeNewRowItem(Item item, IModel model) { return item; } - protected boolean isFooterVisible(long providerSize, int pageSize){ - return true; + protected boolean hideFooterIfSinglePage(){ + return false; } @Override diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wf/WorkItemsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wf/WorkItemsPanel.java index 381ed4a039e..eacd825d9b1 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wf/WorkItemsPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wf/WorkItemsPanel.java @@ -167,8 +167,8 @@ public Date getObject() { private static final long serialVersionUID = 1L; @Override - protected boolean isFooterVisible(long providerSize, int pageSize){ - return WorkItemsPanel.this.isFooterVisible(providerSize, pageSize); + protected boolean hideFooterIfSinglePage(){ + return WorkItemsPanel.this.hideFooterIfSinglePage(); } }; workItemsTable.setAdditionalBoxCssClasses("without-box-header-top-border"); @@ -350,7 +350,7 @@ public void populateItem(Item> item, String componen }; } - protected boolean isFooterVisible(long providerSize, int pageSize){ - return true; + protected boolean hideFooterIfSinglePage(){ + return false; } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/workflow/ProcessInstancesPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/workflow/ProcessInstancesPanel.java index ca364ea5f37..6d3f46b6ad2 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/workflow/ProcessInstancesPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/workflow/ProcessInstancesPanel.java @@ -94,8 +94,8 @@ public String getObject() { } @Override - protected boolean isFooterVisible(long providerSize, int pageSize){ - return ProcessInstancesPanel.this.isFooterVisible(providerSize, pageSize); + protected boolean hideFooterIfSinglePage(){ + return ProcessInstancesPanel.this.hideFooterIfSinglePage(); } }; table.setOutputMarkupId(true); @@ -231,8 +231,8 @@ private String choose(IModel rowModel, String noReply, Strin }; } - protected boolean isFooterVisible(long providerSize, int pageSize){ - return true; + protected boolean hideFooterIfSinglePage(){ + return false; } private void itemDetailsPerformed(AjaxRequestTarget target, String pid) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageSelfDashboard.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageSelfDashboard.java index bccc87d7d8a..875cba665e4 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageSelfDashboard.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageSelfDashboard.java @@ -202,8 +202,8 @@ protected Component getMainComponent(String markupId) { private static final long serialVersionUID = 1L; @Override - protected boolean isFooterVisible(long providerSize, int pageSize){ - return providerSize > pageSize; + protected boolean hideFooterIfSinglePage(){ + return true; } }; } @@ -250,8 +250,8 @@ protected Component getMainComponent(String markupId) { private static final long serialVersionUID = 1L; @Override - protected boolean isFooterVisible(long providerSize, int pageSize){ - return providerSize > pageSize; + protected boolean hideFooterIfSinglePage(){ + return true; } }; } diff --git a/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ShadowCache.java b/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ShadowCache.java index fd7c4e9fc9c..26d82a8252f 100644 --- a/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ShadowCache.java +++ b/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ShadowCache.java @@ -2291,7 +2291,11 @@ public String toString() { return resultMetadata.getApproxNumberOfAllResults(); } else if (simulate == CountObjectsSimulateType.SEQUENTIAL_SEARCH) { - + //fix for MID-5204. as sequentialSearch option causes to fetch all resource objects, + // query paging is senseless here + if (query != null){ + query.setPaging(null); + } LOGGER.trace("countObjects: simulating counting with sequential search (likely performance impact)"); // traditional way of counting objects (i.e. counting them one by one) final Holder countHolder = new Holder<>(0);