view src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/xmlReadTest/SaxTest.java @ 41:037731e99d6e

fit JungleCore 144
author one
date Mon, 17 Nov 2014 18:47:10 +0900
parents 6f9439ca3eb5
children 1bdd50e26fac
line wrap: on
line source

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

import java.io.*;
import java.nio.ByteBuffer;
import java.util.Iterator;

import javax.xml.parsers.*;

import fj.data.List;
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.store.NodePath;
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 jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
import junit.framework.Assert;

class SaxTest {
  public static void main(String args[]) {
    try {
      SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
      SAXParser saxParser = saxParserFactory.newSAXParser();
      Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser()));
      JungleTree tree = jungle.createNewTree("XMLTEST");
      TestHandler testHandler = new TestHandler(tree);
      saxParser.parse(new FileInputStream("xml/sample.xml"), testHandler);
      JungleTree newTree = testHandler.getTree();
      InterfaceTraverser ifTraverser = newTree.getTraverser();

      Iterator<Pair<TreeNode, NodePath>> searchNode = ifTraverser.find((TreeNode node) -> {
        List<ByteBuffer> attribute = node.getAttributes().get("element");
        if (attribute.isNotEmpty()) {
          byte[] byteAttribute = attribute.head().array();
          String str = new String(byteAttribute);
          System.out.println("attribute = " + str);
          return str.equals("Person");
        }
        return false;
      }, "element", "Person");
      Pair<TreeNode, NodePath> nodePair = searchNode.next();
      Iterator<String> element = nodePair.left().getAttributes().getString("element");
      Assert.assertTrue(element.hasNext());
      Assert.assertEquals(element.next(), "Person");
      Assert.assertEquals(nodePair.right().toString(), "<-1,0>");

      searchNode = ifTraverser.find((TreeNode node) -> {
        List<ByteBuffer> attribute = node.getAttributes().get("element");
        if (attribute.isNotEmpty()) {
          byte[] byteAttribute = attribute.head().array();
          String str = new String(byteAttribute);
          System.out.println("attribute = " + str);
          return str.equals("name");
        }
        return false;
      }, "element", "name");
      searchNode.hasNext();
      nodePair = searchNode.next();
      Iterator<String> textIterator = nodePair.left().getAttributes().getString("text");
      Assert.assertTrue(textIterator.hasNext());
      Assert.assertEquals(textIterator.next(), "tatsuki");
      Assert.assertEquals(nodePair.right().toString(), "<-1,0,0>");

      searchNode = ifTraverser.find((TreeNode node) -> {
        List<ByteBuffer> attribute = node.getAttributes().get("text");
        if (attribute.isNotEmpty()) {
          byte[] byteAttribute = attribute.head().array();
          String str = new String(byteAttribute);
          System.out.println("attribute = " + str);
          return str.equals("tatsuki");
        }
        return false;
      }, "text", "tatsuki");

      nodePair = searchNode.next();
      Iterator<String> idIterator = nodePair.left().getAttributes().getString("id");
      Assert.assertTrue(idIterator.hasNext());
      Assert.assertEquals(idIterator.next(), "10");
      Assert.assertEquals(nodePair.right().toString(), "<-1,0,0>");

      searchNode = ifTraverser.find((TreeNode node) -> {
         List<ByteBuffer> attribute = node.getAttributes().get("id");
        if (attribute.isNotEmpty()) {
          byte[] byteAttribute = attribute.head().array();
          String str = new String(byteAttribute);
          System.out.println("attribute = " + str);
          return str.equals("10");
        }
        return false;
      }, "id", "10");

      nodePair = searchNode.next();
      idIterator = nodePair.left().getAttributes().getString("id");
      Assert.assertTrue(idIterator.hasNext());
      Assert.assertEquals(idIterator.next(), "10");
      Assert.assertEquals(nodePair.right().toString(), "<-1,0,0>");

    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}