diff --git a/.travis.yml b/.travis.yml index 3d9427f70a9..97f8677c51c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,2 +1,5 @@ language: java script: "travis_wait 70 mvn clean install" +jdk: + - openjdk7 + - oraclejdk7 diff --git a/build-system/pom.xml b/build-system/pom.xml index 9a00320415f..8cf57ea20ad 100644 --- a/build-system/pom.xml +++ b/build-system/pom.xml @@ -1513,6 +1513,9 @@ java8 + + [1.8,) + diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java index c6d69acada9..390214d8f61 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java @@ -109,4 +109,5 @@ public class GuiStyleConstants { public static final String CLASS_BADGE_ACTIVE = "badge-active"; public static final String CLASS_BADGE_PASSIVE = "badge-passive"; + } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java index 0acee892391..859eb4fc2c9 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java @@ -32,6 +32,7 @@ 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.LinkColumn; +import com.evolveum.midpoint.web.component.data.column.ObjectNameColumn; import com.evolveum.midpoint.web.component.util.SelectableBean; import com.evolveum.midpoint.web.page.admin.configuration.PageImportObject; import com.evolveum.midpoint.web.session.UserProfileStorage.TableId; @@ -40,8 +41,7 @@ /** * @author katkav */ -public abstract class MainObjectListPanel extends ObjectListPanel { - +public abstract class MainObjectListPanel extends ObjectListPanel { private static final long serialVersionUID = 1L; private static final String ID_REFRESH = "refresh"; @@ -49,31 +49,29 @@ public abstract class MainObjectListPanel extends ObjectLi private static final String ID_IMPORT_OBJECT = "importObject"; private static final String ID_BUTTON_BAR = "buttonBar"; - public MainObjectListPanel(String id, Class type, TableId tableId, Collection> options, PageBase parentPage) { + public MainObjectListPanel(String id, Class type, TableId tableId, Collection> options, PageBase parentPage) { super(id, type, tableId, options, parentPage); } @Override - protected IColumn, String> createCheckboxColumn() { + protected IColumn, String> createCheckboxColumn() { return new CheckBoxHeaderColumn<>(); } @Override - protected IColumn, String> createNameColumn() { - return new LinkColumn>(createStringResource("ObjectType.name"), - ObjectType.F_NAME.getLocalPart(), SelectableBean.F_VALUE + ".name") { - + protected IColumn, String> createNameColumn() { + return new ObjectNameColumn(createStringResource("ObjectType.name")) { private static final long serialVersionUID = 1L; @Override - public void onClick(AjaxRequestTarget target, IModel> rowModel) { - T object = rowModel.getObject().getValue(); + public void onClick(AjaxRequestTarget target, IModel> rowModel) { + O object = rowModel.getObject().getValue(); MainObjectListPanel.this.objectDetailsPerformed(target, object); } }; } - protected abstract void objectDetailsPerformed(AjaxRequestTarget target, T object); + protected abstract void objectDetailsPerformed(AjaxRequestTarget target, O object); protected abstract void newObjectPerformed(AjaxRequestTarget target); 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 c4db4aeb2cd..88123c98408 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 @@ -39,7 +39,7 @@ import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.data.BaseSortableDataProvider; import com.evolveum.midpoint.web.component.data.BoxedTablePanel; -import com.evolveum.midpoint.web.component.data.ObjectDataProvider2; +import com.evolveum.midpoint.web.component.data.SelectableBeanObjectDataProvider; 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; @@ -63,7 +63,7 @@ /** * @author katkav */ -public abstract class ObjectListPanel extends BasePanel { +public abstract class ObjectListPanel extends BasePanel { private static final long serialVersionUID = 1L; private static final String ID_MAIN_FORM = "mainForm"; @@ -72,12 +72,12 @@ public abstract class ObjectListPanel extends BasePanel private static final Trace LOGGER = TraceManager.getTrace(ObjectListPanel.class); - private Class type; + private Class type; private PageBase parentPage; private LoadableModel searchModel; - private BaseSortableDataProvider> provider; + private BaseSortableDataProvider> provider; private Collection> options; @@ -87,7 +87,7 @@ public abstract class ObjectListPanel extends BasePanel private String addutionalBoxCssClasses; - public Class getType() { + public Class getType() { return type; } @@ -113,7 +113,7 @@ public Class getType() { // tablePagingMap.put(PageUsers.class, TableId.TABLE_USERS); // } - public ObjectListPanel(String id, Class type, TableId tableId, Collection> options, + public ObjectListPanel(String id, Class type, TableId tableId, Collection> options, PageBase parentPage) { super(id); this.type = type; @@ -123,7 +123,7 @@ public ObjectListPanel(String id, Class type, TableId tableId, Collection type, boolean multiselect, PageBase parentPage) { + ObjectListPanel(String id, Class type, boolean multiselect, PageBase parentPage) { super(id); this.type = type; this.parentPage = parentPage; @@ -135,14 +135,14 @@ public boolean isMultiselect() { return multiselect; } - public void setProvider(BaseSortableDataProvider> provider) { + public void setProvider(BaseSortableDataProvider> provider) { this.provider = provider; } - public List getSelectedObjects() { - BaseSortableDataProvider> dataProvider = getDataProvider(); - if (dataProvider instanceof ObjectDataProvider2) { - return ((ObjectDataProvider2) dataProvider).getSelectedData(); + public List getSelectedObjects() { + BaseSortableDataProvider> dataProvider = getDataProvider(); + if (dataProvider instanceof SelectableBeanObjectDataProvider) { + return ((SelectableBeanObjectDataProvider) dataProvider).getSelectedData(); } else if (dataProvider instanceof ListDataProvider2) { return ((ListDataProvider2) dataProvider).getSelectedObjects(); } @@ -150,7 +150,7 @@ public List getSelectedObjects() { } private void initLayout() { - Form mainForm = new Form(ID_MAIN_FORM); + Form mainForm = new Form(ID_MAIN_FORM); add(mainForm); searchModel = new LoadableModel(false) { @@ -174,17 +174,19 @@ public Search load() { } }; - BoxedTablePanel> table = createTable(); + BoxedTablePanel> table = createTable(); mainForm.add(table); } - protected BaseSortableDataProvider> getProvider() { + protected BaseSortableDataProvider> getProvider() { if (provider != null) { return provider; } - ObjectDataProvider2, T> objProvider = new ObjectDataProvider2, T>( + SelectableBeanObjectDataProvider objProvider = new SelectableBeanObjectDataProvider( parentPage, type) { + private static final long serialVersionUID = 1L; + @Override protected void saveProviderPaging(ObjectQuery query, ObjectPaging paging) { String storageKey = getStorageKey(); @@ -197,8 +199,8 @@ protected void saveProviderPaging(ObjectQuery query, ObjectPaging paging) { } @Override - public SelectableBean createDataObjectWrapper(T obj) { - SelectableBean bean = super.createDataObjectWrapper(obj); + public SelectableBean createDataObjectWrapper(O obj) { + SelectableBean bean = super.createDataObjectWrapper(obj); List inlineMenu = createInlineMenu(); if (inlineMenu != null) { bean.getMenuItems().addAll(inlineMenu); @@ -221,13 +223,13 @@ public SelectableBean createDataObjectWrapper(T obj) { return provider; } - private BoxedTablePanel> createTable() { - List, String>> columns = initColumns(); + private BoxedTablePanel> createTable() { + List, String>> columns = initColumns(); provider = getProvider(); provider.setQuery(getQuery()); // TableId tableId = tablePagingMap.get(parentPage.getClass()); - BoxedTablePanel> table = new BoxedTablePanel>(ID_TABLE, provider, + BoxedTablePanel> table = new BoxedTablePanel>(ID_TABLE, provider, columns, tableId, tableId == null ? 10 : parentPage.getSessionStorage().getUserProfile().getPagingSize(tableId)) { private static final long serialVersionUID = 1L; @@ -276,16 +278,16 @@ protected WebMarkupContainer createTableButtonToolbar(String id) { return null; } - private BaseSortableDataProvider> getDataProvider() { - BoxedTablePanel> table = getTable(); - BaseSortableDataProvider> provider = (BaseSortableDataProvider>) table + private BaseSortableDataProvider> getDataProvider() { + BoxedTablePanel> table = getTable(); + BaseSortableDataProvider> provider = (BaseSortableDataProvider>) table .getDataTable().getDataProvider(); return provider; } - protected BoxedTablePanel> getTable() { - return (BoxedTablePanel>) get(createComponentPath(ID_MAIN_FORM, ID_TABLE)); + protected BoxedTablePanel> getTable() { + return (BoxedTablePanel>) get(createComponentPath(ID_MAIN_FORM, ID_TABLE)); } private String getStorageKey() { @@ -301,7 +303,7 @@ private PageStorage getPageStorage(String storageKey){ } private void searchPerformed(ObjectQuery query, AjaxRequestTarget target) { - BaseSortableDataProvider> provider = getDataProvider(); + BaseSortableDataProvider> provider = getDataProvider(); provider.setQuery(query); String storageKey = getStorageKey(); if (StringUtils.isNotEmpty(storageKey)) { @@ -319,11 +321,11 @@ private void searchPerformed(ObjectQuery query, AjaxRequestTarget target) { } - public void refreshTable(Class newType, AjaxRequestTarget target) { - BaseSortableDataProvider> provider = getDataProvider(); + public void refreshTable(Class newType, AjaxRequestTarget target) { + BaseSortableDataProvider> provider = getDataProvider(); provider.setQuery(getQuery()); - if (newType != null && provider instanceof ObjectDataProvider2) { - ((ObjectDataProvider2) provider).setType(newType); + if (newType != null && provider instanceof SelectableBeanObjectDataProvider) { + ((SelectableBeanObjectDataProvider) provider).setType(newType); } if (newType != null && !this.type.equals(newType)) { @@ -372,8 +374,8 @@ private void saveSearchModel() { public void clearCache() { BaseSortableDataProvider provider = getDataProvider(); provider.clearCache(); - if (provider instanceof ObjectDataProvider2) { - ((ObjectDataProvider2) provider).clearSelectedObjects(); + if (provider instanceof SelectableBeanObjectDataProvider) { + ((SelectableBeanObjectDataProvider) provider).clearSelectedObjects(); } } @@ -398,35 +400,35 @@ public StringResourceModel createStringResource(String resourceKey, Object... ob return PageBase.createStringResourceStatic(this, resourceKey, objects); } - protected abstract IColumn, String> createCheckboxColumn(); + protected abstract IColumn, String> createCheckboxColumn(); - protected abstract IColumn, String> createNameColumn(); + protected abstract IColumn, String> createNameColumn(); - protected abstract List, String>> createColumns(); + protected abstract List, String>> createColumns(); protected abstract List createInlineMenu(); - protected List, String>> initColumns() { - List, String>> columns = new ArrayList, String>>(); + protected List, String>> initColumns() { + List, String>> columns = new ArrayList, String>>(); - CheckBoxHeaderColumn> checkboxColumn = (CheckBoxHeaderColumn>) createCheckboxColumn(); + CheckBoxHeaderColumn> checkboxColumn = (CheckBoxHeaderColumn>) createCheckboxColumn(); if (checkboxColumn != null) { columns.add(checkboxColumn); } - IColumn, String> iconColumn = ColumnUtils.createIconColumn(type); + IColumn, String> iconColumn = ColumnUtils.createIconColumn(type); columns.add(iconColumn); - IColumn, String> nameColumn = createNameColumn(); + IColumn, String> nameColumn = createNameColumn(); columns.add(nameColumn); - List, String>> others = createColumns(); + List, String>> others = createColumns(); columns.addAll(others); return columns; } - public void addPerformed(AjaxRequestTarget target, List selected) { + public void addPerformed(AjaxRequestTarget target, List selected) { parentPage.hideMainPopup(target); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/result/OpResult.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/result/OpResult.java index 8460d076b23..866f8841e90 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/result/OpResult.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/result/OpResult.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 Evolveum + * 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. @@ -258,4 +258,22 @@ public void accept(Visitor visitor) { } } + + public void setShowMoreAll(final boolean show) { + Visitor visitor = new Visitor() { + + @Override + public void visit(Visitable visitable) { + if (!(visitable instanceof OpResult)) { + return; + } + + OpResult result = (OpResult) visitable; + result.setShowMore(show); + + } + }; + + accept(visitor); + } } 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 9ee6bece8b6..e3723c4859f 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,5 +1,5 @@ /* - * Copyright (c) 2010-2014 Evolveum + * 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. @@ -56,6 +56,7 @@ * @author katkav */ public class OperationResultPanel extends BasePanel { + private static final long serialVersionUID = 1L; private static final String ID_DETAILS_BOX = "detailsBox"; private static final String ID_ICON_TYPE = "iconType"; @@ -90,9 +91,11 @@ public void initLayout() { private void initHeader(WebMarkupContainer box) { WebMarkupContainer iconType = new WebMarkupContainer(ID_ICON_TYPE); iconType.setOutputMarkupId(true); - iconType.add(new AttributeAppender("class", new AbstractReadOnlyModel() { + iconType.add(new AttributeAppender("class", new AbstractReadOnlyModel() { + private static final long serialVersionUID = 1L; + @Override - public Object getObject() { + public String getObject() { StringBuilder sb = new StringBuilder(); OpResult message = getModelObject(); @@ -124,8 +127,7 @@ public Object getObject() { Label message = createMessage(); - AjaxLink showMore = new AjaxLink(ID_MESSAGE) { - + AjaxLink showMore = new AjaxLink(ID_MESSAGE) { private static final long serialVersionUID = 1L; @Override @@ -139,8 +141,7 @@ public void onClick(AjaxRequestTarget target) { showMore.add(message); box.add(showMore); - AjaxLink backgroundTask = new AjaxLink(ID_BACKGROUND_TASK) { - + AjaxLink backgroundTask = new AjaxLink(ID_BACKGROUND_TASK) { private static final long serialVersionUID = 1L; @Override @@ -155,6 +156,8 @@ public void onClick(AjaxRequestTarget target) { } }; backgroundTask.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; + @Override public boolean isVisible() { return getModelObject().getBackgroundTaskOid() != null @@ -163,8 +166,7 @@ public boolean isVisible() { }); box.add(backgroundTask); - AjaxLink showAll = new AjaxLink(ID_SHOW_ALL) { - + AjaxLink showAll = new AjaxLink(ID_SHOW_ALL) { private static final long serialVersionUID = 1L; @Override @@ -173,7 +175,8 @@ public void onClick(AjaxRequestTarget target) { } }; showAll.add(new VisibleEnableBehaviour() { - + private static final long serialVersionUID = 1L; + @Override public boolean isVisible() { return !OperationResultPanel.this.getModelObject().isShowMore(); @@ -182,8 +185,7 @@ public boolean isVisible() { box.add(showAll); - AjaxLink hideAll = new AjaxLink(ID_HIDE_ALL) { - + AjaxLink hideAll = new AjaxLink(ID_HIDE_ALL) { private static final long serialVersionUID = 1L; @Override @@ -192,7 +194,8 @@ public void onClick(AjaxRequestTarget target) { } }; hideAll.add(new VisibleEnableBehaviour() { - + private static final long serialVersionUID = 1L; + @Override public boolean isVisible() { return OperationResultPanel.this.getModelObject().isShowMore(); @@ -201,8 +204,7 @@ public boolean isVisible() { box.add(hideAll); - AjaxLink close = new AjaxLink("close") { - + AjaxLink close = new AjaxLink("close") { private static final long serialVersionUID = 1L; @Override @@ -215,6 +217,7 @@ public void onClick(AjaxRequestTarget target) { box.add(close); DownloadLink downloadXml = new DownloadLink("downloadXml", new AbstractReadOnlyModel() { + private static final long serialVersionUID = 1L; @Override public File getObject() { @@ -249,6 +252,7 @@ private Label createMessage() { message = new Label(ID_MESSAGE_LABEL, messageModel); } else { message = new Label(ID_MESSAGE_LABEL, new LoadableModel() { + private static final long serialVersionUID = 1L; @Override protected Object load() { @@ -269,6 +273,7 @@ private void initDetails(WebMarkupContainer box) { final WebMarkupContainer details = new WebMarkupContainer("details", getModel()); details.setOutputMarkupId(true); details.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; @Override public boolean isVisible() { @@ -281,6 +286,8 @@ public boolean isVisible() { WebMarkupContainer operationPanel = new WebMarkupContainer("type"); operationPanel.setOutputMarkupId(true); operationPanel.add(new AttributeAppender("class", new LoadableModel() { + private static final long serialVersionUID = 1L; + @Override protected String load() { return getLabelCss(getModel()); @@ -294,6 +301,7 @@ protected String load() { operationPanel.add(operationLabel); Label operation = new Label("operation", new LoadableModel() { + private static final long serialVersionUID = 1L; @Override protected Object load() { @@ -308,6 +316,7 @@ protected Object load() { Label count = new Label("countLabel", getString("FeedbackAlertMessageDetails.count")); count.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; @Override public boolean isVisible() { @@ -325,6 +334,7 @@ public boolean isVisible() { message.setOutputMarkupId(true); message.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; @Override public boolean isVisible() { @@ -338,6 +348,7 @@ public boolean isVisible() { messageLabel.setOutputMarkupId(true); messageLabel.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; @Override public boolean isVisible() { @@ -357,6 +368,7 @@ private void initParams(WebMarkupContainer operationContent, final IModel params = new ListView("params", createParamsModel(model)) { + private static final long serialVersionUID = 1L; @Override protected void populateItem(ListItem item) { @@ -376,6 +389,7 @@ protected void populateItem(ListItem item) { }; params.setOutputMarkupId(true); params.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; @Override public boolean isVisible() { @@ -386,6 +400,7 @@ public boolean isVisible() { operationContent.add(params); ListView subresults = new ListView("subresults", createSubresultsModel(model)) { + private static final long serialVersionUID = 1L; @Override protected void populateItem(final ListItem item) { @@ -396,6 +411,7 @@ protected void populateItem(final ListItem item) { }; subresults.setOutputMarkupId(true); subresults.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; @Override public boolean isVisible() { @@ -412,6 +428,7 @@ private void initContexts(WebMarkupContainer operationContent, final IModel contexts = new ListView("contexts", createContextsModel(model)) { + private static final long serialVersionUID = 1L; + @Override protected void populateItem(ListItem item) { item.add(new Label("contextName", new PropertyModel(item.getModel(), "name"))); @@ -430,6 +449,7 @@ protected void populateItem(ListItem item) { }; contexts.setOutputMarkupId(true); contexts.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; @Override public boolean isVisible() { @@ -442,6 +462,7 @@ public boolean isVisible() { private void initError(WebMarkupContainer operationPanel, final IModel model) { Label errorLabel = new Label("errorLabel", getString("FeedbackAlertMessageDetails.error")); errorLabel.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; @Override public boolean isVisible() { @@ -455,6 +476,7 @@ public boolean isVisible() { Label errorMessage = new Label("errorMessage", new PropertyModel(model, "exceptionMessage")); errorMessage.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; @Override public boolean isVisible() { @@ -469,6 +491,7 @@ public boolean isVisible() { final Label errorStackTrace = new Label("errorStackTrace", new PropertyModel(model, "exceptionsStackTrace")); errorStackTrace.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; @Override public boolean isVisible() { @@ -481,6 +504,7 @@ public boolean isVisible() { operationPanel.add(errorStackTrace); AjaxLink errorStackTraceLink = new AjaxLink("errorStackTraceLink") { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { @@ -491,6 +515,7 @@ public void onClick(AjaxRequestTarget target) { }; errorStackTraceLink.setOutputMarkupId(true); errorStackTraceLink.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; @Override public boolean isVisible() { @@ -505,6 +530,7 @@ public boolean isVisible() { private Label initCountPanel(final IModel model) { Label count = new Label("count", new PropertyModel(model, "count")); count.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; @Override public boolean isVisible() { @@ -516,31 +542,15 @@ public boolean isVisible() { } - private void showHideAll(final boolean show, OpResult object, AjaxRequestTarget target) { - - Visitor visitor = new Visitor() { - - @Override - public void visit(Visitable visitable) { - if (!(visitable instanceof OpResult)) { - return; - } - - OpResult result = (OpResult) visitable; - result.setShowMore(show); - - } - }; - - object.accept(visitor); - + private void showHideAll(final boolean show, OpResult opresult, AjaxRequestTarget target) { + opresult.setShowMoreAll(show); target.add(OperationResultPanel.this); - } private IModel createHeaderCss() { return new AbstractReadOnlyModel() { + private static final long serialVersionUID = 1L; @Override public String getObject() { @@ -573,6 +583,7 @@ public String getObject() { static IModel> createParamsModel(final IModel model) { return new LoadableModel>(false) { + private static final long serialVersionUID = 1L; @Override protected List load() { @@ -584,6 +595,7 @@ protected List load() { static IModel> createContextsModel(final IModel model) { return new LoadableModel>(false) { + private static final long serialVersionUID = 1L; @Override protected List load() { @@ -595,6 +607,7 @@ protected List load() { private IModel> createSubresultsModel(final IModel model) { return new LoadableModel>(false) { + private static final long serialVersionUID = 1L; @Override protected List load() { 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 2195e498b70..b02396a8e05 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 @@ -684,19 +684,19 @@ public static StringResourceModel createStringResourceStatic(Component component .setDefaultValue(resourceKey).setParameters(objects); } - public void showResult(OperationResult result, String errorMessageKey) { - showResult(result, errorMessageKey, true); + public OpResult showResult(OperationResult result, String errorMessageKey) { + return showResult(result, errorMessageKey, true); } - public void showResult(OperationResult result, boolean showSuccess) { - showResult(result, null, showSuccess); + public OpResult showResult(OperationResult result, boolean showSuccess) { + return showResult(result, null, showSuccess); } - public void showResult(OperationResult result) { - showResult(result, null, true); + public OpResult showResult(OperationResult result) { + return showResult(result, null, true); } - public void showResult(OperationResult result, String errorMessageKey, boolean showSuccess) { + public OpResult showResult(OperationResult result, String errorMessageKey, boolean showSuccess) { Validate.notNull(result, "Operation result must not be null."); Validate.notNull(result.getStatus(), "Operation result status must not be null."); @@ -725,7 +725,7 @@ public void showResult(OperationResult result, String errorMessageKey, boolean s getSession().warn(opResult); } - + return opResult; } 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 2c6b2d2e0bb..b9d6f19d394 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 @@ -99,12 +99,14 @@ 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.result.OperationResultStatus; import com.evolveum.midpoint.schema.util.ObjectTypeUtil; import com.evolveum.midpoint.schema.util.ShadowUtil; import com.evolveum.midpoint.security.api.AuthorizationConstants; import com.evolveum.midpoint.security.api.MidPointPrincipal; import com.evolveum.midpoint.task.api.TaskCategory; import com.evolveum.midpoint.util.DOMUtil; +import com.evolveum.midpoint.util.DebugUtil; import com.evolveum.midpoint.util.DisplayableValue; import com.evolveum.midpoint.util.QNameUtil; import com.evolveum.midpoint.util.exception.SchemaException; @@ -124,6 +126,7 @@ import com.evolveum.midpoint.web.page.admin.resources.PageResource; import com.evolveum.midpoint.web.page.admin.roles.PageRole; import com.evolveum.midpoint.web.page.admin.server.PageTaskEdit; +import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusPresentationProperties; import com.evolveum.midpoint.web.page.admin.users.PageOrgUnit; import com.evolveum.midpoint.web.page.admin.users.PageUser; import com.evolveum.midpoint.web.security.MidPointApplication; @@ -149,6 +152,7 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ScheduleType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ServiceType; +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.SystemObjectsType; import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskBindingType; @@ -508,10 +512,17 @@ public static String getEffectiveName(PrismObject obje PrismProperty prop = object.findProperty(propertyName); - if (prop!= null && prop.getDefinition().getTypeName().equals(DOMUtil.XSD_STRING)){ - return (String) prop.getRealValue(); + if (prop!= null){ + Object realValue = prop.getRealValue(); + if (prop.getDefinition().getTypeName().equals(DOMUtil.XSD_STRING)){ + return (String) realValue; + } else if (realValue instanceof PolyString){ + return WebComponentUtil.getOrigStringFromPoly((PolyString)realValue); + } } + + PolyString name = getValue(object, ObjectType.F_NAME, PolyString.class); return name != null ? name.getOrig() : null; @@ -1001,7 +1012,12 @@ public static String createShadowIcon(PrismObject object) { return GuiStyleConstants.CLASS_SHADOW_ICON_PROTECTED; } - switch (shadow.getKind()){ + ShadowKindType kind = shadow.getKind(); + if (kind == null) { + return GuiStyleConstants.CLASS_SHADOW_ICON_UNKNOWN; + } + + switch (kind){ case ACCOUNT: return GuiStyleConstants.CLASS_SHADOW_ICON_ACCOUNT; case GENERIC: @@ -1010,6 +1026,7 @@ public static String createShadowIcon(PrismObject object) { return GuiStyleConstants.CLASS_SHADOW_ICON_ENTITLEMENT; } + return GuiStyleConstants.CLASS_SHADOW_ICON_UNKNOWN; } @@ -1034,6 +1051,12 @@ public static String createUserIconTitle(PrismObject object) { return null; } + + public static String createErrorIcon(OperationResult result) { + OperationResultStatus status = result.getStatus(); + OperationResultStatusPresentationProperties icon = OperationResultStatusPresentationProperties.parseOperationalResultStatus(status); + return icon.getIcon(); + } public static double getSystemLoad() { com.sun.management.OperatingSystemMXBean operatingSystemMXBean = (com.sun.management.OperatingSystemMXBean) ManagementFactory @@ -1393,4 +1416,20 @@ public static Component createHelp(String id) { return helpLabel; } + public static String debugDumpComponentTree(Component c) { + StringBuilder sb = new StringBuilder(); + debugDumpComponentTree(sb, c, 0); + return sb.toString(); + + } + + private static void debugDumpComponentTree(StringBuilder sb, Component c, int level) { + DebugUtil.indentDebugDump(sb, level); + sb.append(c).append("\n"); + if (c instanceof MarkupContainer) { + for (Component sub: (MarkupContainer)c) { + debugDumpComponentTree(sb, sub, level + 1); + } + } + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorDto.java index 429e884432e..9e13dc56bf5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorDto.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorDto.java @@ -16,11 +16,24 @@ package com.evolveum.midpoint.web.component.assignment; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.apache.commons.lang.Validate; + import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition; import com.evolveum.midpoint.common.refinery.RefinedResourceSchema; import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; -import com.evolveum.midpoint.prism.*; +import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; +import com.evolveum.midpoint.prism.Item; +import com.evolveum.midpoint.prism.ItemDefinition; +import com.evolveum.midpoint.prism.PrismContainerDefinition; +import com.evolveum.midpoint.prism.PrismContainerValue; +import com.evolveum.midpoint.prism.PrismContext; +import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.prism.PrismPropertyDefinition; import com.evolveum.midpoint.prism.util.ItemPathUtil; import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.result.OperationResult; @@ -32,13 +45,19 @@ import com.evolveum.midpoint.web.component.util.SelectableBean; import com.evolveum.midpoint.web.page.admin.dto.ObjectViewDto; import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus; -import com.evolveum.midpoint.xml.ns._public.common.common_3.*; - -import org.apache.commons.lang.Validate; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; +import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ConstructionType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ExtensionType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.LayerType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceAttributeDefinitionType; +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.ShadowKindType; /** * @author lazyman @@ -72,11 +91,12 @@ public class AssignmentEditorDto extends SelectableBean implements Comparable attributes; + private PageBase pageBase; public AssignmentEditorDto(UserDtoStatus status, AssignmentType assignment, PageBase pageBase) { Validate.notNull(status, "User dto status must not be null."); @@ -86,6 +106,7 @@ public AssignmentEditorDto(UserDtoStatus status, AssignmentType assignment, Page Validate.notNull(type, "Type must not be null."); this.status = status; this.oldAssignment = assignment; + this.pageBase = pageBase; PrismContainerValue value = oldAssignment.asPrismContainerValue(); @@ -100,13 +121,13 @@ public AssignmentEditorDto(UserDtoStatus status, AssignmentType assignment, Page // ConstructionType construction = oldAssignment.getConstruction(); // newAssignment.setConstruction(construction.clone()); // } - List itemsList = newValue.getItems(); - if (itemsList != null && itemsList.size() > 0){ - Item item = itemsList.get(0); - if (item != null && item.getDefinition() != null) { - this.editable = item.getDefinition().canAdd() || item.getDefinition().canModify(); - } - } + List itemsList = newValue.getItems(); + if (itemsList != null && itemsList.size() > 0) { + Item item = itemsList.get(0); + if (item != null && item.getDefinition() != null) { + this.editable = item.getDefinition().canAdd() || item.getDefinition().canModify(); + } + } this.tenantRef = loadTenantOrgReference(assignment, assignment.getTenantRef()); this.orgRef = loadTenantOrgReference(assignment, assignment.getOrgRef()); @@ -119,15 +140,15 @@ public AssignmentEditorDto(UserDtoStatus status, AssignmentType assignment, Page } public static AssignmentEditorDto createDtoAddFromSelectedObject(ObjectType object, PageBase pageBase) { - AssignmentEditorDto dto = createDtoFromObject(object, UserDtoStatus.ADD, - pageBase); + AssignmentEditorDto dto = createDtoFromObject(object, UserDtoStatus.ADD, pageBase); dto.setMinimized(true); dto.setShowEmpty(true); - + return dto; } - - public static AssignmentEditorDto createDtoFromObject(ObjectType object, UserDtoStatus status, PageBase pageBase) { + + public static AssignmentEditorDto createDtoFromObject(ObjectType object, UserDtoStatus status, + PageBase pageBase) { AssignmentEditorDtoType aType = AssignmentEditorDtoType.getType(object.getClass()); ObjectReferenceType targetRef = new ObjectReferenceType(); @@ -138,8 +159,7 @@ public static AssignmentEditorDto createDtoFromObject(ObjectType object, UserDto AssignmentType assignment = new AssignmentType(); assignment.setTargetRef(targetRef); - return new AssignmentEditorDto(status, assignment, - pageBase); + return new AssignmentEditorDto(status, assignment, pageBase); } private AssignmentEditorDtoType getType(AssignmentType assignment) { @@ -279,18 +299,24 @@ private boolean isRole(AssignmentType assignment) { } private ObjectViewDto loadTenantOrgReference(AssignmentType assignment, ObjectReferenceType ref) { - ObjectViewDto dto; + ObjectViewDto dto = null; if (isRole(assignment)) { if (ref != null) { - if (ref.getTargetName() == null) { + Task task = pageBase.createSimpleTask("Load tenant for assignment"); + OperationResult result = task.getResult(); + PrismObject tenant = WebModelServiceUtils.loadObject(OrgType.class, ref.getOid(), + pageBase, task, result); + if (tenant != null) { + + dto = new ObjectViewDto(ref.getOid(), + WebComponentUtil.getEffectiveName(tenant, OrgType.F_DISPLAY_NAME)); + dto.setType(OrgType.class); + } else if (ref.getTargetName() == null) { dto = new ObjectViewDto(ObjectViewDto.BAD_OID); dto.setType(OrgType.class); - return dto; } - - dto = new ObjectViewDto(ref.getOid(), WebComponentUtil.getOrigStringFromPoly(ref.getTargetName())); - dto.setType(OrgType.class); + return dto; } } @@ -307,14 +333,7 @@ private String getNameForTargetObject(AssignmentType assignment) { StringBuilder sb = new StringBuilder(); - if (assignment.getTarget() != null) { - // object assignment - sb.append(WebComponentUtil.getName(assignment.getTarget())); - appendTenantAndOrgName(sb); - } else if (assignment.getTargetRef() != null) { - sb.append(WebComponentUtil.getName(assignment.getTargetRef())); - appendTenantAndOrgName(sb); - } else if (assignment.getConstruction() != null) { + if (assignment.getConstruction() != null) { // account assignment through account construction ConstructionType construction = assignment.getConstruction(); if (construction.getResource() != null) { @@ -322,13 +341,33 @@ private String getNameForTargetObject(AssignmentType assignment) { } else if (construction.getResourceRef() != null) { sb.append(WebComponentUtil.getName(construction.getResourceRef())); } + return sb.toString(); + } + + if (assignment.getTarget() != null) { + sb.append(WebComponentUtil.getEffectiveName(assignment.getTarget(), OrgType.F_DISPLAY_NAME)); + appendTenantAndOrgName(sb); + } else if (assignment.getTargetRef() != null) { + Task task = pageBase.createSimpleTask("Load assignment name"); + PrismObject target = WebModelServiceUtils.loadObject(AbstractRoleType.class, + assignment.getTargetRef().getOid(), pageBase, task, task.getResult()); + if (target != null) { + sb.append(WebComponentUtil.getEffectiveName(target, OrgType.F_DISPLAY_NAME)); + } else { + sb.append(WebComponentUtil.getName(assignment.getTargetRef())); + } + appendTenantAndOrgName(sb); + } + + if (determineUserOrgRelation(assignment)) { + sb.append(" - Manager"); } return sb.toString(); } - private void appendTenantAndOrgName(StringBuilder sb){ - if (tenantRef != null){ + private void appendTenantAndOrgName(StringBuilder sb) { + if (tenantRef != null) { if (ObjectViewDto.BAD_OID.equals(tenantRef.getOid())) { sb.append(" - ").append("(tenant not found)"); } else if (tenantRef.getOid() != null) { @@ -342,8 +381,9 @@ private void appendTenantAndOrgName(StringBuilder sb){ sb.append(" - ").append(orgRef.getName()); } } + } - + private String getAlternativeName(AssignmentType assignment) { if (assignment == null) { return null; @@ -383,15 +423,15 @@ public void setShowEmpty(boolean showEmpty) { this.showEmpty = showEmpty; } - public boolean isEditable() { - return editable; - } + public boolean isEditable() { + return editable; + } - public void setEditable(boolean editable) { - this.editable = editable; - } + public void setEditable(boolean editable) { + this.editable = editable; + } - public UserDtoStatus getStatus() { + public UserDtoStatus getStatus() { return status; } @@ -413,7 +453,7 @@ public String getName() { public ObjectReferenceType getTargetRef() { return newAssignment.getTargetRef(); } - + public ExtensionType getExtension() { return newAssignment.getExtension(); } @@ -627,11 +667,11 @@ public int hashCode() { @Override public String toString() { - return "AssignmentEditorDto(name=" + name + ", status=" + status + ", showEmpty=" + showEmpty + ", minimized=" + minimized - + ", isOrgUnitManager=" + isOrgUnitManager + ")"; + return "AssignmentEditorDto(name=" + name + ", status=" + status + ", showEmpty=" + showEmpty + + ", minimized=" + minimized + ", isOrgUnitManager=" + isOrgUnitManager + ")"; + } + + public String getNameForTargetObject() { + return getNameForTargetObject(this.newAssignment); } - - public String getNameForTargetObject(){ - return getNameForTargetObject(this.newAssignment); - } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/ObjectDataProvider2.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/SelectableBeanObjectDataProvider.java similarity index 71% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/ObjectDataProvider2.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/SelectableBeanObjectDataProvider.java index fd4c99a8d29..c86d991701d 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/ObjectDataProvider2.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/SelectableBeanObjectDataProvider.java @@ -46,24 +46,25 @@ /** * @author lazyman + * @author semancik */ -public class ObjectDataProvider2 - extends BaseSortableDataProvider { - - private static final Trace LOGGER = TraceManager.getTrace(ObjectDataProvider2.class); - private static final String DOT_CLASS = ObjectDataProvider2.class.getName() + "."; +public class SelectableBeanObjectDataProvider extends BaseSortableDataProvider> { + private static final long serialVersionUID = 1L; + + private static final Trace LOGGER = TraceManager.getTrace(SelectableBeanObjectDataProvider.class); + private static final String DOT_CLASS = SelectableBeanObjectDataProvider.class.getName() + "."; private static final String OPERATION_SEARCH_OBJECTS = DOT_CLASS + "searchObjects"; private static final String OPERATION_COUNT_OBJECTS = DOT_CLASS + "countObjects"; - private Set selected = new HashSet<>(); + private Set selected = new HashSet<>(); private boolean emptyListOnNullQuery = false; private boolean useObjectCounting = true; - private Class type; + private Class type; private Collection> options; - public ObjectDataProvider2(Component component, Class type) { + public SelectableBeanObjectDataProvider(Component component, Class type) { super(component, true, true); Validate.notNull(type); @@ -74,17 +75,15 @@ public void clearSelectedObjects(){ selected.clear(); } - public List getSelectedData() { + public List getSelectedData() { preprocessSelectedDataInternal(); - for (Serializable s : super.getAvailableData()){ - if (s instanceof SelectableBean){ - SelectableBean selectable = (SelectableBean) s; - if (selectable.isSelected()){ - selected.add(selectable.getValue()); - } - } + for (SelectableBean s : super.getAvailableData()){ + SelectableBean selectable = (SelectableBean) s; + if (selectable.isSelected()){ + selected.add(selectable.getValue()); + } } - List allSelected = new ArrayList<>(); + List allSelected = new ArrayList<>(); allSelected.addAll(selected); return allSelected; } @@ -95,35 +94,30 @@ private void preprocessSelectedData(){ } private void preprocessSelectedDataInternal(){ - for (W available : getAvailableData()){ - if (available instanceof SelectableBean){ - SelectableBean selectableBean = (SelectableBean) available; - if (selectableBean.isSelected()){ - selected.add(selectableBean.getValue()); - } - } + for (SelectableBean available : getAvailableData()){ + SelectableBean selectableBean = (SelectableBean) available; + if (selectableBean.isSelected()){ + selected.add(selectableBean.getValue()); + } } - for (W available : getAvailableData()){ - if (available instanceof SelectableBean){ - SelectableBean selectableBean = (SelectableBean) available; - if (!selectableBean.isSelected()){ - if (selected.contains(selectableBean.getValue())){ - selected.remove(selectableBean.getValue()); - } - } - } + for (SelectableBean available : getAvailableData()){ + SelectableBean selectableBean = (SelectableBean) available; + if (!selectableBean.isSelected()){ + if (selected.contains(selectableBean.getValue())){ + selected.remove(selectableBean.getValue()); + } + } } } @Override - public Iterator internalIterator(long first, long count) { + public Iterator> internalIterator(long first, long count) { LOGGER.trace("begin::iterator() from {} count {}.", new Object[]{first, count}); preprocessSelectedData(); - OperationResult result = new OperationResult(OPERATION_SEARCH_OBJECTS); try { ObjectPaging paging = createPaging(first, count); @@ -132,7 +126,7 @@ public Iterator internalIterator(long first, long count) { ObjectQuery query = getQuery(); if (query == null){ if (emptyListOnNullQuery){ - return new ArrayList().iterator(); + return new ArrayList>().iterator(); } query = new ObjectQuery(); } @@ -142,13 +136,13 @@ public Iterator internalIterator(long first, long count) { LOGGER.trace("Query {} with {}", type.getSimpleName(), query.debugDump()); } - List> list = getModel().searchObjects(type, query, options, task, result); + List> list = getModel().searchObjects(type, query, options, task, result); if (LOGGER.isTraceEnabled()) { LOGGER.trace("Query {} resulted in {} objects", type.getSimpleName(), list.size()); } - for (PrismObject object : list) { + for (PrismObject object : list) { getAvailableData().add(createDataObjectWrapper(object.asObjectable())); } } catch (Exception ex) { @@ -159,27 +153,34 @@ public Iterator internalIterator(long first, long count) { } if (!WebComponentUtil.isSuccessOrHandledError(result)) { - handleNotSuccessOrHandledErrorInIterator(result); + return handleNotSuccessOrHandledErrorInIterator(result); } - LOGGER.trace("end::iterator()"); + LOGGER.trace("end::iterator() {}", result); return getAvailableData().iterator(); } - protected void handleNotSuccessOrHandledErrorInIterator(OperationResult result){ - getPage().showResult(result); - throw new RestartResponseException(PageError.class); + protected Iterator> handleNotSuccessOrHandledErrorInIterator(OperationResult result) { + LOGGER.trace("handling non-success result {}", result); + // page.showResult() will not work here. We are too deep in the rendering now. + // Also do NOT re-throw not redirect to to error page. That will break the page. + // Just return a SelectableBean that indicates the error. + List> errorList = new ArrayList<>(1); + SelectableBean bean = new SelectableBean<>(); + bean.setResult(result); + errorList.add(bean); + return errorList.iterator(); } - public W createDataObjectWrapper(T obj) { - SelectableBean selectable = new SelectableBean(obj); - for (T s : selected){ + public SelectableBean createDataObjectWrapper(O obj) { + SelectableBean selectable = new SelectableBean(obj); + for (O s : selected){ if (s.getOid().equals(obj.getOid())){ selectable.setSelected(true); } } - return (W) selectable; + return selectable; } @Override @@ -220,7 +221,7 @@ protected void addCachedSize(Map cache, CachedSize new cache.put(new TypedCacheKey(getQuery(), type), newSize); } - public void setType(Class type) { + public void setType(Class type) { Validate.notNull(type, "Class must not be null."); this.type = type; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/ColumnUtils.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/ColumnUtils.java index 988a3df2293..dbb58d5ab1e 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/ColumnUtils.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/ColumnUtils.java @@ -213,7 +213,11 @@ protected IModel createIconModel(final IModel> rowMode @Override public String getObject() { T shadow = rowModel.getObject().getValue(); - return WebComponentUtil.createShadowIcon(shadow.asPrismContainer()); + if (shadow == null) { + return WebComponentUtil.createErrorIcon(rowModel.getObject().getResult()); + } else { + return WebComponentUtil.createShadowIcon(shadow.asPrismContainer()); + } } }; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/LinkColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/LinkColumn.java index 3bbe650e9bf..930bf0f4c7a 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/LinkColumn.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/LinkColumn.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 Evolveum + * 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. @@ -29,8 +29,9 @@ * @author lazyman */ public class LinkColumn extends AbstractColumn { + private static final long serialVersionUID = 1L; - private String propertyExpression; + private String propertyExpression; private String identifier; @@ -79,6 +80,7 @@ public void populateItem(Item> cellItem, String componentId, model = new PropertyModel(model, FocusType.F_NAME.getLocalPart() + ".orig"); } cellItem.add(new LinkPanel(componentId, model) { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/LinkPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/LinkPanel.java index a3e2cd3723e..22b13fe4e4d 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/LinkPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/LinkPanel.java @@ -23,22 +23,22 @@ import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; -import java.io.Serializable; - /** * @author lazyman */ -public class LinkPanel extends Panel { +public class LinkPanel extends Panel { + private static final long serialVersionUID = 1L; - private static final String ID_LINK = "link"; + private static final String ID_LINK = "link"; private static final String ID_LABEL = "label"; - public LinkPanel(String id, IModel label) { + public LinkPanel(String id, IModel labelModel) { super(id); - AjaxLink link = new AjaxLink(ID_LINK) { + AjaxLink link = new AjaxLink(ID_LINK) { + private static final long serialVersionUID = 1L; - @Override + @Override public void onClick(AjaxRequestTarget target) { LinkPanel.this.onClick(target); } @@ -53,8 +53,9 @@ public void onClick(AjaxRequestTarget target) { // return null; // } }; - link.add(new Label(ID_LABEL, label)); + link.add(new Label(ID_LABEL, labelModel)); link.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; @Override public boolean isEnabled() { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/ObjectNameColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/ObjectNameColumn.java new file mode 100644 index 00000000000..e191326dab4 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/ObjectNameColumn.java @@ -0,0 +1,97 @@ +/** + * Copyright (c) 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.component.data.column; + +import org.apache.wicket.RestartResponseException; +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.markup.repeater.Item; +import org.apache.wicket.model.AbstractReadOnlyModel; +import org.apache.wicket.model.IModel; + +import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.util.logging.Trace; +import com.evolveum.midpoint.util.logging.TraceManager; +import com.evolveum.midpoint.web.component.util.SelectableBean; +import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusPresentationProperties; +import com.evolveum.midpoint.web.page.error.PageOperationResult; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; + +/** + * @author semancik + * + */ +public class ObjectNameColumn extends AbstractColumn, String> { + private static final long serialVersionUID = 1L; + + private static final Trace LOGGER = TraceManager.getTrace(ObjectNameColumn.class); + + public ObjectNameColumn(IModel displayModel) { + super(displayModel, ObjectType.F_NAME.getLocalPart()); + } + + @Override + public void populateItem(final Item>> cellItem, String componentId, + final IModel> rowModel) { + + IModel labelModel = new AbstractReadOnlyModel() { + private static final long serialVersionUID = 1L; + + @Override + public String getObject() { + SelectableBean selectableBean = rowModel.getObject(); + O value = selectableBean.getValue(); + if (value == null) { + OperationResult result = selectableBean.getResult(); + OperationResultStatusPresentationProperties props = OperationResultStatusPresentationProperties.parseOperationalResultStatus(result.getStatus()); + return cellItem.getString(props.getStatusLabelKey()); + } else { + return value.getName().getOrig(); + } + } + }; + + cellItem.add(new LinkPanel(componentId, labelModel) { + private static final long serialVersionUID = 1L; + + @Override + public void onClick(AjaxRequestTarget target) { + SelectableBean selectableBean = rowModel.getObject(); + O value = selectableBean.getValue(); + if (value == null) { + OperationResult result = selectableBean.getResult(); + throw new RestartResponseException(new PageOperationResult(result)); + } else { + ObjectNameColumn.this.onClick(target, rowModel); + } + } + + @Override + public boolean isEnabled() { + return ObjectNameColumn.this.isEnabled(rowModel); + } + }); + } + + public boolean isEnabled(IModel> rowModel) { + return true; + } + + public void onClick(AjaxRequestTarget target, IModel> rowModel) { + } + +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/SceneItemValuePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/SceneItemValuePanel.java index b5d7475796b..eaa19e406e7 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/SceneItemValuePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/SceneItemValuePanel.java @@ -73,7 +73,7 @@ public boolean isVisible() { label.add(visibleIfNotReference); add(label); - final LinkPanel link = new LinkPanel(ID_LINK, new LabelModel()) { + final LinkPanel link = new LinkPanel(ID_LINK, new LabelModel()) { @Override public void onClick(AjaxRequestTarget target) { if (!(getModelObject().getSourceValue() instanceof PrismReferenceValue)) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/ScenePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/ScenePanel.java index d57affa4a92..2a2f411a251 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/ScenePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/ScenePanel.java @@ -137,7 +137,7 @@ public void minimizeOnClick(AjaxRequestTarget target) { PropertyModel nameModel = new PropertyModel<>(model, SceneDto.F_NAME); Label headerNameLabel = new Label(ID_HEADER_NAME_LABEL, nameModel); - LinkPanel headerNameLink = new LinkPanel(ID_HEADER_NAME_LINK, nameModel) { + LinkPanel headerNameLink = new LinkPanel(ID_HEADER_NAME_LINK, nameModel) { @Override public void onClick(AjaxRequestTarget target) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressPanel.java index 466b266d45a..7129a897f91 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressPanel.java @@ -22,7 +22,7 @@ import com.evolveum.midpoint.web.component.AjaxSubmitButton; import com.evolveum.midpoint.web.component.form.Form; import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails; -import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusIcon; +import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusPresentationProperties; import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultStatusType; import org.apache.wicket.AttributeModifier; import org.apache.wicket.Page; @@ -111,7 +111,7 @@ public String getObject() { if (statusType == null) { return null; } else { - return OperationResultStatusIcon.parseOperationalResultStatus(statusType).getIcon(); + return OperationResultStatusPresentationProperties.parseOperationalResultStatus(statusType).getIcon(); } } }, diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/SelectableBean.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/SelectableBean.java index be7d7248aaa..5cf61c2a69c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/SelectableBean.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/SelectableBean.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 Evolveum + * 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. @@ -20,18 +20,28 @@ import java.util.ArrayList; import java.util.List; +import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.web.component.data.column.InlineMenuable; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; /** * @author lazyman */ -public class SelectableBean extends Selectable implements InlineMenuable{ +public class SelectableBean extends Selectable implements InlineMenuable { + private static final long serialVersionUID = 1L; - public static final String F_VALUE = "value"; + public static final String F_VALUE = "value"; + /** + * Value of object that this bean represents. It may be null in case that non-success result is set. + */ private T value; + /** + * Result of object retrieval (or attempt of object retrieval). It case that it is not error the result is optional. + */ + private OperationResult result; + private List menuItems; public SelectableBean() { @@ -49,26 +59,57 @@ public void setValue(T value) { this.value = value; } - public List getMenuItems() { + public OperationResult getResult() { + return result; + } + + public void setResult(OperationResult result) { + this.result = result; + } + + public List getMenuItems() { if (menuItems == null) { menuItems = new ArrayList(); } return menuItems; } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof SelectableBean)){ - return false; - } - - T object = ((SelectableBean) obj).getValue(); - return object.equals(value); - } - - @Override - public int hashCode() { - int result = (value != null ? value.hashCode() : 0); - return result; - } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((this.result == null) ? 0 : this.result.hashCode()); + result = prime * result + ((value == null) ? 0 : value.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + SelectableBean other = (SelectableBean) obj; + if (result == null) { + if (other.result != null) { + return false; + } + } else if (!result.equals(other.result)) { + return false; + } + if (value == null) { + if (other.value != null) { + return false; + } + } else if (!value.equals(other.value)) { + return false; + } + return true; + } + } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java index f5569a7a8bb..8842425c598 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java @@ -86,7 +86,7 @@ import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.data.BaseSortableDataProvider; -import com.evolveum.midpoint.web.component.data.ObjectDataProvider2; +import com.evolveum.midpoint.web.component.data.SelectableBeanObjectDataProvider; import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction; import com.evolveum.midpoint.web.component.data.column.ColumnTypeDto; import com.evolveum.midpoint.web.component.data.column.ColumnUtils; @@ -231,7 +231,7 @@ protected void newObjectPerformed(AjaxRequestTarget target) { @Override protected BaseSortableDataProvider> getProvider() { - ObjectDataProvider2, ShadowType> provider = (ObjectDataProvider2, ShadowType>) super.getProvider(); + SelectableBeanObjectDataProvider provider = (SelectableBeanObjectDataProvider) super.getProvider(); provider.setEmptyListOnNullQuery(true); provider.setSort(null); createSearchOptions(provider); @@ -439,8 +439,8 @@ private List getTasksForKind(List> tasks) { return tasksForKind; } - private ObjectDataProvider2, ShadowType> initProvider(){ - ObjectDataProvider2, ShadowType> provider = new ObjectDataProvider2, ShadowType>( + private SelectableBeanObjectDataProvider initProvider(){ + SelectableBeanObjectDataProvider provider = new SelectableBeanObjectDataProvider( this, ShadowType.class) { private static final long serialVersionUID = 1L; @@ -553,7 +553,7 @@ protected ObjectQuery createQuery(){ protected abstract Search createSearch(); - private void createSearchOptions(ObjectDataProvider2 provider) { + private void createSearchOptions(SelectableBeanObjectDataProvider provider) { Collection> opts = SelectorOptions.createCollection( ShadowType.F_ASSOCIATION, GetOperationOptions.createRetrieve(RetrieveOption.EXCLUDE)); @@ -608,11 +608,14 @@ public void populateItem(Item>> cellIt SelectableBean dto = rowModel.getObject(); RepeatingView repeater = new RepeatingView(componentId); - - for (ResourceAttribute attr : ShadowUtil.getAllIdentifiers(dto.getValue())) { - repeater.add(new Label(repeater.newChildId(), - attr.getElementName().getLocalPart() + ": " + attr.getRealValue())); - + + ShadowType value = dto.getValue(); + if (value != null) { + for (ResourceAttribute attr : ShadowUtil.getAllIdentifiers(value)) { + repeater.add(new Label(repeater.newChildId(), + attr.getElementName().getLocalPart() + ": " + attr.getRealValue())); + + } } cellItem.add(repeater); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTasks.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTasks.java index 71eb40b20da..89130f295ea 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTasks.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTasks.java @@ -100,7 +100,7 @@ import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction; import com.evolveum.midpoint.web.page.admin.server.dto.NodeDto; import com.evolveum.midpoint.web.page.admin.server.dto.NodeDtoProvider; -import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusIcon; +import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusPresentationProperties; import com.evolveum.midpoint.web.page.admin.server.dto.TaskDto; import com.evolveum.midpoint.web.page.admin.server.dto.TaskDtoExecutionStatusFilter; import com.evolveum.midpoint.web.page.admin.server.dto.TaskDtoProvider; @@ -536,9 +536,9 @@ protected IModel createIconModel(final IModel rowModel) { @Override public String getObject() { if (rowModel != null && rowModel.getObject() != null && rowModel.getObject().getStatus() != null) { - return OperationResultStatusIcon.parseOperationalResultStatus(rowModel.getObject().getStatus().createStatusType()).getIcon(); + return OperationResultStatusPresentationProperties.parseOperationalResultStatus(rowModel.getObject().getStatus().createStatusType()).getIcon(); } else - return OperationResultStatusIcon.UNKNOWN.getIcon(); + return OperationResultStatusPresentationProperties.UNKNOWN.getIcon(); } }; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskBasicTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskBasicTabPanel.java index c79045e312f..ea9b8f7e303 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskBasicTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskBasicTabPanel.java @@ -139,7 +139,7 @@ private void initLayoutBasic() { // Parent WebMarkupContainer parentContainer = new WebMarkupContainer(ID_PARENT_CONTAINER); - final LinkPanel parent = new LinkPanel(ID_PARENT, new PropertyModel<>(taskDtoModel, TaskDto.F_PARENT_TASK_NAME)) { + final LinkPanel parent = new LinkPanel(ID_PARENT, new PropertyModel(taskDtoModel, TaskDto.F_PARENT_TASK_NAME)) { @Override public void onClick(AjaxRequestTarget target) { String oid = taskDtoModel.getObject().getParentTaskOid(); @@ -156,7 +156,7 @@ public void onClick(AjaxRequestTarget target) { // Owner WebMarkupContainer ownerContainer = new WebMarkupContainer(ID_OWNER_CONTAINER); - final LinkPanel owner = new LinkPanel(ID_OWNER, new PropertyModel<>(taskDtoModel, TaskDto.F_OWNER_NAME)) { + final LinkPanel owner = new LinkPanel(ID_OWNER, new PropertyModel(taskDtoModel, TaskDto.F_OWNER_NAME)) { @Override public void onClick(AjaxRequestTarget target) { String oid = taskDtoModel.getObject().getOwnerOid(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskSummaryPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskSummaryPanel.java index d12d2133bef..c3a8a1ffd1c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskSummaryPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskSummaryPanel.java @@ -29,7 +29,7 @@ import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.model.ContainerableFromPrismObjectModel; import com.evolveum.midpoint.web.page.admin.server.dto.ApprovalOutcomeIcon; -import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusIcon; +import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusPresentationProperties; import com.evolveum.midpoint.web.page.admin.server.dto.TaskDto; import com.evolveum.midpoint.web.page.admin.server.dto.TaskDtoExecutionStatus; import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultStatusType; @@ -83,7 +83,7 @@ protected void initialize(TaskType taskType) { @Override protected void initialize(TaskType taskType) { OperationResultStatusType resultStatus = taskType.getResultStatus(); - String icon = OperationResultStatusIcon.parseOperationalResultStatus(resultStatus).getIcon(); + String icon = OperationResultStatusPresentationProperties.parseOperationalResultStatus(resultStatus).getIcon(); setIconCssClass(icon); if (resultStatus != null) { setLabel(PageBase.createStringResourceStatic(TaskSummaryPanel.this, resultStatus).getString()); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/dto/OperationResultStatusIcon.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/dto/OperationResultStatusPresentationProperties.java similarity index 69% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/dto/OperationResultStatusIcon.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/dto/OperationResultStatusPresentationProperties.java index e7df9853c77..7ac58e1b895 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/dto/OperationResultStatusIcon.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/dto/OperationResultStatusPresentationProperties.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 Evolveum + * 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. @@ -22,28 +22,34 @@ /** * @author shood * */ -public enum OperationResultStatusIcon { +public enum OperationResultStatusPresentationProperties { - UNKNOWN("fa-fw fa-lg " + GuiStyleConstants.CLASS_OP_RESULT_STATUS_ICON_UNKNOWN_COLORED), - SUCCESS("fa-fw fa-lg " + GuiStyleConstants.CLASS_OP_RESULT_STATUS_ICON_SUCCESS_COLORED), - WARNING("fa-fw fa-lg " + GuiStyleConstants.CLASS_OP_RESULT_STATUS_ICON_WARNING_COLORED), - PARTIAL_ERROR("fa-fw fa-lg " + GuiStyleConstants.CLASS_OP_RESULT_STATUS_ICON_PARTIAL_ERROR_COLORED), - FATAL_ERROR("fa-fw fa-lg " + GuiStyleConstants.CLASS_OP_RESULT_STATUS_ICON_FATAL_ERROR_COLORED), - HANDLED_ERROR("fa-fw fa-lg " + GuiStyleConstants.CLASS_OP_RESULT_STATUS_ICON_HANDLED_ERROR_COLORED), - NOT_APPLICABLE("fa-fw fa-lg " + GuiStyleConstants.CLASS_OP_RESULT_STATUS_ICON_NOT_APPLICABLE_COLORED), - IN_PROGRESS("fa-fw fa-lg " + GuiStyleConstants.CLASS_APPROVAL_OUTCOME_ICON_IN_PROGRESS_COLORED); + UNKNOWN("fa-fw fa-lg " + GuiStyleConstants.CLASS_OP_RESULT_STATUS_ICON_UNKNOWN_COLORED, "OperationResultStatus.UNKNOWN"), + SUCCESS("fa-fw fa-lg " + GuiStyleConstants.CLASS_OP_RESULT_STATUS_ICON_SUCCESS_COLORED, "OperationResultStatus.SUCCESS"), + WARNING("fa-fw fa-lg " + GuiStyleConstants.CLASS_OP_RESULT_STATUS_ICON_WARNING_COLORED, "OperationResultStatus.WARNING"), + PARTIAL_ERROR("fa-fw fa-lg " + GuiStyleConstants.CLASS_OP_RESULT_STATUS_ICON_PARTIAL_ERROR_COLORED, "OperationResultStatus.PARTIAL_ERROR"), + FATAL_ERROR("fa-fw fa-lg " + GuiStyleConstants.CLASS_OP_RESULT_STATUS_ICON_FATAL_ERROR_COLORED, "OperationResultStatus.FATAL_ERROR"), + HANDLED_ERROR("fa-fw fa-lg " + GuiStyleConstants.CLASS_OP_RESULT_STATUS_ICON_HANDLED_ERROR_COLORED, "OperationResultStatus.HANDLED_ERROR"), + NOT_APPLICABLE("fa-fw fa-lg " + GuiStyleConstants.CLASS_OP_RESULT_STATUS_ICON_NOT_APPLICABLE_COLORED, "OperationResultStatus.NOT_APPLICABLE"), + IN_PROGRESS("fa-fw fa-lg " + GuiStyleConstants.CLASS_APPROVAL_OUTCOME_ICON_IN_PROGRESS_COLORED, "OperationResultStatus.IN_PROGRESS"); private String icon; + private String statusLabelKey; - private OperationResultStatusIcon(String icon){ + private OperationResultStatusPresentationProperties(String icon, String statusLabelKey) { this.icon = icon; + this.statusLabelKey = statusLabelKey; } - public String getIcon(){ + public String getIcon() { return icon; } - public static OperationResultStatusIcon parseOperationalResultStatus(OperationResultStatusType statusType){ + public String getStatusLabelKey() { + return statusLabelKey; + } + + public static OperationResultStatusPresentationProperties parseOperationalResultStatus(OperationResultStatusType statusType){ if (statusType == null) { return UNKNOWN; } @@ -68,7 +74,7 @@ public static OperationResultStatusIcon parseOperationalResultStatus(OperationRe } } - public static OperationResultStatusIcon parseOperationalResultStatus(OperationResultStatus statusType){ + public static OperationResultStatusPresentationProperties parseOperationalResultStatus(OperationResultStatus statusType){ if (statusType == null) { return UNKNOWN; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/handlers/DefaultHandlerPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/handlers/DefaultHandlerPanel.java index 1c03913da1d..9abb77f4e19 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/handlers/DefaultHandlerPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/handlers/DefaultHandlerPanel.java @@ -51,7 +51,7 @@ public boolean isVisible() { } }); - final LinkPanel objectRef = new LinkPanel(ID_OBJECT_REF, new PropertyModel<>(getModel(), HandlerDto.F_OBJECT_REF_NAME)) { + final LinkPanel objectRef = new LinkPanel(ID_OBJECT_REF, new PropertyModel(getModel(), HandlerDto.F_OBJECT_REF_NAME)) { @Override public void onClick(AjaxRequestTarget target) { ObjectReferenceType ref = getModelObject().getObjectRef(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/error/PageOperationResult.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/error/PageOperationResult.html new file mode 100644 index 00000000000..2c88733820c --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/error/PageOperationResult.html @@ -0,0 +1,28 @@ + + + + + + + +
+ +
+ +
+ + \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/error/PageOperationResult.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/error/PageOperationResult.java new file mode 100644 index 00000000000..a25f4026116 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/error/PageOperationResult.java @@ -0,0 +1,93 @@ +/* + * Copyright (c) 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.error; + +import com.evolveum.midpoint.gui.api.component.result.OpResult; +import com.evolveum.midpoint.gui.api.page.PageBase; +import com.evolveum.midpoint.gui.api.util.WebComponentUtil; +import com.evolveum.midpoint.schema.result.OperationResult; +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.PageDescriptor; +import com.evolveum.midpoint.web.component.AjaxButton; +import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; +import com.evolveum.midpoint.web.page.admin.home.PageDashboard; +import com.evolveum.midpoint.web.page.self.PageSelfDashboard; +import com.evolveum.midpoint.web.session.SessionStorage; +import org.apache.commons.lang.StringUtils; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.model.AbstractReadOnlyModel; +import org.apache.wicket.model.IModel; +import org.apache.wicket.request.http.WebResponse; +import org.springframework.http.HttpStatus; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Page that displays just the operation result. Comes handy + * for places where the operation result cannot be displayed + * on the main page (e.g. object list warnings, projection list, etc.) + * + * @author semancik + */ +@PageDescriptor(url = "/result") +public class PageOperationResult extends PageBase { + private static final long serialVersionUID = 1L; + + private static final String ID_BACK = "back"; + + private static final Trace LOGGER = TraceManager.getTrace(PageOperationResult.class); + + private OperationResult result = null; + + public PageOperationResult() { + super(); + initLayout(); + } + + public PageOperationResult(OperationResult result) { + super(); + this.result = result; + initLayout(); + } + + private void initLayout() { + if (result != null) { + OpResult opresult = showResult(result); + opresult.setShowMoreAll(true); + } + + AjaxButton back = new AjaxButton(ID_BACK, createStringResource("PageError.button.back")) { + private static final long serialVersionUID = 1L; + + @Override + public void onClick(AjaxRequestTarget target) { + backPerformed(target); + } + }; + add(back); + + } + + private void backPerformed(AjaxRequestTarget target) { + redirectBack(); + } + +} diff --git a/gui/admin-gui/src/main/webapp/less/midpoint-theme.less b/gui/admin-gui/src/main/webapp/less/midpoint-theme.less index a160f09ff30..ef88ee746ac 100644 --- a/gui/admin-gui/src/main/webapp/less/midpoint-theme.less +++ b/gui/admin-gui/src/main/webapp/less/midpoint-theme.less @@ -180,7 +180,7 @@ th.cog, td.cog { } .icon-style-up { - color: #2b542c; + color: #00a65a; } .icon-style-down {