OSDN Git Service

リファクタリング
[coroid/inqubus.git] / frontend / src / saccubus / net / Cookie.java
index 41dfbf5..ccfa485 100644 (file)
@@ -1,23 +1,46 @@
 package saccubus.net;
 
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 /**
  *
  * @author yuki
  */
 public abstract class Cookie {
 
+    private static final Pattern USER_SESSION_PATTERN = Pattern.compile("user_session_[\\d_]+");
+
     public enum BrowserType {
 
-        NONE, MSIE, IE6, Firefox3, Firefox, Chrome,
-        Opera, Chromium, Other
+        NONE, MSIE, IE6, FIREFOX, CHROME,
+        OPERA, CHROMIUM, OTHER
     }
 
     public static Cookie create(BrowserType type) {
-        if (type == BrowserType.Chrome) {
-            return new CookieWinCrome();
+        switch (type) {
+            case CHROME:
+                return new CookieWinCrome();
+            case FIREFOX:
+                return new CookieWinFirefox4();
+            default:
+                throw new UnsupportedOperationException();
         }
-        throw new UnsupportedOperationException();
     }
 
-    public abstract String getUserSessionString();
+    public abstract String getUserSessionString() throws IOException;
+
+    /**
+     * 文字列から user_session_ で始まる文字列を切り出して返す。数字とアンダーバー以外の文字で切れる。
+     * @param str 切り出す対象文字列
+     * @return user_session 文字列。見つからなければnull。
+     */
+    protected String cutUserSession(String str) {
+        final Matcher mather = USER_SESSION_PATTERN.matcher(str);
+        if (mather.lookingAt()) {
+            return mather.group(1);
+        }
+        return null;
+    }
 }