OSDN Git Service

新コンフィグフォーマット対応.
authoryuki <yuki@bdf3b611-c98c-6041-8292-703d9c9adbe7>
Sat, 23 May 2009 20:39:47 +0000 (20:39 +0000)
committeryuki <yuki@bdf3b611-c98c-6041-8292-703d9c9adbe7>
Sat, 23 May 2009 20:39:47 +0000 (20:39 +0000)
git-svn-id: http://192.168.11.7/svn/repository/NicoBrowserBranches/release_20090323/NicoBrowser@121 bdf3b611-c98c-6041-8292-703d9c9adbe7

src/nicobrowser/Config.java
src/resources/feedurl.txt
test/nicobrowser/ConfigTest.java
test/testdata/feedurl.txt [new file with mode: 0644]

index ad99598..22a7a5f 100644 (file)
@@ -37,6 +37,11 @@ public final class Config {
         public String getUrl() {
             return url;
         }
+
+        @Override
+        public String toString() {
+            return getUrl() + ", " + getNumber();
+        }
     }
     private static Log log = LogFactory.getLog(Config.class);
     private static Config instance;
@@ -217,6 +222,23 @@ public final class Config {
     }
 
     public List<NicoFeed> getNicoFeeds() {
-        throw new UnsupportedOperationException("Not yet implemented");
+        List<NicoFeed> list = new ArrayList<NicoFeed>();
+        try {
+            List lines = FileUtils.readLines(FEEDURL_FILE, getEncoding());
+            for (Object line : lines) {
+                final String str = line.toString();
+                if (str.isEmpty() || str.startsWith("#")) {
+                    // 空行, コメント行はスキップ.
+                    continue;
+                }
+
+                String[] values = str.split(",");
+                NicoFeed feed = new NicoFeed(values[0].trim(), Integer.parseInt(values[1].trim()));
+                list.add(feed);
+            }
+        } catch (IOException ex) {
+            log.error("ファイルが見つかりません: " + FEEDURL_FILE);
+        }
+        return list;
     }
 }
index 57e3d29..70c38b9 100644 (file)
@@ -18,7 +18,7 @@ http://www.nicovideo.jp/ranking/mylist/daily/all?rss=atom, 20
 # http://www.nicovideo.jp/tag/科学?sort=f&rss=2.0, 3\r
 \r
 # 新着コメント動画\r
-# http://www.nicovideo.jp/recent?rss=2.0\r
+# http://www.nicovideo.jp/recent?rss=2.0,10\r
 \r
 # 自然のマイリストランキング(月間)\r
 # http://www.nicovideo.jp/ranking/mylist/monthly/nature?rss=2.0,10\r
index b2b90a9..a855117 100644 (file)
@@ -5,6 +5,7 @@ import java.io.File;
 import java.io.IOException;
 import java.lang.reflect.Field;
 import java.util.List;
+import nicobrowser.Config.NicoFeed;
 import org.apache.commons.io.FileUtils;
 import org.junit.After;
 import org.junit.BeforeClass;
@@ -17,11 +18,11 @@ public class ConfigTest {
     private static File CONFIG_FILE;
     private static File FEEDURL_FILE;
     private final File TEST_PROPERTY_FILE;
-//    private final File TEST_FEED_FILE;
+    private final File TEST_FEED_FILE;
 
     public ConfigTest() {
         TEST_PROPERTY_FILE = new File("test/testdata/nicobrowser.properties");
-//        TEST_FEED_FILE = new File("test/testdata/feedurl.txt");
+        TEST_FEED_FILE = new File("test/testdata/feedurl.txt");
     }
 
     @BeforeClass
@@ -128,6 +129,7 @@ public class ConfigTest {
         try {
             Config.createNewConfigFiles();
             FileUtils.copyFile(TEST_PROPERTY_FILE, CONFIG_FILE);
+            FileUtils.copyFile(TEST_FEED_FILE, FEEDURL_FILE);
         } catch (Exception ex) {
             throw new RuntimeException(ex);
         }
@@ -223,5 +225,14 @@ public class ConfigTest {
         initConfig();
 
         List<Config.NicoFeed> feeds = Config.getInstance().getNicoFeeds();
+        assertEquals(5, feeds.size());
+
+        NicoFeed feed = feeds.get(2);
+        assertEquals("http://www.nicovideo.jp/tag/科学?sort=f&rss=2.0", feed.getUrl());
+        assertEquals(3, feed.getNumber());
+        
+        for (Config.NicoFeed nf : feeds) {
+            System.out.println(nf);
+        }
     }
 }
diff --git a/test/testdata/feedurl.txt b/test/testdata/feedurl.txt
new file mode 100644 (file)
index 0000000..2c65d1f
--- /dev/null
@@ -0,0 +1,24 @@
+http://www.nicovideo.jp/ranking/mylist/daily/all?rss=atom, 20\r
+\r
+\r
+# URL, 抽出数\r
+# というフォーマットで記載する.\r
+# カンマの後のスペースはあっても無くても可.\r
+# 抽出数は100以内.\r
+# 行頭が#の行はコメント扱い.\r
+\r
+\r
+### 記述例 ###\r
+### フィードのURLについては http://nicowiki.com/?RSSフィード一覧 などを参照のこと.\r
+\r
+# 新着投稿動画\r
+http://www.nicovideo.jp/newarrival?rss=2.0, 1\r
+\r
+# 新着動画(カテゴリ:科学)\r
+http://www.nicovideo.jp/tag/科学?sort=f&rss=2.0, 3\r
+\r
+# 新着コメント動画\r
+http://www.nicovideo.jp/recent?rss=2.0, 5\r
+\r
+# 自然のマイリストランキング(月間)\r
+http://www.nicovideo.jp/ranking/mylist/monthly/nature?rss=2.0,10\r