OSDN Git Service

t25722
[train-delayed/source.git] / workspace / TrainDelayed / src / com / td / TrainTwitterAdapter.java
1 package com.td;\r
2 \r
3 import java.util.Calendar;\r
4 import java.util.Date;\r
5 import java.util.List;\r
6 \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.net.Uri;\r
14 \r
15 import com.td.db.Keyword;\r
16 import com.td.service.TrainDelayedServiceImpl;\r
17 import com.td.utility.DateUtil;\r
18 import com.td.utility.Debug;\r
19 \r
20 public class TrainTwitterAdapter extends TwitterAdapter {\r
21         private TrainDelayedServiceImpl context;\r
22         private Calendar cal;\r
23         \r
24         public TrainTwitterAdapter(TrainDelayedServiceImpl context) {\r
25                 this.context = context;\r
26         }\r
27 \r
28         public void setCalender(Calendar cal) {\r
29                 this.cal = cal;\r
30         }\r
31 \r
32         @Override\r
33         public void searched(QueryResult result) {\r
34                 super.searched(result);\r
35                 \r
36                 try {\r
37                         long min = Long.MAX_VALUE;\r
38                         long max = 0;\r
39                         \r
40                         Date minDate = null;\r
41                         Date maxDate = null;\r
42                         Date curDate = cal.getTime();\r
43                         \r
44                         long cur = curDate.getTime();\r
45                         long from = cur - DateUtil.LEN * 60 * 1000;\r
46                         int count = 0;\r
47                         long diff = 0;\r
48                         \r
49                         List<Tweet> tweets = result.getTweets();\r
50                         for (Tweet tweet : tweets){\r
51                                 String text = tweet.getText();\r
52                                 Date at = tweet.getCreatedAt();\r
53                                 long l = at.getTime();\r
54                                 \r
55                                 if (l < from){\r
56                                         continue;\r
57                                 }\r
58                                 if (!filter(text)){\r
59                                         //Debug.d(this, "NO MATCH:" + text);\r
60                                         continue;\r
61                                 }\r
62                                 if (l < min){\r
63                                         min = l;\r
64                                         minDate = at;\r
65                                 }\r
66                                 if (l > max){\r
67                                         max = l;\r
68                                         maxDate = at;\r
69                                 }\r
70                                 \r
71                                 //Debug.d(this, at.toString() + " " + text);\r
72                                 count++;\r
73                         }\r
74                         // TODO\r
75                         if (true/*count > 0*/){\r
76                                 diff = 0;\r
77                                 if (minDate != null && maxDate != null){\r
78                                         diff = DateUtil.LEN;\r
79                                 }\r
80                                 // TODO\r
81                                 //\r
82                                 // compareTo("\8b\9e\95l\93\8c\96k")\82Ì\92l\82ðDB\82©\82ç\8eæ\93¾\r
83                                 // Scheduler\82É\83L\83\83\83b\83V\83\85\82·\82é\82±\82Æ\r
84                                 //\r
85                                 String query = result.getQuery();\r
86                                 int routeId = 0;\r
87                                 if (query.compareTo("\8b\9e\95l\93\8c\96k") == 0){\r
88                                         routeId = 1;\r
89                                 }\r
90                                 else if (query.compareTo("\93\8c\8aC\93¹") == 0){\r
91                                         routeId = 2;\r
92                                 }\r
93                                 else if (query.compareTo("\8b\9e\8b}") == 0){\r
94                                         routeId = 3;\r
95                                 }\r
96                                 \r
97                                 if (minDate != null && maxDate != null){\r
98                                         Debug.d(this, minDate.toString());\r
99                                         Debug.d(this, maxDate.toString());\r
100                                 }\r
101                                 Debug.d(this, "routeId=" + routeId);\r
102                                 Debug.d(this, "diff=" + diff);\r
103                                 Debug.d(this, "count=" + count);\r
104                                 \r
105                                 // TODO\r
106                                 // status=0\r
107                                 // \8eæ\93¾\8e¸\94s\8e\9e\82Éinsert\82·\82é\82©\r
108                                 insert(routeId, diff, count, 0);\r
109                         }\r
110                 }\r
111                 catch (Exception e){\r
112                         Debug.d(this, null, e);\r
113                 }\r
114         }\r
115 \r
116         private boolean filter(String text) {\r
117                 List<Keyword> keywords = context.getKeywords();\r
118                 if (keywords == null){\r
119                         return false;\r
120                 }\r
121                 \r
122                 for (Keyword keyword : keywords) {\r
123                         if (text.indexOf(keyword.getText()) >= 0) {\r
124                                 return true;\r
125                         }\r
126                 }\r
127                 return false;\r
128         }\r
129 \r
130         private void insert(int routeId, long diff, int count, int status) {\r
131                 Date date = cal.getTime();\r
132 \r
133                 int ymd = DateUtil.getYmd(date);\r
134                 int hm = DateUtil.getHm(date);\r
135                 int w = cal.get(Calendar.DAY_OF_WEEK) - 1;\r
136 \r
137                 Debug.d(this, "" + ymd + " " + hm + " " + w);\r
138 \r
139                 ContentValues values = new ContentValues();\r
140                 values.put(HistoryContentProvider.Fields.ROUTE_ID, routeId);\r
141                 values.put(HistoryContentProvider.Fields.YMD, ymd);\r
142                 values.put(HistoryContentProvider.Fields.HM, hm);\r
143                 values.put(HistoryContentProvider.Fields.WEEK, w);\r
144                 values.put(HistoryContentProvider.Fields.PERIOD, diff);\r
145                 values.put(HistoryContentProvider.Fields.NUM, count);\r
146                 values.put(HistoryContentProvider.Fields.STATUS, status);\r
147 \r
148                 Uri uri = context.getContentResolver().insert(\r
149                                 HistoryContentProvider.CONTENT_URI, values);\r
150                 Debug.d(this, uri.toString());\r
151         }\r
152 \r
153         @Override\r
154         public void onException(TwitterException e, TwitterMethod method) {\r
155                 Debug.d(this, null, e);\r
156         }\r
157 }\r