OSDN Git Service

WayBackTimeParserリファクタリングのためのコメント、テストケース追加
[coroid/inqubus.git] / frontend / src / saccubus / util / WayBackTimeParser.java
1 package saccubus.util;
2
3 import java.io.IOException;
4 import java.text.DateFormat;
5 import java.text.ParseException;
6 import java.text.SimpleDateFormat;
7 import java.util.Date;
8
9 /**
10  * 過去ログ取得時に指定する文字列(日付)をパースするユーティリティクラスです.
11  * @author yuki
12  */
13 public final class WayBackTimeParser {
14
15     private WayBackTimeParser() {
16     }
17
18     /**
19      * 過去の時点を指定する文字列から、コメント取得フォーマットの"when"に指定する文字列へ変換します.
20      * この文字列は、1970 年 1 月 1 日 00:00:00 GMT からの秒数(一般的なミリ秒ではない)になります.
21      * @param time 時点指定文字列。"YYYY/MM/DD hh:mm:ss", "YYYY/MM/DD hh:mm", 秒数を表す数値,
22      * のいずれかであればパース可能です.
23      * @return パース結果.
24      * @throws IOException パース失敗.
25      */
26     public static String parse(String time) throws IOException {
27         Date date = null;
28         String waybacktime;
29         try {
30             final DateFormat fmt = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
31             date = fmt.parse(time);
32         } catch (ParseException ex2) {
33             date = null;
34         }
35         if (date == null) {
36             try {
37                 final DateFormat fmt = new SimpleDateFormat("yyyy/MM/dd HH:mm");
38                 date = fmt.parse(time);
39             } catch (ParseException ex3) {
40                 date = null;
41             }
42         }
43         if (date != null) {
44             waybacktime = Long.toString(date.getTime() / 1000);
45             System.out.println("ok.(" + date.toString() + "):" + waybacktime);
46         } else {
47             try {
48                 long tmp_time = Long.parseLong(time);
49                 waybacktime = Long.toString(tmp_time);
50                 date = new Date(tmp_time * 1000);
51                 System.out.println("ok.(" + date.toString() + "):"
52                         + waybacktime);
53             } catch (NumberFormatException ex4) {
54                 System.out.println("ng.");
55                 System.out.println("Cannot parse wayback time.");
56                 throw new IOException("Cannot parse wayback time.", ex4);
57             }
58         }
59         return waybacktime;
60     }
61 }