package com.qxueyou.scc.exercise.service.impl.parser; import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; 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.Item; import com.qxueyou.scc.exercise.service.impl.node.ItemType; public class ItemTypeParser extends Parser { /** * ϰÌâÀàÐ͹ؼü×Ö */ private static Map typeMap = new HashMap(); static{ typeMap.put("µ¥Ñ¡", ItemType.TYPE_SINGLE); typeMap.put("µ¥ÏîÑ¡Ôñ", ItemType.TYPE_SINGLE); typeMap.put("¶àÑ¡", ItemType.TYPE_MULTI); typeMap.put("¶àÏîÑ¡Ôñ", ItemType.TYPE_MULTI); typeMap.put("ÅжÏ", ItemType.TYPE_TRUE_OR_FALSE); } /** * ϰÌ⿪ʼģʽƥÅä */ Pattern itemPattern = Pattern.compile("\\d+"); @Override public ParseResult parse(Node node, String str) { return parse((ItemType) node, str); } /** * ½âÎö ItemType * * @param doc * @param str * @return */ private ParseResult parse(ItemType itemType, String str) { // ϰÌâ Matcher matcher = itemPattern.matcher(str); if (matchBegin(matcher) && StringUtils.isNotEmpty(itemType.getType())) { Item item = new Item(); itemType.addNode(item); return new ParseResult(false, ParseResult.STEP_NEXT, item); } // ÌâÄ¿ÀàÐÍ for (String keyword : typeMap.keySet()) { if (str.contains(keyword)) { if(itemType.getType().equals(typeMap.get(keyword))){ return new ParseResult(true, ParseResult.STEP_CUR, null); }else{ return new ParseResult(false, ParseResult.STEP_PRE, null); } } } //20150907Ð޸ģº±¾À´·µ»Øtrue£¬Ã»ÓнâÎöµ½Ò»¸öÀàÐÍ£¬Å×µ½Éϲã return new ParseResult(false, ParseResult.STEP_PRE, null); } }