OSDN Git Service

マイリスト設定におけるスキップ判定を変更
authoryukihane <yukihane.feather@gmail.com>
Fri, 5 Aug 2011 11:57:05 +0000 (20:57 +0900)
committeryukihane <yukihane.feather@gmail.com>
Fri, 5 Aug 2011 11:57:05 +0000 (20:57 +0900)
src/nicobrowser/config/Config.java

index 5296b85..0516334 100644 (file)
@@ -25,7 +25,6 @@ public final class Config {
 
     private static Log log = LogFactory.getLog(Config.class);
     private static Config instance;
-
     private final PropertiesConfiguration properties;
     private static final String APPLICATION_NAME = "nicobrowser";
     private static final String CONFIG_NAME = APPLICATION_NAME + ".properties";
@@ -67,7 +66,7 @@ public final class Config {
             InputStream resource = null;
             try {
                 resource = ClassLoader.getSystemResourceAsStream("resources/" + FEEDURL_NAME);
-                createNewFeedFile(resource, FEEDURL_FILE);
+                createNewFileFromResource(resource, FEEDURL_FILE);
                 result = true;
                 log.info("FEED URLファイルを作成しました: " + FEEDURL_FILE.getCanonicalPath());
             } finally {
@@ -76,9 +75,17 @@ public final class Config {
                 }
             }
         }
-        if(!MYLIST_CONFIG_FILE.exists()){
-            createNewMylistConfigFile(MYLIST_CONFIG_FILE);
-            log.info("MYLISTファイルを作成しました: " + MYLIST_CONFIG_FILE.getCanonicalPath());
+        if (!MYLIST_CONFIG_FILE.exists()) {
+            InputStream resource = null;
+            try {
+                resource = ClassLoader.getSystemResourceAsStream("resources/" + MYLIST_CONFIG_NAME);
+                createNewFileFromResource(resource, MYLIST_CONFIG_FILE);
+                log.info("MYLISTファイルを作成しました: " + MYLIST_CONFIG_FILE.getCanonicalPath());
+            } finally {
+                if (resource != null) {
+                    resource.close();
+                }
+            }
         }
         return result;
     }
@@ -158,7 +165,14 @@ public final class Config {
         FileUtils.writeLines(file, props);
     }
 
-    private static void createNewFeedFile(InputStream resource, File dest) throws IOException {
+    /**
+     * リソースから新しいファイルを作成します. リソースファイルはUTF-8で記述する必要があります.
+     * 出力されるファイルはOSのネイティブエンコーディングになります.
+     * @param resource 入力リソース.
+     * @param dest 出力ファイル.
+     * @throws IOException 出力できなかった場合.
+     */
+    private static void createNewFileFromResource(InputStream resource, File dest) throws IOException {
         List<String> list = new ArrayList<String>();
         BufferedReader br = new BufferedReader(new InputStreamReader(resource, "UTF-8"));
         while (true) {
@@ -171,9 +185,6 @@ public final class Config {
         FileUtils.writeLines(dest, list);
     }
 
-    private static void createNewMylistConfigFile(File file) throws IOException{
-        FileUtils.writeStringToFile(file, "");
-    }
     private Config() {
         try {
             properties = new PropertiesConfiguration(CONFIG_FILE);
@@ -269,9 +280,9 @@ public final class Config {
         try {
             final List<?> lines = FileUtils.readLines(MYLIST_CONFIG_FILE);
             final Pattern p = Pattern.compile("(^\\d+)");
-            for(Object l : lines){
+            for (Object l : lines) {
                 Matcher m = p.matcher(l.toString());
-                if(m.find()){
+                if (m.find()) {
                     mylists.add(m.group(1));
                 }
             }
@@ -289,7 +300,7 @@ public final class Config {
             List<?> lines = FileUtils.readLines(FEEDURL_FILE, getEncoding());
             for (Object line : lines) {
                 final String str = line.toString();
-                if (StringUtils.isEmpty(str) || str.startsWith("#")) {
+                if (StringUtils.isBlank(str) || str.startsWith("#")) {
                     // 空行, コメント行はスキップ.
                     continue;
                 }
@@ -311,6 +322,7 @@ public final class Config {
     public static File getFeedUrlFile() {
         return FEEDURL_FILE;
     }
+
     public static File getMylistConfigFile() {
         return MYLIST_CONFIG_FILE;
     }