view src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementCreateIndex.java @ 16:eed6235830c9

add timeMeasurementCreateIndex
author one
date Mon, 08 Dec 2014 19:11:19 +0900
parents
children 917ecf2c7350
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.tatsuki.xml;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.ByteBuffer;
import java.util.Iterator;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.SAXException;

import fj.data.List;
import ac.jp.u_ryukyu.cr.ie.tatsuki.xmlReader.ReadXmlHandler;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungleTree;
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.persistent.ChangeList;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.NullJournal;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet;
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.operations.TreeOperation;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultChangeSet;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index;
import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex;

public class TimeMeasurementCreateIndex {
    private static int personCount = 10;

    public static void main(String args[]) throws FileNotFoundException,
            ParserConfigurationException, SAXException, IOException {
        Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor(
                new DefaultTraverser()));

        // JungleTree readXmlTree = readXml("Person", jungle);
        JungleTree orgTree = readXml("Organization", jungle);
        JungleTree roleTree = readXml("Role", jungle);

        File file = new File("./time/createParentIndexUntil");
        file.delete();

        for (; personCount <= 300;) {
            JungleTree tree = createJungleTree("Tree");
            JungleTreeEditor editor = tree.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 = extendXmlTree.extendsTree(editor, orgTree, roleTree,
                        count);
            }
            editor.success();
            personCount = personCount + 10;
        }
    }

    private static JungleTree createJungleTree(String name) {
        ChangeList list = new ChangeList() {
            @Override
            public Iterator<TreeOperation> iterator() {
                List<TreeOperation> nil = List.nil();
                return nil.iterator();
            }

            @Override
            public String uuid() {
                return "hoge";
            }

            @Override
            public String getTreeName() {
                return name;
            }

        };

        DefaultTreeNode root = new DefaultTreeNode();
        Index index = new Index();
        ParentIndex parentIndex = new ParentIndex();
        ChangeSet set = new DefaultChangeSet(root, null, list, "hoge", name, 0,
                index.getIndex(), parentIndex.getParentIndex());
        DefaultTreeContext tc = new DefaultTreeContext(root, set);
        JungleTree newTree = new DefaultJungleTree(tc, "hoge",
                new NullJournal().getWriter(), new DefaultTreeEditor(
                        new DefaultTraverser()));
        return newTree;
    }

    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/one/Documents/workspace/JungleXMLReader/xml/" + xml
                        + ".xml"), readXmlHandler);
        return readXmlHandler.getTree();
    }
}