annotate src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java @ 37:c6809d43da62

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