annotate src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java @ 16:4cfa77c61ee1

add childOrganizationIdsTest and Method
author one
date Mon, 27 Oct 2014 01:56:43 +0900
parents 5ef4b1004ade
children f59fc20f4af9
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
15
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
8 import fj.Ord;
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
9 import fj.P2;
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
10 import fj.data.TreeMap;
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
9
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
18
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
19 public class JuGrix {
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
20
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
21 JungleTree personTree;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
22 JungleTree organizationTree;
12
f93d15042315 fix bag
one
parents: 11
diff changeset
23 JungleTree roleTree;
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
24 public JuGrix(){
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
25 try{
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
26 loadXml reader = new loadXml();
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
27 personTree = reader.loadTestData("Person.xml");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
28 organizationTree = reader.loadTestData("Organization.xml");
12
f93d15042315 fix bag
one
parents: 11
diff changeset
29 roleTree = reader.loadTestData("Role.xml");
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
30 } catch (Exception e) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
31 e.printStackTrace();
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
32 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
33 }
12
f93d15042315 fix bag
one
parents: 11
diff changeset
34
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
35 public boolean isActive(String id){
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
36
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
37 InterfaceTraverser ifTraverser = personTree.getTraverser();
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
38 Iterator<Pair<TreeNode,NodePath>> pairIterator = ifTraverser.find(
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
39 (TreeNode node) -> {
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
40 String personId = node.getAttributes().getString("id");
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
41 if (personId == null)
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
42 return false;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
43 if (personId.equals(id))
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
44 return true;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
45 return false;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
46 }
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
47 ,"id",id);
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
48
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
49 if (pairIterator.hasNext())
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
50 return true;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
51 return false;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
52
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
53 }
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
54
12
f93d15042315 fix bag
one
parents: 11
diff changeset
55 public Iterator<String> personIds(String orgId, LinkedList<String> roleIds){
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
56
12
f93d15042315 fix bag
one
parents: 11
diff changeset
57 LinkedList<String> names = personIdsSearch(orgId, roleIds);
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
58 return names.iterator();
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
59 }
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
60
12
f93d15042315 fix bag
one
parents: 11
diff changeset
61 public Iterator<String> personIds(LinkedList<String> orgIds ,LinkedList<String> roleIds){
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
62
13
one
parents: 11
diff changeset
63 LinkedList<String> personIds = new LinkedList<String>();
11
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
64
12
f93d15042315 fix bag
one
parents: 11
diff changeset
65 for (String orgId : orgIds) {
f93d15042315 fix bag
one
parents: 11
diff changeset
66 personIds.addAll(personIdsSearch(orgId, roleIds));
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
67 }
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
68 return personIds.iterator();
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
69 }
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
70
12
f93d15042315 fix bag
one
parents: 11
diff changeset
71 private LinkedList<String> personIdsSearch(String id, LinkedList<String> roleIds) {
f93d15042315 fix bag
one
parents: 11
diff changeset
72
f93d15042315 fix bag
one
parents: 11
diff changeset
73 if (!filter(id, roleIds))
f93d15042315 fix bag
one
parents: 11
diff changeset
74 return new LinkedList<String>();
f93d15042315 fix bag
one
parents: 11
diff changeset
75
f93d15042315 fix bag
one
parents: 11
diff changeset
76 InterfaceTraverser personTraverser = personTree.getTraverser();
f93d15042315 fix bag
one
parents: 11
diff changeset
77 Iterator<Pair<TreeNode, NodePath>> pairPersonIterator = personTraverser.find(
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
78 (TreeNode node) -> {
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
79 String personId = node.getAttributes().getString("element");
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
80 if (personId == null)
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
81 return false;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
82 if (personId.equals("Person"))
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
83 return true;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
84 return false;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
85 }
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
86 ,"element","Person");
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
87
11
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
88 LinkedList<String> names = new LinkedList<String>();
12
f93d15042315 fix bag
one
parents: 11
diff changeset
89
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
90 for (;pairPersonIterator.hasNext();) {
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
91
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
92 Pair<TreeNode, NodePath> pairPerson = pairPersonIterator.next();
12
f93d15042315 fix bag
one
parents: 11
diff changeset
93 Iterator<Pair<TreeNode,NodePath>> pairIdIterator = personTraverser.find(
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
94 (TreeNode node) -> {
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
95 String personId = node.getAttributes().getString("text");
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
96 if (personId == null)
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
97 return false;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
98 if (personId.equals(id))
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
99 return true;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
100 return false;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
101 }
15
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
102 ,pairPerson.left());
12
f93d15042315 fix bag
one
parents: 11
diff changeset
103
f93d15042315 fix bag
one
parents: 11
diff changeset
104 if (pairIdIterator.hasNext()) {
f93d15042315 fix bag
one
parents: 11
diff changeset
105 String name = pairPerson.left().getAttributes().getString("id");
f93d15042315 fix bag
one
parents: 11
diff changeset
106 names.add(name);
f93d15042315 fix bag
one
parents: 11
diff changeset
107 }
f93d15042315 fix bag
one
parents: 11
diff changeset
108 }
f93d15042315 fix bag
one
parents: 11
diff changeset
109 return names;
f93d15042315 fix bag
one
parents: 11
diff changeset
110 }
f93d15042315 fix bag
one
parents: 11
diff changeset
111
f93d15042315 fix bag
one
parents: 11
diff changeset
112
f93d15042315 fix bag
one
parents: 11
diff changeset
113 public boolean filter(String orgId, LinkedList<String> roleIds) {
f93d15042315 fix bag
one
parents: 11
diff changeset
114 if (roleIds == null)
f93d15042315 fix bag
one
parents: 11
diff changeset
115 return true;
f93d15042315 fix bag
one
parents: 11
diff changeset
116
f93d15042315 fix bag
one
parents: 11
diff changeset
117 InterfaceTraverser orgTraverser = organizationTree.getTraverser();
f93d15042315 fix bag
one
parents: 11
diff changeset
118
f93d15042315 fix bag
one
parents: 11
diff changeset
119 Iterator<Pair<TreeNode,NodePath>> orgNodeIterator = orgTraverser.find(
f93d15042315 fix bag
one
parents: 11
diff changeset
120 (TreeNode node) -> {
f93d15042315 fix bag
one
parents: 11
diff changeset
121 String personId = node.getAttributes().getString("element");
f93d15042315 fix bag
one
parents: 11
diff changeset
122 if (personId == null)
f93d15042315 fix bag
one
parents: 11
diff changeset
123 return false;
15
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
124 if (personId.equals("Organization"))
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
125 return true;
12
f93d15042315 fix bag
one
parents: 11
diff changeset
126 String compareOrgId = node.getAttributes().getString("id");
f93d15042315 fix bag
one
parents: 11
diff changeset
127 if (orgId == null)
f93d15042315 fix bag
one
parents: 11
diff changeset
128 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
129 if (compareOrgId.equals(orgId))
f93d15042315 fix bag
one
parents: 11
diff changeset
130 return true;
f93d15042315 fix bag
one
parents: 11
diff changeset
131 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
132 }
f93d15042315 fix bag
one
parents: 11
diff changeset
133 ,"element","orgId");
f93d15042315 fix bag
one
parents: 11
diff changeset
134
f93d15042315 fix bag
one
parents: 11
diff changeset
135 if (!orgNodeIterator.hasNext())
f93d15042315 fix bag
one
parents: 11
diff changeset
136 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
137
f93d15042315 fix bag
one
parents: 11
diff changeset
138 TreeNode searchNode = orgNodeIterator.next().left();
f93d15042315 fix bag
one
parents: 11
diff changeset
139
f93d15042315 fix bag
one
parents: 11
diff changeset
140 for (String id : roleIds) {
f93d15042315 fix bag
one
parents: 11
diff changeset
141 Pattern personPattern = Pattern.compile("r:");
f93d15042315 fix bag
one
parents: 11
diff changeset
142 Matcher personMacher = personPattern.matcher(id);
f93d15042315 fix bag
one
parents: 11
diff changeset
143 if (personMacher.find()) {
f93d15042315 fix bag
one
parents: 11
diff changeset
144 if (!roleFilter(id , searchNode))
f93d15042315 fix bag
one
parents: 11
diff changeset
145 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
146 }
f93d15042315 fix bag
one
parents: 11
diff changeset
147
f93d15042315 fix bag
one
parents: 11
diff changeset
148 Pattern organizationPattern = Pattern.compile("rde:");
f93d15042315 fix bag
one
parents: 11
diff changeset
149 Matcher organizationMacher = organizationPattern.matcher(id);
f93d15042315 fix bag
one
parents: 11
diff changeset
150 if (organizationMacher.find()) {
f93d15042315 fix bag
one
parents: 11
diff changeset
151 if (!rdeFilter(id,searchNode))
f93d15042315 fix bag
one
parents: 11
diff changeset
152 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
153 }
f93d15042315 fix bag
one
parents: 11
diff changeset
154 }
f93d15042315 fix bag
one
parents: 11
diff changeset
155 return true;
f93d15042315 fix bag
one
parents: 11
diff changeset
156 }
f93d15042315 fix bag
one
parents: 11
diff changeset
157
f93d15042315 fix bag
one
parents: 11
diff changeset
158 private boolean rdeFilter(String id, TreeNode targetNode) {
f93d15042315 fix bag
one
parents: 11
diff changeset
159
f93d15042315 fix bag
one
parents: 11
diff changeset
160 InterfaceTraverser orgTraverser = organizationTree.getTraverser();
f93d15042315 fix bag
one
parents: 11
diff changeset
161 Iterator<Pair<TreeNode,NodePath>> pairIdIterator = orgTraverser.find(
f93d15042315 fix bag
one
parents: 11
diff changeset
162 (TreeNode node) -> {
f93d15042315 fix bag
one
parents: 11
diff changeset
163 String element = node.getAttributes().getString("element");
f93d15042315 fix bag
one
parents: 11
diff changeset
164 if (element == null)
f93d15042315 fix bag
one
parents: 11
diff changeset
165 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
166 if (!element.equals("roleRefId"))
f93d15042315 fix bag
one
parents: 11
diff changeset
167 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
168 String roleId = node.getAttributes().getString("text");
f93d15042315 fix bag
one
parents: 11
diff changeset
169 if (roleId != null)
f93d15042315 fix bag
one
parents: 11
diff changeset
170 return true;
f93d15042315 fix bag
one
parents: 11
diff changeset
171 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
172 }
15
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
173 ,targetNode);
12
f93d15042315 fix bag
one
parents: 11
diff changeset
174
f93d15042315 fix bag
one
parents: 11
diff changeset
175 TreeMap<String, String> idMap = TreeMap.empty(Ord.stringOrd);
f93d15042315 fix bag
one
parents: 11
diff changeset
176 for (; pairIdIterator.hasNext();) {
f93d15042315 fix bag
one
parents: 11
diff changeset
177 String roleId = pairIdIterator.next().left().getAttributes().getString("text");
f93d15042315 fix bag
one
parents: 11
diff changeset
178 idMap = idMap.set(roleId,roleId);
f93d15042315 fix bag
one
parents: 11
diff changeset
179 }
f93d15042315 fix bag
one
parents: 11
diff changeset
180
f93d15042315 fix bag
one
parents: 11
diff changeset
181 Iterator<P2<String, String>> ids = idMap.iterator();
f93d15042315 fix bag
one
parents: 11
diff changeset
182 InterfaceTraverser roleTraverser = roleTree.getTraverser();
f93d15042315 fix bag
one
parents: 11
diff changeset
183
f93d15042315 fix bag
one
parents: 11
diff changeset
184 for (;ids.hasNext();) {
f93d15042315 fix bag
one
parents: 11
diff changeset
185 String roleId = ids.next()._1();
f93d15042315 fix bag
one
parents: 11
diff changeset
186 Iterator<Pair<TreeNode,NodePath>> roleNodeIterator = roleTraverser.find(
f93d15042315 fix bag
one
parents: 11
diff changeset
187 (TreeNode node) -> {
f93d15042315 fix bag
one
parents: 11
diff changeset
188 String element = node.getAttributes().getString("element");
f93d15042315 fix bag
one
parents: 11
diff changeset
189 if (element == null)
f93d15042315 fix bag
one
parents: 11
diff changeset
190 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
191 if (!element.equals("Role"))
f93d15042315 fix bag
one
parents: 11
diff changeset
192 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
193 String compareRoleId = node.getAttributes().getString("id");
f93d15042315 fix bag
one
parents: 11
diff changeset
194 if (compareRoleId == null)
f93d15042315 fix bag
one
parents: 11
diff changeset
195 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
196 if (compareRoleId.equals(roleId))
f93d15042315 fix bag
one
parents: 11
diff changeset
197 return true;
f93d15042315 fix bag
one
parents: 11
diff changeset
198 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
199 }
f93d15042315 fix bag
one
parents: 11
diff changeset
200 ,"id",roleId);
f93d15042315 fix bag
one
parents: 11
diff changeset
201
f93d15042315 fix bag
one
parents: 11
diff changeset
202 for (;roleNodeIterator.hasNext();) {
f93d15042315 fix bag
one
parents: 11
diff changeset
203 TreeNode roleNode = roleNodeIterator.next().left();
f93d15042315 fix bag
one
parents: 11
diff changeset
204 Iterator<Pair<TreeNode,NodePath>> rdeNodeIterator = roleTraverser.find(
f93d15042315 fix bag
one
parents: 11
diff changeset
205 (TreeNode node) -> {
f93d15042315 fix bag
one
parents: 11
diff changeset
206 String elementName = node.getAttributes().getString("element");
f93d15042315 fix bag
one
parents: 11
diff changeset
207 if (elementName == null)
f93d15042315 fix bag
one
parents: 11
diff changeset
208 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
209 if (!elementName.equals("roleDescriptionElementRefIds"))
f93d15042315 fix bag
one
parents: 11
diff changeset
210 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
211 String rdeId = node.getAttributes().getString("text");
f93d15042315 fix bag
one
parents: 11
diff changeset
212 if (rdeId == null)
f93d15042315 fix bag
one
parents: 11
diff changeset
213 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
214 Pattern personPattern = Pattern.compile(id);
f93d15042315 fix bag
one
parents: 11
diff changeset
215 Matcher personMacher = personPattern.matcher(rdeId);
f93d15042315 fix bag
one
parents: 11
diff changeset
216 if (personMacher.find())
f93d15042315 fix bag
one
parents: 11
diff changeset
217 return true;
f93d15042315 fix bag
one
parents: 11
diff changeset
218 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
219 }
15
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
220 ,roleNode);
12
f93d15042315 fix bag
one
parents: 11
diff changeset
221
f93d15042315 fix bag
one
parents: 11
diff changeset
222 if (!rdeNodeIterator.hasNext())
f93d15042315 fix bag
one
parents: 11
diff changeset
223 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
224 }
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
225
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
226 }
12
f93d15042315 fix bag
one
parents: 11
diff changeset
227 return true;
f93d15042315 fix bag
one
parents: 11
diff changeset
228 }
f93d15042315 fix bag
one
parents: 11
diff changeset
229
f93d15042315 fix bag
one
parents: 11
diff changeset
230 public boolean roleFilter(String id, TreeNode orgNode) {
f93d15042315 fix bag
one
parents: 11
diff changeset
231
f93d15042315 fix bag
one
parents: 11
diff changeset
232 InterfaceTraverser orgTraverser = organizationTree.getTraverser();
f93d15042315 fix bag
one
parents: 11
diff changeset
233
f93d15042315 fix bag
one
parents: 11
diff changeset
234 Iterator<Pair<TreeNode,NodePath>> pairIdIterator = orgTraverser.find(
f93d15042315 fix bag
one
parents: 11
diff changeset
235 (TreeNode node) -> {
f93d15042315 fix bag
one
parents: 11
diff changeset
236 String elementName = node.getAttributes().getString("element");
f93d15042315 fix bag
one
parents: 11
diff changeset
237 if (elementName == null)
f93d15042315 fix bag
one
parents: 11
diff changeset
238 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
239 if (!elementName.equals("roleRefId"))
f93d15042315 fix bag
one
parents: 11
diff changeset
240 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
241 String roleId = node.getAttributes().getString("text");
f93d15042315 fix bag
one
parents: 11
diff changeset
242 if (roleId == null)
f93d15042315 fix bag
one
parents: 11
diff changeset
243 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
244 if (roleId.equals(id))
f93d15042315 fix bag
one
parents: 11
diff changeset
245 return true;
f93d15042315 fix bag
one
parents: 11
diff changeset
246 return false;
f93d15042315 fix bag
one
parents: 11
diff changeset
247 }
15
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
248 ,orgNode);
12
f93d15042315 fix bag
one
parents: 11
diff changeset
249
f93d15042315 fix bag
one
parents: 11
diff changeset
250 if (pairIdIterator.hasNext()){
f93d15042315 fix bag
one
parents: 11
diff changeset
251 System.out.println(pairIdIterator.next().left().getAttributes().getString("text"));
f93d15042315 fix bag
one
parents: 11
diff changeset
252 return true;
f93d15042315 fix bag
one
parents: 11
diff changeset
253 }
f93d15042315 fix bag
one
parents: 11
diff changeset
254 return false;
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
255 }
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
256
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
257 public Iterator<String> roleIds(String id) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
258 Pattern personPattern = Pattern.compile("p:");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
259 Matcher personMacher = personPattern.matcher(id);
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
260 if (personMacher.find()) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
261 return searchRoleIds(personTree, id, "Person");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
262 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
263
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
264 Pattern organizationPattern = Pattern.compile("o:");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
265 Matcher organizationMacher = organizationPattern.matcher(id);
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
266 if (organizationMacher.find()) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
267 return searchRoleIds(organizationTree, id, "Organization");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
268 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
269
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
270 return null;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
271 }
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
272
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
273 public Iterator<String> searchRoleIds(JungleTree tree, String id, String element){
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
274
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
275 InterfaceTraverser ifTraverser = tree.getTraverser();
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
276 Iterator<Pair<TreeNode,NodePath>> searchTargetIterator = ifTraverser.find(
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
277 (TreeNode node) -> {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
278 String nodeElement = node.getAttributes().getString("element");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
279 if (nodeElement == null)
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
280 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
281 if (!nodeElement.equals(element))
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
282 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
283 String nodeId = node.getAttributes().getString("id");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
284 if (nodeId == null)
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
285 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
286 if (nodeId.equals(id))
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
287 return true;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
288 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
289 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
290 ,"id",id);
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
291
11
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
292 LinkedList<String> ids = new LinkedList<String>();
9
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
293
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
294 for (;searchTargetIterator.hasNext();) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
295
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
296 Pair<TreeNode, NodePath> searchTargetPair = searchTargetIterator.next();
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
297 Iterator<Pair<TreeNode,NodePath>> pairIdIterator = ifTraverser.find(
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
298 (TreeNode node) -> {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
299 String nodeElement = node.getAttributes().getString("element");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
300 if (nodeElement == null)
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
301 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
302 if (!nodeElement.equals("roleRefId"))
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
303 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
304 String nodeId = node.getAttributes().getString("text");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
305 if (nodeId != null)
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
306 return true;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
307 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
308 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
309 ,searchTargetPair.left());
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
310
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
311
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
312 for (;pairIdIterator.hasNext();){
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
313 Pair<TreeNode, NodePath> idNodePath = pairIdIterator.next();
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
314 String attribute = idNodePath.left().getAttributes().getString("text");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
315
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
316 Iterator<String> checkList = ids.iterator();
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
317 for (;checkList.hasNext();) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
318 if(checkList.next().equals(attribute))
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
319 attribute = null;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
320 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
321
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
322 if (attribute != null) {
11
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
323 ids.add(attribute);
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
324 System.out.println("-------------------------" + attribute + "-------------------------");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
325 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
326 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
327 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
328 return ids.iterator();
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
329 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
330
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
331
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
332 public Iterator<String> competentRoleId(String personId) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
333
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
334 InterfaceTraverser ifTraverser = personTree.getTraverser();
11
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
335 Iterator<Pair<TreeNode, NodePath>> pairPersonIterator = searchPerson(personId, ifTraverser);
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
336
9
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
337 if (!pairPersonIterator.hasNext())
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
338 return new NullIterator();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
339 TreeNode person = pairPersonIterator.next().left();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
340
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
341 Iterator<Pair<TreeNode,NodePath>> targetPairIterator = ifTraverser.find(
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
342 (TreeNode node) -> {
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
343 String nodeElement = node.getAttributes().getString("element");
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
344 if (nodeElement == null)
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
345 return false;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
346 if (!nodeElement.equals("priority"))
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
347 return false;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
348 String priority = node.getAttributes().getString("text");
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
349 if (priority == null)
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
350 return false;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
351 if (priority.equals("0"))
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
352 return true;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
353 return false;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
354 }
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
355 ,person);
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
356
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
357
11
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
358 LinkedList<String> idList = new LinkedList<String>();
9
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
359 for (;targetPairIterator.hasNext();) {
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
360 NodePath searchPath = targetPairIterator.next().right();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
361 Pair<Integer, NodePath> searchPair = searchPath.last();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
362 NodePath targetPath = searchPair.right().add(searchPair.left() + 1);
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
363 TreeNode targetNode = getTarget(person, targetPath);
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
364 String id = targetNode.getAttributes().getString("text");
11
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
365 idList.add(id);
9
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
366 }
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
367
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
368 return idList.iterator();
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
369 }
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
370
10
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
371
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
372 public Iterator<String> concurrentRoleIds(String personId) {
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
373
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
374 InterfaceTraverser ifTraverser = personTree.getTraverser();
11
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
375 Iterator<Pair<TreeNode, NodePath>> pairPersonIterator = searchPerson(
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
376 personId, ifTraverser);
10
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
377
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
378 if (!pairPersonIterator.hasNext())
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
379 return new NullIterator();
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
380 TreeNode person = pairPersonIterator.next().left();
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
381
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
382 Iterator<Pair<TreeNode,NodePath>> targetPairIterator = ifTraverser.find(
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
383 (TreeNode node) -> {
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
384 String nodeElement = node.getAttributes().getString("element");
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
385 if (nodeElement == null)
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
386 return false;
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
387 if (!nodeElement.equals("priority"))
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
388 return false;
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
389 String priority = node.getAttributes().getString("text");
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
390 if (priority == null)
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
391 return false;
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
392 if (!priority.equals("0"))
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
393 return true;
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
394 return false;
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
395 }
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
396 ,person);
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
397
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
398
11
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
399 LinkedList<String> idList = new LinkedList<String>();
10
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
400 for (;targetPairIterator.hasNext();) {
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
401 NodePath searchPath = targetPairIterator.next().right();
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
402 Pair<Integer, NodePath> searchPair = searchPath.last();
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
403 NodePath targetPath = searchPair.right().add(searchPair.left() + 1);
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
404 TreeNode targetNode = getTarget(person, targetPath);
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
405 String id = targetNode.getAttributes().getString("text");
11
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
406 idList.add(id);
10
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
407 }
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
408
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
409 return idList.iterator();
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
410 }
11
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
411 private Iterator<Pair<TreeNode, NodePath>> searchPerson(String personId,
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
412 InterfaceTraverser ifTraverser) {
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
413 Iterator<Pair<TreeNode,NodePath>> pairPersonIterator = ifTraverser.find(
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
414 (TreeNode node) -> {
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
415 String nodeElement = node.getAttributes().getString("element");
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
416 if (nodeElement == null)
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
417 return false;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
418 if (!nodeElement.equals("Person"))
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
419 return false;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
420 String nodeId = node.getAttributes().getString("id");
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
421 if (nodeId == null)
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
422 return false;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
423 if (nodeId.equals(personId))
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
424 return true;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
425 return false;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
426 }
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
427 ,"element","Person");
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
428 return pairPersonIterator;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
429 }
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
430
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
431
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
432 public Iterator<String> childOrganizationIds(String orgId) {
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
433 InterfaceTraverser ifTraverser = organizationTree.getTraverser();
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
434 Iterator<Pair<TreeNode, NodePath>> pairPersonIterator = searchOrganization(orgId, ifTraverser);
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
435
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
436 if (!pairPersonIterator.hasNext())
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
437 return new NullIterator();
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
438 TreeNode person = pairPersonIterator.next().left();
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
439
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
440 Iterator<Pair<TreeNode,NodePath>> chilrenOrgIdsIterator = ifTraverser.find(
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
441 (TreeNode node) -> {
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
442 String nodeElement = node.getAttributes().getString("element");
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
443 if (nodeElement == null)
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
444 return false;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
445 if (nodeElement.equals("childOrganizations"))
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
446 return true;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
447 return false;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
448 }
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
449 ,person);
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
450
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
451 if (!chilrenOrgIdsIterator.hasNext())
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
452 return new NullIterator();
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
453
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
454 TreeNode chilerenOrgIds = chilrenOrgIdsIterator.next().left();
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
455
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
456 Iterator<Pair<TreeNode,NodePath>> chilrenOrgIdIterator = ifTraverser.find(
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
457 (TreeNode node) -> {
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
458 String nodeElement = node.getAttributes().getString("element");
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
459 if (nodeElement == null)
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
460 return false;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
461 if (!nodeElement.equals("organizationRefIds"))
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
462 return false;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
463 nodeElement = node.getAttributes().getString("text");
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
464 if (nodeElement != null)
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
465 return true;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
466 return false;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
467 }
16
4cfa77c61ee1 add childOrganizationIdsTest and Method
one
parents: 15
diff changeset
468 ,chilerenOrgIds);
11
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
469
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
470 LinkedList<String> ids = new LinkedList<String>();
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
471
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
472 for (;chilrenOrgIdIterator.hasNext();) {
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
473 ids.add(chilrenOrgIdIterator.next().left().getAttributes().getString("text"));
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
474 }
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
475
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
476 return ids.iterator();
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
477 }
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
478
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
479
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
480 private Iterator<Pair<TreeNode, NodePath>> searchOrganization(String orgId,
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
481 InterfaceTraverser ifTraverser) {
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
482 Iterator<Pair<TreeNode,NodePath>> pairPersonIterator = ifTraverser.find(
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
483 (TreeNode node) -> {
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
484 String nodeElement = node.getAttributes().getString("element");
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
485 if (nodeElement == null)
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
486 return false;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
487 if (!nodeElement.equals("Organization"))
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
488 return false;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
489 String nodeId = node.getAttributes().getString("id");
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
490 if (nodeId == null)
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
491 return false;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
492 if (nodeId.equals(orgId))
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
493 return true;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
494 return false;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
495 }
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
496 ,"element","Organization");
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
497 return pairPersonIterator;
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
498 }
10
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
499
9
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
500 public TreeNode getTarget(TreeNode node , NodePath path){
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
501 TreeNode target;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
502 Pair<Integer, NodePath> pathNode = path.pop();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
503 int num = pathNode.left();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
504 NodePath newPath = pathNode.right();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
505 if (num == -1 && newPath.size() != 0)
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
506 return getTarget(node, newPath);
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
507
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
508 Either<Error, TreeNode> either = node.getChildren().at(num);
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
509 if (either.isA())
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
510 return node;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
511
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
512 TreeNode child = either.b();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
513 if (pathNode.right().size() == 0)
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
514 return child;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
515
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
516 target = getTarget(child,pathNode.right());
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
517 return target;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
518 }
10
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
519
9
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
520 class NullIterator implements Iterator<String>{
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
521
9
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
522 @Override
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
523 public boolean hasNext() {
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
524 return false;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
525 }
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
526
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
527 @Override
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
528 public String next() {
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
529 return null;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
530 }
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
531
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
532 }
10
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
533
15
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
534 public String rolePriority(String personId, String roleId) {
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
535 InterfaceTraverser personTraverser = personTree.getTraverser();
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
536 Iterator<Pair<TreeNode,NodePath>> personIterator = personTraverser.find(
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
537 (TreeNode node) -> {
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
538 String element = node.getAttributes().getString("element");
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
539 if (element == null)
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
540 return false;
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
541 if (!element.equals("Person"))
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
542 return false;
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
543 String nodeId = node.getAttributes().getString("id");
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
544 if (nodeId == null)
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
545 return false;
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
546 if (nodeId.equals(personId))
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
547 return true;
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
548 return false;
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
549 });
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
550
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
551 if (!personIterator.hasNext())
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
552 return "";
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
553
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
554 TreeNode targetNode = personIterator.next().left();
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
555
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
556 Iterator<Pair<TreeNode,NodePath>> priorityIterator = personTraverser.find(
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
557 (TreeNode node) -> {
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
558 String element = node.getAttributes().getString("element");
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
559 if (element == null)
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
560 return false;
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
561 if (!element.equals("roleRefId"))
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
562 return false;
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
563 String compareRoleId = node.getAttributes().getString("text");
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
564 if (compareRoleId == null)
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
565 return false;
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
566 if (compareRoleId.equals(roleId))
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
567 return true;
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
568 return false;
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
569 },targetNode);
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
570
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
571 for (;priorityIterator.hasNext();) {
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
572 Pair<TreeNode, NodePath> priorityPair = priorityIterator.next();
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
573 NodePath roleNodePath = priorityPair.right();
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
574 Pair<Integer, NodePath> last = roleNodePath.last();
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
575 NodePath priorityNodePath = last.right().add(last.left() - 1);
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
576 TreeNode priorityNode = getTarget(targetNode,priorityNodePath);
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
577 if (priorityNode.getAttributes().getString("element").equals("priority"))
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
578 return priorityNode.getAttributes().getString("text");
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
579 }
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
580 return "";
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
581 }
5ef4b1004ade rolePriorityTest
one
parents: 14
diff changeset
582
11
67305f53aad0 change fj List to LinkedList
one
parents: 10
diff changeset
583
16
4cfa77c61ee1 add childOrganizationIdsTest and Method
one
parents: 15
diff changeset
584
4cfa77c61ee1 add childOrganizationIdsTest and Method
one
parents: 15
diff changeset
585
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
586 }