/* Copyright (C) 2010 by * * Cam-Tu Nguyen * ncamtu@ecei.tohoku.ac.jp or ncamtu@gmail.com * * Xuan-Hieu Phan * pxhieu@gmail.com * * College of Technology, Vietnamese University, Hanoi * Graduate School of Information Sciences, Tohoku University * * JVnTextPro-v.2.0 is a free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * * JVnTextPro-v.2.0 is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with JVnTextPro-v.2.0); if not, write to the Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ package jvnsegmenter; import java.io.FileInputStream; import java.io.InputStream; import java.util.Vector; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import jvntextpro.data.ContextGenerator; // TODO: Auto-generated Javadoc /** * The Class BasicContextGenerator. */ public abstract class BasicContextGenerator extends ContextGenerator { // common variables /** The cpnames. */ Vector<String> cpnames; /** The paras. */ Vector<Vector<Integer>> paras; // common template reader methods /** * Read feature parameters. * * @param node the node * @return true, if successful */ protected boolean readFeatureParameters(Element node){ try{ NodeList childrent = node.getChildNodes(); cpnames = new Vector<String>(); paras = new Vector<Vector<Integer>>(); for (int i = 0; i < childrent.getLength(); i++) if (childrent.item(i) instanceof Element) { Element child = (Element) childrent.item(i); String value = child.getAttribute("value"); //parse the value and get the parameters String [] parastr = value.split(":"); Vector<Integer> para = new Vector<Integer>(); for (int j = 3; j < parastr.length; ++j){ para.add(Integer.parseInt(parastr[j])); } cpnames.add(parastr[2]); paras.add(para); } } catch (Exception e){ System.out.println(e.getMessage()); e.printStackTrace(); return false; } return true; } /** * Read feature nodes. * * @param templateFile the template file * @return the vector */ public static Vector<Element> readFeatureNodes(String templateFile){ Vector<Element> feaTypes = new Vector<Element>(); try { // Read feature template file........ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); InputStream feaTplStream = new FileInputStream(templateFile); Document doc = builder.parse(feaTplStream); Element root = doc.getDocumentElement(); NodeList childrent = root.getChildNodes(); for (int i = 0; i < childrent.getLength(); i++) if (childrent.item(i) instanceof Element) { Element child = (Element) childrent.item(i); feaTypes.add(child); } } catch (Exception e){ System.out.println("Reading featuretemplate fail " + e.getMessage()); e.printStackTrace(); } return feaTypes; } }