7 public class NamePattern {
9 private static final String titlePattern = "{title}";
10 private static final String idPattern = "{id}";
11 private static final String lowPattern = "{low}";
12 private final String pattern;
13 private String replaceFrom = "";
14 private String replaceTo = "";
15 private String id = "";
16 private String title = "";
17 private boolean isNotLow = true;
19 public NamePattern(String pattern) {
20 this.pattern = pattern;
25 * @param pattern 命名パターン.
26 * @param replaceFrom 禁則文字を指定する.
27 * @param replaceTo 禁則文字をこの文字列に置換する.
28 * @param title ファイル名に用いるタイトル文字列.
30 public NamePattern(String pattern, String replaceFrom, String replaceTo, String title) {
31 this.pattern = pattern;
32 this.replaceFrom = replaceFrom;
33 this.replaceTo = replaceTo;
37 public final String createFileName() {
38 String res = replacePlaceHolder(pattern);
39 return replaceIllegalChar(res);
42 public final String createFileName(String id, boolean isNotLow) {
44 this.isNotLow = isNotLow;
46 return createFileName();
49 public final void setId(String id) {
53 public final void setIsNotLow(boolean isNotLow) {
54 this.isNotLow = isNotLow;
57 public final void setReplaceFrom(String replaceFrom) {
58 this.replaceFrom = replaceFrom;
61 public final void setReplaceTo(String replaceTo) {
62 this.replaceTo = replaceTo;
65 public final void setTitle(String title) {
69 protected String replacePlaceHolder(String str) {
70 String res = str.replace(titlePattern, title);
71 res = res.replace(idPattern, id);
72 String low = isNotLow ? "" : "low";
73 res = res.replace(lowPattern, low);
77 private String replaceIllegalChar(String res) {
79 char[] replaceds = new char[replaceFrom.length()];
80 replaceFrom.getChars(0, replaceFrom.length(), replaceds, 0);
81 StringBuilder str = new StringBuilder();
82 for (int i = 0; i < res.length(); i++) {
83 char c = res.charAt(i);
84 String moji = String.valueOf(c);
85 for (char replaced : replaceds) {
92 return str.toString();