-
Notifications
You must be signed in to change notification settings - Fork 188
/
CertCampaignDto.java
157 lines (135 loc) · 6.17 KB
/
CertCampaignDto.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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/*
* Copyright (c) 2010-2015 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.certification.dto;
import com.evolveum.midpoint.gui.api.page.PageBase;
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.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.CertCampaignTypeUtil;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.web.component.util.Selectable;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignStateType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationStageType;
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.UserType;
import static com.evolveum.midpoint.gui.api.page.PageBase.createEnumResourceKey;
import static com.evolveum.midpoint.gui.api.page.PageBase.createStringResourceStatic;
/**
* @author mederly
*/
public class CertCampaignDto extends Selectable {
public static final String F_NAME = "name";
public static final String F_DESCRIPTION = "description";
public static final String F_OWNER_NAME = "ownerName";
public static final String F_CURRENT_STATE = "currentState";
public static final String F_NUMBER_OF_STAGES = "numberOfStages";
public static final String F_CAMPAIGN_START = "campaignStart";
public static final String F_CAMPAIGN_END = "campaignEnd";
public static final String F_STAGE_START = "stageStart";
public static final String F_STAGE_DEADLINE = "stageDeadline";
private AccessCertificationCampaignType campaign; // TODO consider replacing this by constituent primitive data items
private String ownerName;
private String currentStateName;
public CertCampaignDto(AccessCertificationCampaignType campaign, PageBase page, Task task, OperationResult result) {
this.campaign = campaign;
ownerName = resolveOwnerName(campaign.getOwnerRef(), page, task, result);
currentStateName = resolveCurrentStateName(page);
}
public String getOwnerName() {
return ownerName;
}
public static String resolveOwnerName(ObjectReferenceType ownerRef, PageBase page, Task task, OperationResult result) {
if (ownerRef == null) {
return null;
}
PrismObject<? extends ObjectType> ownerObject = WebModelServiceUtils.resolveReferenceRaw(ownerRef, page, task, result);
if (ownerObject == null) {
return null;
}
ObjectType owner = ownerObject.asObjectable();
if (owner instanceof UserType) {
UserType user = (UserType) owner;
return WebComponentUtil.getName(user) + " (" + WebComponentUtil.getOrigStringFromPoly(user.getFullName()) + ")";
} else {
return WebComponentUtil.getName(owner);
}
}
public String getName() {
return WebComponentUtil.getName(campaign);
}
public String getDescription() {
return campaign.getDescription();
}
public String getCurrentState() {
return currentStateName;
}
public int getNumberOfStages() {
return CertCampaignTypeUtil.getNumberOfStages(campaign);
}
private String resolveCurrentStateName(PageBase page) {
int stageNumber = campaign.getStageNumber();
AccessCertificationCampaignStateType state = campaign.getState();
switch (state) {
case CREATED:
case IN_REMEDIATION:
case CLOSED:
return createStringResourceStatic(page, state).getString();
case IN_REVIEW_STAGE:
case REVIEW_STAGE_DONE:
AccessCertificationStageType stage = CertCampaignTypeUtil.getCurrentStage(campaign);
String stageName = stage != null ? stage.getName() : null;
if (stageName != null) {
String key = createEnumResourceKey(state) + "_FULL";
return createStringResourceStatic(page, key, stageNumber, stageName).getString();
} else {
String key = createEnumResourceKey(state);
return createStringResourceStatic(page, key).getString() + " " + stageNumber;
}
default:
return null; // todo warning/error?
}
}
public String getCampaignStart() {
return WebComponentUtil.formatDate(campaign.getStart());
}
public String getCampaignEnd() {
return WebComponentUtil.formatDate(campaign.getEnd());
}
public String getStageStart() {
AccessCertificationStageType stage = CertCampaignTypeUtil.getCurrentStage(campaign);
return stage != null ? WebComponentUtil.formatDate(stage.getStart()) : null;
}
public String getStageDeadline() {
AccessCertificationStageType stage = CertCampaignTypeUtil.getCurrentStage(campaign);
return stage != null ? WebComponentUtil.formatDate(stage.getDeadline()) : null;
}
public String getStageEnd() {
AccessCertificationStageType stage = CertCampaignTypeUtil.getCurrentStage(campaign);
return stage != null ? WebComponentUtil.formatDate(stage.getEnd()) : null;
}
public AccessCertificationCampaignStateType getState() {
return campaign.getState();
}
public int getCurrentStageNumber() {
return campaign.getStageNumber();
}
public String getHandlerUri() {
return campaign.getHandlerUri();
}
}