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.DateUtil;
\r
20 import com.td.utility.Debug;
\r
22 public class TrainTwitterAdapter extends TwitterAdapter {
\r
23 public static final long START_ID = Long.MAX_VALUE;
\r
24 public static final long ERROR_ID = START_ID - 1;
\r
26 private TrainDelayedServiceImpl context;
\r
27 private Calendar cal;
\r
29 public TrainTwitterAdapter(TrainDelayedServiceImpl context) {
\r
30 this.context = context;
\r
33 public void setCalender(Calendar cal) {
\r
38 public void searched(QueryResult result) {
\r
39 super.searched(result);
\r
42 long min = Long.MAX_VALUE;
\r
45 Date minDate = null;
\r
46 Date maxDate = null;
\r
47 Date curDate = cal.getTime();
\r
49 long cur = curDate.getTime();
\r
50 long from = cur - DateUtil.LEN * 60 * 1000;
\r
54 List<Tweet> tweets = result.getTweets();
\r
55 for (Tweet tweet : tweets) {
\r
56 String text = tweet.getText();
\r
57 Date at = tweet.getCreatedAt();
\r
58 long l = at.getTime();
\r
63 if (!filter(text)) {
\r
64 //
\92x
\89\84\88È
\8aO
\82Ì
\8f\91\82«
\8d\9e\82Ý
\r
65 // Debug.d(this, "NO MATCH:" + text);
\r
80 if (minDate != null && maxDate != null) {
\r
81 diff = DateUtil.LEN;
\r
84 String query = result.getQuery();
\r
86 List<Train> trains = context.getTrains();
\r
87 if (trains != null) {
\r
88 for (Train train : trains) {
\r
89 if (query.equals(train.getSearchText())) {
\r
90 routeId = train.getId();
\r
95 if (minDate != null && maxDate != null) {
\r
96 Debug.d(this, minDate.toString(), "-", maxDate.toString());
\r
98 Debug.d(this, "routeId=" + routeId);
\r
99 Debug.d(this, "diff=" + diff);
\r
100 Debug.d(this, "count=" + count);
\r
102 insert(routeId, diff, count, 0);
\r
104 } catch (Exception e) {
\r
105 Debug.d(this, null, e);
\r
109 private boolean filter(String text) {
\r
110 List<Keyword> keywords = context.getKeywords();
\r
111 if (keywords == null) {
\r
115 for (Keyword keyword : keywords) {
\r
116 if (text.indexOf(keyword.getText()) >= 0) {
\r
123 private void insert(long routeId, long diff, int count, int status) {
\r
124 insert(context, cal, routeId, diff, count, status);
\r
127 public static void insert(Context context, Calendar cal, long routeId, long diff, int count, int status) {
\r
128 Date date = cal.getTime();
\r
130 int ymd = DateUtil.getYmd(date);
\r
131 int hm = DateUtil.getHm(date);
\r
132 int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
\r
134 Debug.d(context, "insert " + ymd, "/" + hm, "/" + w);
\r
136 ContentValues values = new ContentValues();
\r
137 values.put(HistoryContentProvider.Fields.ROUTE_ID, routeId);
\r
138 values.put(HistoryContentProvider.Fields.YMD, ymd);
\r
139 values.put(HistoryContentProvider.Fields.HM, hm);
\r
140 values.put(HistoryContentProvider.Fields.WEEK, w);
\r
141 values.put(HistoryContentProvider.Fields.PERIOD, diff);
\r
142 values.put(HistoryContentProvider.Fields.NUM, count);
\r
143 values.put(HistoryContentProvider.Fields.STATUS, status);
\r
145 Uri uri = context.getContentResolver().insert(
\r
146 HistoryContentProvider.CONTENT_URI, values);
\r
147 Debug.d(context, uri.toString());
\r
151 public void onException(TwitterException e, TwitterMethod method) {
\r
152 Debug.d(this, null, e);
\r
153 if (Debug.isDebug()){
\r
154 insert(ERROR_ID, -1, -1, -1);
\r