package edu.fudan.weixin.model.processor;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.mongodb.BasicDBList;
import com.mongodb.DBObject;
import edu.fudan.eservice.common.utils.CommonUtil;
import edu.fudan.weixin.model.message.JSONMessageBuilder;
import edu.fudan.weixin.model.message.NewsJSONMessageBuilder;
import edu.fudan.weixin.utils.TACOAuth2Helper;
public class SchoolBusMessageProcessor extends LongTermProcessor {
private static final Pattern p = Pattern
.compile(
"^(校车|bus|schoolbus|xc)(查询|cx|信息|xx)?(邯郸|张江|枫林|江湾|h|z|f|j)(邯郸|张江|枫林|江湾|h|z|f|j)$",
Pattern.CASE_INSENSITIVE);
public Map<String,Object> process(Map<String,Object> message) {
String content = null, msgtype = String.valueOf(message.get("MsgType"));
content = String.valueOf(message.get("Content")).trim();
if (!CommonUtil.isEmpty(content)
&& p.matcher(content).matches()
|| "event".equalsIgnoreCase(msgtype)
&& "CLICK"
.equalsIgnoreCase(String.valueOf(message.get("Event")))
&& "schoolbus".equalsIgnoreCase(String.valueOf(message
.get("EventKey"))))
return super.process(message);
else
return null;
}
@Override
public JSONMessageBuilder _process(Map<String, Object> message) {
// TODO Auto-generated method stub
String from = "",to="",startplace="",remark="",fromplace="",toplace="";
String content = String.valueOf(message.get("Content")).trim();
Matcher m = p.matcher(content);
if (m.matches()) {
from = m.group(3);
to = m.group(4);
}
Object ret = TACOAuth2Helper.schoolbus(from, to).get("list");
NewsJSONMessageBuilder mb = new NewsJSONMessageBuilder();
StringBuffer info = new StringBuffer();
if (ret instanceof BasicDBList) {
BasicDBList list = (BasicDBList) ret;
if (list != null && list.size()>0) {
for (Object obj : list) {
DBObject r = (DBObject)obj;
if (r!=null && r.get("remark").equals("工作日")) {
if (startplace.equals(""))
startplace = r.get("startplace").toString();
if (fromplace.equals("")) {
fromplace = r.get("from").toString();
toplace = r.get("to").toString();
info.append(fromplace+"校区发往"+toplace+"校区的校车时刻表如下:");
}
if (remark.equals(""))
remark = r.get("remark").toString();
info.append("\n"+r.get("from")+" --> "+r.get("to")+" "+r.get("time"));
}
}
}
else {
info.append("\n你所查的校区之间没有班车往来。");
}
}
if (!fromplace.equals("")&&!toplace.equals(""))
info.append("\n"+fromplace+"校区上车地点为:\n"+startplace);
if (!remark.equals(""))
info.append("\n本校车时刻表仅适用于"+remark+".");
mb.addArticle("校车信息", info.toString(), "", "");
mb.setContent(null);
return mb;
}
}