OSDN Git Service

遅延通知ロジック作成(未テスト)
[train-delayed/source.git] / workspace / TrainDelayed / src / com / td / service / TrainTwitterAdapter.java
index 261c782..c293b0e 100644 (file)
@@ -19,12 +19,13 @@ import com.td.db.Train;
 import com.td.utility.ConfUtil;\r
 import com.td.utility.DateUtil;\r
 import com.td.utility.Debug;\r
+import com.td.utility.Delay;\r
 import com.td.utility.EditPrefUtil;\r
 \r
 public class TrainTwitterAdapter extends TwitterAdapter {\r
        public static final long START_ID = Long.MAX_VALUE;\r
        public static final long ERROR_ID = START_ID - 1;\r
-       \r
+\r
        private TrainDelayedServiceImpl context;\r
        private EditPrefUtil pref;\r
 \r
@@ -45,7 +46,7 @@ public class TrainTwitterAdapter extends TwitterAdapter {
 \r
                try {\r
                        int len = ConfUtil.getLen(pref);\r
-                       \r
+\r
                        long min = Long.MAX_VALUE;\r
                        long max = 0;\r
 \r
@@ -92,12 +93,17 @@ public class TrainTwitterAdapter extends TwitterAdapter {
                        long routeId = -1;\r
                        List<Train> trains = context.getTrains();\r
                        if (trains != null) {\r
-                               for (Train train : trains) {\r
-                                       if (query.equals(train.getSearchText())) {\r
-                                               routeId = train.getId();\r
+                               Train train = null;\r
+                               for (Train t : trains) {\r
+                                       if (query.equals(t.getSearchText())) {\r
+                                               train = t;\r
+                                               routeId = t.getId();\r
                                                break;\r
                                        }\r
                                }\r
+                               if (train == null) {\r
+                                       return;\r
+                               }\r
 \r
                                if (minDate != null && maxDate != null) {\r
                                        Debug.d(this, minDate.toString(), "-", maxDate.toString());\r
@@ -106,6 +112,8 @@ public class TrainTwitterAdapter extends TwitterAdapter {
                                Debug.d(this, "diff=" + diff);\r
                                Debug.d(this, "count=" + count);\r
 \r
+                               checkDelay(train, cal, count, len);\r
+\r
                                insert(routeId, diff, count, 0);\r
                        }\r
                } catch (Exception e) {\r
@@ -113,6 +121,61 @@ public class TrainTwitterAdapter extends TwitterAdapter {
                }\r
        }\r
 \r
+       private void checkDelay(Train train, Calendar curCal, int count, int len) {\r
+               int cntpmi = count / len;\r
+               int h = ConfUtil.getHeight(pref);\r
+               boolean isDelay = true;\r
+\r
+               if (cntpmi < h) {\r
+                       return;\r
+               }\r
+               \r
+               String data = ConfUtil.getDelay(pref);\r
+               Delay[] delays = Delay.getInstances(data);\r
+               Delay newDelay = null;\r
+\r
+               Delay delay = Delay.search(delays, train.getId());\r
+               if (delay != null) {\r
+                       Calendar dCal = DateUtil.getCalendar(delay.getYmd(), delay.getHm());\r
+                       long t = dCal.getTimeInMillis();\r
+                       int w = ConfUtil.getWidth(pref);\r
+                       long cur = curCal.getTimeInMillis();\r
+                       if (cur - t < w * 60 * 1000) {\r
+                               // \8dÅ\8cã\82Ì\92x\89\84\82©\82ç\8e\9e\8aÔ\82ª\8co\82Á\82Ä\82¢\82È\82¢(\92x\89\84\82Ì\8e\9e\8aÔ\82Í\8dX\90V\82·\82é)\r
+                               Debug.t(context, train.getName() + " \8dÅ\8cã\82Ì\92x\89\84\82©\82ç\8e\9e\8aÔ\82ª\8co\82Á\82Ä\82¢\82È\82¢");\r
+                       \r
+                               isDelay = false;\r
+                       } else {\r
+                               // \91O\89ñ\82Ì\92x\89\84\82©\82ç\81A\8dÄ\93x\92x\89\84\82ª\94­\90\r
+                               Debug.t(context, train.getName() + " \91O\89ñ\82Ì\92x\89\84\82©\82ç\81A\8dÄ\93x\92x\89\84\82ª\94­\90¶");\r
+                       }\r
+                       Date d = dCal.getTime();\r
+                       delay.setYmd(DateUtil.getYmd(d));\r
+                       delay.setHm(DateUtil.getHm(d));\r
+               } else {\r
+                       // \90V\8bK\93o\98^(\92x\89\84\94­\90¶)\r
+                       Date d = curCal.getTime();\r
+                       int ymd = DateUtil.getYmd(d);\r
+                       int hm = DateUtil.getHm(d);\r
+                       newDelay = new Delay(train.getId(), ymd, hm, 0, true);\r
+\r
+                       Debug.t(context, train.getName() + " \90V\8bK\93o\98^(\92x\89\84\94­\90¶)");\r
+               }\r
+               //\r
+               StringBuffer sb = Delay.getData(delays);\r
+               if (newDelay != null) {\r
+                       Delay.setData(sb, newDelay);\r
+               }\r
+\r
+               if (isDelay) {\r
+                       // \81@\92x\89\84\82ð\92Ê\92m\r
+                       if (context != null) {\r
+                               context.notificate(train.getName());\r
+                       }\r
+               }\r
+\r
+       }\r
+\r
        private boolean filter(String text) {\r
                List<Keyword> keywords = context.getKeywords();\r
                if (keywords == null) {\r
@@ -130,8 +193,9 @@ public class TrainTwitterAdapter extends TwitterAdapter {
        private void insert(long routeId, long diff, int count, int status) {\r
                insert(context, cal, routeId, diff, count, status);\r
        }\r
-       \r
-       public static void insert(Context context, Calendar cal, long routeId, long diff, int count, int status) {\r
+\r
+       public static void insert(Context context, Calendar cal, long routeId,\r
+                       long diff, int count, int status) {\r
                Date date = cal.getTime();\r
 \r
                int ymd = DateUtil.getYmd(date);\r
@@ -157,7 +221,7 @@ public class TrainTwitterAdapter extends TwitterAdapter {
        @Override\r
        public void onException(TwitterException e, TwitterMethod method) {\r
                Debug.d(this, null, e);\r
-               if (Debug.isDebug()){\r
+               if (Debug.isDebug()) {\r
                        insert(ERROR_ID, -1, -1, -1);\r
                }\r
        }\r