view src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementCreateIndex.java @ 17:917ecf2c7350

function Measurement
author one
date Wed, 24 Dec 2014 15:48:32 +0900
parents eed6235830c9
children 195c1a644550
line wrap: on
line source

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

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
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 {

  public static void main(String args[]) throws FileNotFoundException, ParserConfigurationException, SAXException,
      IOException {
    
    int maxPersonCount = Integer.parseInt(args[0]);
    Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser()));
    JungleTree orgTree = readXml("Organization", jungle);
    JungleTree roleTree = readXml("Role", jungle);

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

    for (int personCount = 0; personCount <= maxPersonCount;) {
      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;
      System.out.println("personCount" + personCount);
    }
  }

  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);
    String currentPath = System.getProperty("user.dir");
    saxParser.parse(new FileInputStream(currentPath + "/xml/" + xml + ".xml"), readXmlHandler);
    return readXmlHandler.getTree();
  }
}