OSDN Git Service

コンフィグを用いた禁則文字置換を実装
[coroid/NicoBrowser.git] / src / nicobrowser / NamePattern.java
1 /*
2  * To change this template, choose Tools | Templates
3  * and open the template in the editor.
4  */
5 package nicobrowser;
6
7 /**
8  *
9  * @author yuki
10  */
11 public class NamePattern {
12
13     private static final String titlePattern = "{title}";
14     private static final String idPattern = "{id}";
15     private static final String lowPattern = "{low}";
16     private final String pattern;
17     private final String replaceFrom;
18     private final String replaceTo;
19     private final String title;
20
21     /**
22      * 保存ファイル名の命名規則.
23      * @param pattern 命名パターン.
24      * @param title ファイル名に用いるタイトル文字列. 禁則文字が入っていてはならない.
25      */
26     public NamePattern(String pattern, String replaceFrom, String replaceTo, String title) {
27         this.pattern = pattern;
28         this.replaceFrom = replaceFrom;
29         this.replaceTo = replaceTo;
30         this.title = title;
31     }
32
33     String createFileName(String id, boolean isNotLow) {
34         String res = pattern;
35         res = res.replace(titlePattern, title);
36         res = res.replace(idPattern, id);
37         String low = isNotLow ? "" : "low";
38         res = res.replace(lowPattern, low);
39         char[] replaceds = new char[replaceFrom.length()];
40         replaceFrom.getChars(0, replaceFrom.length(), replaceds, 0);
41         StringBuilder str = new StringBuilder();
42         for (int i = 0; i < res.length(); i++) {
43             char c = res.charAt(i);
44             String moji = new String("" + c);
45             for (char replaced : replaceds) {
46                 if (c == replaced) {
47                     moji = replaceTo;
48                 }
49             }
50             str.append(moji);
51         }
52         return str.toString();
53     }
54 }