From 52b0246b98761408fe65c39cde9a35db924ef71b Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Tue, 11 Oct 2016 10:34:47 +0200 Subject: [PATCH 1/3] Added support for org, type and exists filters in ExpressionUtil.evaluateFilterExpressions (and therefore fixed these queries in query playground). --- .../common/expression/ExpressionUtil.java | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionUtil.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionUtil.java index 269364280e2..883a59626b3 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionUtil.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionUtil.java @@ -31,6 +31,7 @@ import com.evolveum.midpoint.model.common.expression.functions.FunctionLibrary; import com.evolveum.midpoint.model.common.expression.functions.LogExpressionFunctions; import com.evolveum.midpoint.prism.*; +import com.evolveum.midpoint.prism.Visitor; import com.evolveum.midpoint.prism.crypto.EncryptionException; import com.evolveum.midpoint.prism.crypto.Protector; import com.evolveum.midpoint.prism.delta.ItemDelta; @@ -40,16 +41,7 @@ import com.evolveum.midpoint.prism.path.ItemPathSegment; import com.evolveum.midpoint.prism.path.NameItemPathSegment; import com.evolveum.midpoint.prism.polystring.PolyString; -import com.evolveum.midpoint.prism.query.AllFilter; -import com.evolveum.midpoint.prism.query.ExpressionWrapper; -import com.evolveum.midpoint.prism.query.InOidFilter; -import com.evolveum.midpoint.prism.query.LogicalFilter; -import com.evolveum.midpoint.prism.query.NoneFilter; -import com.evolveum.midpoint.prism.query.ObjectFilter; -import com.evolveum.midpoint.prism.query.ObjectQuery; -import com.evolveum.midpoint.prism.query.PropertyValueFilter; -import com.evolveum.midpoint.prism.query.UndefinedFilter; -import com.evolveum.midpoint.prism.query.ValueFilter; +import com.evolveum.midpoint.prism.query.*; import com.evolveum.midpoint.prism.util.JavaTypeConverter; import com.evolveum.midpoint.prism.util.PrismUtil; import com.evolveum.midpoint.prism.xml.XmlTypeConverter; @@ -607,10 +599,25 @@ private static ObjectFilter evaluateFilterExpressionsInternal(ObjectFilter filte "Couldn't evaluate expression" + valueExpression + ": " + ex.getMessage(), ex); } + } else if (filter instanceof ExistsFilter) { + ExistsFilter evaluatedFilter = ((ExistsFilter) filter).cloneEmpty(); + ObjectFilter evaluatedSubFilter = evaluateFilterExpressionsInternal(((ExistsFilter) filter).getFilter(), variables, + expressionFactory, prismContext, shortDesc, task, result); + evaluatedFilter.setFilter(evaluatedSubFilter); + return evaluatedFilter; + } else if (filter instanceof TypeFilter) { + TypeFilter evaluatedFilter = ((TypeFilter) filter).cloneEmpty(); + ObjectFilter evaluatedSubFilter = evaluateFilterExpressionsInternal(((TypeFilter) filter).getFilter(), variables, + expressionFactory, prismContext, shortDesc, task, result); + evaluatedFilter.setFilter(evaluatedSubFilter); + return evaluatedFilter; + } else if (filter instanceof OrgFilter) { + return filter; + } else if (filter instanceof AllFilter || filter instanceof NoneFilter || filter instanceof UndefinedFilter) { + return filter; } else { throw new IllegalStateException("Unsupported filter type: " + filter.getClass()); } - } private static ObjectFilter createFilterForNoValue(ObjectFilter filter, ExpressionType valueExpression) throws ExpressionEvaluationException { From d2a9007cbab416af9405bc0b58b3c1dd1c899666 Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Tue, 11 Oct 2016 10:55:33 +0200 Subject: [PATCH 2/3] Shopping cart styles (step 1) --- .../assignment/AssignmentCatalogPanel.java | 19 +++- .../assignment/CatalogItemsPanel.java | 21 ++++- .../web/component/data/MultiButtonTable.html | 27 ++++-- .../web/component/data/MultiButtonTable.java | 92 ++++++++++++------- .../page/self/PageAssignmentShoppingKart.java | 17 ++++ .../src/main/webapp/less/midpoint-theme.less | 27 ++++++ 6 files changed, 160 insertions(+), 43 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentCatalogPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentCatalogPanel.java index 9a01856a231..2dab6e80cbd 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentCatalogPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentCatalogPanel.java @@ -1,3 +1,18 @@ +/* + * 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.assignment; import com.evolveum.midpoint.gui.api.component.BasePanel; @@ -24,7 +39,9 @@ * Created by honchar. */ public class AssignmentCatalogPanel extends BasePanel { - private static String ID_TREE_PANEL_CONTAINER = "treePanelContainer"; + private static final long serialVersionUID = 1L; + + private static String ID_TREE_PANEL_CONTAINER = "treePanelContainer"; private static String ID_TREE_PANEL = "treePanel"; private static String ID_CATALOG_ITEMS_PANEL_CONTAINER = "catalogItemsPanelContainer"; private static String ID_CATALOG_ITEMS_PANEL = "catalogItemsPanel"; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/CatalogItemsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/CatalogItemsPanel.java index dae84acae7c..703ff462f70 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/CatalogItemsPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/CatalogItemsPanel.java @@ -1,3 +1,18 @@ +/* + * 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.assignment; import com.evolveum.midpoint.gui.api.component.BasePanel; @@ -46,7 +61,9 @@ * Created by honchar */ public class CatalogItemsPanel extends BasePanel implements IPageableItems { - private static String ID_MULTI_BUTTON_TABLE = "multiButtonTable"; + private static final long serialVersionUID = 1L; + + private static final String ID_MULTI_BUTTON_TABLE = "multiButtonTable"; private static final String ID_SEARCH_FORM = "searchForm"; private static final String ID_SEARCH = "search"; private static final String ID_PAGING_FOOTER = "pagingFooter"; @@ -57,7 +74,7 @@ public class CatalogItemsPanel extends BasePanel implements IPageableItems { private static final String ID_BUTTON_TOOLBAR = "buttonToolbar"; private static final String ID_FOOTER = "footer"; private static final String ID_CART_BUTTON = "cartButton"; - private static String ID_CART_ITEMS_COUNT = "itemsCount"; + private static final String ID_CART_ITEMS_COUNT = "itemsCount"; private static final String ID_HEADER_PANEL = "headerPanel"; private static final String DOT_CLASS = CatalogItemsPanel.class.getName(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonTable.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonTable.html index d4bc4bfd45b..8b7d500949e 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonTable.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonTable.html @@ -17,13 +17,28 @@ xmlns:wicket="http://wicket.apache.org"> -
+
- - - - - +
+
+
+

+
+
+ +
+ +
+
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonTable.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonTable.java index d6386363c0e..badd7882a24 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonTable.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonTable.java @@ -1,3 +1,18 @@ +/* + * 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; import com.evolveum.midpoint.gui.api.component.BasePanel; @@ -22,12 +37,15 @@ * Created honchar. */ public class MultiButtonTable extends BasePanel> { - private static final String ID_ROW = "row"; + private static final long serialVersionUID = 1L; + + private static final String ID_ROW = "row"; private static final String ID_CELL = "cell"; - private static final String ID_BUTTON_TYPE_ICON = "typeIcon"; - private static final String ID_BUTTON_LABEL = "buttonLabel"; - private static final String ID_BUTTON_PLUS_ICON = "plusIcon"; - private static final String ID_BUTTON = "assignmentButton"; + private static final String ID_INNER = "inner"; + private static final String ID_INNER_LABEL = "innerLabel"; + private static final String ID_TYPE_ICON = "typeIcon"; + private static final String ID_ADD_TO_CART_LINK = "addToCartLink"; + private static final String ID_DETAILS_LINK = "detailsLink"; private long itemsCount = 0; private long itemsPerRow = 0; @@ -77,7 +95,7 @@ private void initLayout(){ } protected void populateCell(WebMarkupContainer cellContainer, final AssignmentEditorDto assignment){ - AjaxLink assignmentButton = new AjaxLink(ID_BUTTON) { + AjaxLink inner = new AjaxLink(ID_INNER) { private static final long serialVersionUID = 1L; @Override @@ -107,45 +125,51 @@ public void detach() { } } }; -// assignmentButton.add(new AttributeModifier("class", "col-md-4")); - Label plusLabel = new Label(ID_BUTTON_PLUS_ICON, "+"); -// plusLabel.add(new AttributeAppender("title", getPageBase().createStringResource("MultiButtonPanel.plusIconTitle"))); - plusLabel.add(new AjaxEventBehavior("click") { - private static final long serialVersionUID = 1L; - - @Override - protected void onEvent(AjaxRequestTarget target) { - addAssignmentPerformed(assignment, target); - } - }); - assignmentButton.add(plusLabel); + cellContainer.add(inner); + + Label nameLabel = new Label(ID_INNER_LABEL, assignment.getName()); + inner.add(nameLabel); + + AjaxLink detailsLink = new AjaxLink(ID_DETAILS_LINK) { + private static final long serialVersionUID = 1L; + + @Override + public void onClick(AjaxRequestTarget target) { + // TODO + } + + }; + cellContainer.add(detailsLink); + + AjaxLink addToCartLink = new AjaxLink(ID_ADD_TO_CART_LINK) { + private static final long serialVersionUID = 1L; + + @Override + public void onClick(AjaxRequestTarget target) { + addAssignmentPerformed(assignment, target); + } + + }; + cellContainer.add(addToCartLink); + - WebMarkupContainer icon = new WebMarkupContainer(ID_BUTTON_TYPE_ICON); + WebMarkupContainer icon = new WebMarkupContainer(ID_TYPE_ICON); icon.add(new AttributeAppender("class", getIconClass(assignment.getType()))); - assignmentButton.add(icon); - - Label nameLabel = new Label(ID_BUTTON_LABEL, assignment.getName()); -// nameLabel.add(new AjaxEventBehavior("click") { -// private static final long serialVersionUID = 1L; -// @Override -// protected void onEvent(AjaxRequestTarget ajaxRequestTarget) { -// -// } -// }); - assignmentButton.add(nameLabel); - cellContainer.add(assignmentButton); + cellContainer.add(icon); + } protected void assignmentDetailsPerformed(AjaxRequestTarget target){ } private String getIconClass(AssignmentEditorDtoType type){ + // TODO: switch to icon constants if (AssignmentEditorDtoType.ROLE.equals(type)){ - return "fa fa-street-view object-role-color"; + return "fa fa-street-view"; }else if (AssignmentEditorDtoType.SERVICE.equals(type)){ - return "fa fa-cloud object-service-color"; + return "fa fa-cloud"; }else if (AssignmentEditorDtoType.ORG_UNIT.equals(type)){ - return "fa fa-building object-org-color"; + return "fa fa-building"; } else { return ""; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentShoppingKart.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentShoppingKart.java index 1226b630247..a2f344a1efc 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentShoppingKart.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentShoppingKart.java @@ -1,3 +1,18 @@ +/* + * 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.self; import com.evolveum.midpoint.gui.api.page.PageBase; @@ -42,6 +57,8 @@ label = "PageAssignmentShoppingKart.auth.requestAssignment.label", description = "PageAssignmentShoppingKart.auth.requestAssignment.description")}) public class PageAssignmentShoppingKart extends PageSelf { + private static final long serialVersionUID = 1L; + private static final String ID_MAIN_PANEL = "mainPanel"; private static final String ID_MAIN_FORM = "mainForm"; private static final String ID_VIEW_TYPE = "type"; 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 1c018d35fca..1f40442b9a0 100644 --- a/gui/admin-gui/src/main/webapp/less/midpoint-theme.less +++ b/gui/admin-gui/src/main/webapp/less/midpoint-theme.less @@ -1082,4 +1082,31 @@ th.cog, td.cog { dd.stacktrace::before { content: none; +} + +// Shopping cart + +.shopping-cart-item-box { + + .inner { + min-height: 90px; + } +} + +.shopping-cart-item-box-footer { + padding: 3px; + padding-left: 8px; + padding-right: 8px; + color: rgba(255, 255, 255, 0.8); + display: block; + z-index: 10; + background: rgba(0, 0, 0, 0.1); + + .shopping-cart-item-button-details { + + } + + .shopping-cart-item-button-add { + float: right; + } } \ No newline at end of file From 2405e96850649ca73da6ebea23d08c7da4c5b01d Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Tue, 11 Oct 2016 11:02:04 +0200 Subject: [PATCH 3/3] preparation for audit log details page.. + some fixes in incompatible types.. --- .../admin/reports/PageAuditLogDetails.html | 25 +++++++++++ .../admin/reports/PageAuditLogDetails.java | 44 +++++++++++++++++++ .../admin/reports/PageAuditLogViewer.java | 19 ++++++-- .../reports/dto/AuditEventRecordProvider.java | 12 ++--- 4 files changed, 91 insertions(+), 9 deletions(-) create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogDetails.html create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogDetails.java diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogDetails.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogDetails.html new file mode 100644 index 00000000000..1e3a42777a3 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogDetails.html @@ -0,0 +1,25 @@ + + + + + + +todo + + + + \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogDetails.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogDetails.java new file mode 100644 index 00000000000..7664e92b927 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogDetails.java @@ -0,0 +1,44 @@ +package com.evolveum.midpoint.web.page.admin.reports; + +import org.apache.wicket.model.IModel; + +import com.evolveum.midpoint.gui.api.model.LoadableModel; +import com.evolveum.midpoint.gui.api.page.PageBase; +import com.evolveum.midpoint.security.api.AuthorizationConstants; +import com.evolveum.midpoint.web.application.AuthorizationAction; +import com.evolveum.midpoint.web.application.PageDescriptor; +import com.evolveum.midpoint.web.page.admin.configuration.PageAdminConfiguration; +import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventRecordType; + + +@PageDescriptor(url = "/admin/auditLogDetails", action = { + @AuthorizationAction(actionUri = PageAdminReports.AUTH_REPORTS_ALL, + label = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_LABEL, + description = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_DESCRIPTION), + @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_AUDIT_LOG_VIEWER_URL, + label = "PageAuditLogViewer.auth.auditLogViewer.label", + description = "PageAuditLogViewer.auth.auditLogViewer.description")}) +public class PageAuditLogDetails extends PageBase{ + + private static final long serialVersionUID = 1L; + + private IModel recordModel; + + public PageAuditLogDetails(final AuditEventRecordType recordType) { + + recordModel = new LoadableModel(false) { + + @Override + protected AuditEventRecordType load() { + return recordType; + } + }; + + initLayout(); + } + + private void initLayout(){ + //TODO + } + +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogViewer.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogViewer.java index 9b41ed418da..f8b478cf562 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogViewer.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogViewer.java @@ -24,6 +24,7 @@ import com.evolveum.midpoint.web.application.PageDescriptor; import com.evolveum.midpoint.web.component.AjaxButton; import com.evolveum.midpoint.web.component.data.BoxedTablePanel; +import com.evolveum.midpoint.web.component.data.column.LinkColumn; import com.evolveum.midpoint.web.component.input.DatePanel; import com.evolveum.midpoint.web.component.input.DropDownChoicePanel; import com.evolveum.midpoint.web.component.input.TextPanel; @@ -113,7 +114,7 @@ private void initParametersPanel(Form mainForm){ AjaxButton ajaxButton = new AjaxButton(ID_SEARCH_BUTTON, createStringResource("BasicSearchPanel.search")) { @Override public void onClick(AjaxRequestTarget arg0) { - Form mainForm = (Form)get(ID_MAIN_FORM); + Form mainForm = (Form)getParent().getParent(); initTable(mainForm); arg0.add(mainForm); // TODO Auto-generated method stub @@ -131,11 +132,21 @@ private void initTable(Form mainForm){ (int) getItemsPerPage(UserProfileStorage.TableId.PAGE_AUDIT_LOG_VIEWER)); table.setShowPaging(true); table.setOutputMarkupId(true); - mainForm.add(table); + mainForm.addOrReplace(table); } - private List, String>> initColumns() { - List, String>> columns = new ArrayList<>(); + private List> initColumns() { + List> columns = new ArrayList<>(); + IColumn linkColumn = new LinkColumn(createStringResource("PageAuditLogViewer.column.time"), "timestamp"){ + + @Override + public void onClick(AjaxRequestTarget target, IModel rowModel) { + setResponsePage(new PageAuditLogDetails(rowModel.getObject())); + } + + + }; + columns.add(linkColumn); IColumn timeColumn = new PropertyColumn(createStringResource("PageAuditLogViewer.column.time"), "timestamp"); columns.add(timeColumn); IColumn initiatorColumn = new PropertyColumn(createStringResource("PageAuditLogViewer.column.initiatorRef"), "initiatorRef"); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/AuditEventRecordProvider.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/AuditEventRecordProvider.java index 030a320839f..073cde51b7a 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/AuditEventRecordProvider.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/AuditEventRecordProvider.java @@ -2,6 +2,7 @@ import com.evolveum.midpoint.audit.api.AuditEventRecord; import com.evolveum.midpoint.web.component.data.BaseSortableDataProvider; +import com.evolveum.midpoint.web.component.util.SelectableBean; import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventRecordType; import org.apache.wicket.Component; import org.apache.wicket.model.IModel; @@ -43,15 +44,16 @@ public List getObject() { return listRecords(auditEventQuery, true); } - @Override - public void setObject(List auditEventRecordTypes) { - - } - @Override public void detach() { } + + @Override + public void setObject(List object) { + // TODO Auto-generated method stub + + } }; }