/
ApprovalCaseTabPanel.java
100 lines (88 loc) · 4.6 KB
/
ApprovalCaseTabPanel.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*
* Copyright (c) 2010-2019 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.cases;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.schema.util.WfContextUtil;
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectTabPanel;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.wf.DecisionsPanel;
import com.evolveum.midpoint.web.component.wf.SwitchableApprovalProcessPreviewsPanel;
import com.evolveum.midpoint.web.component.wf.processes.itemApproval.ItemApprovalHistoryPanel;
import com.evolveum.midpoint.web.page.admin.workflow.dto.DecisionDto;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ItemApprovalProcessStateType;
import org.apache.commons.collections.CollectionUtils;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.model.Model;
import java.util.ArrayList;
import java.util.List;
/**
* Created by honchar
*/
public class ApprovalCaseTabPanel extends AbstractObjectTabPanel<CaseType> {
private static final long serialVersionUID = 1L;
private static final String ID_APPROVAL_CASE_PANEL = "approvalCasePanel";
private static final String ID_HISTORY_CONTAINER = "historyContainer";
private static final String ID_HISTORY_PANEL = "historyPanel";
private static final String ID_HISTORY_HELP = "approvalHistoryHelp";
public ApprovalCaseTabPanel(String id, Form<PrismObjectWrapper<CaseType>> mainForm, LoadableModel<PrismObjectWrapper<CaseType>> objectWrapperModel, PageBase pageBase) {
super(id, mainForm, objectWrapperModel);
}
@Override
protected void onInitialize(){
super.onInitialize();
initLayout();
}
private void initLayout(){
SwitchableApprovalProcessPreviewsPanel approvalPanel = new SwitchableApprovalProcessPreviewsPanel(ID_APPROVAL_CASE_PANEL, Model.of(getObjectWrapper().getOid()),
Model.of(WfContextUtil.isInStageBeforeLastOne(getObjectWrapper().getObject().asObjectable())), getPageBase());
approvalPanel.setOutputMarkupId(true);
add(approvalPanel);
List<DecisionDto> decisionList = calculateDecisionList();
WebMarkupContainer historyContainer = new WebMarkupContainer(ID_HISTORY_CONTAINER);
historyContainer.setOutputMarkupId(true);
historyContainer.add(WebComponentUtil.createHelp(ID_HISTORY_HELP));
historyContainer.add(new VisibleBehaviour(() -> !CollectionUtils.isEmpty(decisionList)));
add(historyContainer);
DecisionsPanel historyPanel = new DecisionsPanel(ID_HISTORY_PANEL,
Model.ofList(decisionList), UserProfileStorage.TableId.PAGE_WORK_ITEM_HISTORY_PANEL,
(int) getPageBase().getItemsPerPage(UserProfileStorage.TableId.PAGE_WORK_ITEM_HISTORY_PANEL));
historyPanel.setOutputMarkupId(true);
historyContainer.add(historyPanel);
}
public List<DecisionDto> calculateDecisionList() {
List<DecisionDto> rv = new ArrayList<>();
CaseType parentCase = getObjectWrapper().getObject().asObjectable();
if (parentCase == null) {
return rv;
}
if (parentCase.getEvent() != null && !parentCase.getEvent().isEmpty()) {
parentCase.getEvent().forEach(e -> CollectionUtils.addIgnoreNull(rv, DecisionDto.create(e, ApprovalCaseTabPanel.this.getPageBase())));
} else {
ItemApprovalProcessStateType instanceState = WfContextUtil.getItemApprovalProcessInfo(parentCase.getWorkflowContext());
if (instanceState != null) {
//todo where we can take decisions now?
// instanceState.getDecisions().forEach(d -> CollectionUtils.addIgnoreNull(rv, DecisionDto.create(d)));
}
}
return rv;
}
}