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 package org.metricshub.wbem.sblim.cimclient.internal.cimxml.sax.node;
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 import java.util.ArrayList;
53 import org.metricshub.wbem.javax.cim.CIMDataType;
54 import org.metricshub.wbem.javax.cim.CIMQualifier;
55 import org.metricshub.wbem.sblim.cimclient.GenericExts;
56 import org.metricshub.wbem.sblim.cimclient.internal.cim.CIMQualifiedElementInterfaceImpl;
57
58
59
60
61
62 public class QualifiedNodeHandler {
63 private static final Boolean TRUE = Boolean.TRUE;
64
65 private ArrayList<CIMQualifier<?>> iQualiAL;
66
67 private CIMQualifiedElementInterfaceImpl iQualiImpl;
68
69 private boolean iHasEmbObjQuali, iHasEmbInstQuali;
70
71 private boolean iHasKeyQuali, iHasAssocQuali;
72
73
74
75
76
77
78
79
80
81 public static QualifiedNodeHandler init(QualifiedNodeHandler pQNH) {
82 if (pQNH == null) pQNH = new QualifiedNodeHandler();
83 pQNH.init();
84 return pQNH;
85 }
86
87
88
89
90 public void init() {
91 this.iQualiAL = GenericExts.initClearArrayList(this.iQualiAL);
92 this.iHasEmbObjQuali = this.iHasEmbInstQuali = this.iHasKeyQuali = this.iHasAssocQuali = false;
93 this.iQualiImpl = null;
94 }
95
96
97
98
99
100
101
102 public boolean addQualifierNode(Node pNode) {
103 if (!(pNode instanceof QualifierNode)) return false;
104 if (this.iQualiAL == null) this.iQualiAL = new ArrayList<CIMQualifier<?>>();
105 CIMQualifier<Object> quali = ((QualifierNode) pNode).getQualifier();
106 if (quali != null) {
107
108
109 if (CIMDataType.BOOLEAN_T.equals(quali.getDataType()) && TRUE.equals(quali.getValue())) {
110 if ("EmbeddedObject".equalsIgnoreCase(quali.getName())) {
111 this.iHasEmbObjQuali = true;
112 } else if ("KEY".equalsIgnoreCase(quali.getName())) {
113 this.iHasKeyQuali = true;
114 } else if ("ASSOCIATION".equalsIgnoreCase(quali.getName())) {
115 this.iHasAssocQuali = true;
116 }
117 } else if (
118 CIMDataType.STRING_T.equals(quali.getDataType()) && "EMBEDDEDINSTANCE".equalsIgnoreCase(quali.getName())
119 ) {
120 this.iHasEmbInstQuali = true;
121 }
122 this.iQualiAL.add(quali);
123 }
124 return true;
125 }
126
127
128
129
130
131
132 public CIMQualifier<?>[] getQualis() {
133 return getQualis(false);
134 }
135
136
137
138
139
140
141
142 public CIMQualifier<?>[] getQualis(boolean pIncludeEmbObj) {
143 makeQualiImpl(pIncludeEmbObj);
144 return this.iQualiImpl.getQualifiers();
145 }
146
147
148
149
150
151
152 public boolean isKeyed() {
153 return this.iHasKeyQuali;
154 }
155
156
157
158
159
160
161 public boolean isAssociation() {
162 return this.iHasAssocQuali;
163 }
164
165
166
167
168
169
170 public boolean isEmbeddedObject() {
171 return this.iHasEmbObjQuali;
172 }
173
174
175
176
177
178
179 public boolean isEmbeddedInstance() {
180 return this.iHasEmbInstQuali;
181 }
182
183 private static final CIMQualifier<?>[] EMPTY_QA = new CIMQualifier[0];
184
185 private void makeQualiImpl(boolean pIncludeEmbObj) {
186 if (this.iQualiImpl != null) return;
187 if (this.iQualiAL == null) {
188 this.iQualiImpl = new CIMQualifiedElementInterfaceImpl(null);
189 return;
190 }
191 this.iQualiImpl =
192 new CIMQualifiedElementInterfaceImpl(this.iQualiAL.toArray(EMPTY_QA), this.iHasKeyQuali, pIncludeEmbObj);
193 this.iQualiAL = null;
194 }
195 }