From d102875dd2105358a0ee0ac493b5690ca6ba7f52 Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Tue, 26 Apr 2016 15:00:29 +0200 Subject: [PATCH 01/10] Fixing NPE on special ConnId attributes --- .../provisioning/ucf/impl/IcfConvertor.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/ucf/impl/IcfConvertor.java b/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/ucf/impl/IcfConvertor.java index 884884071ac..ac26a44fdd6 100644 --- a/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/ucf/impl/IcfConvertor.java +++ b/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/ucf/impl/IcfConvertor.java @@ -162,12 +162,18 @@ PrismObject convertToResourceObject(ConnectorObject co if (icfAttr.getName().equals(OperationalAttributes.PASSWORD_NAME)) { // password has to go to the credentials section ProtectedStringType password = getSingleValue(icfAttr, ProtectedStringType.class); + if (password == null) { + continue; + } ShadowUtil.setPassword(shadow, password); LOGGER.trace("Converted password: {}", password); continue; } if (icfAttr.getName().equals(OperationalAttributes.ENABLE_NAME)) { Boolean enabled = getSingleValue(icfAttr, Boolean.class); + if (enabled == null) { + continue; + } ActivationType activationType = ShadowUtil.getOrCreateActivation(shadow); ActivationStatusType activationStatusType; if (enabled) { @@ -183,6 +189,9 @@ PrismObject convertToResourceObject(ConnectorObject co if (icfAttr.getName().equals(OperationalAttributes.ENABLE_DATE_NAME)) { Long millis = getSingleValue(icfAttr, Long.class); + if (millis == null) { + continue; + } ActivationType activationType = ShadowUtil.getOrCreateActivation(shadow); activationType.setValidFrom(XmlTypeConverter.createXMLGregorianCalendar(millis)); continue; @@ -190,6 +199,9 @@ PrismObject convertToResourceObject(ConnectorObject co if (icfAttr.getName().equals(OperationalAttributes.DISABLE_DATE_NAME)) { Long millis = getSingleValue(icfAttr, Long.class); + if (millis == null) { + continue; + } ActivationType activationType = ShadowUtil.getOrCreateActivation(shadow); activationType.setValidTo(XmlTypeConverter.createXMLGregorianCalendar(millis)); continue; @@ -197,6 +209,9 @@ PrismObject convertToResourceObject(ConnectorObject co if (icfAttr.getName().equals(OperationalAttributes.LOCK_OUT_NAME)) { Boolean lockOut = getSingleValue(icfAttr, Boolean.class); + if (lockOut == null) { + continue; + } if (lockOut != null){ ActivationType activationType = ShadowUtil.getOrCreateActivation(shadow); LockoutStatusType lockoutStatusType; From f7aa8834487466bd36bd4fd411c9aae378dbe7ae Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Tue, 26 Apr 2016 15:14:22 +0200 Subject: [PATCH 02/10] fixing MID-2855 - 9. select all checkbox behaviours --- .../midpoint/gui/api/component/TypedAssignablePanel.java | 9 ++++++++- .../web/component/data/column/CheckBoxHeaderColumn.java | 5 +++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/TypedAssignablePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/TypedAssignablePanel.java index 730aae06099..6529d1b1cd0 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/TypedAssignablePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/TypedAssignablePanel.java @@ -162,12 +162,19 @@ private Label createCountLabel(String id, ObjectListPanel panel){ protected void onClick(AjaxRequestTarget target, T focus) { parentPage.hideMainPopup(target); } + + private void refreshCounts(AjaxRequestTarget target) { + addOrReplace(createCountContainer()); + target.add(get(ID_COUNT_CONTAINER)); + } private PopupObjectListPanel createObjectListPanel(String id, final String countId, final QName type) { PopupObjectListPanel listPanel = new PopupObjectListPanel(id, qnameToCompileTimeClass(type), true, parentPage) { @Override protected void onUpdateCheckbox(AjaxRequestTarget target) { - target.add(getParent().getParent().addOrReplace(createCountContainer())); + refreshCounts(target); +// TypedAssignablePanel.this.get(ID_COUNT_CONTAINER) +// target.add(getParent().getParent().addOrReplace(createCountContainer())); } }; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/CheckBoxHeaderColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/CheckBoxHeaderColumn.java index c0080fffd25..eb2a1c9d9c7 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/CheckBoxHeaderColumn.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/CheckBoxHeaderColumn.java @@ -16,6 +16,7 @@ package com.evolveum.midpoint.web.component.data.column; +import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.data.BaseSortableDataProvider; @@ -51,13 +52,13 @@ public CheckBoxHeaderColumn() { private boolean visible = true; @Override - public Component getHeader(String componentId) { + public Component getHeader(final String componentId) { final IModel model = new Model(false); CheckBoxPanel panel = new CheckBoxPanel(componentId, model, getEnabled()) { @Override public void onUpdate(AjaxRequestTarget target) { - DataTable table = findParent(DataTable.class); + DataTable table = findParent(DataTable.class); boolean selected = model.getObject() != null ? model.getObject() : false; onUpdateHeader(target, selected, table); From 6934380109dd55d00ebba3dd1653d769398f4840 Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Tue, 26 Apr 2016 15:16:10 +0200 Subject: [PATCH 03/10] fixing MID-2889 noFetch for listing resources and shadows.. --- .../gui/api/component/ObjectListPanel.java | 74 ++++++++++--------- 1 file changed, 39 insertions(+), 35 deletions(-) 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 8cfc4fa2dcb..8b5a0812df4 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 @@ -64,6 +64,7 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; /** @@ -88,7 +89,7 @@ public abstract class ObjectListPanel extends BasePanel private Collection> options; private int pageSize = 10; - + private boolean multiselect; private TableId tableId = TableId.TABLE_USERS; @@ -117,9 +118,8 @@ public ObjectListPanel(String id, Class type, Collection type, boolean multiselect, - PageBase parentPage) { + + ObjectListPanel(String id, Class type, boolean multiselect, PageBase parentPage) { super(id); this.type = type; this.parentPage = parentPage; @@ -130,7 +130,7 @@ public ObjectListPanel(String id, Class type, Collection> provider) { this.provider = provider; } @@ -143,7 +143,6 @@ public void setTableId(TableId tableId) { this.tableId = tableId; } - public List getSelectedObjects() { BaseSortableDataProvider> dataProvider = getDataProvider(); if (dataProvider instanceof ObjectDataProvider2) { @@ -164,7 +163,7 @@ private void initLayout() { @Override public Search load() { - String storageKey = getStorageKey();//storageMap.get(parentPage.getClass()); + String storageKey = getStorageKey();// storageMap.get(parentPage.getClass()); Search search = null; if (StringUtils.isNotEmpty(storageKey)) { PageStorage storage = getSession().getSessionStorage().getPageStorageMap() @@ -193,7 +192,7 @@ protected BaseSortableDataProvider> getProvider() { parentPage, type) { @Override protected void saveProviderPaging(ObjectQuery query, ObjectPaging paging) { - String storageKey = getStorageKey();//storageMap.get(type); + String storageKey = getStorageKey();// storageMap.get(type); if (StringUtils.isNotEmpty(storageKey)) { PageStorage storage = getSession().getSessionStorage().getPageStorageMap() .get(storageKey); @@ -207,13 +206,21 @@ protected void saveProviderPaging(ObjectQuery query, ObjectPaging paging) { public SelectableBean createDataObjectWrapper(T obj) { SelectableBean bean = super.createDataObjectWrapper(obj); List inlineMenu = createInlineMenu(); - if (inlineMenu != null){ + if (inlineMenu != null) { bean.getMenuItems().addAll(inlineMenu); } return bean; } }; - if (options != null) { + if (options == null){ + if (ResourceType.class.equals(type)) { + options = SelectorOptions.createCollection(GetOperationOptions.createNoFetch()); + } + } else { + if (ResourceType.class.equals(type)) { + GetOperationOptions root = SelectorOptions.findRootOptions(options); + root.setNoFetch(Boolean.TRUE); + } objProvider.setOptions(options); } provider = objProvider; @@ -233,7 +240,7 @@ private BoxedTablePanel> createTable() { protected WebMarkupContainer createHeader(String headerId) { return initSearch(headerId); } - + @Override protected String getBoxCssClasses() { return ObjectListPanel.this.getBoxCssClasses(); @@ -241,7 +248,7 @@ protected String getBoxCssClasses() { @Override protected WebMarkupContainer createButtonToolbar(String id) { - WebMarkupContainer bar = ObjectListPanel.this.createTableButtonToolbar(id); + WebMarkupContainer bar = ObjectListPanel.this.createTableButtonToolbar(id); return bar != null ? bar : super.createButtonToolbar(id); } @@ -264,7 +271,7 @@ protected String getBoxCssClasses() { /** * there's no way to do it properly... - */ + */ @Deprecated protected WebMarkupContainer createTableButtonToolbar(String id) { return null; @@ -281,8 +288,8 @@ private BaseSortableDataProvider> getDataProvider() { protected BoxedTablePanel> getTable() { return (BoxedTablePanel>) get(createComponentPath(ID_MAIN_FORM, ID_TABLE)); } - - private String getStorageKey(){ + + private String getStorageKey() { return storageMap.get(parentPage.getClass()); } @@ -307,32 +314,31 @@ private void searchPerformed(ObjectQuery query, AjaxRequestTarget target) { target.add(parentPage.getFeedbackPanel()); } - + public void refreshTable(Class newType, AjaxRequestTarget target) { BaseSortableDataProvider> provider = getDataProvider(); provider.setQuery(getQuery()); - if (newType !=null && provider instanceof ObjectDataProvider2){ + if (newType != null && provider instanceof ObjectDataProvider2) { ((ObjectDataProvider2) provider).setType(newType); } - - if (newType != null && !this.type.equals(newType)){ + + if (newType != null && !this.type.equals(newType)) { this.type = newType; searchModel.reset(); } else { saveSearchModel(); } - - + BoxedTablePanel table = getTable(); - - ((WebMarkupContainer)table.get("box")).addOrReplace(initSearch("header")); + + ((WebMarkupContainer) table.get("box")).addOrReplace(initSearch("header")); table.setCurrentPage(null); target.add((Component) table); target.add(parentPage.getFeedbackPanel()); } - - private SearchFormPanel initSearch(String headerId){ + + private SearchFormPanel initSearch(String headerId) { SearchFormPanel searchPanel = new SearchFormPanel(headerId, searchModel) { private static final long serialVersionUID = 1L; @@ -346,8 +352,8 @@ protected void searchPerformed(ObjectQuery query, AjaxRequestTarget target) { return searchPanel; } - - private void saveSearchModel(){ + + private void saveSearchModel() { String storageKey = getStorageKey(); if (StringUtils.isNotEmpty(storageKey)) { PageStorage storage = getSession().getSessionStorage().getPageStorageMap().get(storageKey); @@ -365,7 +371,7 @@ private void saveSearchModel(){ public void clearCache() { BaseSortableDataProvider provider = getDataProvider(); provider.clearCache(); - if (provider instanceof ObjectDataProvider2){ + if (provider instanceof ObjectDataProvider2) { ((ObjectDataProvider2) provider).clearSelectedObjects(); } } @@ -379,13 +385,13 @@ public ObjectQuery getQuery() { protected ObjectQuery createContentQuery() { Search search = searchModel.getObject(); ObjectQuery query = search.createObjectQuery(parentPage.getPrismContext()); - query = addFilterToContentQuery(query); + query = addFilterToContentQuery(query); return query; } - protected ObjectQuery addFilterToContentQuery(ObjectQuery query){ - return query; - } + protected ObjectQuery addFilterToContentQuery(ObjectQuery query) { + return query; + } public StringResourceModel createStringResource(String resourceKey, Object... objects) { return PageBase.createStringResourceStatic(this, resourceKey, objects); @@ -396,6 +402,7 @@ public StringResourceModel createStringResource(String resourceKey, Object... ob protected abstract IColumn, String> createNameColumn(); protected abstract List, String>> createColumns(); + protected abstract List createInlineMenu(); protected List, String>> initColumns() { @@ -418,11 +425,8 @@ protected List, String>> initColumns() { return columns; } - public void addPerformed(AjaxRequestTarget target, List selected) { parentPage.hideMainPopup(target); } - - } From c06b5da8e8e0b12f3c7a26ff2ce446c69ae7dc06 Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Tue, 26 Apr 2016 15:16:31 +0200 Subject: [PATCH 04/10] removing old unused components/dtos --- .../admin/users/component/OrgUnitBrowser.html | 39 -- .../admin/users/component/OrgUnitBrowser.java | 410 ------------------ .../web/page/admin/users/dto/OrgDto.java | 19 - .../web/page/admin/users/dto/OrgTableDto.java | 158 ------- 4 files changed, 626 deletions(-) delete mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/OrgUnitBrowser.html delete mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/OrgUnitBrowser.java delete mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/dto/OrgDto.java delete mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/dto/OrgTableDto.java diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/OrgUnitBrowser.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/OrgUnitBrowser.html deleted file mode 100644 index 526363bf770..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/OrgUnitBrowser.html +++ /dev/null @@ -1,39 +0,0 @@ - - - -
- -
- -
-
- -
- -
- -
-
-
- - -
- diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/OrgUnitBrowser.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/OrgUnitBrowser.java deleted file mode 100644 index 07e69fbc9be..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/OrgUnitBrowser.java +++ /dev/null @@ -1,410 +0,0 @@ -/* - * Copyright (c) 2010-2016 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.page.admin.users.component; - -import com.evolveum.midpoint.gui.api.model.LoadableModel; -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.PrismReference; -import com.evolveum.midpoint.prism.PrismReferenceValue; -import com.evolveum.midpoint.prism.match.PolyStringNormMatchingRule; -import com.evolveum.midpoint.prism.polystring.PolyStringNormalizer; -import com.evolveum.midpoint.prism.query.*; -import com.evolveum.midpoint.schema.result.OperationResult; -import com.evolveum.midpoint.task.api.Task; -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.BasicSearchPanel; -import com.evolveum.midpoint.web.component.data.ObjectDataProvider; -import com.evolveum.midpoint.web.component.data.TablePanel; -import com.evolveum.midpoint.web.component.data.column.LinkColumn; -import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; -import com.evolveum.midpoint.web.page.admin.users.dto.OrgTableDto; -import com.evolveum.midpoint.web.page.admin.users.dto.OrgUnitSearchDto; -import com.evolveum.midpoint.web.session.UsersStorage; -import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType; - -import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.Validate; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; -import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable; -import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; -import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.panel.FeedbackPanel; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.StringResourceModel; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author lazyman - * use OrgTreeAssignablePanel - */ -@Deprecated -public class OrgUnitBrowser extends ModalWindow { - - public static enum Operation {MOVE, ADD, REMOVE, RECOMPUTE} - - private static final Trace LOGGER = TraceManager.getTrace(OrgUnitBrowser.class); - - private static final String DOT_CLASS = OrgUnitBrowser.class.getName() + "."; - private static final String OPERATION_LOAD_PARENT_ORG_REFS = DOT_CLASS + "loadParentOrgRefs"; - private static final String OPERATION_LOAD_CHILD_ORGS = DOT_CLASS + "loadChildOrgOids"; - - private static final String ID_BASIC_SEARCH = "basicSearch"; - private static final String ID_TABLE = "table"; - private static final String ID_MAIN_FORM = "mainForm"; - private static final String ID_CANCEL = "cancel"; - private static final String ID_CREATE_ROOT = "createRoot"; - private static final String ID_FEEDBACK = "feedback"; - - private boolean movingRoot; - private boolean initialized; - private Operation operation; - private IModel searchModel; - - /** - * Objects which were selected on page, not in this dialog. It's used for example to filter org. units - * when removing from hierarchy. In that case we don't want to show list of all org. units, just org. - * units which are parents to selected. - */ - private List selected; - - public OrgUnitBrowser(String id) { - super(id); - - setTitle(createStringResource("OrgUnitBrowser.title")); - setCssClassName(ModalWindow.CSS_CLASS_GRAY); - setCookieName(OrgUnitBrowser.class.getSimpleName() + ((int) (Math.random() * 100))); - showUnloadConfirmation(false); - setInitialWidth(900); - setInitialHeight(530); - setWidthUnit("px"); - setOutputMarkupId(true); - - searchModel = new LoadableModel() { - - @Override - protected OrgUnitSearchDto load() { - UsersStorage storage = getPageBase().getSessionStorage().getUsers(); - OrgUnitSearchDto dto = storage.getOrgUnitSearch(); - - if(dto == null){ - dto = new OrgUnitSearchDto(); - } - - return dto; - } - }; - - WebMarkupContainer content = new WebMarkupContainer(getContentId()); - setContent(content); - } - - public boolean isMovingRoot() { - return movingRoot; - } - - public void setMovingRoot(boolean movingRoot) { - this.movingRoot = movingRoot; - } - - public Operation getOperation() { - return operation; - } - - public void setOperation(Operation operation) { - Validate.notNull(operation); - this.operation = operation; - } - - private PageBase getPageBase() { - return (PageBase) getPage(); - } - - public StringResourceModel createStringResource(String resourceKey, Object... objects) { - return PageBase.createStringResourceStatic(this, resourceKey, objects); -// return new StringResourceModel(resourceKey, this, null, resourceKey, objects); - } - - public void setSelectedObjects(List selected) { - this.selected = selected; - } - - public List getSelected() { - return selected; - } - - @Override - protected void onBeforeRender() { - super.onBeforeRender(); - - if (initialized) { - return; - } - - initLayout((WebMarkupContainer) get(getContentId())); - initialized = true; - } - - private void initLayout(WebMarkupContainer container) { - FeedbackPanel feedback = new FeedbackPanel(ID_FEEDBACK); - feedback.setOutputMarkupId(true); - add(feedback); - - Form form = new Form(ID_MAIN_FORM); - form.setOutputMarkupId(true); - container.add(form); - - BasicSearchPanel basicSearch = new BasicSearchPanel(ID_BASIC_SEARCH) { - - @Override - protected IModel createSearchTextModel() { - return new PropertyModel<>(searchModel, OrgUnitSearchDto.F_SEARCH_TEXT); - } - - @Override - protected void searchPerformed(AjaxRequestTarget target) { - OrgUnitBrowser.this.searchPerformed(target); - } - - @Override - protected void clearSearchPerformed(AjaxRequestTarget target) { - OrgUnitBrowser.this.clearSearchPerformed(target); - } - }; - form.add(basicSearch); - - ObjectDataProvider provider = new ObjectDataProvider(this, OrgType.class) { - - @Override - public OrgTableDto createDataObjectWrapper(PrismObject obj) { - return OrgTableDto.createDto(obj); - } - - @Override - public ObjectQuery getQuery() { - return createSearchQuery(); - } - }; - List> columns = initColumns(); - TablePanel table = new TablePanel(ID_TABLE, provider, columns); - table.setOutputMarkupId(true); - container.add(table); - - AjaxButton cancel = new AjaxButton(ID_CANCEL, - createStringResource("OrgUnitBrowser.cancel")) { - - @Override - public void onClick(AjaxRequestTarget target) { - cancelPerformed(target); - } - }; - container.add(cancel); - - AjaxButton createRoot = new AjaxButton(ID_CREATE_ROOT, - createStringResource("OrgUnitBrowser.createRoot")) { - - @Override - public void onClick(AjaxRequestTarget target) { - createRootPerformed(target); - } - }; - createRoot.add(new VisibleEnableBehaviour(){ - @Override - public boolean isVisible() { - return !isMovingRoot(); - } - }); - container.add(createRoot); - } - - private TablePanel getOrgUnitTablePanel(){ - String[] path = new String[]{getContentId(), ID_TABLE}; - return (TablePanel) get(StringUtils.join(path, ":")); - } - - private ObjectQuery createQueryFromSelected() { - if (selected == null) { - return null; - } - - Task task = getPageBase().createSimpleTask(OPERATION_LOAD_PARENT_ORG_REFS); - OperationResult result = task.getResult(); - List oids = new ArrayList<>(); - try { - for (OrgTableDto dto : selected) { - PrismObject object = WebModelServiceUtils.loadObject(dto.getType(), dto.getOid(), - WebModelServiceUtils.createOptionsForParentOrgRefs(), getPageBase(), task, result); - PrismReference parentRef = object.findReference(OrgType.F_PARENT_ORG_REF); - if (parentRef != null) { - for (PrismReferenceValue value : parentRef.getValues()) { - oids.add(value.getOid()); - } - } - } - } catch (Exception ex) { - LoggingUtils.logException(LOGGER, "Couldn't load parent org. refs for selected objects", ex); - result.recordFatalError("Couldn't load parent org. refs for selected objects.", ex); - } finally { - result.computeStatusIfUnknown(); - } - - //We must also exclude selected org. units from move options - for(OrgTableDto dto: selected){ - oids.add(dto.getOid()); - } - //exclude child org units - oids.addAll(getChildOrgOids()); - - ObjectFilter oidFilter = InOidFilter.createInOid(oids); - return ObjectQuery.createObjectQuery(NotFilter.createNot(oidFilter)); - } - - private List getChildOrgOids (){ - List childOrgsList = new ArrayList<>(); - for(OrgTableDto dto: selected){ - OperationResult result = new OperationResult(OPERATION_LOAD_CHILD_ORGS); - OrgFilter orgFilter = OrgFilter.createOrg(dto.getOid(), OrgFilter.Scope.SUBTREE); - List> list = WebModelServiceUtils.searchObjects(OrgType.class, ObjectQuery.createObjectQuery(orgFilter), - result, getPageBase()); - if (list != null && list.size() > 0){ - for (PrismObject prismObject : list){ - childOrgsList.add(prismObject.getOid()); - } - } - } - return childOrgsList; - } - - private List> initColumns() { - List> columns = new ArrayList<>(); - - columns.add(new LinkColumn(createStringResource("ObjectType.name"), "name") { - - @Override - public void onClick(AjaxRequestTarget target, IModel rowModel) { - rowSelected(target, rowModel, operation); - } - }); - columns.add(new PropertyColumn(createStringResource("OrgType.displayName"), - OrgTableDto.F_DISPLAY_NAME)); - columns.add(new PropertyColumn(createStringResource("OrgType.identifier"), - OrgTableDto.F_IDENTIFIER)); - - return columns; - } - - protected void createRootPerformed(AjaxRequestTarget target) { - - } - - protected void rowSelected(AjaxRequestTarget target, IModel row, Operation operation) { - - } - - protected ObjectQuery createSearchQuery(){ - OrgUnitSearchDto dto = searchModel.getObject(); - ObjectQuery query = null; - ObjectQuery moveQuery; - - if(StringUtils.isEmpty(dto.getText())){ - if(isMovingRoot()){ - moveQuery = createRootQuery(); - } else { - moveQuery = createQueryFromSelected(); - } - - return moveQuery != null ? moveQuery : null; - } - - try{ - PolyStringNormalizer normalizer = getPageBase().getPrismContext().getDefaultPolyStringNormalizer(); - String normalized = normalizer.normalize(dto.getText()); - - SubstringFilter substring = SubstringFilter.createSubstring(OrgType.F_NAME, OrgType.class, - getPageBase().getPrismContext(), PolyStringNormMatchingRule.NAME, normalized); - - if(isMovingRoot()){ - moveQuery = createRootQuery(); - } else { - moveQuery = createQueryFromSelected(); - } - - if(moveQuery != null){ - AndFilter and = AndFilter.createAnd(moveQuery.getFilter(), substring); - query = ObjectQuery.createObjectQuery(and); - } else { - query = ObjectQuery.createObjectQuery(substring); - } - - } catch (Exception e){ - error(getString("OrgUnitBrowser.message.queryError") + " " + e.getMessage()); - LoggingUtils.logException(LOGGER, "Couldn't create query filter.", e); - } - - return query; - } - - public ObjectQuery createRootQuery(){ - return null; - } - - private void searchPerformed(AjaxRequestTarget target) { - ObjectQuery query = createSearchQuery(); - target.add(get(ID_FEEDBACK)); - - TablePanel panel = getOrgUnitTablePanel(); - DataTable table = panel.getDataTable(); - ObjectDataProvider provider = (ObjectDataProvider) table.getDataProvider(); - provider.setQuery(query); - - UsersStorage storage = getPageBase().getSessionStorage().getUsers(); - storage.setOrgUnitSearch(searchModel.getObject()); - panel.setCurrentPage(storage.getOrgUnitPaging()); - - target.add(get(getContentId())); - target.add(panel); - } - - private void clearSearchPerformed(AjaxRequestTarget target){ - searchModel.setObject(new OrgUnitSearchDto()); - - TablePanel panel = getOrgUnitTablePanel(); - DataTable table = panel.getDataTable(); - ObjectDataProvider provider = (ObjectDataProvider) table.getDataProvider(); - provider.setQuery(null); - - UsersStorage storage = getPageBase().getSessionStorage().getUsers(); - storage.setOrgUnitSearch(searchModel.getObject()); - panel.setCurrentPage(storage.getOrgUnitPaging()); - - target.add(get(getContentId())); - target.add(panel); - } - - private void cancelPerformed(AjaxRequestTarget target) { - close(target); - } -} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/dto/OrgDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/dto/OrgDto.java deleted file mode 100644 index d322671de36..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/dto/OrgDto.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.evolveum.midpoint.web.page.admin.users.dto; - -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; - -import javax.xml.namespace.QName; - -/** - * @author lazyman - */ -public interface OrgDto { - - String getOid(); - - String getName(); - - QName getRelation(); - - Class getType(); -} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/dto/OrgTableDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/dto/OrgTableDto.java deleted file mode 100644 index 769a9cfbb53..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/dto/OrgTableDto.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (c) 2010-2013 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.page.admin.users.dto; - -import com.evolveum.midpoint.gui.api.util.WebComponentUtil; -import com.evolveum.midpoint.prism.PrismObject; -import com.evolveum.midpoint.prism.PrismReference; -import com.evolveum.midpoint.prism.PrismReferenceValue; -import com.evolveum.midpoint.prism.polystring.PolyString; -import com.evolveum.midpoint.schema.constants.SchemaConstants; -import com.evolveum.midpoint.web.component.data.column.InlineMenuable; -import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; -import com.evolveum.midpoint.web.component.util.Selectable; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType; - -import javax.xml.namespace.QName; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author lazyman - */ -public class OrgTableDto extends Selectable implements OrgDto, InlineMenuable { - - public static final String F_NAME = "name"; - public static final String F_DISPLAY_NAME = "displayName"; - public static final String F_IDENTIFIER = "identifier"; - public static final String F_DESCRIPTION = "description"; - public static final String F_OBJECT = "object"; - - private String oid; - private Class type; - - private String name; - private String displayName; - private QName relation; - private String identifier; - private String description; - private ObjectType object; - - public OrgTableDto(String oid, Class type) { - this.oid = oid; - this.type = type; - } - - public static OrgTableDto createDto(PrismObject object) { - OrgTableDto dto = new OrgTableDto(object.getOid(), object.getCompileTimeClass()); - dto.name = WebComponentUtil.getName(object); - dto.description = object.getPropertyRealValue(OrgType.F_DESCRIPTION, String.class); - dto.displayName = WebComponentUtil.getOrigStringFromPoly( - object.getPropertyRealValue(OrgType.F_DISPLAY_NAME, PolyString.class)); - dto.identifier = object.getPropertyRealValue(OrgType.F_IDENTIFIER, String.class); - - dto.relation = WebComponentUtil.isObjectOrgManager(object) ? SchemaConstants.ORG_MANAGER : null; - dto.object = object.asObjectable(); - - return dto; - } - - @Override - public String getOid() { - return oid; - } - - @Override - public Class getType() { - return type; - } - - @Override - public QName getRelation() { - return relation; - } - - public String getDescription() { - return description; - } - - public String getDisplayName() { - return displayName; - } - - public String getIdentifier() { - return identifier; - } - - @Override - public String getName() { - return name; - } - - public ObjectType getObject() { - return object; - } - - public void setObject(ObjectType object) { - this.object = object; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof OrgTableDto)) return false; - - OrgTableDto that = (OrgTableDto) o; - - if (description != null ? !description.equals(that.description) : that.description != null) return false; - if (displayName != null ? !displayName.equals(that.displayName) : that.displayName != null) return false; - if (identifier != null ? !identifier.equals(that.identifier) : that.identifier != null) return false; - if (name != null ? !name.equals(that.name) : that.name != null) return false; - if (object != null ? !object.equals(that.object) : that.object != null) return false; - if (oid != null ? !oid.equals(that.oid) : that.oid != null) return false; - if (relation != null ? !relation.equals(that.relation) : that.relation != null) return false; - if (type != null ? !type.equals(that.type) : that.type != null) return false; - - return true; - } - - @Override - public int hashCode() { - int result = oid != null ? oid.hashCode() : 0; - result = 31 * result + (type != null ? type.hashCode() : 0); - result = 31 * result + (name != null ? name.hashCode() : 0); - result = 31 * result + (displayName != null ? displayName.hashCode() : 0); - result = 31 * result + (relation != null ? relation.hashCode() : 0); - result = 31 * result + (identifier != null ? identifier.hashCode() : 0); - result = 31 * result + (description != null ? description.hashCode() : 0); - result = 31 * result + (object != null ? object.hashCode() : 0); - return result; - } - - @Override - public String toString() { - return "OrgTableDto{oid='" + oid + '\'' + ",name='" + name + '\'' - + ", type=" + (type != null ? type.getSimpleName() : null) + '}'; - } - - @Override - public List getMenuItems() { - return null; - } -} From a1fb6ec06a947267448d150dc78c3bd81003bc3f Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Tue, 26 Apr 2016 16:26:27 +0200 Subject: [PATCH 05/10] fixing MID-2874 - erro is displayed inthe "configuration popup" (above you setting the number of items per page).. --- .../web/component/data/BoxedTablePanel.html | 1 + .../web/component/data/BoxedTablePanel.java | 54 ++++++++++--------- .../data/TableConfigurationPanel.html | 4 ++ .../data/TableConfigurationPanel.java | 19 +++++-- 4 files changed, 49 insertions(+), 29 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BoxedTablePanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BoxedTablePanel.html index c111ff96ed7..f0c3d915a2b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BoxedTablePanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BoxedTablePanel.html @@ -17,6 +17,7 @@ +
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 a55a564af21..4a3646262e7 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 @@ -28,6 +28,7 @@ import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.navigation.paging.IPageable; +import org.apache.wicket.markup.html.panel.FeedbackPanel; import org.apache.wicket.markup.html.panel.Fragment; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.markup.repeater.data.DataViewBase; @@ -43,7 +44,7 @@ /** * @author Viliam Repan (lazyman) */ -public class BoxedTablePanel extends BasePanel implements Table { +public class BoxedTablePanel extends BasePanel implements Table { private static final long serialVersionUID = 1L; private static final String ID_BOX = "box"; @@ -86,9 +87,9 @@ private void initLayout(List> columns, ISortableDataProvider box.add(new AttributeModifier("class", boxCssClasses)); } add(box); - - WebMarkupContainer tableContainer = new WebMarkupContainer(ID_TABLE_CONTAINER); - tableContainer.setOutputMarkupId(true); + + WebMarkupContainer tableContainer = new WebMarkupContainer(ID_TABLE_CONTAINER); + tableContainer.setOutputMarkupId(true); DataTable table = new SelectableDataTable(ID_TABLE, columns, provider, pageSize) { @Override @@ -98,7 +99,7 @@ protected Item newRowItem(String id, int index, IModel rowModel) { } }; table.setOutputMarkupId(true); - tableContainer.add(table); + tableContainer.add(table); box.add(tableContainer); TableHeadersToolbar headersTop = new TableHeadersToolbar(table, provider); @@ -173,17 +174,16 @@ protected WebMarkupContainer createFooter(String footerId) { } public Component getFooterMenu() { - return ((PagingFooter)getFooter()).getFooterMenu(); + return ((PagingFooter) getFooter()).getFooterMenu(); } - public Component getFooterCountLabel() { - return ((PagingFooter)getFooter()).getFooterCountLabel(); + return ((PagingFooter) getFooter()).getFooterCountLabel(); } public Component getFooterPaging() { - return ((PagingFooter)getFooter()).getFooterPaging(); - } + return ((PagingFooter) getFooter()).getFooterPaging(); + } @Override public void setCurrentPage(ObjectPaging paging) { @@ -213,8 +213,8 @@ private void initLayout(final BoxedTablePanel boxedTablePanel, final Table table add(buttonToolbar); final DataTable dataTable = table.getDataTable(); - WebMarkupContainer footerContainer = new WebMarkupContainer(ID_FOOTER_CONTAINER); - footerContainer.setOutputMarkupId(true); + WebMarkupContainer footerContainer = new WebMarkupContainer(ID_FOOTER_CONTAINER); + footerContainer.setOutputMarkupId(true); final Label count = new Label(ID_COUNT, new AbstractReadOnlyModel() { @@ -233,7 +233,7 @@ protected void onPageChanged(AjaxRequestTarget target, long page) { target.add(count); } }; - footerContainer.add(nb2); + footerContainer.add(nb2); TableConfigurationPanel menu = new TableConfigurationPanel(ID_MENU) { @@ -249,22 +249,23 @@ protected void pageSizeChanged(AjaxRequestTarget target) { target.add(findParent(PagingFooter.class)); target.add((Component) table); } + }; - footerContainer.add(menu); - add(footerContainer); + footerContainer.add(menu); + add(footerContainer); } - public Component getFooterMenu(){ - return get(ID_FOOTER_CONTAINER).get(ID_MENU); - } + public Component getFooterMenu() { + return get(ID_FOOTER_CONTAINER).get(ID_MENU); + } - public Component getFooterCountLabel(){ - return get(ID_FOOTER_CONTAINER).get(ID_COUNT); - } + public Component getFooterCountLabel() { + return get(ID_FOOTER_CONTAINER).get(ID_COUNT); + } - public Component getFooterPaging(){ - return get(ID_FOOTER_CONTAINER).get(ID_PAGING); - } + public Component getFooterPaging() { + return get(ID_FOOTER_CONTAINER).get(ID_PAGING); + } private String createCountString(IPageable pageable) { long from = 0; @@ -298,7 +299,7 @@ private String createCountString(IPageable pageable) { return PageBase.createStringResourceStatic(PagingFooter.this, "CountToolbar.lable", new Object[] { from, to }).getString(); } - + return PageBase.createStringResourceStatic(PagingFooter.this, "CountToolbar.label", new Object[] { from, to, count }).getString(); @@ -307,7 +308,8 @@ private String createCountString(IPageable pageable) { // new Object[]{from, to, count}).getString(); } - return PageBase.createStringResourceStatic(PagingFooter.this, "CountToolbar.noFound", new Object[] {}) + return PageBase + .createStringResourceStatic(PagingFooter.this, "CountToolbar.noFound", new Object[] {}) .getString(); } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/TableConfigurationPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/TableConfigurationPanel.html index 1412840b1c2..67ea8111d6f 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/TableConfigurationPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/TableConfigurationPanel.html @@ -34,9 +34,13 @@

+
+ +
+
-
+ diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java index d41bc37a7c5..c326adff5df 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java @@ -84,50 +84,50 @@ /** * @author semancik */ -public class FocusProjectionsTabPanel - extends AbstractObjectTabPanel { +public class FocusProjectionsTabPanel extends AbstractObjectTabPanel { private static final long serialVersionUID = 1L; - + private static final String ID_SHADOW_LIST = "shadowList"; private static final String ID_SHADOWS = "shadows"; private static final String ID_SHADOW_HEADER = "shadowHeader"; private static final String ID_SHADOW = "shadow"; private static final String ID_SHADOW_MENU = "shadowMenu"; private static final String ID_SHADOW_CHECK_ALL = "shadowCheckAll"; - + private static final String MODAL_ID_RESOURCE = "resourcePopup"; - + private static final Trace LOGGER = TraceManager.getTrace(FocusProjectionsTabPanel.class); - + private LoadableModel>> projectionModel; - public FocusProjectionsTabPanel(String id, Form mainForm, LoadableModel> focusModel, + public FocusProjectionsTabPanel(String id, Form mainForm, LoadableModel> focusModel, LoadableModel>> projectionModel, PageBase page) { super(id, mainForm, focusModel, page); Validate.notNull(projectionModel, "Null projection model"); this.projectionModel = projectionModel; - initLayout(page ); + initLayout(page); } - + private void initLayout(final PageBase page) { final WebMarkupContainer shadows = new WebMarkupContainer(ID_SHADOWS); shadows.setOutputMarkupId(true); add(shadows); - + InlineMenu accountMenu = new InlineMenu(ID_SHADOW_MENU, new Model((Serializable) createShadowMenu())); shadows.add(accountMenu); - final ListView> projectionList = new ListView>(ID_SHADOW_LIST, - projectionModel) { + final ListView> projectionList = new ListView>( + ID_SHADOW_LIST, projectionModel) { private static final long serialVersionUID = 1L; @Override protected void populateItem(final ListItem> item) { PackageResourceReference packageRef; final FocusSubwrapperDto dto = item.getModelObject(); - final PropertyModel> objectWrapperModel = new PropertyModel>(item.getModel(), "object"); - + final PropertyModel> objectWrapperModel = new PropertyModel>( + item.getModel(), "object"); + final Panel shadowPanel; if (dto.isLoadedOK()) { @@ -152,7 +152,7 @@ public void onShowMorePerformed(AjaxRequestTarget target) { } shadowPanel.setOutputMarkupId(true); - + shadowPanel.add(new VisibleEnableBehaviour() { private static final long serialVersionUID = 1L; @@ -162,12 +162,13 @@ public boolean isVisible() { ObjectWrapper shadowWrapper = shadowWrapperDto.getObject(); return !shadowWrapper.isMinimalized(); } - + }); - + item.add(shadowPanel); - - CheckTableHeader shadowHeader = new CheckTableHeader(ID_SHADOW_HEADER, objectWrapperModel) { + + CheckTableHeader shadowHeader = new CheckTableHeader(ID_SHADOW_HEADER, + objectWrapperModel) { private static final long serialVersionUID = 1L; @Override @@ -201,7 +202,6 @@ protected void onUpdate(AjaxRequestTarget target) { shadows.add(projectionList); } - private void onExpandCollapse(AjaxRequestTarget target, IModel> dtoModel) { FocusSubwrapperDto shadowWrapperDto = dtoModel.getObject(); ObjectWrapper shadowWrapper = shadowWrapperDto.getObject(); @@ -209,7 +209,7 @@ private void onExpandCollapse(AjaxRequestTarget target, IModel wrapper = ObjectWrapperUtil.createObjectWrapper( - WebComponentUtil.getOrigStringFromPoly(resource.getName()), null, shadow.asPrismObject(), - ContainerStatus.ADDING, getPageBase()); + WebComponentUtil.getOrigStringFromPoly(resource.getName()), null, + shadow.asPrismObject(), ContainerStatus.ADDING, getPageBase()); if (wrapper.getResult() != null && !WebComponentUtil.isSuccessOrHandledError(wrapper.getResult())) { showResult(wrapper.getResult(), false); } wrapper.setShowEmpty(true); - wrapper.setMinimalized(false); + wrapper.setMinimalized(true); projectionModel.getObject().add(new FocusSubwrapperDto(wrapper, UserDtoStatus.ADD)); } catch (Exception ex) { error(getString("pageAdminFocus.message.couldntCreateAccount", resource.getName(), @@ -266,111 +267,120 @@ private void addSelectedAccountPerformed(AjaxRequestTarget target, List createShadowMenu() { List items = new ArrayList(); - PrismObjectDefinition def = getObjectWrapper().getObject().getDefinition(); - PrismReferenceDefinition ref = def.findReferenceDefinition(UserType.F_LINK_REF); - InlineMenuItem item ; - if (ref.canRead() && ref.canAdd()){ - item = new InlineMenuItem(createStringResource("pageAdminFocus.button.addShadow"), - new InlineMenuItemAction() { + PrismObjectDefinition def = getObjectWrapper().getObject().getDefinition(); + PrismReferenceDefinition ref = def.findReferenceDefinition(UserType.F_LINK_REF); + InlineMenuItem item; + if (ref.canRead() && ref.canAdd()) { + item = new InlineMenuItem(createStringResource("pageAdminFocus.button.addShadow"), + new InlineMenuItemAction() { private static final long serialVersionUID = 1L; @Override - public void onClick(AjaxRequestTarget target) { + public void onClick(AjaxRequestTarget target) { List supportedTypes = new ArrayList<>(1); supportedTypes.add(ResourceType.COMPLEX_TYPE); PageBase pageBase = FocusProjectionsTabPanel.this.getPageBase(); - FocusBrowserPanel resourceSelectionPanel = new FocusBrowserPanel(pageBase.getMainPopupBodyId(), ResourceType.class, supportedTypes, true, pageBase){ - + FocusBrowserPanel resourceSelectionPanel = new FocusBrowserPanel( + pageBase.getMainPopupBodyId(), ResourceType.class, supportedTypes, true, + pageBase) { + @Override protected void addPerformed(AjaxRequestTarget target, QName type, List selected) { // TODO Auto-generated method stub - FocusProjectionsTabPanel.this.addSelectedAccountPerformed(target, selected); + FocusProjectionsTabPanel.this.addSelectedAccountPerformed(target, + selected); } }; resourceSelectionPanel.setOutputMarkupId(true); - pageBase.showMainPopup(resourceSelectionPanel, new Model("Select resrouces"), target, 900, 700); - } - }); - items.add(item); - items.add(new InlineMenuItem()); - } - PrismPropertyDefinition prop = def.findPropertyDefinition(SchemaConstants.PATH_ACTIVATION_ADMINISTRATIVE_STATUS); - if (prop.canRead() && prop.canModify()) { - item = new InlineMenuItem(createStringResource("pageAdminFocus.button.enable"), - new InlineMenuItemAction() { + pageBase.showMainPopup(resourceSelectionPanel, + new Model("Select resrouces"), target, 900, 700); + } + }); + items.add(item); + items.add(new InlineMenuItem()); + } + PrismPropertyDefinition prop = def + .findPropertyDefinition(SchemaConstants.PATH_ACTIVATION_ADMINISTRATIVE_STATUS); + if (prop.canRead() && prop.canModify()) { + item = new InlineMenuItem(createStringResource("pageAdminFocus.button.enable"), + new InlineMenuItemAction() { private static final long serialVersionUID = 1L; @Override - public void onClick(AjaxRequestTarget target) { - updateShadowActivation(target, getSelectedProjections(projectionModel), true); - } - }); - items.add(item); - item = new InlineMenuItem(createStringResource("pageAdminFocus.button.disable"), - new InlineMenuItemAction() { - - /** + public void onClick(AjaxRequestTarget target) { + updateShadowActivation(target, getSelectedProjections(projectionModel), true); + } + }); + items.add(item); + item = new InlineMenuItem(createStringResource("pageAdminFocus.button.disable"), + new InlineMenuItemAction() { + + /** * */ private static final long serialVersionUID = 1L; @Override - public void onClick(AjaxRequestTarget target) { - updateShadowActivation(target, getSelectedProjections(projectionModel), false); - } - }); - items.add(item); - } - if (ref.canRead() && ref.canAdd()) { - item = new InlineMenuItem(createStringResource("pageAdminFocus.button.unlink"), - new InlineMenuItemAction() { + public void onClick(AjaxRequestTarget target) { + updateShadowActivation(target, getSelectedProjections(projectionModel), false); + } + }); + items.add(item); + } + if (ref.canRead() && ref.canAdd()) { + item = new InlineMenuItem(createStringResource("pageAdminFocus.button.unlink"), + new InlineMenuItemAction() { private static final long serialVersionUID = 1L; @Override - public void onClick(AjaxRequestTarget target) { - unlinkProjectionPerformed(target, projectionModel, getSelectedProjections(projectionModel), ID_SHADOWS); - } - }); - items.add(item); - } - prop = def.findPropertyDefinition(SchemaConstants.PATH_ACTIVATION_LOCKOUT_STATUS); - if (prop.canRead() && prop.canModify()) { - item = new InlineMenuItem(createStringResource("pageAdminFocus.button.unlock"), - new InlineMenuItemAction() { + public void onClick(AjaxRequestTarget target) { + unlinkProjectionPerformed(target, projectionModel, + getSelectedProjections(projectionModel), ID_SHADOWS); + } + }); + items.add(item); + } + prop = def.findPropertyDefinition(SchemaConstants.PATH_ACTIVATION_LOCKOUT_STATUS); + if (prop.canRead() && prop.canModify()) { + item = new InlineMenuItem(createStringResource("pageAdminFocus.button.unlock"), + new InlineMenuItemAction() { private static final long serialVersionUID = 1L; @Override - public void onClick(AjaxRequestTarget target) { - unlockShadowPerformed(target, projectionModel, getSelectedProjections(projectionModel)); - } - }); - items.add(item); - } - prop = def.findPropertyDefinition(SchemaConstants.PATH_ACTIVATION_ADMINISTRATIVE_STATUS); - if (prop.canRead() && prop.canModify()) { - items.add(new InlineMenuItem()); - item = new InlineMenuItem(createStringResource("pageAdminFocus.button.delete"), - new InlineMenuItemAction() { + public void onClick(AjaxRequestTarget target) { + unlockShadowPerformed(target, projectionModel, + getSelectedProjections(projectionModel)); + } + }); + items.add(item); + } + prop = def.findPropertyDefinition(SchemaConstants.PATH_ACTIVATION_ADMINISTRATIVE_STATUS); + if (prop.canRead() && prop.canModify()) { + items.add(new InlineMenuItem()); + item = new InlineMenuItem(createStringResource("pageAdminFocus.button.delete"), + new InlineMenuItemAction() { private static final long serialVersionUID = 1L; @Override - public void onClick(AjaxRequestTarget target) { - deleteProjectionPerformed(target, projectionModel); - } - }); - items.add(item); - } + public void onClick(AjaxRequestTarget target) { + deleteProjectionPerformed(target, projectionModel); + } + }); + items.add(item); + } return items; } - - private List> getSelectedProjections(IModel>> projectionModel) { + + private List> getSelectedProjections( + IModel>> projectionModel) { List> selected = new ArrayList<>(); List> all = projectionModel.getObject(); @@ -382,16 +392,17 @@ private List> getSelectedProjections(IModel>> model) { + + private void deleteProjectionPerformed(AjaxRequestTarget target, + IModel>> model) { if (!isAnyProjectionSelected(target, model)) { return; } showModalWindow(getDeleteProjectionPopupContent(), - createStringResource("pageAdminFocus.title.confirmDelete"), target); + createStringResource("pageAdminFocus.title.confirmDelete"), target); } - + private boolean isAnyProjectionSelected(AjaxRequestTarget target, IModel>> model) { List> selected = getSelectedProjections(model); @@ -404,8 +415,8 @@ private boolean isAnyProjectionSelected(AjaxRequestTarget target, return true; } - private void updateShadowActivation(AjaxRequestTarget target, List> accounts, - boolean enabled) { + private void updateShadowActivation(AjaxRequestTarget target, + List> accounts, boolean enabled) { if (!isAnyProjectionSelected(target, projectionModel)) { return; } @@ -416,7 +427,8 @@ private void updateShadowActivation(AjaxRequestTarget target, List wrapper = account.getObject(); - ContainerWrapper activation = wrapper.findContainerWrapper(new ItemPath(ShadowType.F_ACTIVATION)); + ContainerWrapper activation = wrapper + .findContainerWrapper(new ItemPath(ShadowType.F_ACTIVATION)); if (activation == null) { warn(getString("pageAdminFocus.message.noActivationFound", wrapper.getDisplayName())); continue; @@ -438,8 +450,9 @@ private void updateShadowActivation(AjaxRequestTarget target, List>> model, + + private void unlockShadowPerformed(AjaxRequestTarget target, + IModel>> model, List> selected) { if (!isAnyProjectionSelected(target, model)) { return; @@ -449,9 +462,10 @@ private void unlockShadowPerformed(AjaxRequestTarget target, IModel>> model, - List> selected, String componentPath) { + + private void unlinkProjectionPerformed(AjaxRequestTarget target, + IModel>> model, List> selected, + String componentPath) { if (!isAnyProjectionSelected(target, model)) { return; } @@ -465,42 +479,42 @@ private void unlinkProjectionPerformed(AjaxRequestTarget target, IModel() { + private Component getDeleteProjectionPopupContent() { + ConfirmationPanel dialog = new ConfirmationPanel(getPageBase().getMainPopupBodyId(), + new AbstractReadOnlyModel() { private static final long serialVersionUID = 1L; @Override - public String getObject() { - return createStringResource("pageAdminFocus.message.deleteAccountConfirm", - getSelectedProjections(projectionModel).size()).getString(); - } - }) { - private static final long serialVersionUID = 1L; + public String getObject() { + return createStringResource("pageAdminFocus.message.deleteAccountConfirm", + getSelectedProjections(projectionModel).size()).getString(); + } + }) { + private static final long serialVersionUID = 1L; @Override - public void yesPerformed(AjaxRequestTarget target) { - ModalWindow modalWindow = findParent(ModalWindow.class); - if (modalWindow != null) { - modalWindow.close(target); - deleteAccountConfirmedPerformed(target, getSelectedProjections(projectionModel)); - } - } - }; - return dialog; - } - - private void deleteAccountConfirmedPerformed(AjaxRequestTarget target, - List> selected) { - List> accounts = projectionModel.getObject(); - for (FocusSubwrapperDto account : selected) { - if (UserDtoStatus.ADD.equals(account.getStatus())) { - accounts.remove(account); - } else { - account.setStatus(UserDtoStatus.DELETE); - } - } - target.add(get(createComponentPath(ID_SHADOWS))); - } + public void yesPerformed(AjaxRequestTarget target) { + ModalWindow modalWindow = findParent(ModalWindow.class); + if (modalWindow != null) { + modalWindow.close(target); + deleteAccountConfirmedPerformed(target, getSelectedProjections(projectionModel)); + } + } + }; + return dialog; + } + + private void deleteAccountConfirmedPerformed(AjaxRequestTarget target, + List> selected) { + List> accounts = projectionModel.getObject(); + for (FocusSubwrapperDto account : selected) { + if (UserDtoStatus.ADD.equals(account.getStatus())) { + accounts.remove(account); + } else { + account.setStatus(UserDtoStatus.DELETE); + } + } + target.add(get(createComponentPath(ID_SHADOWS))); + } } From 86f8f0d2dbc05c1cb8ca652963fc5c98c0d02f5d Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Tue, 26 Apr 2016 18:23:53 +0200 Subject: [PATCH 09/10] Password change styles. Some cleanup. --- .../component/password}/PasswordPanel.html | 2 +- .../component/password}/PasswordPanel.java | 5 +- .../assignment/ACAttributeValuePanel.java | 2 +- .../web/component/prism/PrismValuePanel.java | 1 + .../midpoint/web/page/self/PageSelf.java | 18 ++++- .../web/page/self/PageSelfCredentials.html | 4 +- .../web/page/self/PageSelfCredentials.java | 29 ++++++- .../self/component/ChangePasswordPanel.html | 35 ++++---- .../self/component/ChangePasswordPanel.java | 79 ++++++++++++------- .../src/main/webapp/less/midpoint-theme.less | 18 +++++ 10 files changed, 138 insertions(+), 55 deletions(-) rename gui/admin-gui/src/main/java/com/evolveum/midpoint/{web/component/input => gui/api/component/password}/PasswordPanel.html (97%) rename gui/admin-gui/src/main/java/com/evolveum/midpoint/{web/component/input => gui/api/component/password}/PasswordPanel.java (98%) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/PasswordPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/password/PasswordPanel.html similarity index 97% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/PasswordPanel.html rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/password/PasswordPanel.html index 4fa1c64a126..24cee6a55d1 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/PasswordPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/password/PasswordPanel.html @@ -1,5 +1,5 @@ User - SAP Role mapping true + sapRole extension/sapRoles - sapRole + + $user/extension/sapLastLogonDate + @@ -339,14 +354,14 @@ - - name - + + name + @@ -391,14 +406,14 @@ - - name - + + name + @@ -443,14 +458,14 @@ - - name - + + name +