/
WebPrismUtil.java
83 lines (65 loc) · 3.16 KB
/
WebPrismUtil.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
/*
* Copyright (c) 2010-2018 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.gui.api.util;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.prism.ItemWrapper;
import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper;
import com.evolveum.midpoint.gui.impl.factory.WrapperContext;
import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper;
import com.evolveum.midpoint.prism.Item;
import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.PrismValue;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.prism.ValueStatus;
/**
* @author katka
*
*/
public class WebPrismUtil {
private static final Trace LOGGER = TraceManager.getTrace(WebPrismUtil.class);
private static final String DOT_CLASS = WebPrismUtil.class.getName() + ".";
private static final String OPERATION_CREATE_NEW_VALUE = DOT_CLASS + "createNewValue";
public static <ID extends ItemDefinition<I>, I extends Item<V, ID>, V extends PrismValue> String getHelpText(ID def) {
String doc = def.getHelp();
if (StringUtils.isEmpty(doc)) {
doc = def.getDocumentation();
if (StringUtils.isEmpty(doc)) {
return null;
}
}
return doc.replaceAll("\\s{2,}", " ").trim();
}
public static <IW extends ItemWrapper, PV extends PrismValue, VW extends PrismValueWrapper> VW createNewValueWrapper(IW itemWrapper, PV newValue, PageBase pageBase, AjaxRequestTarget target) {
LOGGER.debug("Adding value to {}", itemWrapper);
OperationResult result = new OperationResult(OPERATION_CREATE_NEW_VALUE);
VW newValueWrapper = null;
try {
if (!(itemWrapper instanceof PrismContainerWrapper)) {
itemWrapper.getItem().add(newValue);
}
Task task = pageBase.createSimpleTask(OPERATION_CREATE_NEW_VALUE);
WrapperContext context = new WrapperContext(task, result);
context.setObjectStatus(itemWrapper.findObjectStatus());
context.setShowEmpty(true);
context.setCreateIfEmpty(true);
newValueWrapper = pageBase.createValueWrapper(itemWrapper, newValue, ValueStatus.ADDED, context);
itemWrapper.getValues().add(newValueWrapper);
result.recordSuccess();
} catch (SchemaException e) {
LOGGER.error("Cannot create new value for {}", itemWrapper, e);
result.recordFatalError(pageBase.createStringResource("WebPrismUtil.message.createNewValueWrapper.fatalError", newValue, e.getMessage()).getString(), e);
target.add(pageBase.getFeedbackPanel());
}
return newValueWrapper;
}
}