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<String,String> typeMap = new HashMap<String,String>();
|
|
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);
|
|
}
|
|
}
|