OSDN Git Service

人狼BBS外のサービス依存部を分離
authorOlyutorskii <olyutorskii@users.osdn.me>
Sat, 18 Jun 2016 06:11:07 +0000 (15:11 +0900)
committerOlyutorskii <olyutorskii@users.osdn.me>
Sat, 18 Jun 2016 06:11:07 +0000 (15:11 +0900)
src/main/java/jp/sfjp/jindolf/Controller.java
src/main/java/jp/sfjp/jindolf/dxchg/Hon5.java [new file with mode: 0644]
src/main/java/jp/sfjp/jindolf/dxchg/WolfBBS.java

index 2e7ed17..6693a62 100644 (file)
@@ -18,10 +18,8 @@ import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.io.File;
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
 import java.lang.reflect.InvocationTargetException;
 import java.net.URL;
-import java.net.URLEncoder;
 import java.text.MessageFormat;
 import java.util.List;
 import java.util.SortedSet;
@@ -60,7 +58,9 @@ import jp.sfjp.jindolf.data.RegexPattern;
 import jp.sfjp.jindolf.data.Talk;
 import jp.sfjp.jindolf.data.Village;
 import jp.sfjp.jindolf.dxchg.CsvExporter;
+import jp.sfjp.jindolf.dxchg.Hon5;
 import jp.sfjp.jindolf.dxchg.WebIPCDialog;
+import jp.sfjp.jindolf.dxchg.WolfBBS;
 import jp.sfjp.jindolf.editor.TalkPreview;
 import jp.sfjp.jindolf.glyph.AnchorHitEvent;
 import jp.sfjp.jindolf.glyph.AnchorHitListener;
@@ -106,6 +106,7 @@ public class Controller
     private static final String ERRFORM_LAF =
             "このLook&Feel[{0}]を生成する事ができません。";
 
+
     private final LandsModel model;
     private final WindowManager windowManager;
     private final ActionManager actionManager;
@@ -171,6 +172,7 @@ public class Controller
         topFrame.setDefaultCloseOperation(
                 WindowConstants.DISPOSE_ON_CLOSE);
         topFrame.addWindowListener(new WindowAdapter(){
+            /** {@inheritDoc} */
             @Override
             public void windowClosed(WindowEvent event){
                 shutdown();
@@ -238,6 +240,7 @@ public class Controller
      */
     public void submitBusyStatus(final boolean isBusy, final String message){
         Runnable task = new Runnable(){
+            /** {@inheritDoc} */
             @Override
             public void run(){
                 if(isBusy) setBusy(true);
@@ -309,6 +312,7 @@ public class Controller
         submitBusyStatus(true, beforeMsg);
 
         final Runnable busyManager = new Runnable(){
+            /** {@inheritDoc} */
             @Override
             @SuppressWarnings("CallToThreadYield")
             public void run(){
@@ -323,6 +327,7 @@ public class Controller
         };
 
         Runnable forkLauncher = new Runnable(){
+            /** {@inheritDoc} */
             @Override
             public void run(){
                 Executor executor = Executors.newCachedThreadPool();
@@ -421,15 +426,8 @@ public class Controller
         Village village = browser.getVillage();
         if(village == null) return;
 
-        String villageName = village.getVillageName();
-
-        StringBuilder url =
-                new StringBuilder()
-                .append("http://wolfbbs.jp/")
-                .append(villageName)
-                .append("%C2%BC.html");
-
-        WebIPCDialog.showDialog(getTopFrame(), url.toString());
+        String urlTxt = WolfBBS.getCastGeneratorUrl(village);
+        WebIPCDialog.showDialog(getTopFrame(), urlTxt);
 
         return;
     }
@@ -442,23 +440,8 @@ public class Controller
         Village village = browser.getVillage();
         if(village == null) return;
 
-        Land land = village.getParentLand();
-        ServerAccess server = land.getServerAccess();
-
-        URL villageUrl = server.getVillageURL(village);
-
-        StringBuilder url = new StringBuilder("http://hon5.com/jinro/");
-
-        try{
-            url .append("?u=")
-                .append(URLEncoder.encode(villageUrl.toString(), "UTF-8"));
-        }catch(UnsupportedEncodingException e){
-            return;
-        }
-
-        url.append("&s=1");
-
-        WebIPCDialog.showDialog(getTopFrame(), url.toString());
+        String urlTxt = Hon5.getCastGeneratorUrl(village);
+        WebIPCDialog.showDialog(getTopFrame(), urlTxt);
 
         return;
     }
diff --git a/src/main/java/jp/sfjp/jindolf/dxchg/Hon5.java b/src/main/java/jp/sfjp/jindolf/dxchg/Hon5.java
new file mode 100644 (file)
index 0000000..eb81ac6
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Hon5
+ *
+ * License : The MIT License
+ * Copyright(c) 2016 olyutorskii
+ */
+
+package jp.sfjp.jindolf.dxchg;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URL;
+import java.net.URLEncoder;
+import jp.sfjp.jindolf.data.Land;
+import jp.sfjp.jindolf.data.Village;
+import jp.sfjp.jindolf.net.ServerAccess;
+
+/**
+ * ホの字5 溝の口ランキング(Hon5)に関する諸々。
+ *
+ * @see <a href="http://hon5.com/jinro/">キャスト紹介表ジェネレータ</a>
+ * @see <a href="http://hon5.com/about.php">ホの字5製作委員会</a>
+ */
+public final class Hon5{
+
+    private static final String URL_HON5CAST = "http://hon5.com/jinro/";
+
+
+    /**
+     * 隠しコンストラクタ。
+     */
+    private Hon5(){
+        assert false;
+        throw new AssertionError();
+    }
+
+
+    /**
+     * キャスト紹介ジェネレータ出力のURLを得る。
+     * @param village 村
+     * @return ジェネレータ出力URL
+     */
+    public static String getCastGeneratorUrl(Village village){
+        Land land = village.getParentLand();
+        ServerAccess server = land.getServerAccess();
+        URL villageUrl = server.getVillageURL(village);
+
+        String result = getCastGeneratorUrl(villageUrl);
+
+        return result;
+    }
+
+    /**
+     * キャスト紹介ジェネレータ出力のURLを得る。
+     * @param villageUrl 人狼BBSの村アドレス。
+     * @return ジェネレータ出力URL
+     */
+    public static String getCastGeneratorUrl(URL villageUrl){
+        String vUrlTxt = villageUrl.toString();
+
+        String vcode;
+        try{
+            vcode = URLEncoder.encode(vUrlTxt, "UTF-8");
+        }catch(UnsupportedEncodingException e){
+            assert false;
+            return null;
+        }
+
+        StringBuilder url = new StringBuilder();
+        url.append(URL_HON5CAST);
+        url.append("?u=");
+        url.append(vcode);
+        url.append("&s=1");
+
+        String urlTxt = url.toString();
+        return urlTxt;
+    }
+
+}
index 2d8df34..23383cb 100644 (file)
@@ -27,6 +27,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import jp.sfjp.jindolf.ResourceManager;
 import jp.sfjp.jindolf.data.Avatar;
+import jp.sfjp.jindolf.data.Village;
 import jp.sourceforge.jindolf.corelib.Destiny;
 import jp.sourceforge.jindolf.corelib.GameRole;
 
@@ -520,4 +521,21 @@ public final class WolfBBS{
         return result;
     }
 
+    /**
+     * キャスト紹介ジェネレータ出力のURLを得る。
+     * @param village 村
+     * @return ジェネレータ出力URL
+     */
+    public static String getCastGeneratorUrl(Village village){
+        String villageName = village.getVillageName();
+
+        StringBuilder txt = new StringBuilder();
+        txt.append(WOLFBBS_URL);
+        txt.append(villageName);
+        txt.append("%C2%BC.html");
+
+        String result = txt.toString();
+        return result;
+    }
+
 }