package com.qxueyou.scc.exercise.service.impl.parser; import java.util.List; import com.qxueyou.scc.exercise.service.impl.Node; import com.qxueyou.scc.exercise.service.impl.ParseResult; import com.qxueyou.scc.exercise.service.impl.Parser; import com.qxueyou.scc.exercise.service.impl.node.Doc; import com.qxueyou.scc.exercise.service.impl.node.ItemType; /** * 文档解析器 * @author 德虎 * */ public class DocParser extends Parser { @Override public ParseResult parse(Node node, String str) { return parse((Doc)node,str); } /** * 解析 Doc * @param doc * @param str * @return */ private ParseResult parse(Doc doc, String str) { if(str.contains("单选")||str.contains("单项选择")){ return tryNextNodeParser(doc,ItemType.TYPE_SINGLE); } if(str.contains("多选")||str.contains("多项选择")){ return tryNextNodeParser(doc,ItemType.TYPE_MULTI); } if(str.contains("判断")){ return tryNextNodeParser(doc,ItemType.TYPE_TRUE_OR_FALSE); } return new ParseResult(false,ParseResult.STEP_CUR,null); } private ParseResult tryNextNodeParser(Doc doc,String type) { List children = doc.getChildren(); Node child = null; if(children!=null && !children.isEmpty()){ child = doc.getChild("TYPE",type); } if(child==null){ child = new ItemType(type); doc.addNode(child); } return new ParseResult(false,ParseResult.STEP_NEXT,child); } }