Mercurial > hg > Members > tatsuki > JungleXMLReader
annotate src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java @ 29:626e56f749a9
use index competentRoleIdTest and concurrentRoleIdsTest
author | one |
---|---|
date | Fri, 07 Nov 2014 03:22:11 +0900 |
parents | ed831b2fc156 |
children | f45b1c839753 |
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; |
8 | 5 import java.util.regex.Matcher; |
6 import java.util.regex.Pattern; | |
7 | 7 |
28 | 8 import ac.jp.u_ryukyu.cr.ie.tatsuki.xmlReader.loadXml; |
15 | 9 import fj.Ord; |
10 import fj.P2; | |
11 import fj.data.TreeMap; | |
7 | 12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; | |
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; | |
7 | 18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; |
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 |
28 | 27 public JuGrix(boolean index) { |
28 | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
29 try { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
30 loadXml reader = new loadXml(); |
28 | 31 |
32 if (index == true) { | |
33 personTree = reader.loadTestDataCreateIndex("Person.xml"); | |
34 organizationTree = reader.loadTestDataCreateIndex("Organization.xml"); | |
35 roleTree = reader.loadTestDataCreateIndex("Role.xml"); | |
36 rdeTree = reader.loadTestDataCreateIndex("RoleDescriptionElement.xml"); | |
37 } else { | |
38 personTree = reader.loadTestData("Person.xml"); | |
39 organizationTree = reader.loadTestData("Organization.xml"); | |
40 roleTree = reader.loadTestData("Role.xml"); | |
41 rdeTree = reader.loadTestData("RoleDescriptionElement.xml"); | |
42 } | |
29 | 43 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
44 } catch (Exception e) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
45 e.printStackTrace(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
46 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
47 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
48 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
49 public boolean isActive(String id) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
50 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
51 InterfaceTraverser ifTraverser = personTree.getTraverser(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
52 Iterator<Pair<TreeNode, NodePath>> pairIterator = ifTraverser.find((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
53 String personId = node.getAttributes().getString("id"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
54 if (personId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
55 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
56 if (personId.equals(id)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
57 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
58 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
59 }, "id", id); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
60 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
61 if (pairIterator.hasNext()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
62 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
63 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
64 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
65 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
66 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
67 public Iterator<String> personIds(String orgId, LinkedList<String> roleIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
68 return personIdsSearch(orgId, roleIds).iterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
69 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
70 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
71 public LinkedList<String> personIdLink(String orgId, LinkedList<String> roleIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
72 return personIdsSearch(orgId, roleIds); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
73 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
74 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
75 public Iterator<String> personIds(LinkedList<String> orgIds, LinkedList<String> roleIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
76 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
77 LinkedList<String> personIds = new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
78 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
79 for (String orgId : orgIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
80 personIds.addAll(personIdsSearch(orgId, roleIds)); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
81 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
82 return personIds.iterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
83 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
84 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
85 private LinkedList<String> personIdsSearch(String id, LinkedList<String> roleIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
86 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
87 if (!filter(id, roleIds)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
88 return new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
89 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
90 InterfaceTraverser personTraverser = personTree.getTraverser(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
91 Iterator<Pair<TreeNode, NodePath>> pairPersonIterator = personTraverser.find((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
92 String personId = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
93 if (personId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
94 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
95 if (personId.equals("Person")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
96 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
97 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
98 }, "element", "Person"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
99 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
100 LinkedList<String> names = new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
101 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
102 for (; pairPersonIterator.hasNext();) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
103 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
104 Pair<TreeNode, NodePath> pairPerson = pairPersonIterator.next(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
105 Iterator<Pair<TreeNode, NodePath>> pairIdIterator = personTraverser.findInSubTree((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
106 String personId = node.getAttributes().getString("text"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
107 if (personId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
108 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
109 if (personId.equals(id)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
110 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
111 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
112 }, pairPerson, "text", id); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
113 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
114 if (pairIdIterator.hasNext()) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
115 String name = pairPerson.left().getAttributes().getString("id"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
116 names.add(name); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
117 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
118 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
119 return names; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
120 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
121 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
122 public boolean filter(String orgId, LinkedList<String> roleIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
123 if (roleIds == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
124 return true; |
29 | 125 |
28 | 126 if (roleIds.isEmpty()) |
127 return true; | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
128 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
129 InterfaceTraverser orgTraverser = organizationTree.getTraverser(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
130 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
131 Iterator<Pair<TreeNode, NodePath>> orgNodeIterator = orgTraverser.find((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
132 String personId = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
133 if (personId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
134 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
135 if (!personId.equals("Organization")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
136 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
137 String compareOrgId = node.getAttributes().getString("id"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
138 if (compareOrgId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
139 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
140 if (compareOrgId.equals(orgId)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
141 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
142 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
143 }, "id", orgId); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
144 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
145 if (!orgNodeIterator.hasNext()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
146 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
147 |
28 | 148 Pair<TreeNode, NodePath> searchNodePair = orgNodeIterator.next(); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
149 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
150 for (String id : roleIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
151 Pattern personPattern = Pattern.compile("r:"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
152 Matcher personMacher = personPattern.matcher(id); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
153 if (personMacher.find()) { |
28 | 154 if (roleFilter(id, searchNodePair)) |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
155 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
156 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
157 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
158 Pattern organizationPattern = Pattern.compile("rde:"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
159 Matcher organizationMacher = organizationPattern.matcher(id); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
160 if (organizationMacher.find()) { |
28 | 161 if (!rdeFilter(id, searchNodePair)) |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
162 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
163 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
164 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
165 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
166 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
167 |
28 | 168 private boolean rdeFilter(String id, Pair<TreeNode, NodePath> searchNodePair) { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
169 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
170 InterfaceTraverser orgTraverser = organizationTree.getTraverser(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
171 Iterator<Pair<TreeNode, NodePath>> pairIdIterator = orgTraverser.findInSubTree((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
172 String element = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
173 if (element == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
174 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
175 if (!element.equals("roleRefId")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
176 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
177 String roleId = node.getAttributes().getString("text"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
178 if (roleId != null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
179 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
180 return false; |
28 | 181 }, searchNodePair, "element", "roleRefId"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
182 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
183 TreeMap<String, String> idMap = TreeMap.empty(Ord.stringOrd); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
184 for (; pairIdIterator.hasNext();) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
185 String roleId = pairIdIterator.next().left().getAttributes().getString("text"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
186 idMap = idMap.set(roleId, roleId); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
187 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
188 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
189 Iterator<P2<String, String>> ids = idMap.iterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
190 InterfaceTraverser roleTraverser = roleTree.getTraverser(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
191 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
192 for (; ids.hasNext();) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
193 String roleId = ids.next()._1(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
194 Iterator<Pair<TreeNode, NodePath>> roleNodeIterator = roleTraverser.find((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
195 String element = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
196 if (element == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
197 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
198 if (!element.equals("Role")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
199 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
200 String compareRoleId = node.getAttributes().getString("id"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
201 if (compareRoleId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
202 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
203 if (compareRoleId.equals(roleId)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
204 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
205 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
206 }, "id", roleId); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
207 // -----------------------------------------bug------------------------------------------ |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
208 for (; roleNodeIterator.hasNext();) { |
28 | 209 Pair<TreeNode, NodePath> rolePair = roleNodeIterator.next(); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
210 Iterator<Pair<TreeNode, NodePath>> rdeNodeIterator = roleTraverser.findInSubTree((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
211 String elementName = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
212 if (elementName == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
213 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
214 if (!elementName.equals("roleDescriptionElementRefIds")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
215 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
216 String rdeId = node.getAttributes().getString("text"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
217 if (rdeId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
218 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
219 Pattern personPattern = Pattern.compile(id); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
220 Matcher personMacher = personPattern.matcher(rdeId); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
221 if (personMacher.find()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
222 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
223 return false; |
28 | 224 }, rolePair, "text", "id"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
225 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
226 if (!rdeNodeIterator.hasNext()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
227 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
228 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
229 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
230 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
231 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
232 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
233 |
28 | 234 public boolean roleFilter(String id, Pair<TreeNode, NodePath> searchNodePair) { |
29 | 235 // System.out.println(searchNodePair.getAttributes().getString("id")); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
236 InterfaceTraverser orgTraverser = organizationTree.getTraverser(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
237 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
238 Iterator<Pair<TreeNode, NodePath>> pairIdIterator = orgTraverser.findInSubTree((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
239 String elementName = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
240 if (elementName == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
241 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
242 if (!elementName.equals("roleRefIds")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
243 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
244 String roleId = node.getAttributes().getString("text"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
245 if (roleId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
246 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
247 if (roleId.equals(id)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
248 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
249 return false; |
28 | 250 }, searchNodePair, "text", id); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
251 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
252 if (pairIdIterator.hasNext()) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
253 System.out.println(pairIdIterator.next().left().getAttributes().getString("text")); |
28 | 254 return false; |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
255 } |
28 | 256 return true; |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
257 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
258 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
259 public Iterator<String> roleIds(String id) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
260 Pattern personPattern = Pattern.compile("p:"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
261 Matcher personMacher = personPattern.matcher(id); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
262 if (personMacher.find()) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
263 return searchRoleIds(personTree, id, "Person"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
264 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
265 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
266 Pattern organizationPattern = Pattern.compile("o:"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
267 Matcher organizationMacher = organizationPattern.matcher(id); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
268 if (organizationMacher.find()) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
269 return searchRoleIds(organizationTree, id, "Organization"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
270 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
271 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
272 return null; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
273 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
274 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
275 public Iterator<String> searchRoleIds(JungleTree tree, String id, String element) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
276 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
277 InterfaceTraverser ifTraverser = tree.getTraverser(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
278 Iterator<Pair<TreeNode, NodePath>> searchTargetIterator = ifTraverser.find((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
279 String nodeElement = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
280 if (nodeElement == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
281 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
282 if (!nodeElement.equals(element)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
283 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
284 String nodeId = node.getAttributes().getString("id"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
285 if (nodeId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
286 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
287 if (nodeId.equals(id)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
288 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
289 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
290 }, "id", id); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
291 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
292 LinkedList<String> ids = new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
293 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
294 for (; searchTargetIterator.hasNext();) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
295 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
296 Pair<TreeNode, NodePath> searchTargetPair = searchTargetIterator.next(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
297 Iterator<Pair<TreeNode, NodePath>> pairIdIterator = ifTraverser.findInSubTree((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
298 String nodeElement = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
299 if (nodeElement == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
300 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
301 if (!nodeElement.equals("roleRefId")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
302 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
303 String nodeId = node.getAttributes().getString("text"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
304 if (nodeId != null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
305 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
306 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
307 }, searchTargetPair, "element", "roleRefId"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
308 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
309 for (; pairIdIterator.hasNext();) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
310 Pair<TreeNode, NodePath> idNodePath = pairIdIterator.next(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
311 String attribute = idNodePath.left().getAttributes().getString("text"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
312 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
313 Iterator<String> checkList = ids.iterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
314 for (; checkList.hasNext();) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
315 if (checkList.next().equals(attribute)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
316 attribute = null; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
317 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
318 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
319 if (attribute != null) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
320 ids.add(attribute); |
28 | 321 System.out.println("-------------------------" + attribute + "-------------------------"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
322 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
323 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
324 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
325 return ids.iterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
326 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
327 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
328 public Iterator<String> competentRoleId(String personId) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
329 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
330 InterfaceTraverser ifTraverser = personTree.getTraverser(); |
28 | 331 Iterator<Pair<TreeNode, NodePath>> pairPersonIterator = ifTraverser.find((TreeNode node) -> { |
332 String nodeElement = node.getAttributes().getString("element"); | |
333 if (nodeElement == null) | |
334 return false; | |
335 if (!nodeElement.equals("Person")) | |
336 return false; | |
337 String nodeId = node.getAttributes().getString("Person-id"); | |
338 if (nodeId == null) | |
339 return false; | |
340 if (nodeId.equals(personId)) | |
341 return true; | |
342 return false; | |
343 }, "Person-id", personId); | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
344 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
345 if (!pairPersonIterator.hasNext()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
346 return new NullIterator(); |
28 | 347 Pair<TreeNode, NodePath> person = pairPersonIterator.next(); |
348 | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
349 Iterator<Pair<TreeNode, NodePath>> targetPairIterator = ifTraverser.findInSubTree((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
350 String nodeElement = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
351 if (nodeElement == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
352 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
353 if (!nodeElement.equals("priority")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
354 return false; |
28 | 355 String priority = node.getAttributes().getString("text-priority"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
356 if (priority == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
357 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
358 if (priority.equals("0")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
359 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
360 return false; |
28 | 361 }, person, "text-priority", "0"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
362 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
363 LinkedList<String> idList = new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
364 for (; targetPairIterator.hasNext();) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
365 NodePath searchPath = targetPairIterator.next().right(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
366 Pair<Integer, NodePath> searchPair = searchPath.last(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
367 NodePath targetPath = searchPair.right().add(searchPair.left() + 1); |
28 | 368 TreeNode targetNode = getTarget(personTree.getRootNode(), targetPath); |
369 // TreeNode targetNode = getTarget(person.left(), targetPath); | |
370 String id = targetNode.getAttributes().getString("text-roleRefId"); | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
371 idList.add(id); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
372 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
373 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
374 return idList.iterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
375 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
376 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
377 public Iterator<String> concurrentRoleIds(String personId) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
378 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
379 InterfaceTraverser ifTraverser = personTree.getTraverser(); |
29 | 380 Iterator<Pair<TreeNode, NodePath>> pairPersonIterator = ifTraverser.find((TreeNode node) -> { |
381 String nodeElement = node.getAttributes().getString("element"); | |
382 if (nodeElement == null) | |
383 return false; | |
384 if (!nodeElement.equals("Person")) | |
385 return false; | |
386 String nodeId = node.getAttributes().getString("Person-id"); | |
387 if (nodeId == null) | |
388 return false; | |
389 if (nodeId.equals(personId)) | |
390 return true; | |
391 return false; | |
392 }, "Person-id", personId); | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
393 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
394 if (!pairPersonIterator.hasNext()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
395 return new NullIterator(); |
28 | 396 Pair<TreeNode, NodePath> person = pairPersonIterator.next(); |
397 | |
29 | 398 Iterator<Pair<TreeNode, NodePath>> targetPairIterator = ifTraverser.findInSubTreeAllValue((TreeNode node) -> { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
399 String nodeElement = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
400 if (nodeElement == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
401 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
402 if (!nodeElement.equals("priority")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
403 return false; |
29 | 404 String priority = node.getAttributes().getString("text-priority"); |
405 if (priority != null) | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
406 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
407 return false; |
29 | 408 }, person, "text-priority"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
409 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
410 LinkedList<String> idList = new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
411 for (; targetPairIterator.hasNext();) { |
29 | 412 Pair<TreeNode,NodePath> targetPair = targetPairIterator.next(); |
413 TreeNode targetNode = targetPair.left(); | |
414 int priority = Integer.parseInt(targetNode.getAttributes().getString("text-priority")); | |
415 if (priority > 0) { | |
416 NodePath targetPath = targetPair.right(); | |
417 Pair<Integer, NodePath> searchPair = targetPath.last(); | |
418 NodePath roleIdNodePath = searchPair.right().add(searchPair.left() + 1); | |
419 TreeNode roleIdNode = getTarget(personTree.getRootNode(), roleIdNodePath); | |
420 String id = roleIdNode.getAttributes().getString("text-roleRefId"); | |
421 idList.add(id); | |
422 } | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
423 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
424 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
425 return idList.iterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
426 } |
7 | 427 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
428 public Iterator<String> deepPersonIds(String orgId, LinkedList<String> filterIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
429 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
430 Iterator<String> childrensIterator = deepChildOrganizationIds(orgId, new LinkedList<String>()); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
431 if (!childrensIterator.hasNext()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
432 return new NullIterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
433 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
434 LinkedList<String> childrenPersonList = new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
435 // childrenPersonList.addAll(personIdLink(orgId, filterIds)); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
436 for (; childrensIterator.hasNext();) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
437 String id = childrensIterator.next(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
438 childrenPersonList.addAll(personIdLink(id, filterIds)); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
439 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
440 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
441 return childrenPersonList.iterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
442 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
443 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
444 public Iterator<String> deepChildOrganizationIdsPlus(String orgId, LinkedList<String> filterIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
445 LinkedList<String> orgList = new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
446 if (filter(orgId, filterIds)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
447 orgList.add(orgId); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
448 orgList.addAll(_deepChildOrganizationIds(orgId, filterIds)); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
449 return orgList.iterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
450 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
451 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
452 public Iterator<String> deepChildOrganizationIds(String orgId, LinkedList<String> filterIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
453 return _deepChildOrganizationIds(orgId, filterIds).iterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
454 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
455 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
456 public LinkedList<String> _deepChildOrganizationIds(String orgId, LinkedList<String> filterIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
457 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
458 Iterator<String> childrensIterator = childOrganizationIds(orgId, new LinkedList<String>()); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
459 if (!childrensIterator.hasNext()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
460 return new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
461 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
462 LinkedList<String> childrenList = new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
463 for (; childrensIterator.hasNext();) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
464 String childrenId = childrensIterator.next(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
465 if (filter(childrenId, filterIds)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
466 childrenList.add(childrenId); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
467 childrenList.addAll(_deepChildOrganizationIds(childrenId, filterIds)); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
468 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
469 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
470 return childrenList; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
471 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
472 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
473 public Iterator<String> childOrganizationIds(String orgId, LinkedList<String> filterIds) { |
28 | 474 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
475 InterfaceTraverser orgTraverser = organizationTree.getTraverser(); |
28 | 476 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
477 Iterator<Pair<TreeNode, NodePath>> pairPersonIterator = orgTraverser.find((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
478 String nodeElement = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
479 if (nodeElement == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
480 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
481 if (!nodeElement.equals("Organization")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
482 return false; |
28 | 483 String nodeId = node.getAttributes().getString("Organization-id"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
484 if (nodeId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
485 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
486 if (nodeId.equals(orgId)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
487 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
488 return false; |
28 | 489 }, "Organization-id", orgId); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
490 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
491 if (!pairPersonIterator.hasNext()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
492 return new NullIterator(); |
28 | 493 |
494 Pair<TreeNode, NodePath> person = pairPersonIterator.next(); | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
495 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
496 Iterator<Pair<TreeNode, NodePath>> chilrenOrgIdsIterator = orgTraverser.findInSubTree((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
497 String nodeElement = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
498 if (nodeElement == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
499 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
500 if (nodeElement.equals("childOrganizations")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
501 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
502 return false; |
28 | 503 }, person, "element", "childOrganizations"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
504 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
505 if (!chilrenOrgIdsIterator.hasNext()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
506 return new NullIterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
507 |
28 | 508 Pair<TreeNode, NodePath> chilerenOrgIds = chilrenOrgIdsIterator.next(); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
509 |
29 | 510 Iterator<Pair<TreeNode, NodePath>> chilrenOrgIdIterator = orgTraverser.findInSubTreeAllValue((TreeNode node) -> { |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
511 String nodeElement = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
512 if (nodeElement == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
513 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
514 if (!nodeElement.equals("organizationRefIds")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
515 return false; |
28 | 516 nodeElement = node.getAttributes().getString("text-organizationRefIds"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
517 if (nodeElement != null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
518 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
519 return false; |
29 | 520 }, chilerenOrgIds, "text-organizationRefIds"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
521 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
522 LinkedList<String> ids = new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
523 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
524 for (; chilrenOrgIdIterator.hasNext();) { |
28 | 525 String childrenOrgId = chilrenOrgIdIterator.next().left().getAttributes().getString("text-organizationRefIds"); |
526 if (filter(childrenOrgId, filterIds)) | |
527 ids.add(childrenOrgId); | |
528 | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
529 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
530 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
531 return ids.iterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
532 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
533 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
534 public TreeNode getTarget(TreeNode node, NodePath path) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
535 TreeNode target; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
536 Pair<Integer, NodePath> pathNode = path.pop(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
537 int num = pathNode.left(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
538 NodePath newPath = pathNode.right(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
539 if (num == -1 && newPath.size() != 0) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
540 return getTarget(node, newPath); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
541 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
542 Either<Error, TreeNode> either = node.getChildren().at(num); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
543 if (either.isA()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
544 return node; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
545 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
546 TreeNode child = either.b(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
547 if (pathNode.right().size() == 0) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
548 return child; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
549 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
550 target = getTarget(child, pathNode.right()); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
551 return target; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
552 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
553 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
554 class NullIterator implements Iterator<String> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
555 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
556 @Override |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
557 public boolean hasNext() { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
558 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
559 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
560 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
561 @Override |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
562 public String next() { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
563 return null; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
564 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
565 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
566 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
567 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
568 public String rolePriority(String personId, String roleId) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
569 InterfaceTraverser personTraverser = personTree.getTraverser(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
570 Iterator<Pair<TreeNode, NodePath>> personIterator = personTraverser.find((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
571 String element = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
572 if (element == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
573 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
574 if (!element.equals("Person")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
575 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
576 String nodeId = node.getAttributes().getString("id"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
577 if (nodeId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
578 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
579 if (nodeId.equals(personId)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
580 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
581 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
582 }, "id", personId); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
583 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
584 if (!personIterator.hasNext()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
585 return ""; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
586 |
28 | 587 Pair<TreeNode, NodePath> targetNode = personIterator.next(); |
588 | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
589 Iterator<Pair<TreeNode, NodePath>> priorityIterator = personTraverser.findInSubTree((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
590 String element = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
591 if (element == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
592 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
593 if (!element.equals("roleRefId")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
594 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
595 String compareRoleId = node.getAttributes().getString("text"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
596 if (compareRoleId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
597 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
598 if (compareRoleId.equals(roleId)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
599 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
600 return false; |
28 | 601 }, targetNode, "element", "roleRefId"); |
11 | 602 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
603 for (; priorityIterator.hasNext();) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
604 Pair<TreeNode, NodePath> priorityPair = priorityIterator.next(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
605 NodePath roleNodePath = priorityPair.right(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
606 Pair<Integer, NodePath> last = roleNodePath.last(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
607 NodePath priorityNodePath = last.right().add(last.left() - 1); |
28 | 608 TreeNode priorityNode = getTarget(targetNode.left(), priorityNodePath); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
609 if (priorityNode.getAttributes().getString("element").equals("priority")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
610 return priorityNode.getAttributes().getString("text"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
611 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
612 return ""; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
613 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
614 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
615 public Iterator<String> parentOrganizationIds(String orgId, LinkedList<String> filterIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
616 return _parentOrganizationIds(orgId, filterIds).iterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
617 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
618 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
619 public LinkedList<String> _parentOrganizationIds(String orgId, LinkedList<String> filterIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
620 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
621 InterfaceTraverser orgTraverser = organizationTree.getTraverser(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
622 Iterator<Pair<TreeNode, NodePath>> orgIterator = orgTraverser.find((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
623 String element = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
624 if (element == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
625 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
626 if (!element.equals("Organization")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
627 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
628 String nodeId = node.getAttributes().getString("id"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
629 if (nodeId == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
630 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
631 if (nodeId.equals(orgId)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
632 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
633 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
634 }, "element", "Organization"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
635 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
636 if (!orgIterator.hasNext()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
637 return new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
638 |
28 | 639 Pair<TreeNode, NodePath> orgNode = orgIterator.next(); |
640 | |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
641 Iterator<Pair<TreeNode, NodePath>> parentOrgIterator = orgTraverser.findInSubTree((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
642 String element = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
643 if (element == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
644 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
645 if (element.equals("parentOrganizations")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
646 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
647 return false; |
28 | 648 }, orgNode, "element", "parentOrganizations"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
649 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
650 LinkedList<String> parentIds = new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
651 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
652 for (; parentOrgIterator.hasNext();) { |
28 | 653 Pair<TreeNode, NodePath> parentOrgNode = parentOrgIterator.next(); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
654 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
655 Iterator<Pair<TreeNode, NodePath>> parentNodeIterator = orgTraverser.findInSubTree((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
656 String element = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
657 if (element == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
658 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
659 if (!element.equals("organizationRefId")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
660 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
661 String parentId = node.getAttributes().getString("text"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
662 if (parentId != null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
663 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
664 return false; |
28 | 665 }, parentOrgNode, "element", "organizationRefId"); |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
666 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
667 for (; parentNodeIterator.hasNext();) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
668 String parentId = parentNodeIterator.next().left().getAttributes().getString("text"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
669 if (filter(parentId, filterIds)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
670 parentIds.add(parentId); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
671 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
672 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
673 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
674 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
675 return parentIds; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
676 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
677 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
678 public Iterator<String> deepParentOrganizationIds(String orgId, LinkedList<String> filterIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
679 return _deepParentOrganizationIds(orgId, filterIds).iterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
680 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
681 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
682 public LinkedList<String> _deepParentOrganizationIds(String orgId, LinkedList<String> filterIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
683 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
684 Iterator<String> parentIds = parentOrganizationIds(orgId, filterIds); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
685 if (!parentIds.hasNext()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
686 return new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
687 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
688 LinkedList<String> parentIdList = new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
689 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
690 for (; parentIds.hasNext();) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
691 String parentId = parentIds.next(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
692 if (filter(parentId, filterIds)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
693 parentIdList.add(parentId); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
694 parentIdList.addAll(_deepParentOrganizationIds(parentId, filterIds)); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
695 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
696 return parentIdList; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
697 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
698 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
699 public Iterator<String> deepParentOrganizationIdsPlus(String id, LinkedList<String> filterIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
700 LinkedList<String> parentIds = new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
701 if (filter(id, filterIds)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
702 parentIds.add(id); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
703 parentIds.addAll(_deepParentOrganizationIds(id, filterIds)); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
704 return parentIds.iterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
705 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
706 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
707 public String stringPathToId(String args) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
708 String[] splitPath = args.split(":"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
709 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
710 String str = splitPath[2]; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
711 for (int count = 3; count < splitPath.length; count++) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
712 str = str + ":" + splitPath[count]; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
713 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
714 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
715 final String StrPath = str; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
716 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
717 InterfaceTraverser traverser = null; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
718 TreeNode root = null; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
719 if (splitPath[0].equals("r")) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
720 traverser = roleTree.getTraverser(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
721 root = roleTree.getRootNode(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
722 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
723 if (splitPath[0].equals("rde")) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
724 traverser = rdeTree.getTraverser(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
725 root = rdeTree.getRootNode(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
726 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
727 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
728 Iterator<Pair<TreeNode, NodePath>> idIterator = traverser.find((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
729 String element = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
730 if (element == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
731 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
732 if (!element.equals("path")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
733 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
734 String pathString = node.getAttributes().getString("text"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
735 if (pathString == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
736 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
737 if (pathString.equals(StrPath)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
738 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
739 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
740 }, "text", "StrPath"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
741 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
742 if (!idIterator.hasNext()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
743 return ""; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
744 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
745 Pair<TreeNode, NodePath> nodePair = idIterator.next(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
746 NodePath path = nodePair.right(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
747 NodePath targetPath = path.last().right(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
748 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
749 TreeNode targetNode = getTarget(root, targetPath); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
750 String targetId = targetNode.getAttributes().getString("id"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
751 return targetId; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
752 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
753 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
754 public Iterator<String> roleDescriptionElementIds(String id, LinkedList<String> filterIds) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
755 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
756 Iterator<String> orgIds = deepParentOrganizationIdsPlus(id, filterIds); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
757 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
758 LinkedList<String> rdeIds = new LinkedList<String>(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
759 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
760 for (; orgIds.hasNext();) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
761 String orgId = orgIds.next(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
762 Iterator<String> roleIds = roleIds(orgId); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
763 for (; roleIds.hasNext();) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
764 String roleId = roleIds.next(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
765 String rdeId = getRde(roleId); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
766 String[] rdeSplit = rdeId.split(" "); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
767 for (String rde : rdeSplit) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
768 if (!rde.equals("")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
769 rdeIds.add(rde); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
770 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
771 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
772 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
773 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
774 return rdeIds.iterator(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
775 } |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
776 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
777 private String getRde(String roleId) { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
778 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
779 InterfaceTraverser traverser = roleTree.getTraverser(); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
780 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
781 Iterator<Pair<TreeNode, NodePath>> roleIterator = traverser.find((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
782 String element = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
783 if (element == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
784 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
785 if (!element.equals("Role")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
786 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
787 String id = node.getAttributes().getString("id"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
788 if (id == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
789 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
790 if (id.equals(roleId)) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
791 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
792 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
793 }, "id", roleId); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
794 |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
795 if (!roleIterator.hasNext()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
796 return ""; |
12 | 797 |
28 | 798 Pair<TreeNode, NodePath> roleNode = roleIterator.next(); |
12 | 799 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
800 Iterator<Pair<TreeNode, NodePath>> rdeIterator = traverser.findInSubTree((TreeNode node) -> { |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
801 String element = node.getAttributes().getString("element"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
802 if (element == null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
803 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
804 if (!element.equals("roleDescriptionElementRefIds")) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
805 return false; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
806 String rde = node.getAttributes().getString("text"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
807 if (rde != null) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
808 return true; |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
809 return false; |
28 | 810 }, roleNode, "element", "roleDescriptionElementRefIds"); |
7 | 811 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
812 if (!rdeIterator.hasNext()) |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
813 return ""; |
10 | 814 |
26
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
815 return rdeIterator.next().left().getAttributes().getString("text"); |
ef3fae2e7f0c
add ReadXmlNodeCreateIndexJandler and ReadXmlPutAttributeCreate
one
parents:
25
diff
changeset
|
816 } |
21 | 817 |
7 | 818 } |