OSDN Git Service

NamePatternを拡張可能なように修正
authoryukihane <yukihane.feather@gmail.com>
Mon, 22 Aug 2011 22:07:07 +0000 (07:07 +0900)
committeryukihane <yukihane.feather@gmail.com>
Mon, 22 Aug 2011 22:07:07 +0000 (07:07 +0900)
src/nicobrowser/NamePattern.java

index 5608d9f..e87570b 100644 (file)
@@ -1,7 +1,3 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
 package nicobrowser;
 
 /**
@@ -13,10 +9,15 @@ public class NamePattern {
     private static final String titlePattern = "{title}";
     private static final String idPattern = "{id}";
     private static final String lowPattern = "{low}";
-    private final String pattern;
-    private final String replaceFrom;
-    private final String replaceTo;
-    private final String title;
+    private String pattern = "";
+    private String replaceFrom = "";
+    private String replaceTo = "";
+    private String id = "";
+    private String title = "";
+    private boolean isNotLow = true;
+
+    public NamePattern() {
+    }
 
     /**
      * 保存ファイル名の命名規則.
@@ -32,18 +33,58 @@ public class NamePattern {
         this.title = title;
     }
 
-    public String createFileName(String id, boolean isNotLow) {
-        String res = pattern;
-        res = res.replace(titlePattern, title);
+    public final String createFileName() {
+        String res = replacePlaceHolder(pattern);
+        return replaceIllegalChar(res);
+    }
+
+    public final String createFileName(String id, boolean isNotLow) {
+        this.id = id;
+        this.isNotLow = isNotLow;
+
+        return createFileName();
+    }
+
+    public final void setId(String id) {
+        this.id = id;
+    }
+
+    public final void setIsNotLow(boolean isNotLow) {
+        this.isNotLow = isNotLow;
+    }
+
+    public final void setPattern(String pattern) {
+        this.pattern = pattern;
+    }
+
+    public final void setReplaceFrom(String replaceFrom) {
+        this.replaceFrom = replaceFrom;
+    }
+
+    public final void setReplaceTo(String replaceTo) {
+        this.replaceTo = replaceTo;
+    }
+
+    public final void setTitle(String title) {
+        this.title = title;
+    }
+
+    protected String replacePlaceHolder(String str) {
+        String res = str.replace(titlePattern, title);
         res = res.replace(idPattern, id);
         String low = isNotLow ? "" : "low";
         res = res.replace(lowPattern, low);
+        return res;
+    }
+
+    private String replaceIllegalChar(String res) {
+        // TODO 正規表現で書き直す
         char[] replaceds = new char[replaceFrom.length()];
         replaceFrom.getChars(0, replaceFrom.length(), replaceds, 0);
         StringBuilder str = new StringBuilder();
         for (int i = 0; i < res.length(); i++) {
             char c = res.charAt(i);
-            String moji = new String("" + c);
+            String moji = String.valueOf(c);
             for (char replaced : replaceds) {
                 if (c == replaced) {
                     moji = replaceTo;