Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Sep 20, 2017
2 parents b650d90 + 5719b44 commit c10447f
Show file tree
Hide file tree
Showing 54 changed files with 1,084 additions and 463 deletions.
Expand Up @@ -158,4 +158,6 @@ public class GuiStyleConstants {
public static final String CLASS_POLICY_RULES_ICON = "fa fa-balance-scale";
public static final String CLASS_POLICY_RULES_ICON_COLORED = "fa fa-balance-scale"; //TODO

public static final String CLASS_VALUE_POLICY_ICON = "fa fa-asterisk";

}
Expand Up @@ -66,6 +66,7 @@
import com.evolveum.midpoint.web.component.dialog.MainPopupDialog;
import com.evolveum.midpoint.web.component.dialog.Popupable;
import com.evolveum.midpoint.web.component.menu.*;
import com.evolveum.midpoint.web.component.menu.MenuItem;
import com.evolveum.midpoint.web.component.menu.top.LocalePanel;
import com.evolveum.midpoint.web.component.message.FeedbackAlerts;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
Expand All @@ -92,6 +93,7 @@
import com.evolveum.midpoint.web.page.admin.users.PageUser;
import com.evolveum.midpoint.web.page.admin.users.PageUsers;
import com.evolveum.midpoint.web.page.admin.valuePolicy.PageValuePolicies;
import com.evolveum.midpoint.web.page.admin.valuePolicy.PageValuePolicy;
import com.evolveum.midpoint.web.page.admin.workflow.*;
import com.evolveum.midpoint.web.page.login.PageLogin;
import com.evolveum.midpoint.web.page.self.*;
Expand All @@ -109,6 +111,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;
import org.apache.wicket.*;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
Expand Down Expand Up @@ -145,8 +148,10 @@
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import java.awt.*;
import java.io.Serializable;
import java.util.*;
import java.util.List;

/**
* @author lazyman
Expand Down Expand Up @@ -1418,10 +1423,12 @@ private MainMenuItem createResourcesItems() {

private MainMenuItem createValuePolicieItems(){
MainMenuItem item = new MainMenuItem("fa fa-asterisk", createStringResource("PageAdmin.menu.top.valuePolicies"),null);
List<MenuItem> submenu = item.getItems();
// List<MenuItem> submenu = item.getItems();

MenuItem list = new MenuItem(createStringResource("PageAdmin.menu.top.valuePolicies.list"), PageValuePolicies.class);
submenu.add(list);
// MenuItem list = new MenuItem(createStringResource("PageAdmin.menu.top.valuePolicies.list"), PageValuePolicies.class);
addMenuItem(item, "PageAdmin.menu.top.valuePolicies.list", PageValuePolicies.class);
addMenuItem(item,"PageAdmin.menu.top.valuePolicies.new", PageValuePolicy.class);
// submenu.add(list);

return item;
}
Expand Down
Expand Up @@ -138,7 +138,7 @@ public SceneDto getObject() {
? modelContext.getHookPreviewResult(PolicyRuleEnforcerHookPreviewOutputType.class)
: null;
List<EvaluatedTriggerGroupDto> triggerGroups = enforcements != null
? Collections.singletonList(EvaluatedTriggerGroupDto.create(enforcements.getRule()))
? Collections.singletonList(EvaluatedTriggerGroupDto.createFrom(enforcements.getRule(), false, null))
: Collections.emptyList();
policyViolationsModel = Model.ofList(triggerGroups);

Expand Down
Expand Up @@ -21,7 +21,15 @@
<wicket:panel>
<div class="row">
<div class="col-md-5">
<div wicket:id="changes" />
<div wicket:id="changes" ></div>
<div wicket:id="triggersContainer" class="box box-solid box-info" style="margin-bottom: 0; margin-top:20px;">
<div class="box-header with-border">
<h3 class="box-title" style="margin-right: 35px;"><wicket:message key="workItemPanel.reasons"/></h3>
</div>
<div class="box-body">
<div wicket:id="triggers"></div>
</div>
</div>
</div>
<div class="col-md-7">
<div class="box box-info">
Expand Down
Expand Up @@ -21,13 +21,16 @@
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.util.ListDataProvider;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.component.wf.SwitchableApprovalProcessPreviewsPanel;
import com.evolveum.midpoint.web.component.wf.WorkItemsPanel;
import com.evolveum.midpoint.web.component.wf.processes.itemApproval.ItemApprovalHistoryPanel;
import com.evolveum.midpoint.web.page.admin.server.dto.TaskChangesDto;
import com.evolveum.midpoint.web.page.admin.server.dto.TaskDto;
import com.evolveum.midpoint.web.page.admin.workflow.EvaluatedTriggerGroupListPanel;
import com.evolveum.midpoint.web.page.admin.workflow.ProcessInstancesPanel;
import com.evolveum.midpoint.web.page.admin.workflow.dto.EvaluatedTriggerGroupDto;
import com.evolveum.midpoint.web.page.admin.workflow.dto.ProcessInstanceDto;
import com.evolveum.midpoint.web.page.admin.workflow.dto.WorkItemDto;
import com.evolveum.midpoint.web.session.UserProfileStorage;
Expand Down Expand Up @@ -55,6 +58,8 @@ public class TaskWfChildPanel extends Panel {
private static final long serialVersionUID = 1L;

private static final String ID_CHANGES = "changes";
private static final String ID_TRIGGERS_CONTAINER = "triggersContainer";
private static final String ID_TRIGGERS = "triggers";
private static final String ID_HISTORY = "history";
private static final String ID_HISTORY_HELP = "approvalHistoryHelp";
private static final String ID_CURRENT_WORK_ITEMS_CONTAINER = "currentWorkItemsContainer";
Expand Down Expand Up @@ -86,6 +91,13 @@ private void initLayout(final IModel<TaskDto> taskDtoModel) {
changesPanel.setOutputMarkupId(true);
add(changesPanel);

WebMarkupContainer triggersContainer = new WebMarkupContainer(ID_TRIGGERS_CONTAINER);
PropertyModel<List<EvaluatedTriggerGroupDto>> triggersModel = new PropertyModel<>(taskDtoModel, TaskDto.F_TRIGGERS);
WebMarkupContainer triggers = new EvaluatedTriggerGroupListPanel(ID_TRIGGERS, triggersModel);
triggersContainer.add(triggers);
triggersContainer.add(new VisibleBehaviour(() -> !triggersModel.getObject().isEmpty()));
add(triggersContainer);

final ItemApprovalHistoryPanel history = new ItemApprovalHistoryPanel(ID_HISTORY,
new PropertyModel<>(taskDtoModel, TaskDto.F_WORKFLOW_CONTEXT),
UserProfileStorage.TableId.PAGE_TASK_HISTORY_PANEL,
Expand Down
Expand Up @@ -53,6 +53,7 @@
import com.evolveum.midpoint.web.page.admin.server.handlers.HandlerDtoFactory;
import com.evolveum.midpoint.web.page.admin.server.handlers.dto.HandlerDto;
import com.evolveum.midpoint.web.page.admin.server.handlers.dto.ResourceRelatedHandlerDto;
import com.evolveum.midpoint.web.page.admin.workflow.dto.EvaluatedTriggerGroupDto;
import com.evolveum.midpoint.web.page.admin.workflow.dto.ProcessInstanceDto;
import com.evolveum.midpoint.web.page.admin.workflow.dto.WorkItemDto;
import com.evolveum.midpoint.web.security.MidPointApplication;
Expand All @@ -74,6 +75,7 @@

import static com.evolveum.midpoint.schema.GetOperationOptions.createRetrieve;
import static com.evolveum.midpoint.schema.SelectorOptions.createCollection;
import static com.evolveum.midpoint.web.page.admin.workflow.dto.WorkItemDto.computeTriggers;

/**
* @author lazyman
Expand Down Expand Up @@ -128,6 +130,7 @@ public class TaskDto extends Selectable implements InlineMenuable {
public static final long RUNS_CONTINUALLY = -1L;
public static final long ALREADY_PASSED = -2L;
public static final long NOW = 0L;
public static final String F_TRIGGERS = "triggers";

@NotNull private final TaskType taskType;

Expand Down Expand Up @@ -157,6 +160,7 @@ public class TaskDto extends Selectable implements InlineMenuable {
// other
private List<InlineMenuItem> menuItems;
private HandlerDto handlerDto;
private List<EvaluatedTriggerGroupDto> triggers; // initialized on demand

//region Construction
public TaskDto(@NotNull TaskType taskType, ModelService modelService, TaskService taskService, ModelInteractionService modelInteractionService,
Expand Down Expand Up @@ -1133,4 +1137,12 @@ public String getAllowedNodes(List<NodeType> nodes) {
.collect(Collectors.joining(", "));
return n.isEmpty() ? "-" : n;
}

public List<EvaluatedTriggerGroupDto> getTriggers() {
if (triggers == null) {
triggers = computeTriggers(getWorkflowContext());
}
return triggers;
}

}
Expand Up @@ -16,11 +16,12 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<body>

<wicket:extend>
<form wicket:id="mainForm" class="form-inline">
<div wicket:id="valuePoliciesTable"/>
</form>

</wicket:extend>

</body>
</html>
Expand Up @@ -69,7 +69,7 @@ public PageValuePolicies() {
initLayout();
}

private void initLayout() {
protected void initLayout() {
Form mainForm = new Form(ID_MAIN_FORM);
add(mainForm);

Expand Down
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2010-2017 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.
-->

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:extend>
<div wicket:id="summaryPanel"/>
<wicket:remove>
<!-- <form wicket:id="mainForm" class="clearfix form-horizontal">
<div wicket:id="basicPanel"/>
</form> -->
</wicket:remove>
</wicket:extend>
</body>
</html>
@@ -0,0 +1,153 @@
/*
* Copyright (c) 2010-2017 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.evolveum.midpoint.web.page.admin.valuePolicy;

import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismObjectValue;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.exception.SystemException;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.application.AuthorizationAction;
import com.evolveum.midpoint.web.application.PageDescriptor;
import com.evolveum.midpoint.web.application.Url;
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.page.admin.valuePolicy.component.ValuePolicyBasicPanel;
import com.evolveum.midpoint.web.page.admin.valuePolicy.component.ValuePolicyDto;
import com.evolveum.midpoint.web.page.admin.valuePolicy.component.ValuePolicySummaryPanel;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ValuePolicyType;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import java.util.Collection;

/**
* Created by matus on 9/11/2017.
*/

@PageDescriptor(
urls = {
@Url(mountUrl = "/admin/valuepolicy", matchUrlForSecurity = "/admin/valuepolicy")
},
action = {
@AuthorizationAction(actionUri = PageAdminValuePolicies.AUTH_VALUE_POLICIES_ALL,
label = PageAdminValuePolicies.AUTH_VALUE_POLICIES_ALL_LABEL,
description = PageAdminValuePolicies.AUTH_VALUE_POLICIES_ALL_DESCRIPTION),
@AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_VALUE_POLICY_URL,
label = "PageValuePolicy.auth.valuePolcy.label",
description = "PageValuePolicy.auth.valuePolicy.description")
})


public class PageValuePolicy extends PageAdminValuePolicies {

private static final long serialVersionUID = 1L;


private static final Trace LOGGER = TraceManager.getTrace(PageValuePolicy.class);

private static final String DOT_CLASS = PageValuePolicy.class.getName() + ".";

private static final String OPERATION_LOAD_DEFINITION = DOT_CLASS + "loadDefinition";

private static final String ID_MAIN_FORM = "mainForm";
private static final String ID_BASIC_INFO_CONTAINER = "constructBasicInfoContainer";
private static final String ID_VALUE_POLICY_NAME = "valuePolicyName";
private static final String ID_SUMMARY_PANEL = "summaryPanel";
private static final String ID_BASIC_PANEL = "basicPanel";

private LoadableModel<ValuePolicyDto> valuePolicyModel;
private String policyOid;

public PageValuePolicy(PageParameters parameters) {
policyOid = parameters.get(OnePageParameterEncoder.PARAMETER).toString();
getPageParameters().overwriteWith(parameters);
initModels();
initLayout();
}

private void initModels() {
valuePolicyModel = new LoadableModel<ValuePolicyDto>(false) {
@Override
protected ValuePolicyDto load() {
if (policyOid != null) {
return loadValuePolicy(policyOid);
} else {
try {
return createValuePolicy();
} catch (SchemaException e) {
throw new SystemException(e.getMessage(), e);
}
}
}
};
}

private ValuePolicyDto createValuePolicy() throws SchemaException {

ValuePolicyType valuePolicy = getPrismContext().createObjectable(ValuePolicyType.class);

return new ValuePolicyDto(valuePolicy);
}

private ValuePolicyDto loadValuePolicy(String policyOid) {
Task task = createSimpleTask(OPERATION_LOAD_DEFINITION);
OperationResult result = task.getResult();
ValuePolicyDto valuePolicyDto = null;
try {
Collection<SelectorOptions<GetOperationOptions>> options = SelectorOptions.createCollection(GetOperationOptions.createResolveNames());
PrismObject<ValuePolicyType> valuePolicyObject =
WebModelServiceUtils.loadObject(ValuePolicyType.class, policyOid, options,
PageValuePolicy.this, task, result);
ValuePolicyType valuePolicyType = PrismObjectValue.asObjectable(valuePolicyObject);
valuePolicyDto = new ValuePolicyDto(valuePolicyType);
result.recordSuccessIfUnknown();
} catch (Exception ex) {
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't get definition", ex);
result.recordFatalError("Couldn't get definition.", ex);
}
result.recomputeStatus();

if (!WebComponentUtil.isSuccessOrHandledError(result)) {
showResult(result);
}
return valuePolicyDto;
}


protected void initLayout() {
ValuePolicySummaryPanel summaryPanel = new ValuePolicySummaryPanel(ID_SUMMARY_PANEL, new PropertyModel<>(valuePolicyModel, "prismObject"), this);
add(summaryPanel);

Form mainForm = new Form(ID_MAIN_FORM);
add(mainForm);
ValuePolicyBasicPanel basicPanel = new ValuePolicyBasicPanel(ID_BASIC_PANEL, valuePolicyModel);
mainForm.add(basicPanel);

}

}

0 comments on commit c10447f

Please sign in to comment.