From: Yuji Konishi Date: Sun, 31 Jul 2011 12:21:13 +0000 (+0900) Subject: StatusFlagクラス作成 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=refs%2Fheads%2Fwait;p=train-delayed%2Fsource.git StatusFlagクラス作成 --- diff --git a/workspace/TrainDelayed/res/layout/train_edit.xml b/workspace/TrainDelayed/res/layout/train_edit.xml index 14d7629..285592e 100644 --- a/workspace/TrainDelayed/res/layout/train_edit.xml +++ b/workspace/TrainDelayed/res/layout/train_edit.xml @@ -19,7 +19,7 @@ - + diff --git a/workspace/TrainDelayed/src/com/td/TrainDelayedActivity.java b/workspace/TrainDelayed/src/com/td/TrainDelayedActivity.java index 0d7632d..0e167ad 100644 --- a/workspace/TrainDelayed/src/com/td/TrainDelayedActivity.java +++ b/workspace/TrainDelayed/src/com/td/TrainDelayedActivity.java @@ -28,6 +28,7 @@ import com.td.service.TrainDelayedServiceImpl; import com.td.utility.BaseActivity; import com.td.utility.Debug; import com.td.utility.EditPrefUtil; +import com.td.utility.StatusFlagTest; import com.td.wait.InitializeWating; import com.td.wait.TrainServiceWaiting; @@ -402,7 +403,7 @@ public class TrainDelayedActivity extends BaseActivity { } private void debug(){ - int n = 1; + int n = 4; switch (n){ case 1: @@ -422,6 +423,10 @@ public class TrainDelayedActivity extends BaseActivity { intent.putExtra("TEXT", "ƒTƒ“ƒvƒ‹ƒƒbƒZ[ƒW"); sendBroadcast(intent); break; + case 4: + // StatusFlag‚̃eƒXƒg + StatusFlagTest.main(this); + break; default: break; } diff --git a/workspace/TrainDelayed/src/com/td/TrainEditActivity.java b/workspace/TrainDelayed/src/com/td/TrainEditActivity.java index f9cb421..6938bf5 100644 --- a/workspace/TrainDelayed/src/com/td/TrainEditActivity.java +++ b/workspace/TrainDelayed/src/com/td/TrainEditActivity.java @@ -178,7 +178,11 @@ public class TrainEditActivity extends BaseActivity { String sname = train.getSearchText(); if (checkBox1.isChecked()) { int len = sname.length(); - sname = sname.substring(0, len - 1); + int slen = LINE.length(); + if (len >= slen + && sname.substring(len - slen, len).equals(LINE)) { + sname = sname.substring(0, len - slen); + } } else { sname += LINE; } @@ -198,7 +202,10 @@ public class TrainEditActivity extends BaseActivity { String sname = train.getSearchText(); if (checkBox2.isChecked()) { int len = sname.length(); - sname = sname.substring(2, len); + int slen = JR.length(); + if (len >= slen && sname.substring(0, slen).equals(JR)) { + sname = sname.substring(slen, len); + } } else { sname = JR + sname; } diff --git a/workspace/TrainDelayed/src/com/td/utility/DateUtil.java b/workspace/TrainDelayed/src/com/td/utility/DateUtil.java index 78de648..4f3f89a 100644 --- a/workspace/TrainDelayed/src/com/td/utility/DateUtil.java +++ b/workspace/TrainDelayed/src/com/td/utility/DateUtil.java @@ -96,7 +96,6 @@ public class DateUtil { public static Calendar getCalendar(int y, int m, int d, int h, int mi){ Calendar cal = Calendar.getInstance(); - //cal.set(y - 1900, m - 1, d, h, mi); cal.set(y, m - 1, d, h, mi); return cal; } @@ -138,4 +137,24 @@ public class DateUtil { public static String getMinute(String t){ return t.substring(3, 5); } + + public static int getY(int ymd){ + return ymd / 10000; + } + + public static int getM(int ymd){ + return (ymd % 10000) / 100; + } + + public static int getD(int ymd){ + return ymd % 100; + } + + public static int getH(int hm){ + return hm / 100; + } + + public static int getMi(int hm){ + return hm % 100; + } } diff --git a/workspace/TrainDelayed/src/com/td/utility/StatusFlag.java b/workspace/TrainDelayed/src/com/td/utility/StatusFlag.java new file mode 100644 index 0000000..3307095 --- /dev/null +++ b/workspace/TrainDelayed/src/com/td/utility/StatusFlag.java @@ -0,0 +1,88 @@ +package com.td.utility; + +import java.util.Calendar; +import java.util.Date; + +import android.content.Context; + +public class StatusFlag { + public static final int ON = 1; + public static final int OFF = 0; + public static final int TERM_NONE = -1; + + private static final String PREF_STF_FLAG = "STF_FLAG"; + private static final String DELM = ","; + + private Context context; + private long term; // •ª + private EditPrefUtil pref; + + public StatusFlag(Context context, long term){ + this.context = context; + this.term = term; + pref = new EditPrefUtil(context); + } + + public void set(int flag){ + Calendar cal = Calendar.getInstance(); + Date d = cal.getTime(); + int ymd = DateUtil.getYmd(d); + int hm = DateUtil.getHm(d); + + StringBuffer sb = new StringBuffer(); + sb.append(ymd); + sb.append(DELM); + sb.append(hm); + sb.append(DELM); + sb.append(flag); + + pref.put(PREF_STF_FLAG, sb.toString()); + } + + public int get(){ + return get(term); + } + + public int get(long term){ + String s = pref.get(PREF_STF_FLAG); + if (s == null){ + return OFF; + } + + String[] t = s.split(DELM); + int ymd = Integer.valueOf(t[0]); + int hm = Integer.valueOf(t[1]); + int flag = Integer.valueOf(t[2]); + + if (flag == OFF || term < 0){ + return flag; + } + + int y = DateUtil.getY(ymd); + int m = DateUtil.getM(ymd); + int d = DateUtil.getD(ymd); + + int h = DateUtil.getH(hm); + int mi = DateUtil.getMi(hm); + + Calendar sCal = DateUtil.getCalendar(y, m, d, h, mi); + Calendar nCal = Calendar.getInstance(); + + long mt = sCal.getTimeInMillis() + term * 60 * 1000; // •Û‘¶ŠúŠÔÅ‘å + long nt = nCal.getTimeInMillis(); // Œ»Ý + + if (nt > mt){ + Debug.t(context, "•Û‘¶Å‘åŠúŠÔ’´‰ß@" + ymd + "/" + hm); + return OFF; + } + return flag; + } + + public boolean isOn(){ + return get() == ON; + } + + public boolean isOff(){ + return !isOn(); + } +} diff --git a/workspace/TrainDelayed/src/com/td/utility/StatusFlagTest.java b/workspace/TrainDelayed/src/com/td/utility/StatusFlagTest.java new file mode 100644 index 0000000..3ee6f50 --- /dev/null +++ b/workspace/TrainDelayed/src/com/td/utility/StatusFlagTest.java @@ -0,0 +1,49 @@ +package com.td.utility; + +import android.content.Context; + +public class StatusFlagTest { + public static void main(Context context) { + int i; + try { + for (i = 0; i < 3; i++) { + long term = -1; + long slp = 0; + int flag = StatusFlag.OFF; + int eFlag = -1; + int ret; + + StatusFlag sf; + switch (i) { + case 0: + term = -1; + slp = 1; + flag = StatusFlag.ON; + eFlag = StatusFlag.ON; + break; + case 1: + term = 2; + slp = 1; + flag = StatusFlag.ON; + eFlag = StatusFlag.ON; + break; + case 2: + term = 1; + slp = 2; + flag = StatusFlag.ON; + eFlag = StatusFlag.OFF; + break; + } + sf = new StatusFlag(context, term); + sf.set(flag); + Thread.sleep(slp * 60 * 1000); + ret = sf.get(); + if (eFlag != ret){ + throw new TdException("" + i); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/workspace/TrainDelayed/src/com/td/utility/TdException.java b/workspace/TrainDelayed/src/com/td/utility/TdException.java index 33a726b..4780f14 100644 --- a/workspace/TrainDelayed/src/com/td/utility/TdException.java +++ b/workspace/TrainDelayed/src/com/td/utility/TdException.java @@ -10,4 +10,8 @@ public class TdException extends Exception { public TdException(Throwable throwable) { super(throwable); } + + public TdException(String string) { + super(string); + } }