Mercurial > hg > Members > tatsuki > JungleXMLReader
annotate src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java @ 43:1bdd50e26fac
Merge with 037731e99d6e876ecc1ef2d921d2ce5f71974376
author | one |
---|---|
date | Tue, 25 Nov 2014 12:12:17 +0900 |
parents | c036d36c33af 037731e99d6e |
children | 5e8eac03fed3 |
rev | line source |
---|---|
7 | 1 package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; |
2 | |
3 import java.util.Iterator; | |
11 | 4 import java.util.LinkedList; |
42 | 5 import java.util.Stack; |
8 | 6 import java.util.regex.Matcher; |
7 import java.util.regex.Pattern; | |
7 | 8 |
32 | 9 import ac.jp.u_ryukyu.cr.ie.tatsuki.xmlReader.LoadXml; |
15 | 10 import fj.Ord; |
11 import fj.P2; | |
12 import fj.data.TreeMap; | |
7 | 13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; |
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; | |
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; | |
9 | 16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; |
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; | |
42 | 18 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex; |
7 | 19 |
20 public class JuGrix { | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
21 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
22 JungleTree personTree; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
23 JungleTree organizationTree; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
24 JungleTree roleTree; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
25 JungleTree rdeTree; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
26 |
42 | 27 public JuGrix() { |
28 | 28 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
29 try { |
32 | 30 LoadXml reader = new LoadXml(); |
42 | 31 personTree = reader.loadTestData("Person.xml"); |
32 organizationTree = reader.loadTestData("Organization.xml"); | |
33 roleTree = reader.loadTestData("Role.xml"); | |
34 rdeTree = reader.loadTestData("RoleDescriptionElement.xml"); | |
29 | 35 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
36 } catch (Exception e) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
37 e.printStackTrace(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
38 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
39 } |
41 | 40 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
41 public boolean isActive(String id) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
42 |
33 | 43 InterfaceTraverser personTraverser = personTree.getTraverser(); |
42 | 44 Iterator<TreeNode> personIdpairIterator = personTraverser.find((TreeNode node) -> { |
30 | 45 String personId = node.getAttributes().getString("Person-id"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
46 if (personId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
47 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
48 if (personId.equals(id)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
49 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
50 return false; |
30 | 51 }, "Person-id", id); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
52 |
34 | 53 if (personIdpairIterator.hasNext()) |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
54 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
55 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
56 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
57 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
58 |
42 | 59 public Iterator<String> personIds(String orgId, LinkedList<String> filterIds) { |
60 | |
61 InterfaceTraverser orgTraverser = organizationTree.getTraverser(); | |
33 | 62 |
42 | 63 Iterator<TreeNode> orgIdNodeIterator = orgTraverser.find((TreeNode node) -> { |
64 String nodeElement = node.getAttributes().getString("element"); | |
65 if (nodeElement == null) | |
66 return false; | |
67 if (!nodeElement.equals("Organization")) | |
68 return false; | |
69 String targetOrgId = node.getAttributes().getString("Organization-id"); | |
70 if (targetOrgId == null) | |
71 return false; | |
72 if (targetOrgId.equals(orgId)) | |
73 return true; | |
74 return false; | |
75 }, "Organization-id", orgId); | |
41 | 76 |
42 | 77 if (!orgIdNodeIterator.hasNext()) |
78 return new NullIterator<String>(); | |
33 | 79 |
42 | 80 TreeNode orgIdNode = orgIdNodeIterator.next(); |
81 TreeNode orgRoleIdNodes = orgIdNode.getChildren().at(2).b(); | |
82 TreeNode orgRoleIdNode = orgRoleIdNodes.getChildren().at(0).b(); | |
83 String orgRoleId = orgRoleIdNode.getAttributes().getString("text-roleRefId"); | |
84 if (!filter(filterIds, orgRoleId)) | |
85 return new NullIterator<String>(); | |
86 | |
87 InterfaceTraverser traverser = personTree.getTraverser(); | |
31 | 88 |
42 | 89 return new Iterator<String>() { |
90 Iterator<TreeNode> orgIdNodeIterator = traverser.find((TreeNode node) -> { | |
91 String nodeElement = node.getAttributes().getString("element"); | |
92 if (nodeElement == null) | |
93 return false; | |
94 if (!nodeElement.equals("organizationRefId")) | |
95 return false; | |
96 String targetOrgId = node.getAttributes().getString("text-organizationRefId"); | |
97 if (targetOrgId == null) | |
98 return false; | |
99 if (targetOrgId.equals(orgId)) | |
100 return true; | |
101 return false; | |
102 }, "text-organizationRefId", orgId); | |
31 | 103 |
42 | 104 String targetPersonId; |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
105 |
31 | 106 @Override |
107 public boolean hasNext() { | |
42 | 108 for (; orgIdNodeIterator.hasNext();) { |
109 TreeNode orgIdNode = orgIdNodeIterator.next(); | |
110 ParentIndex parentIndex = traverser.getParentIndex(); | |
111 TreeNode OrganizationMappedByRoleNode = parentIndex.get(orgIdNode); | |
112 TreeNode parentOrganizations = parentIndex.get(OrganizationMappedByRoleNode); | |
113 TreeNode targetPersonIdNode = parentIndex.get(parentOrganizations); | |
114 targetPersonId = targetPersonIdNode.getAttributes().getString("Person-id"); | |
31 | 115 return true; |
34 | 116 } |
31 | 117 return false; |
118 } | |
119 | |
120 @Override | |
121 public String next() { | |
42 | 122 return targetPersonId; |
31 | 123 } |
124 | |
125 }; | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
126 } |
41 | 127 |
42 | 128 public Iterator<String> roleIds(String id, LinkedList<String> filterIds) { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
129 Pattern personPattern = Pattern.compile("p:"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
130 Matcher personMacher = personPattern.matcher(id); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
131 if (personMacher.find()) { |
42 | 132 return searchPersonRoleIds(personTree, id, "Person", filterIds); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
133 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
134 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
135 Pattern organizationPattern = Pattern.compile("o:"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
136 Matcher organizationMacher = organizationPattern.matcher(id); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
137 if (organizationMacher.find()) { |
42 | 138 return searchOrgRoleIds(organizationTree, id, "Organization", filterIds); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
139 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
140 |
42 | 141 return new NullIterator<String>(); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
142 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
143 |
42 | 144 public Iterator<String> searchPersonRoleIds(JungleTree tree, String id, String element, LinkedList<String> filterIds) { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
145 |
34 | 146 InterfaceTraverser traverser = tree.getTraverser(); |
147 | |
42 | 148 return new Iterator<String>() { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
149 |
42 | 150 String roleRefId = ""; |
151 Iterator<TreeNode> idNodeIterator = traverser.find((TreeNode node) -> { | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
152 String nodeElement = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
153 if (nodeElement == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
154 return false; |
42 | 155 if (!nodeElement.equals(element)) |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
156 return false; |
42 | 157 String nodeId = node.getAttributes().getString(element + "-id"); |
158 if (nodeId == null) | |
159 return false; | |
160 if (nodeId.equals(id)) | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
161 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
162 return false; |
42 | 163 }, element + "-id", id); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
164 |
42 | 165 Iterator<TreeNode> OrganizationMappedByRoleIterator = getParentOrgs(); |
31 | 166 |
167 @Override | |
168 public boolean hasNext() { | |
42 | 169 |
170 if (OrganizationMappedByRoleIterator == null) | |
171 return false; | |
172 | |
173 if (OrganizationMappedByRoleIterator.hasNext()) | |
174 roleRefId = search(); | |
175 else | |
176 roleRefId = null; | |
177 | |
178 if (roleRefId != null) | |
179 return true; | |
180 | |
181 OrganizationMappedByRoleIterator = getParentOrgs(); | |
182 if (OrganizationMappedByRoleIterator != null) | |
183 roleRefId = search(); | |
184 | |
185 if (roleRefId != null) | |
31 | 186 return true; |
42 | 187 |
188 return this.hasNext(); | |
189 } | |
190 | |
191 private String search() { | |
192 for (; OrganizationMappedByRoleIterator.hasNext();) { | |
193 TreeNode OrganizationMappedByRole = OrganizationMappedByRoleIterator.next(); | |
194 TreeNode organizationRefIdNode = OrganizationMappedByRole.getChildren().at(0).b(); | |
195 System.out.println(organizationRefIdNode.getAttributes().getString("element")); | |
196 String organizationRefId = organizationRefIdNode.getAttributes().getString("text-organizationRefId"); | |
197 if (!filterIds.contains(organizationRefId)) | |
198 continue; | |
199 | |
200 TreeNode roleRefIdNode = OrganizationMappedByRole.getChildren().at(1).b(); | |
201 return roleRefIdNode.getAttributes().getString("text-roleRefId"); | |
202 } | |
203 OrganizationMappedByRoleIterator = getParentOrgs(); | |
204 | |
205 return null; | |
206 } | |
207 | |
208 private Iterator<TreeNode> getParentOrgs() { | |
209 for (; idNodeIterator.hasNext();) { | |
210 TreeNode targetPersonNode = idNodeIterator.next(); | |
211 TreeNode parentOrganizations = targetPersonNode.getChildren().at(5).b(); | |
212 return parentOrganizations.getChildren().iterator(); | |
213 } | |
214 return null; | |
31 | 215 } |
216 | |
217 @Override | |
218 public String next() { | |
42 | 219 return roleRefId; |
31 | 220 } |
221 | |
222 }; | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
223 } |
33 | 224 |
42 | 225 public Iterator<String> searchOrgRoleIds(JungleTree tree, String id, String element, LinkedList<String> filterIds) { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
226 |
42 | 227 InterfaceTraverser traverser = tree.getTraverser(); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
228 |
42 | 229 return new Iterator<String>() { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
230 |
42 | 231 String roleRefId = ""; |
232 Iterator<TreeNode> idNodeIterator = traverser.find((TreeNode node) -> { | |
233 String nodeElement = node.getAttributes().getString("element"); | |
234 if (nodeElement == null) | |
235 return false; | |
236 if (!nodeElement.equals(element)) | |
237 return false; | |
238 String nodeId = node.getAttributes().getString(element + "-id"); | |
239 if (nodeId == null) | |
240 return false; | |
241 if (nodeId.equals(id)) | |
242 return true; | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
243 return false; |
42 | 244 }, element + "-id", id); |
245 Iterator<TreeNode> OrganizationMappedByRoleIterator = getParentOrgs(); | |
31 | 246 |
247 @Override | |
248 public boolean hasNext() { | |
42 | 249 |
250 if (OrganizationMappedByRoleIterator == null) | |
251 return false; | |
252 if (OrganizationMappedByRoleIterator.hasNext()) | |
253 roleRefId = search(); | |
254 else | |
255 roleRefId = null; | |
256 if (roleRefId != null) | |
257 return true; | |
258 | |
259 OrganizationMappedByRoleIterator = getParentOrgs(); | |
260 if (OrganizationMappedByRoleIterator != null) | |
261 roleRefId = search(); | |
262 | |
263 if (roleRefId != null) | |
31 | 264 return true; |
42 | 265 |
31 | 266 return false; |
267 } | |
268 | |
42 | 269 private String search() { |
270 for (; OrganizationMappedByRoleIterator.hasNext();) { | |
271 TreeNode OrganizationMappedByRole = OrganizationMappedByRoleIterator.next(); | |
272 TreeNode organizationRefIdNode = OrganizationMappedByRole.getChildren().at(0).b(); | |
273 String organizationRefId = organizationRefIdNode.getAttributes().getString("text-organizationRefId"); | |
274 if (!filterIds.contains(organizationRefId)) | |
275 continue; | |
276 | |
277 TreeNode roleRefIdNode = OrganizationMappedByRole.getChildren().at(1).b(); | |
278 return roleRefIdNode.getAttributes().getString("text-roleRefId"); | |
279 } | |
280 OrganizationMappedByRoleIterator = getParentOrgs(); | |
281 | |
282 return null; | |
283 } | |
284 | |
285 private Iterator<TreeNode> getParentOrgs() { | |
286 for (; idNodeIterator.hasNext();) { | |
287 TreeNode targetPersonNode = idNodeIterator.next(); | |
288 TreeNode parentOrganizations = targetPersonNode.getChildren().at(4).b(); | |
289 return parentOrganizations.getChildren().iterator(); | |
290 } | |
291 return null; | |
292 } | |
293 | |
31 | 294 @Override |
295 public String next() { | |
42 | 296 return roleRefId; |
31 | 297 } |
298 | |
299 }; | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
300 } |
33 | 301 |
302 public Iterator<String> competentRoleId(String personId) { | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
303 |
33 | 304 InterfaceTraverser personTraverser = personTree.getTraverser(); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
305 |
42 | 306 return new Iterator<String>() { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
307 |
42 | 308 String roleId = ""; |
309 Iterator<TreeNode> personNodeIterator = personTraverser.find((TreeNode node) -> { | |
310 String nodeElement = node.getAttributes().getString("element"); | |
311 if (nodeElement == null) | |
312 return false; | |
313 if (!nodeElement.equals("Person")) | |
34 | 314 return false; |
42 | 315 String targetPersonId = node.getAttributes().getString("Person-id"); |
316 if (targetPersonId == null) | |
317 return false; | |
318 if (targetPersonId.equals(personId)) | |
319 return true; | |
33 | 320 return false; |
42 | 321 }, "PersonId", personId); |
322 Iterator<TreeNode> PriorityMappedByRoleIterator = new NullIterator<TreeNode>(); | |
31 | 323 |
324 @Override | |
325 public boolean hasNext() { | |
42 | 326 |
327 for (; PriorityMappedByRoleIterator.hasNext();) { | |
328 if (search()) | |
329 return true; | |
330 } | |
331 | |
332 for (; personNodeIterator.hasNext();) { | |
333 TreeNode personNode = personNodeIterator.next(); | |
334 TreeNode prioritiesNode = personNode.getChildren().at(6).b(); | |
335 PriorityMappedByRoleIterator = prioritiesNode.getChildren().iterator(); | |
336 for (; PriorityMappedByRoleIterator.hasNext();) { | |
337 if (search()) | |
338 return true; | |
339 } | |
340 } | |
31 | 341 return false; |
342 } | |
343 | |
42 | 344 private boolean search() { |
345 TreeNode priorityMappedByRole = PriorityMappedByRoleIterator.next(); | |
346 TreeNode priorityNode = priorityMappedByRole.getChildren().at(0).b(); | |
347 String priority = priorityNode.getAttributes().getString("text-priority"); | |
348 if (priority.equals("0")) { | |
349 TreeNode roleIdNode = priorityMappedByRole.getChildren().at(1).b(); | |
350 roleId = roleIdNode.getAttributes().getString("text-roleRefId"); | |
31 | 351 return true; |
34 | 352 } |
31 | 353 return false; |
354 } | |
355 | |
356 @Override | |
357 public String next() { | |
42 | 358 return roleId; |
33 | 359 } |
360 }; | |
361 } | |
41 | 362 |
363 public Iterator<String> concurrentRoleIds(String personId) { | |
364 | |
365 InterfaceTraverser personTraverser = personTree.getTraverser(); | |
366 | |
42 | 367 return new Iterator<String>() { |
41 | 368 |
42 | 369 String roleId = ""; |
370 Iterator<TreeNode> personNodeIterator = personTraverser.find((TreeNode node) -> { | |
371 String nodeElement = node.getAttributes().getString("element"); | |
372 if (nodeElement == null) | |
373 return false; | |
374 if (!nodeElement.equals("Person")) | |
41 | 375 return false; |
42 | 376 String targetPersonId = node.getAttributes().getString("Person-id"); |
377 if (targetPersonId == null) | |
378 return false; | |
379 if (targetPersonId.equals(personId)) | |
380 return true; | |
381 return false; | |
382 }, "PersonId", personId); | |
383 Iterator<TreeNode> PriorityMappedByRoleIterator = new NullIterator<TreeNode>(); | |
41 | 384 |
385 @Override | |
386 public boolean hasNext() { | |
42 | 387 |
388 for (; PriorityMappedByRoleIterator.hasNext();) { | |
389 if (search()) | |
390 return true; | |
391 } | |
392 | |
393 for (; personNodeIterator.hasNext();) { | |
394 TreeNode personNode = personNodeIterator.next(); | |
395 TreeNode prioritiesNode = personNode.getChildren().at(6).b(); | |
396 PriorityMappedByRoleIterator = prioritiesNode.getChildren().iterator(); | |
397 for (; PriorityMappedByRoleIterator.hasNext();) { | |
398 if (search()) | |
399 return true; | |
400 } | |
401 } | |
402 return false; | |
403 } | |
404 | |
405 private boolean search() { | |
406 TreeNode priorityMappedByRole = PriorityMappedByRoleIterator.next(); | |
407 TreeNode priorityNode = priorityMappedByRole.getChildren().at(0).b(); | |
408 int priority = Integer.parseInt(priorityNode.getAttributes().getString("text-priority")); | |
409 | |
410 if (priority > 0) { | |
411 TreeNode roleIdNode = priorityMappedByRole.getChildren().at(1).b(); | |
412 roleId = roleIdNode.getAttributes().getString("text-roleRefId"); | |
41 | 413 return true; |
42 | 414 } |
41 | 415 return false; |
42 | 416 |
41 | 417 } |
418 | |
419 @Override | |
420 public String next() { | |
42 | 421 return roleId; |
41 | 422 } |
423 }; | |
424 } | |
425 | |
33 | 426 public Iterator<String> deepPersonIds(String orgId, LinkedList<String> filterIds) { |
41 | 427 |
33 | 428 return new Iterator<String>() { |
42 | 429 Iterator<String> orgIdIterator = deepParentOrganizationIdsPlus(orgId, filterIds); |
430 private Iterator<String> personIterator = new NullIterator<String>(); | |
431 String personId = ""; | |
33 | 432 |
433 @Override | |
434 public boolean hasNext() { | |
42 | 435 for (; orgIdIterator.hasNext();) { |
436 if (personIterator.hasNext()) { | |
437 personId = personIterator.next(); | |
438 return true; | |
439 } | |
34 | 440 |
42 | 441 String targetOrgId = orgIdIterator.next(); |
442 personIterator = personIds(targetOrgId, new LinkedList<>()); | |
443 if (personIterator.hasNext()) { | |
444 personId = personIterator.next(); | |
34 | 445 return true; |
42 | 446 } |
34 | 447 } |
31 | 448 return false; |
449 } | |
450 | |
451 @Override | |
452 public String next() { | |
42 | 453 // TODO Auto-generated method stub |
454 return personId; | |
455 } | |
456 | |
457 }; | |
458 } | |
459 | |
460 public Iterator<String> deepChildOrganizationIdsPlus(String orgId, LinkedList<String> filterIds) { | |
461 | |
462 return new Iterator<String>() { | |
463 Iterator<String> childOrgIdIterator = deepChildOrganizationIds(orgId, filterIds); | |
464 String childOrgId = initOrgId(); | |
465 | |
466 @Override | |
467 public boolean hasNext() { | |
468 return childOrgId != null; | |
31 | 469 } |
42 | 470 |
471 private String initOrgId() { | |
472 if (filter(filterIds, orgId)) | |
473 return orgId; | |
474 if (childOrgIdIterator.hasNext()) | |
475 return childOrgIdIterator.next(); | |
476 return null; | |
477 } | |
478 | |
479 @Override | |
480 public String next() { | |
481 String str = childOrgId; | |
482 if (childOrgIdIterator.hasNext()) | |
483 childOrgId = childOrgIdIterator.next(); | |
484 else | |
485 childOrgId = null; | |
486 return str; | |
487 } | |
488 | |
31 | 489 }; |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
490 } |
41 | 491 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
492 public Iterator<String> deepChildOrganizationIds(String orgId, LinkedList<String> filterIds) { |
31 | 493 |
42 | 494 return new Iterator<String>() { |
495 | |
496 Iterator<TreeNode> childOrgnizationIdsIterator = childOrganizationIdsNode(orgId); | |
497 Stack<String> orgIdStack = new Stack<String>(); | |
498 | |
499 String childOrgId; | |
500 | |
501 @Override | |
502 public boolean hasNext() { | |
31 | 503 |
42 | 504 for (; childOrgnizationIdsIterator.hasNext();) { |
505 TreeNode parentOrgIdNode = childOrgnizationIdsIterator.next(); | |
506 childOrgId = parentOrgIdNode.getAttributes().getString("text-organizationRefId"); | |
507 orgIdStack.push(childOrgId); | |
508 if (orgNodefilter(filterIds, parentOrgIdNode)) | |
509 return true; | |
510 } | |
511 if (orgIdStack.isEmpty()) | |
512 return false; | |
34 | 513 |
42 | 514 childOrgnizationIdsIterator = childOrganizationIdsNode(orgIdStack.pop()); |
515 return this.hasNext(); | |
516 } | |
31 | 517 |
518 @Override | |
519 public String next() { | |
34 | 520 return childOrgId; |
31 | 521 } |
522 | |
523 }; | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
524 } |
41 | 525 |
34 | 526 public TreeMap<String, String> _deepChildOrganizationIds(String orgId, TreeMap<String, String> orgIdsTreeMap) { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
527 |
34 | 528 TreeMap<String, String> childrenIdTreeMap = _childOrganizationIds(orgId, TreeMap.empty(Ord.stringOrd)); |
529 | |
530 if (childrenIdTreeMap.isEmpty()) | |
31 | 531 return orgIdsTreeMap; |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
532 |
34 | 533 Iterator<P2<String, String>> childrenIdIterator = childrenIdTreeMap.iterator(); |
534 | |
535 for (; childrenIdIterator.hasNext();) { | |
536 String childrenId = childrenIdIterator.next()._1(); | |
537 orgIdsTreeMap = orgIdsTreeMap.set(childrenId, childrenId); | |
538 orgIdsTreeMap = _deepChildOrganizationIds(childrenId, orgIdsTreeMap); | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
539 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
540 |
31 | 541 return orgIdsTreeMap; |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
542 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
543 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
544 public Iterator<String> childOrganizationIds(String orgId, LinkedList<String> filterIds) { |
34 | 545 |
31 | 546 return new Iterator<String>() { |
42 | 547 Iterator<TreeNode> orgNodeIterator = childOrganizationIdsNode(orgId); |
548 String organizationRefId; | |
31 | 549 |
550 @Override | |
551 public boolean hasNext() { | |
42 | 552 for (; orgNodeIterator.hasNext();) { |
553 TreeNode organizationRefIdNode = orgNodeIterator.next(); | |
554 organizationRefId = organizationRefIdNode.getAttributes().getString("text-organizationRefId"); | |
555 return true; | |
34 | 556 } |
31 | 557 return false; |
558 } | |
559 | |
560 @Override | |
561 public String next() { | |
42 | 562 return organizationRefId; |
563 } | |
564 | |
565 }; | |
566 } | |
567 | |
568 public Iterator<TreeNode> childOrganizationIdsNode(String orgId) { | |
569 | |
570 InterfaceTraverser orgTraverser = organizationTree.getTraverser(); | |
571 | |
572 return new Iterator<TreeNode>() { | |
573 TreeNode childOrgNode; | |
574 | |
575 Iterator<TreeNode> orgIdNodeIterator = orgTraverser.find((TreeNode node) -> { | |
576 String nodeElement = node.getAttributes().getString("element"); | |
577 if (nodeElement == null) | |
578 return false; | |
579 if (!nodeElement.equals("Organization")) | |
580 return false; | |
581 String nodeId = node.getAttributes().getString("Organization-id"); | |
582 if (nodeId == null) | |
583 return false; | |
584 if (nodeId.equals(orgId)) | |
585 return true; | |
586 return false; | |
587 }, "Organization-id", orgId); | |
588 | |
589 Iterator<TreeNode> childOrganizations = getParentOrgs(); | |
590 | |
591 @Override | |
592 public boolean hasNext() { | |
593 | |
594 if (childOrganizations == null) | |
595 return false; | |
596 if (childOrganizations.hasNext()) | |
597 childOrgNode = search(); | |
598 else | |
599 childOrgNode = null; | |
600 if (childOrgNode != null) | |
601 return true; | |
602 | |
603 childOrganizations = getParentOrgs(); | |
604 if (childOrganizations != null) | |
605 childOrgNode = search(); | |
606 | |
607 if (childOrgNode != null) | |
608 return true; | |
609 | |
610 return this.hasNext(); | |
611 } | |
612 | |
613 @Override | |
614 public TreeNode next() { | |
615 return childOrgNode; | |
616 } | |
617 | |
618 private TreeNode search() { | |
619 for (; childOrganizations.hasNext();) { | |
620 TreeNode OrganizationMappedByRole = childOrganizations.next(); | |
621 TreeNode organizationRefIdsNode = OrganizationMappedByRole.getChildren().at(0).b(); | |
622 TreeNode organizationRefIdNode = organizationRefIdsNode.getChildren().at(0).b(); | |
623 return organizationRefIdNode; | |
624 | |
625 } | |
626 childOrganizations = getParentOrgs(); | |
627 | |
628 return null; | |
629 } | |
630 | |
631 private Iterator<TreeNode> getParentOrgs() { | |
632 for (; orgIdNodeIterator.hasNext();) { | |
633 TreeNode targetPersonNode = orgIdNodeIterator.next(); | |
634 TreeNode parentOrganizations = targetPersonNode.getChildren().at(3).b(); | |
635 return parentOrganizations.getChildren().iterator(); | |
636 } | |
637 return null; | |
31 | 638 } |
639 }; | |
640 | |
641 } | |
642 | |
42 | 643 private boolean orgNodefilter(LinkedList<String> filterIds, TreeNode orgNode) { |
644 System.out.println(orgNode.getAttributes().getString("element")); | |
645 String orgId = orgNode.getAttributes().getString("text-organizationRefId"); | |
646 | |
647 return filter(filterIds, orgId); | |
648 } | |
649 | |
650 private boolean filter(LinkedList<String> filterIds, String id) { | |
651 | |
652 Pattern orgPattern = Pattern.compile("o:"); | |
653 Matcher orgMacher = orgPattern.matcher(id); | |
654 if (orgMacher.find()) { | |
655 id = getRole(id); | |
656 } | |
657 | |
658 for (String filterId : filterIds) { | |
659 Pattern rolePattern = Pattern.compile("r:"); | |
660 Matcher roleMacher = rolePattern.matcher(filterId); | |
661 if (roleMacher.find()) { | |
662 if (!filterId.equals(id)) { | |
663 return false; | |
664 } | |
665 } else { | |
666 Pattern rdePattern = Pattern.compile("rde:"); | |
667 Matcher rdeMacher = rdePattern.matcher(filterId); | |
668 if (rdeMacher.find()) { | |
669 if (!getRde(id, filterId)) | |
670 return false; | |
671 } | |
672 } | |
673 } | |
674 return true; | |
675 } | |
676 | |
677 private String getRole(String orgId) { | |
678 InterfaceTraverser orgTraverser = organizationTree.getTraverser(); | |
679 Iterator<TreeNode> orgNodeIterator = orgTraverser.find((TreeNode node) -> { | |
680 String nodeElement = node.getAttributes().getString("element"); | |
681 if (nodeElement == null) | |
682 return false; | |
683 if (!nodeElement.equals("Organization")) | |
684 return false; | |
685 String nodeId = node.getAttributes().getString("Organization"); | |
686 if (nodeId == null) | |
687 return false; | |
688 if (nodeId.equals(orgId)) | |
689 return true; | |
690 return false; | |
691 }, "Organization-id", orgId); | |
692 | |
693 if (!orgNodeIterator.hasNext()) | |
694 return ""; | |
695 | |
696 TreeNode orgNode = orgNodeIterator.next(); | |
697 TreeNode roleRefIds = orgNode.getChildren().at(2).b(); | |
698 TreeNode roleRefId = roleRefIds.getChildren().at(0).b(); | |
699 String roleId = roleRefId.getAttributes().getString("text-roleRefId"); | |
700 return roleId; | |
701 } | |
702 | |
703 private boolean getRde(String roleId, String filterId) { | |
704 | |
705 InterfaceTraverser roleTraverser = roleTree.getTraverser(); | |
706 Iterator<TreeNode> rdeIdNodeIterator = roleTraverser.find((TreeNode node) -> { | |
707 String nodeElement = node.getAttributes().getString("element"); | |
708 if (nodeElement == null) | |
709 return false; | |
710 if (!nodeElement.equals("Role")) | |
711 return false; | |
712 String nodeId = node.getAttributes().getString("Role-id"); | |
713 if (nodeId == null) | |
714 return false; | |
715 if (nodeId.equals(roleId)) | |
716 return true; | |
717 return false; | |
718 }, "Role-id", roleId); | |
719 | |
720 for (; rdeIdNodeIterator.hasNext();) { | |
721 TreeNode rdeIdNode = rdeIdNodeIterator.next(); | |
722 TreeNode roleDescriptionElementRefIds = rdeIdNode.getChildren().at(6).b(); | |
723 Iterator<TreeNode> roleDescriptionElementRefIdIterator = roleDescriptionElementRefIds.getChildren().iterator(); | |
724 for (; roleDescriptionElementRefIdIterator.hasNext();) { | |
725 String roleDescriptionElementRefId = roleDescriptionElementRefIdIterator.next().getAttributes() | |
726 .getString("text-roleDescriptionElementRefId"); | |
727 System.out.println(roleDescriptionElementRefId); | |
728 if (roleDescriptionElementRefId.equals(filterId)) | |
729 return true; | |
730 } | |
731 } | |
732 return false; | |
733 } | |
734 | |
34 | 735 public TreeMap<String, String> _childOrganizationIds(String orgId, TreeMap<String, String> childOrgIdsTreeMap) { |
28 | 736 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
737 InterfaceTraverser orgTraverser = organizationTree.getTraverser(); |
28 | 738 |
42 | 739 Iterator<TreeNode> orgIdNodeIterator = orgTraverser.find((TreeNode node) -> { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
740 String nodeElement = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
741 if (nodeElement == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
742 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
743 if (!nodeElement.equals("Organization")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
744 return false; |
28 | 745 String nodeId = node.getAttributes().getString("Organization-id"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
746 if (nodeId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
747 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
748 if (nodeId.equals(orgId)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
749 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
750 return false; |
28 | 751 }, "Organization-id", orgId); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
752 |
42 | 753 if (!orgIdNodeIterator.hasNext()) |
31 | 754 return childOrgIdsTreeMap; |
28 | 755 |
42 | 756 TreeNode orgIdNode = orgIdNodeIterator.next(); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
757 |
42 | 758 Iterator<TreeNode> chilrenOrgNodeIterator = orgTraverser.findInSubTree((TreeNode node) -> { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
759 String nodeElement = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
760 if (nodeElement == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
761 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
762 if (nodeElement.equals("childOrganizations")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
763 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
764 return false; |
42 | 765 }, orgIdNode, "element", "childOrganizations"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
766 |
42 | 767 if (!chilrenOrgNodeIterator.hasNext()) |
31 | 768 return childOrgIdsTreeMap; |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
769 |
42 | 770 TreeNode chilerenOrg = chilrenOrgNodeIterator.next(); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
771 |
42 | 772 Iterator<TreeNode> chilrenOrgIdNodeIterator = orgTraverser.findInSubTreeAllValue((TreeNode node) -> { |
773 String nodeElement = node.getAttributes().getString("element"); | |
774 if (nodeElement == null) | |
775 return false; | |
776 if (!nodeElement.equals("organizationRefIds")) | |
777 return false; | |
778 nodeElement = node.getAttributes().getString("text-organizationRefIds"); | |
779 if (nodeElement != null) | |
780 return true; | |
781 return false; | |
782 }, chilerenOrg, "text-organizationRefIds"); | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
783 |
42 | 784 for (; chilrenOrgIdNodeIterator.hasNext();) { |
785 String childrenOrgId = chilrenOrgIdNodeIterator.next().getAttributes().getString("text-organizationRefIds"); | |
34 | 786 childOrgIdsTreeMap = childOrgIdsTreeMap.set(childrenOrgId, childrenOrgId); |
28 | 787 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
788 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
789 |
31 | 790 return childOrgIdsTreeMap; |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
791 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
792 |
42 | 793 class NullIterator<T> implements Iterator<T> { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
794 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
795 @Override |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
796 public boolean hasNext() { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
797 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
798 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
799 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
800 @Override |
42 | 801 public T next() { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
802 return null; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
803 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
804 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
805 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
806 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
807 public String rolePriority(String personId, String roleId) { |
34 | 808 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
809 InterfaceTraverser personTraverser = personTree.getTraverser(); |
34 | 810 |
42 | 811 Iterator<TreeNode> roleIdNodeIterator = personTraverser.find((TreeNode node) -> { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
812 String element = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
813 if (element == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
814 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
815 if (!element.equals("roleRefId")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
816 return false; |
31 | 817 String compareRoleId = node.getAttributes().getString("text-roleRefId"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
818 if (compareRoleId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
819 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
820 if (compareRoleId.equals(roleId)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
821 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
822 return false; |
42 | 823 }, "text-roleRefId", roleId); |
11 | 824 |
42 | 825 for (; roleIdNodeIterator.hasNext();) { |
826 TreeNode roleIdNode = roleIdNodeIterator.next(); | |
827 ParentIndex parentIndex = personTraverser.getParentIndex(); | |
828 TreeNode roleIdParentNode = parentIndex.get(roleIdNode); | |
829 TreeNode parent = parentIndex.get(roleIdParentNode); | |
830 parent = parentIndex.get(parent); | |
831 String nodePersonId = parent.getAttributes().getString("Person-Id"); | |
832 if (nodePersonId != null && !nodePersonId.equals(personId)) | |
833 continue; | |
834 TreeNode priorityNode = roleIdParentNode.getChildren().at(0).b(); | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
835 if (priorityNode.getAttributes().getString("element").equals("priority")) |
31 | 836 return priorityNode.getAttributes().getString("text-priority"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
837 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
838 return ""; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
839 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
840 |
42 | 841 public Iterator<String> parentOrganizationIds(String id, LinkedList<String> filterIds) { |
34 | 842 |
843 return new Iterator<String>() { | |
42 | 844 Iterator<TreeNode> orgNodeIterator = parentOrganizationIdsNode(id); |
845 String organizationRefId; | |
34 | 846 |
847 @Override | |
848 public boolean hasNext() { | |
42 | 849 for (; orgNodeIterator.hasNext();) { |
850 TreeNode organizationRefIdNode = orgNodeIterator.next(); | |
851 String orgId = organizationRefIdNode.getAttributes().getString("text-organizationRefId"); | |
852 if (!filter(filterIds, orgId)) | |
853 continue; | |
854 organizationRefId = orgId; | |
855 return true; | |
34 | 856 } |
857 return false; | |
858 } | |
859 | |
860 @Override | |
861 public String next() { | |
42 | 862 return organizationRefId; |
34 | 863 } |
864 | |
865 }; | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
866 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
867 |
42 | 868 public Iterator<TreeNode> parentOrganizationIdsNode(String id) { |
869 | |
870 return new Iterator<TreeNode>() { | |
871 InterfaceTraverser traverser = getTraverser(id); | |
872 String element; | |
873 int pos; | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
874 |
42 | 875 Iterator<TreeNode> idNodeIterator = traverser.find((TreeNode node) -> { |
876 String nodeElement = node.getAttributes().getString("element"); | |
877 if (nodeElement == null) | |
878 return false; | |
879 if (!nodeElement.equals(element)) | |
880 return false; | |
881 String nodeId = node.getAttributes().getString(element + "-id"); | |
882 if (nodeId == null) | |
883 return false; | |
884 if (nodeId.equals(id)) | |
41 | 885 return true; |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
886 return false; |
42 | 887 }, element + "-id", id); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
888 |
42 | 889 TreeNode orgId; |
890 Iterator<TreeNode> parentOrganizationsIterator = getparentOrganizations(); | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
891 |
42 | 892 private Iterator<TreeNode> getparentOrganizations() { |
893 for (; idNodeIterator.hasNext();) { | |
894 TreeNode targetPersonNode = idNodeIterator.next(); | |
895 TreeNode parentOrganizations = targetPersonNode.getChildren().at(pos).b(); | |
896 return parentOrganizations.getChildren().iterator(); | |
41 | 897 } |
42 | 898 return null; |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
899 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
900 |
42 | 901 @Override |
902 public boolean hasNext() { | |
903 if (parentOrganizationsIterator == null) | |
904 return false; | |
905 if (parentOrganizationsIterator.hasNext()) | |
906 orgId = search(); | |
907 else | |
908 orgId = null; | |
909 if (orgId != null) | |
910 return true; | |
911 | |
912 for (; parentOrganizationsIterator != null;) { | |
913 parentOrganizationsIterator = getparentOrganizations(); | |
914 if (parentOrganizationsIterator != null) | |
915 orgId = search(); | |
916 | |
917 if (orgId != null) | |
918 return true; | |
919 } | |
920 return false; | |
921 } | |
922 | |
923 @Override | |
924 public TreeNode next() { | |
925 return orgId; | |
926 } | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
927 |
42 | 928 private TreeNode search() { |
929 for (; parentOrganizationsIterator.hasNext();) { | |
930 TreeNode OrganizationMappedByRole = parentOrganizationsIterator.next(); | |
931 TreeNode organizationRefIdNode = OrganizationMappedByRole.getChildren().at(0).b(); | |
932 return organizationRefIdNode; | |
933 } | |
934 parentOrganizationsIterator = getparentOrganizations(); | |
935 | |
936 return null; | |
937 } | |
31 | 938 |
42 | 939 private InterfaceTraverser getTraverser(String id) { |
940 Pattern rolePattern = Pattern.compile("p:"); | |
941 Matcher roleMacher = rolePattern.matcher(id); | |
942 if (roleMacher.find()) { | |
943 element = "Person"; | |
944 pos = 5; | |
945 return personTree.getTraverser(); | |
946 } | |
947 | |
948 Pattern rdePattern = Pattern.compile("o:"); | |
949 Matcher rdeMacher = rdePattern.matcher(id); | |
950 if (rdeMacher.find()) { | |
951 element = "Organization"; | |
952 pos = 4; | |
953 return organizationTree.getTraverser(); | |
954 } | |
955 return null; | |
956 } | |
957 | |
958 }; | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
959 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
960 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
961 public Iterator<String> deepParentOrganizationIds(String orgId, LinkedList<String> filterIds) { |
34 | 962 |
31 | 963 return new Iterator<String>() { |
42 | 964 Iterator<TreeNode> parentOrgnizationIdsIterator = parentOrganizationIdsNode(orgId); |
965 Stack<String> orgIdStack = new Stack<String>(); | |
966 | |
34 | 967 String parentOrgId; |
31 | 968 |
969 @Override | |
970 public boolean hasNext() { | |
42 | 971 |
972 for (; parentOrgnizationIdsIterator.hasNext();) { | |
973 TreeNode parentOrgIdNode = parentOrgnizationIdsIterator.next(); | |
974 parentOrgId = parentOrgIdNode.getAttributes().getString("text-organizationRefId"); | |
975 orgIdStack.push(parentOrgId); | |
976 if (orgNodefilter(filterIds, parentOrgIdNode)) | |
34 | 977 return true; |
978 } | |
42 | 979 if (orgIdStack.isEmpty()) |
980 return false; | |
981 | |
982 parentOrgnizationIdsIterator = parentOrganizationIdsNode(orgIdStack.pop()); | |
983 return this.hasNext(); | |
31 | 984 } |
985 | |
986 @Override | |
987 public String next() { | |
34 | 988 return parentOrgId; |
31 | 989 } |
990 | |
991 }; | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
992 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
993 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
994 public Iterator<String> deepParentOrganizationIdsPlus(String id, LinkedList<String> filterIds) { |
34 | 995 |
31 | 996 return new Iterator<String>() { |
42 | 997 String parentOrgId = initOrgId(); |
998 Iterator<String> parentOrgIdIterator = deepParentOrganizationIds(id, filterIds); | |
31 | 999 |
1000 @Override | |
1001 public boolean hasNext() { | |
42 | 1002 return parentOrgId != null; |
1003 } | |
1004 | |
1005 private String initOrgId() { | |
1006 if (filter(filterIds, id)) | |
1007 return id; | |
1008 | |
1009 if (parentOrgIdIterator.hasNext()) | |
1010 return parentOrgIdIterator.next(); | |
1011 return null; | |
31 | 1012 } |
1013 | |
1014 @Override | |
1015 public String next() { | |
42 | 1016 String str = parentOrgId; |
1017 parentOrgId = null; | |
1018 if (parentOrgIdIterator.hasNext()) | |
1019 parentOrgId = parentOrgIdIterator.next(); | |
1020 return str; | |
31 | 1021 } |
1022 | |
1023 }; | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1024 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1025 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1026 public String stringPathToId(String args) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1027 String[] splitPath = args.split(":"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1028 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1029 String str = splitPath[2]; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1030 for (int count = 3; count < splitPath.length; count++) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1031 str = str + ":" + splitPath[count]; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1032 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1033 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1034 final String StrPath = str; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1035 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1036 InterfaceTraverser traverser = null; |
31 | 1037 String elementName = null; |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1038 if (splitPath[0].equals("r")) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1039 traverser = roleTree.getTraverser(); |
31 | 1040 elementName = "Role"; |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1041 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1042 if (splitPath[0].equals("rde")) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1043 traverser = rdeTree.getTraverser(); |
31 | 1044 elementName = "RoleDescriptionElement"; |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1045 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1046 |
42 | 1047 Iterator<TreeNode> PathNameIterator = traverser.find((TreeNode node) -> { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1048 String element = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1049 if (element == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1050 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1051 if (!element.equals("path")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1052 return false; |
31 | 1053 String pathString = node.getAttributes().getString("text-path"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1054 if (pathString == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1055 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1056 if (pathString.equals(StrPath)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1057 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1058 return false; |
31 | 1059 }, "text-path", StrPath); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1060 |
34 | 1061 if (!PathNameIterator.hasNext()) |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1062 return ""; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1063 |
42 | 1064 TreeNode pathNameNode = PathNameIterator.next(); |
1065 ParentIndex parentIndex = traverser.getParentIndex(); | |
1066 TreeNode pathNameIdNode = parentIndex.get(pathNameNode); | |
34 | 1067 String pathNameId = pathNameIdNode.getAttributes().getString(elementName + "-id"); |
1068 return pathNameId; | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1069 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1070 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1071 public Iterator<String> roleDescriptionElementIds(String id, LinkedList<String> filterIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1072 |
31 | 1073 return new Iterator<String>() { |
42 | 1074 Iterator<String> parentOrgIdIterator = deepParentOrganizationIdsPlus(id, filterIds); |
1075 Iterator<String> rdeIdIterator = new NullIterator<String>(); | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1076 |
31 | 1077 @Override |
1078 public boolean hasNext() { | |
42 | 1079 |
1080 if (rdeIdIterator.hasNext()) | |
31 | 1081 return true; |
42 | 1082 |
1083 if (parentOrgIdIterator.hasNext()) { | |
1084 String orgId = parentOrgIdIterator.next(); | |
1085 String roleId = getRole(orgId); | |
1086 rdeIdIterator = getRde(roleId); | |
1087 } else { | |
1088 return false; | |
1089 } | |
1090 | |
1091 return this.hasNext(); | |
31 | 1092 } |
1093 | |
1094 @Override | |
1095 public String next() { | |
42 | 1096 return rdeIdIterator.next(); |
31 | 1097 } |
1098 }; | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1099 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1100 |
31 | 1101 private Iterator<String> getRde(String roleId) { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1102 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1103 InterfaceTraverser traverser = roleTree.getTraverser(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1104 |
42 | 1105 return new Iterator<String>() { |
12 | 1106 |
42 | 1107 Iterator<TreeNode> roleIdNodeIterator = traverser.find((TreeNode node) -> { |
1108 String element = node.getAttributes().getString("element"); | |
1109 if (element == null) | |
1110 return false; | |
1111 if (!element.equals("Role")) | |
1112 return false; | |
1113 String id = node.getAttributes().getString("Role-id"); | |
1114 if (id == null) | |
1115 return false; | |
1116 if (id.equals(roleId)) | |
1117 return true; | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1118 return false; |
42 | 1119 }, "Role-id", roleId); |
1120 String rdeId; | |
1121 Iterator<TreeNode> roleDescriptionElementRefIdIterator = new NullIterator<TreeNode>(); | |
10 | 1122 |
31 | 1123 @Override |
1124 public boolean hasNext() { | |
42 | 1125 for (; roleIdNodeIterator.hasNext();) { |
1126 | |
1127 if (roleDescriptionElementRefIdIterator.hasNext()) { | |
1128 rdeId = roleDescriptionElementRefIdIterator.next().getAttributes() | |
1129 .getString("text-roleDescriptionElementRefId"); | |
1130 return true; | |
1131 } | |
1132 | |
1133 TreeNode roleId = roleIdNodeIterator.next(); | |
1134 TreeNode roleDescriptionElementRefIds = roleId.getChildren().at(6).b(); | |
1135 roleDescriptionElementRefIdIterator = roleDescriptionElementRefIds.getChildren().iterator(); | |
1136 if (roleDescriptionElementRefIdIterator.hasNext()) { | |
1137 rdeId = roleDescriptionElementRefIdIterator.next().getAttributes() | |
1138 .getString("text-roleDescriptionElementRefId"); | |
1139 return true; | |
1140 } | |
1141 | |
41 | 1142 } |
31 | 1143 return false; |
1144 } | |
1145 | |
1146 @Override | |
1147 public String next() { | |
41 | 1148 return rdeId; |
31 | 1149 } |
1150 }; | |
34 | 1151 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
1152 } |
38 | 1153 |
36 | 1154 } |