view src/main/java/ac/jp/u_ryukyu/cr/ie/tatsuki/xmlReader/ReadXmlNodeCreateIndexHandler.java @ 28:ed831b2fc156

temporarily stored
author one
date Fri, 07 Nov 2014 02:20:07 +0900
parents ef3fae2e7f0c
children
line wrap: on
line source

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

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.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;

import org.xml.sax.*;
import org.xml.sax.helpers.*;

public class ReadXmlNodeCreateIndexHandler extends DefaultHandler {
  private JungleTree tree;
  private JungleTreeEditor editor;
  private NodePath path;

  public ReadXmlNodeCreateIndexHandler(JungleTree tree) {
    this.tree = tree;
    this.editor = tree.getTreeEditor();
    this.path = new DefaultNodePath().add(-1);
  }

  @Override
  public void startElement(String uri, String localName, String qName, Attributes attributes) {
    Pair<Integer, NodePath> nodePair = path.last();
    path = nodePair.right();
    int num = nodePair.left() + 1;

    Either<Error, JungleTreeEditor> either = editor.addNewChildAt(path, num);
    if (either.isA()) {
      // error
    }
    this.editor = either.b();

    path = path.add(num);
    path = path.add(-1);
  }


  @Override
  public void endElement(String namespaceURI, String localName, String qName) {
    path = path.tail();
    if (namespaceURI != "") {
      // System.out.println("namespaceURI= " + namespaceURI);
    }
    if (localName != "") {
      // System.out.println("localName= " + localName);
    }

    if (qName != "") {
      // System.out.println("qName= " + qName);
    }
  }


  @Override
  public void endDocument() {
    Either<Error, JungleTreeEditor> either = editor.success();
    if (either.isA()) {
      // error
    }
    // System.out.println("end");
  }

  public JungleTree getTree() {
    return tree;
  }

}