annotate src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java @ 29:626e56f749a9

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