# HG changeset patch
# User one
# Date 1416950665 -32400
# Node ID 33b15ef21dcde3fa1f38f9ddac7f2a201e74c234
# Parent cc219065cea34d1d54035d046a28dd2611ae7b4e
time measurementjuGrix and extendsXmlTree
diff -r cc219065cea3 -r 33b15ef21dcd src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/oldTree/CreateXML.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/oldTree/CreateXML.java Tue Nov 25 12:07:55 2014 +0900
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-package jp.ac.u_ryukyu.ie.cr.tatsuki.oldTree;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-
-public class CreateXML {
-
- public static void main(String args[]) {
-
- try {
- File file = new File("./XML/test.xml");
- PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file)));
- pw.println("");
- int nodeCount = put(pw, 0, "", 0);
- pw.close();
- System.out.println(nodeCount);
- } catch (IOException e) {
- System.out.println(e);
- }
- }
-
- public static int put(PrintWriter pw, int deep, String str, int nodeCount) {
- nodeCount++;
- pw.println(str + "");
- String newStr = str + " ";
- System.out.println("deep = " + deep);
- deep++;
- if (deep < 17) {
- nodeCount = put(pw, deep, newStr, nodeCount);
- nodeCount = put(pw, deep, newStr, nodeCount);
- }
- pw.println(str + "");
- return nodeCount;
- }
-}
diff -r cc219065cea3 -r 33b15ef21dcd src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/oldTree/Index.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/oldTree/Index.java Tue Nov 25 12:07:55 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/oldTree/Index.java Wed Nov 26 06:24:25 2014 +0900
@@ -22,7 +22,7 @@
LoadXml reader = new LoadXml();
JungleTree personTree = reader.loadTestData("test.xml");
- InterfaceTraverser traverser = personTree.getTraverser();
+ InterfaceTraverser traverser = personTree.getTraverser(true);
search(traverser, "Normal");
System.out.println("test");
diff -r cc219065cea3 -r 33b15ef21dcd src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/CreateXML.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/CreateXML.java Wed Nov 26 06:24:25 2014 +0900
@@ -0,0 +1,38 @@
+package jp.ac.u_ryukyu.ie.cr.tatsuki.xml;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+public class CreateXML {
+
+ public static void main(String args[]) {
+
+ try {
+ File file = new File("./XML/test.xml");
+ PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file)));
+ pw.println("");
+ int nodeCount = put(pw, 0, "", 0);
+ pw.close();
+ System.out.println(nodeCount);
+ } catch (IOException e) {
+ System.out.println(e);
+ }
+ }
+
+ public static int put(PrintWriter pw, int deep, String str, int nodeCount) {
+ nodeCount++;
+ pw.println(str + "");
+ String newStr = str + " ";
+ System.out.println("deep = " + deep);
+ deep++;
+ if (deep < 17) {
+ nodeCount = put(pw, deep, newStr, nodeCount);
+ nodeCount = put(pw, deep, newStr, nodeCount);
+ }
+ pw.println(str + "");
+ return nodeCount;
+ }
+}
diff -r cc219065cea3 -r 33b15ef21dcd src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementJuGrix.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementJuGrix.java Wed Nov 26 06:24:25 2014 +0900
@@ -0,0 +1,73 @@
+package jp.ac.u_ryukyu.ie.cr.tatsuki.xml;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.LinkedList;
+import java.util.Random;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+import jp.ac.u_ryukyu.cr.ie.tatsuki.bbs.JuGrix;
+
+public class TimeMeasurementJuGrix {
+
+ static int roopCount = 10;
+ static boolean useIndex = false;
+
+ public static void main(String args[]) throws FileNotFoundException, ParserConfigurationException, SAXException, IOException {
+
+ System.out.println("start : ");
+
+ String orgId = "o:2";
+ String personId = "p:1";
+ LinkedList filterIds = new LinkedList();
+ filterIds.add("r:5");
+ long t2;
+ long t1;
+ t1 = System.currentTimeMillis();
+ JuGrix jugrix = extendXmlTree.createJuGrix(useIndex);
+ t2 = System.currentTimeMillis();
+ System.out.println("create tree =" + (t2 - t1) + "s");
+ Random random = new Random();
+
+ t1 = System.currentTimeMillis();
+ functions(jugrix, orgId, personId, filterIds);
+ t2 = System.currentTimeMillis();
+ System.out.println("1回目=" + (t2 - t1) + "s");
+
+ long sumTime = 0;
+ for (int count = 0; count < roopCount; count++) {
+
+ int ran = random.nextInt(30);
+ orgId = "o:" + String.valueOf(ran);
+ personId = "p:" + String.valueOf(ran);
+ t1 = System.currentTimeMillis();
+ functions(jugrix, orgId, personId, filterIds);
+ t2 = System.currentTimeMillis();
+ sumTime = (t2 - t1);
+ System.out.println(count + "回目=" +sumTime + "s");
+ }
+ System.out.println("平均 = " + sumTime + "s");
+ System.out.println("end");
+ }
+
+ private static void functions(JuGrix jugrix, String orgId, String personId, LinkedList filterIds) {
+ jugrix.childOrganizationIds(orgId, filterIds);
+ jugrix.competentRoleId(personId);
+ jugrix.concurrentRoleIds(personId);
+ jugrix.deepChildOrganizationIds(orgId, filterIds);
+ jugrix.deepChildOrganizationIdsPlus(orgId, filterIds);
+ jugrix.deepParentOrganizationIds(orgId, filterIds);
+ jugrix.deepParentOrganizationIdsPlus(orgId, filterIds);
+ jugrix.deepPersonIds(orgId, filterIds);
+ jugrix.isActive(personId);
+ jugrix.parentOrganizationIds(orgId, filterIds);
+ jugrix.personIds(orgId, filterIds);
+ jugrix.roleDescriptionElementIds(orgId, filterIds);
+ jugrix.roleIds(orgId, filterIds);
+ jugrix.rolePriority(personId, "r:34");
+ jugrix.stringPathToId("r:path:エスアールエルテクノシステム/臨検システム部/業務システムグループ");
+ }
+}
diff -r cc219065cea3 -r 33b15ef21dcd src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/extendXmlTree.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/extendXmlTree.java Wed Nov 26 06:24:25 2014 +0900
@@ -0,0 +1,246 @@
+package jp.ac.u_ryukyu.ie.cr.tatsuki.xml;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.Iterator;
+import java.util.Random;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.xml.sax.SAXException;
+
+import jp.ac.u_ryukyu.cr.ie.tatsuki.bbs.JuGrix;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
+import ac.jp.u_ryukyu.cr.ie.tatsuki.xmlReader.ReadXmlHandler;
+
+public class extendXmlTree {
+
+ private extendXmlTree() {
+
+ }
+
+ static int personCount = 10;
+
+ public static JuGrix createJuGrix(boolean useIndex) throws ParserConfigurationException, SAXException,
+ FileNotFoundException, IOException {
+ Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser()));
+ JungleTree readXmlTree = jungle.createNewTree("Person");
+ // JungleTree readXmlTree = readXml("Person", jungle);
+ JungleTree orgTree = readXml("Organization", jungle);
+ JungleTree roleTree = readXml("Role", jungle);
+ JungleTreeEditor editor = readXmlTree.getTreeEditor();
+ NodePath path = new DefaultNodePath();
+ editor = editor.addNewChildAt(path, 0).b();
+ editor = editor.putAttribute(path.add(0), "element", ByteBuffer.wrap("Persons".getBytes())).b();
+ for (int count = 0; count < personCount; ++count) {
+ editor = extendsTree(editor, orgTree, roleTree, count);
+ System.out.println("Count = " + count);
+ }
+ editor.success();
+ int PersonCount = readXmlTree.getRootNode().getChildren().at(0).b().getChildren().size();
+ System.out.println("PersonCount = " + PersonCount);
+ JuGrix jugrix = new JuGrix(useIndex, readXmlTree, orgTree, roleTree);
+ return jugrix;
+ }
+
+ private static JungleTreeEditor extendsTree(JungleTreeEditor editor, JungleTree orgTree, JungleTree roleTree,
+ int count) {
+ Random rdm = new Random();
+ int orgNum = rdm.nextInt(30);
+ String orgId = "o:" + String.valueOf(orgNum);
+ String orgRoleId = searchOrgRole(orgTree, orgId);
+ String roleId = searchRole(roleTree, orgRoleId);
+ orgNum = rdm.nextInt(30);
+
+ String orgId2 = "o:" + String.valueOf(orgNum);
+ String orgRoleId2 = searchOrgRole(orgTree, orgId2);
+ String roleId2 = searchRole(roleTree, orgRoleId2);
+
+ NodePath path = new DefaultNodePath().add(0);
+ editor = editor.addNewChildAt(path, count).b();
+ path = path.add(count);
+ editor = editor.putAttribute(path, "element", ByteBuffer.wrap("Person".getBytes())).b();
+ String personId = String.valueOf(count);
+ editor = editor.putAttribute(path, "Person-id", ByteBuffer.wrap(("p:" + personId).getBytes())).b();
+ editor = editor.putAttribute(path, "Person-type", ByteBuffer.wrap("Person".getBytes())).b();
+
+ editor = editor.addNewChildAt(path, 0).b();
+ editor = editor.putAttribute(path.add(0), "element", ByteBuffer.wrap(("accountId").getBytes())).b();
+ editor = editor.putAttribute(path.add(0), "text-accountId", ByteBuffer.wrap(("a:" + personId).getBytes())).b();
+
+ editor = editor.addNewChildAt(path, 1).b();
+ editor = editor.putAttribute(path.add(1), "element", ByteBuffer.wrap(("lastName").getBytes())).b();
+ editor = editor.putAttribute(path.add(1), "text-lastName", ByteBuffer.wrap(("金川").getBytes())).b();
+
+ editor = editor.addNewChildAt(path, 2).b();
+ editor = editor.putAttribute(path.add(2), "element", ByteBuffer.wrap(("name").getBytes())).b();
+ editor = editor.putAttribute(path.add(2), "text-name", ByteBuffer.wrap(("竜己").getBytes())).b();
+
+ editor = editor.addNewChildAt(path, 3).b();
+ editor = editor.putAttribute(path.add(3), "element", ByteBuffer.wrap(("nameReading").getBytes())).b();
+ editor = editor.putAttribute(path.add(3), "text-nameReading", ByteBuffer.wrap(("かながわたつき").getBytes())).b();
+
+ editor = editor.addNewChildAt(path, 4).b();
+ editor = editor.putAttribute(path.add(4), "element", ByteBuffer.wrap(("roleRefIds").getBytes())).b();
+
+ editor = editor.addNewChildAt(path.add(4), 0).b();
+ editor = editor.putAttribute(path.add(4).add(0), "element", ByteBuffer.wrap(("roleRefId").getBytes())).b();
+ editor = editor.putAttribute(path.add(4).add(0), "text-roleRefId", ByteBuffer.wrap((roleId).getBytes())).b();
+ editor = editor.addNewChildAt(path.add(4), 1).b();
+ editor = editor.putAttribute(path.add(4).add(1), "element", ByteBuffer.wrap(("roleRefId").getBytes())).b();
+ editor = editor.putAttribute(path.add(4).add(1), "text-roleRefId", ByteBuffer.wrap((roleId2).getBytes())).b();
+
+ editor = editor.addNewChildAt(path, 5).b();
+ editor = editor.putAttribute(path.add(5), "element", ByteBuffer.wrap(("parentOrganizations").getBytes())).b();
+ editor = editor.putAttribute(path.add(5), "parentOrganizations-type",
+ ByteBuffer.wrap(("OrganizationMappedByRole").getBytes())).b();
+
+ NodePath parentOrgPath = path.add(5);
+ editor = editor.addNewChildAt(parentOrgPath, 0).b();
+ editor = editor.putAttribute(parentOrgPath.add(0), "element",
+ ByteBuffer.wrap(("OrganizationMappedByRole").getBytes())).b();
+ editor = editor.putAttribute(parentOrgPath.add(0), "OrganizationMappedByRole-type",
+ ByteBuffer.wrap(("OrganizationMappedByRole").getBytes())).b();
+
+ editor = editor.addNewChildAt(parentOrgPath.add(0), 0).b();
+ editor = editor.putAttribute(parentOrgPath.add(0).add(0), "element",
+ ByteBuffer.wrap(("organizationRefId").getBytes())).b();
+ editor = editor.putAttribute(parentOrgPath.add(0).add(0), "text-organizationRefId",
+ ByteBuffer.wrap((orgId).getBytes())).b();
+
+ editor = editor.addNewChildAt(parentOrgPath.add(0), 1).b();
+ editor = editor.putAttribute(parentOrgPath.add(0).add(1), "element", ByteBuffer.wrap(("roleRefId").getBytes())).b();
+ editor = editor.putAttribute(parentOrgPath.add(0).add(1), "text-roleRefId", ByteBuffer.wrap((roleId).getBytes()))
+ .b();
+
+ editor = editor.addNewChildAt(parentOrgPath, 1).b();
+ editor = editor.putAttribute(parentOrgPath.add(1), "element",
+ ByteBuffer.wrap(("OrganizationMappedByRole").getBytes())).b();
+ editor = editor.putAttribute(parentOrgPath.add(1), "OrganizationMappedByRole-type",
+ ByteBuffer.wrap(("OrganizationMappedByRole").getBytes())).b();
+
+ editor = editor.addNewChildAt(parentOrgPath.add(1), 0).b();
+ editor = editor.putAttribute(parentOrgPath.add(1).add(0), "element",
+ ByteBuffer.wrap(("organizationRefId").getBytes())).b();
+ editor = editor.putAttribute(parentOrgPath.add(1).add(0), "text-organizationRefId",
+ ByteBuffer.wrap((orgId2).getBytes())).b();
+
+ editor = editor.addNewChildAt(parentOrgPath.add(1), 1).b();
+ editor = editor.putAttribute(parentOrgPath.add(1).add(1), "element", ByteBuffer.wrap(("roleRefId").getBytes())).b();
+ editor = editor.putAttribute(parentOrgPath.add(1).add(1), "text-roleRefId", ByteBuffer.wrap((roleId2).getBytes()))
+ .b();
+
+ editor = editor.addNewChildAt(path, 6).b();
+ editor = editor.putAttribute(path.add(6), "element", ByteBuffer.wrap(("priorities").getBytes())).b();
+ editor = editor.putAttribute(path.add(6), "priorities-type",
+ ByteBuffer.wrap(("OrganizationMappedByRole").getBytes())).b();
+
+ //
+ editor = editor.addNewChildAt(path.add(6), 0).b();
+ editor = editor.putAttribute(path.add(6).add(0), "element", ByteBuffer.wrap(("PriorityMappedByRole").getBytes()))
+ .b();
+ editor = editor.putAttribute(path.add(6).add(0), "PriorityMappedByRole-type",
+ ByteBuffer.wrap(("PriorityMappedByRole").getBytes())).b();
+
+ editor = editor.addNewChildAt(path.add(6).add(0), 0).b();
+ editor = editor.putAttribute(path.add(6).add(0).add(0), "element", ByteBuffer.wrap(("priority").getBytes())).b();
+ editor = editor.putAttribute(path.add(6).add(0).add(0), "text-priority", ByteBuffer.wrap(("0").getBytes())).b();
+ editor = editor.addNewChildAt(path.add(6).add(0), 1).b();
+ editor = editor.putAttribute(path.add(6).add(0).add(1), "element", ByteBuffer.wrap(("roleRefId").getBytes())).b();
+ editor = editor.putAttribute(path.add(6).add(0).add(1), "text-roleRefId", ByteBuffer.wrap((roleId).getBytes())).b();
+
+ editor = editor.addNewChildAt(path.add(6), 1).b();
+ editor = editor.putAttribute(path.add(6).add(1), "element", ByteBuffer.wrap(("PriorityMappedByRole").getBytes()))
+ .b();
+ editor = editor.putAttribute(path.add(6).add(1), "PriorityMappedByRole-type",
+ ByteBuffer.wrap(("PriorityMappedByRole").getBytes())).b();
+
+ editor = editor.addNewChildAt(path.add(6).add(1), 0).b();
+ editor = editor.putAttribute(path.add(6).add(1).add(0), "element", ByteBuffer.wrap(("priority").getBytes())).b();
+ editor = editor.putAttribute(path.add(6).add(1).add(0), "text-priority", ByteBuffer.wrap(("1").getBytes())).b();
+ editor = editor.addNewChildAt(path.add(6).add(1), 1).b();
+ editor = editor.putAttribute(path.add(6).add(1).add(1), "element", ByteBuffer.wrap(("roleRefId").getBytes())).b();
+ editor = editor.putAttribute(path.add(6).add(1).add(1), "text-roleRefId", ByteBuffer.wrap((roleId2).getBytes()))
+ .b();
+ return editor;
+
+ }
+
+ private static String searchRole(JungleTree roleTree, String orgRoleId) {
+ InterfaceTraverser traverser = roleTree.getTraverser(false);
+ Iterator roleIdIterator = traverser.find((TreeNode node) -> {
+ String element = node.getAttributes().getString("element");
+ if (element == null)
+ return false;
+ if (!element.equals("Role"))
+ return false;
+ String compareRoleId = node.getAttributes().getString("Role-id");
+ if (compareRoleId == null)
+ return false;
+ if (compareRoleId.equals(orgRoleId))
+ return true;
+ return false;
+ }, "Role-id", orgRoleId);
+
+ if (!roleIdIterator.hasNext())
+ return orgRoleId;
+
+ TreeNode orgIdNode = roleIdIterator.next();
+ TreeNode roleRefIdNode = orgIdNode.getChildren().at(0).b().getChildren().at(0).b();
+ if (roleRefIdNode == null)
+ return orgRoleId;
+ String roleId = roleRefIdNode.getAttributes().getString("text-childrenRoleRefId");
+
+ return roleId;
+ }
+
+ private static String searchOrgRole(JungleTree orgTree, String orgId) {
+ InterfaceTraverser traverser = orgTree.getTraverser(false);
+ Iterator orgIdIterator = traverser.find((TreeNode node) -> {
+ String element = node.getAttributes().getString("element");
+ if (element == null)
+ return false;
+ if (!element.equals("Organization"))
+ return false;
+ String compareRoleId = node.getAttributes().getString("Organization-id");
+ if (compareRoleId == null)
+ return false;
+ if (compareRoleId.equals(orgId))
+ return true;
+ return false;
+ }, "Organization-id", orgId);
+
+ if (!orgIdIterator.hasNext())
+ return "";
+
+ TreeNode orgIdNode = orgIdIterator.next();
+ TreeNode roleRefIdNode = orgIdNode.getChildren().at(2).b().getChildren().at(0).b();
+ String roleId = roleRefIdNode.getAttributes().getString("text-roleRefId");
+ return roleId;
+ }
+
+ private static JungleTree readXml(String xml, Jungle jungle) throws ParserConfigurationException, SAXException,
+ IOException, FileNotFoundException {
+ SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
+ SAXParser saxParser = saxParserFactory.newSAXParser();
+ JungleTree tree = jungle.createNewTree(xml);
+ ReadXmlHandler readXmlHandler = new ReadXmlHandler(tree);
+ saxParser
+ .parse(new FileInputStream("/Users/e115731/workspace/JungleXmlReader/xml/" + xml + ".xml"), readXmlHandler);
+ return readXmlHandler.getTree();
+ }
+
+}