-
Notifications
You must be signed in to change notification settings - Fork 188
/
PrismReferenceWrapperImpl.java
148 lines (120 loc) · 3.91 KB
/
PrismReferenceWrapperImpl.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
/*
* Copyright (c) 2010-2020 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.impl.prism.wrapper;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.function.Function;
import javax.xml.namespace.QName;
import com.evolveum.midpoint.web.component.search.Search;
import com.evolveum.midpoint.web.component.search.SearchItem;
import org.jetbrains.annotations.NotNull;
import com.evolveum.midpoint.gui.api.prism.ItemStatus;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismReferenceWrapper;
import com.evolveum.midpoint.gui.api.util.ModelServiceLocator;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.query.ObjectFilter;
/**
* @author katka
*/
public class PrismReferenceWrapperImpl<R extends Referencable>
extends ItemWrapperImpl<PrismReference, PrismReferenceValueWrapperImpl<R>>
implements PrismReferenceWrapper<R> {
private ObjectFilter filter;
private Set<Function<Search, SearchItem>> specialItemFunctions = Collections.emptySet();
public PrismReferenceWrapperImpl(PrismContainerValueWrapper<?> parent, PrismReference item, ItemStatus status) {
super(parent, item, status);
}
private static final long serialVersionUID = 1L;
@Override
public QName getTargetTypeName() {
return getItemDefinition().getTargetTypeName();
}
@Override
public QName getCompositeObjectElementName() {
return getItemDefinition().getCompositeObjectElementName();
}
@Override
public boolean isComposite() {
return getItemDefinition().isComposite();
}
@Override
public @NotNull PrismReferenceDefinition clone() {
return getItemDefinition().clone();
}
@NotNull
@Override
public PrismReference instantiate() {
return getItemDefinition().instantiate();
}
@NotNull
@Override
public PrismReference instantiate(QName name) {
return getItemDefinition().instantiate(name);
}
@Override
public ObjectFilter getFilter() {
return filter;
}
@Override
public void setFilter(ObjectFilter filter) {
this.filter = filter;
}
@Override
public List<QName> getTargetTypes() {
return WebComponentUtil.createSupportedTargetTypeList(getTargetTypeName());
}
@Override
public Set<Function<Search, SearchItem>> getSpecialSearchItemFunctions() {
return specialItemFunctions;
}
@Override
public void setSpecialSearchItemFunctions(Set<Function<Search, SearchItem>> functions) {
this.specialItemFunctions = functions;
}
@Override
public boolean isEmpty() {
if (super.isEmpty()) { return true; }
List<PrismReferenceValue> pVals = getItem().getValues();
boolean allEmpty = true;
for (PrismReferenceValue pVal : pVals) {
if (!pVal.isEmpty()) {
allEmpty = false;
break;
}
}
return allEmpty;
}
@Override
PrismReferenceDefinition getItemDefinition() {
return super.getItemDefinition();
}
@Override
public boolean isImmutable() {
// TODO
return false;
}
@Override
public void freeze() {
// TODO
}
@Override
public boolean accept(Visitor<Definition> visitor, SmartVisitation<Definition> visitation) {
// TODO
return false;
}
@Override
public void accept(Visitor<Definition> visitor) {
// TODO
}
@Override
protected PrismReferenceValue createNewEmptyValue(ModelServiceLocator locator) {
return locator.getPrismContext().itemFactory().createReferenceValue();
}
}