1 package com.td.service;
\r
3 import java.util.Calendar;
\r
4 import java.util.Date;
\r
5 import java.util.List;
\r
7 import twitter4j.QueryResult;
\r
8 import twitter4j.Tweet;
\r
9 import twitter4j.TwitterAdapter;
\r
10 import twitter4j.TwitterException;
\r
11 import twitter4j.TwitterMethod;
\r
12 import android.content.ContentValues;
\r
13 import android.content.Context;
\r
14 import android.net.Uri;
\r
16 import com.td.HistoryContentProvider;
\r
17 import com.td.db.Keyword;
\r
18 import com.td.db.Train;
\r
19 import com.td.utility.ConfUtil;
\r
20 import com.td.utility.DateUtil;
\r
21 import com.td.utility.Debug;
\r
22 import com.td.utility.EditPrefUtil;
\r
24 public class TrainTwitterAdapter extends TwitterAdapter {
\r
25 public static final long START_ID = Long.MAX_VALUE;
\r
26 public static final long ERROR_ID = START_ID - 1;
\r
28 private TrainDelayedServiceImpl context;
\r
29 private EditPrefUtil pref;
\r
31 private Calendar cal;
\r
33 public TrainTwitterAdapter(TrainDelayedServiceImpl context) {
\r
34 this.context = context;
\r
35 pref = new EditPrefUtil(context);
\r
38 public void setCalender(Calendar cal) {
\r
43 public void searched(QueryResult result) {
\r
44 super.searched(result);
\r
47 int len = ConfUtil.getLen(pref);
\r
49 long min = Long.MAX_VALUE;
\r
52 Date minDate = null;
\r
53 Date maxDate = null;
\r
54 Date curDate = cal.getTime();
\r
56 long cur = curDate.getTime();
\r
57 long from = cur - len * 60 * 1000;
\r
61 List<Tweet> tweets = result.getTweets();
\r
62 for (Tweet tweet : tweets) {
\r
63 String text = tweet.getText();
\r
64 Date at = tweet.getCreatedAt();
\r
65 long l = at.getTime();
\r
70 if (!filter(text)) {
\r
71 //
\92x
\89\84\88È
\8aO
\82Ì
\8f\91\82«
\8d\9e\82Ý
\r
72 // Debug.d(this, "NO MATCH:" + text);
\r
87 if (minDate != null && maxDate != null) {
\r
91 String query = result.getQuery();
\r
93 List<Train> trains = context.getTrains();
\r
94 if (trains != null) {
\r
95 for (Train train : trains) {
\r
96 if (query.equals(train.getSearchText())) {
\r
97 routeId = train.getId();
\r
102 if (minDate != null && maxDate != null) {
\r
103 Debug.d(this, minDate.toString(), "-", maxDate.toString());
\r
105 Debug.d(this, "routeId=" + routeId);
\r
106 Debug.d(this, "diff=" + diff);
\r
107 Debug.d(this, "count=" + count);
\r
109 insert(routeId, diff, count, 0);
\r
111 } catch (Exception e) {
\r
112 Debug.d(this, null, e);
\r
116 private boolean filter(String text) {
\r
117 List<Keyword> keywords = context.getKeywords();
\r
118 if (keywords == null) {
\r
122 for (Keyword keyword : keywords) {
\r
123 if (text.indexOf(keyword.getText()) >= 0) {
\r
130 private void insert(long routeId, long diff, int count, int status) {
\r
131 insert(context, cal, routeId, diff, count, status);
\r
134 public static void insert(Context context, Calendar cal, long routeId, long diff, int count, int status) {
\r
135 Date date = cal.getTime();
\r
137 int ymd = DateUtil.getYmd(date);
\r
138 int hm = DateUtil.getHm(date);
\r
139 int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
\r
141 Debug.d(context, "insert " + ymd, "/" + hm, "/" + w);
\r
143 ContentValues values = new ContentValues();
\r
144 values.put(HistoryContentProvider.Fields.ROUTE_ID, routeId);
\r
145 values.put(HistoryContentProvider.Fields.YMD, ymd);
\r
146 values.put(HistoryContentProvider.Fields.HM, hm);
\r
147 values.put(HistoryContentProvider.Fields.WEEK, w);
\r
148 values.put(HistoryContentProvider.Fields.PERIOD, diff);
\r
149 values.put(HistoryContentProvider.Fields.NUM, count);
\r
150 values.put(HistoryContentProvider.Fields.STATUS, status);
\r
152 Uri uri = context.getContentResolver().insert(
\r
153 HistoryContentProvider.CONTENT_URI, values);
\r
154 Debug.d(context, uri.toString());
\r
158 public void onException(TwitterException e, TwitterMethod method) {
\r
159 Debug.d(this, null, e);
\r
160 if (Debug.isDebug()){
\r
161 insert(ERROR_ID, -1, -1, -1);
\r