OSDN Git Service

コンフィグ内文字列定数化
[coroid/inqubus.git] / frontend / src / yukihane / inqubus / config / Properties.java
1 package yukihane.inqubus.config;
2
3 import java.io.File;
4 import java.util.ArrayList;
5 import java.util.Arrays;
6 import java.util.List;
7 import org.apache.commons.configuration.ConfigurationException;
8 import org.apache.commons.configuration.XMLConfiguration;
9
10 public enum Properties {
11
12     INSTANCE;
13     private final XMLConfiguration config = new XMLConfiguration();
14
15     /*
16      * ネットワーク - アカウント
17      */
18     private static final String ACCOUNT_ID = "network.account.id";
19
20     public String getId() {
21         return config.getString(ACCOUNT_ID, "");
22     }
23
24     public void setId(String s) {
25         config.setProperty(ACCOUNT_ID, s);
26     }
27     private static final String ACCOUNT_PASSWORD = "network.account.password";
28
29     public String getPassword() {
30         return config.getString(ACCOUNT_PASSWORD, "");
31     }
32
33     public void setPassword(String s) {
34         config.setProperty(ACCOUNT_PASSWORD, s);
35     }
36
37     /*
38      * ネットワーク - プロキシ
39      */
40     private static final String PROXY_USE = "network.proxy.use";
41
42     public boolean getUseProxy() {
43         return config.getBoolean(PROXY_USE, false);
44     }
45
46     public void setUseProxy(boolean s) {
47         config.setProperty(PROXY_USE, s);
48     }
49     private static final String PROXY_HOST = "network.proxy.host";
50
51     public String getProxyHost() {
52         return config.getString(PROXY_HOST, "");
53     }
54
55     public void setProxyHost(String s) {
56         config.setProperty(PROXY_HOST, s);
57     }
58
59     /*
60      * ファイル - 動画
61      */
62     private static final String FILE_VIDEO_DIR = "file.video.dir";
63
64     public File getVideoDir() {
65         return new File(config.getString(FILE_VIDEO_DIR, "in/video"));
66     }
67
68     public void setVideoDir(File s) {
69         config.setProperty(FILE_VIDEO_DIR, s.toString());
70     }
71     private static final String FILE_VIDEO_FILENAME = "file.video.filename";
72
73     public String getVideoFileNamePattern() {
74         return config.getString(FILE_VIDEO_FILENAME, "[{id}]{title}");
75     }
76
77     public void setVideoFileNamePattern(String s) {
78         config.setProperty(FILE_VIDEO_FILENAME, s.toString());
79     }
80     private static final String FILE_VIDEO_LOCAL = "file.video.local";
81
82     public boolean getVideoUseLocal() {
83         return config.getBoolean(FILE_VIDEO_LOCAL, false);
84     }
85
86     public void setVideoUseLocal(boolean s) {
87         config.setProperty(FILE_VIDEO_LOCAL, s);
88     }
89
90     /*
91      * ファイル - コメント
92      */
93     private static final String FILE_COMMENT_DIR = "file.comment.dir";
94
95     public File getCommentDir() {
96         return new File(config.getString(FILE_COMMENT_DIR, "in/comment"));
97     }
98
99     public void setCommentDir(File s) {
100         config.setProperty(FILE_COMMENT_DIR, s.toString());
101     }
102     private static final String FILE_COMMENT_FILENAME = "file.comment.filename";
103
104     public String getCommentFileNamePattern() {
105         return config.getString(FILE_COMMENT_FILENAME, "[{id}]{title}");
106     }
107
108     public void setCommentFileNamePattern(String s) {
109         config.setProperty(FILE_COMMENT_FILENAME, s.toString());
110     }
111     private static final String FILE_COMMENT_LOCAL = "file.comment.local";
112
113     public boolean getCommentUseLocal() {
114         return config.getBoolean(FILE_COMMENT_LOCAL, false);
115     }
116
117     public void setCommentUseLocal(boolean s) {
118         config.setProperty(FILE_COMMENT_LOCAL, s);
119     }
120
121     /*
122      * ファイル - 変換動画
123      */
124     private static final String FILE_OUTPUT_DIR = "file.output.dir";
125
126     public File getOutputDir() {
127         return new File(config.getString(FILE_OUTPUT_DIR, "out"));
128     }
129
130     public void setOutputDir(File s) {
131         config.setProperty(FILE_OUTPUT_DIR, s.toString());
132     }
133     private static final String FILE_OUTPUT_FILENAME = "file.output.filename";
134
135     public String getOutputFileNamePattern() {
136         return config.getString(FILE_OUTPUT_FILENAME, "{filename}");
137     }
138
139     public void setOutputFileNamePattern(String s) {
140         config.setProperty(FILE_OUTPUT_FILENAME, s.toString());
141     }
142     private static final String FILE_OUTPUT_ENABLE = "file.output.enable";
143
144     public boolean getOutputEnable() {
145         return config.getBoolean(FILE_OUTPUT_ENABLE, true);
146     }
147
148     public void setOutputEnable(boolean s) {
149         config.setProperty(FILE_OUTPUT_ENABLE, s);
150     }
151     private static final String FILE_OUTPUT_COMMENT_OVERLAY = "file.output.comment_overlay";
152
153     public boolean getOutputCommentOverlay() {
154         return config.getBoolean(FILE_OUTPUT_COMMENT_OVERLAY, true);
155     }
156
157     public void setOutputCommentOverlay(boolean s) {
158         config.setProperty(FILE_OUTPUT_COMMENT_OVERLAY, s);
159     }
160     private static final String FILE_OUTPUT_DISPLAY_PROGRESS = "file.output.display";
161
162     public boolean getOutputDisplayProgress() {
163         return config.getBoolean(FILE_OUTPUT_DISPLAY_PROGRESS, true);
164     }
165
166     public void setOutputDisplayProgress(boolean s) {
167         config.setProperty(FILE_OUTPUT_DISPLAY_PROGRESS, s);
168     }
169     /**
170      * コメント
171      */
172     private static final String COMMENT_SIZE_AUTOSIZE = "comment.size.autosize";
173
174     public boolean getCommentSizeAutosize() {
175         return config.getBoolean(COMMENT_SIZE_AUTOSIZE, true);
176     }
177
178     public void setCommentSizeAutosize(boolean s) {
179         config.setProperty(COMMENT_SIZE_AUTOSIZE, s);
180     }
181     private static final String COMMENT_SIZE_MANUAL = "comment.size.manual";
182
183     public Integer getCommentSizeManual() {
184         return config.getInteger(COMMENT_SIZE_MANUAL, null);
185     }
186
187     public void setCommentSizeManual(Integer s) {
188         config.setProperty(COMMENT_SIZE_MANUAL, s);
189     }
190     private static final String COMMENT_MIN_SIZE_AUTOSIZE = "comment.minutesize.autosize";
191
192     public boolean getCommentMinSizeAutosize() {
193         return config.getBoolean(COMMENT_MIN_SIZE_AUTOSIZE, true);
194     }
195
196     public void setCommentMinSizeAutosize(boolean s) {
197         config.setProperty(COMMENT_MIN_SIZE_AUTOSIZE, s);
198     }
199     private static final String COMMENT_MIN_SIZE_MANUAL = "comment.minutesize.manual";
200
201     public Integer getCommentMinSizeManual() {
202         return config.getInteger(COMMENT_MIN_SIZE_MANUAL, null);
203     }
204
205     public void setCommentMinSizeManual(Integer s) {
206         config.setProperty(COMMENT_MIN_SIZE_MANUAL, s);
207     }
208     private static final String COMMENT_FONTPATH = "comment.fontpath";
209
210     public File getFontPath() {
211         return new File(config.getString(COMMENT_FONTPATH, "C:/Windows/Fonts/msgothic.ttc"));
212     }
213
214     public void setFontPath(File s) {
215         config.setProperty(COMMENT_FONTPATH, s);
216     }
217     private static final String COMMENT_FONT_INDEX = "comment.fontindex";
218
219     public Integer getFontIndex() {
220         return config.getInteger(COMMENT_FONT_INDEX, Integer.valueOf(1));
221     }
222
223     public void setFontIndex(Integer s) {
224         config.setProperty(COMMENT_FONT_INDEX, s);
225     }
226     private static final String COMMENT_FONT_SHADOW = "comment.fontshadow";
227
228     public int getFontShadow() {
229         return config.getInt(COMMENT_FONT_SHADOW, 1);
230     }
231
232     public void setFontIndex(int s) {
233         config.setProperty(COMMENT_FONT_SHADOW, s);
234     }
235     private static final String COMMENT_FONT_SIZING_DISABLE = "comment.font_no_sizing";
236
237     public boolean getFontSizeDisable() {
238         return config.getBoolean(COMMENT_FONT_SIZING_DISABLE, false);
239     }
240
241     public void setFontSizeDisable(boolean s) {
242         config.setProperty(COMMENT_FONT_SIZING_DISABLE, s);
243     }
244     private static final String COMMENT_FONT_OPAQUE = "comment.opaque";
245
246     public boolean getCommentOpaque() {
247         return config.getBoolean(COMMENT_FONT_OPAQUE, false);
248     }
249
250     public void setCommentOpaque(boolean s) {
251         config.setProperty(COMMENT_FONT_OPAQUE, s);
252     }
253     private static final String FFMPEG_PATH = "ffmpeg.path";
254
255     public File getFfmpegPath() {
256         return new File(config.getString(FFMPEG_PATH, "bin/ffmpeg.exe"));
257     }
258
259     public void setFfmpegPath(File s) {
260         config.setProperty(FFMPEG_PATH, s.toString());
261     }
262     private static final String FFMPEG_DLLPATH = "ffmpeg.dllpath";
263
264     public File getFfmpegDllPath() {
265         return new File(config.getString(FFMPEG_DLLPATH, "bin/nicovideo.dll"));
266     }
267
268     public void setFfmpegDllPath(File s) {
269         config.setProperty(FFMPEG_DLLPATH, s.toString());
270     }
271     private static final String FFMPEG_PARAM_DIRECT = "ffmpeg.param.direct";
272
273     public boolean getFfmpegParamInputDirect() {
274         return config.getBoolean(FFMPEG_PARAM_DIRECT, true);
275     }
276
277     public void setFfmpegParamInputDirect(boolean s) {
278         config.setProperty(FFMPEG_PARAM_DIRECT, s);
279     }
280     private static final String FFMPEG_PARAM_OPTIONFILE = "ffmpeg.param.optionfile";
281
282     public String getFfmpegOptionFile() {
283         return config.getString(FFMPEG_PARAM_OPTIONFILE, "");
284     }
285
286     public void setFfmpegOptionFile(String s) {
287         config.setProperty(FFMPEG_PARAM_OPTIONFILE, s);
288     }
289     private static final String FFMPEG_PARAM_EXT = "ffmpeg.param.ext";
290
291     public String getFfmpegExtension() {
292         return config.getString(FFMPEG_PARAM_EXT, "");
293     }
294
295     public void setFfmpegExtension(String s) {
296         config.setProperty(FFMPEG_PARAM_EXT, s);
297     }
298     private static final String FFMPEG_PARAM_MAIN = "ffmpeg.param.main";
299
300     public String getFfmpegMainOption() {
301         return config.getString(FFMPEG_PARAM_MAIN, "");
302     }
303
304     public void setFfmpegMainOption(String s) {
305         config.setProperty(FFMPEG_PARAM_MAIN, s);
306     }
307     private static final String FFMPEG_PARAM_IN = "ffmpeg.param.in";
308
309     public String getFfmpegInOption() {
310         return config.getString(FFMPEG_PARAM_IN, "");
311     }
312
313     public void setFfmpegInOption(String s) {
314         config.setProperty(FFMPEG_PARAM_IN, s);
315     }
316     private static final String FFMPEG_PARAM_OUT = "ffmpeg.param.out";
317
318     public String getFfmpegOutOption() {
319         return config.getString(FFMPEG_PARAM_OUT, "");
320     }
321
322     public void setFfmpegOutOption(String s) {
323         config.setProperty(FFMPEG_PARAM_OUT, s);
324     }
325     private static final String FFMPEG_PARAM_AV = "ffmpeg.param.av";
326
327     public String getFfmpegAvOption() {
328         return config.getString(FFMPEG_PARAM_AV, "");
329     }
330
331     public void setFfmpegAvOption(String s) {
332         config.setProperty(FFMPEG_PARAM_AV, s);
333     }
334     private static final String FFMPEG_PARAM_RESIZE = "ffmpeg.param.resize";
335
336     public boolean getFfmpegResizeEnable() {
337         return config.getBoolean(FFMPEG_PARAM_RESIZE, false);
338     }
339
340     public void setFfmpegResizeEnable(boolean s) {
341         config.setProperty(FFMPEG_PARAM_RESIZE, s);
342     }
343     private static final String FFMPEG_PARAM_RESIZE_WIDTH = "ffmpeg.param.resize_width";
344
345     public Integer getFfmpegResizeWidth() {
346         return config.getInteger(FFMPEG_PARAM_RESIZE_WIDTH, Integer.valueOf(480));
347     }
348
349     public void getFfmpegResizeWidth(Integer s) {
350         config.setProperty(FFMPEG_PARAM_RESIZE_WIDTH, s);
351     }
352     private static final String FFMPEG_PARAM_RESIZE_HEIGHT = "ffmpeg.param.resize_height";
353
354     public Integer getFfmpegResizeHeight() {
355         return config.getInteger(FFMPEG_PARAM_RESIZE_HEIGHT, Integer.valueOf(480));
356     }
357
358     public void getFfmpegResizeHeight(Integer s) {
359         config.setProperty(FFMPEG_PARAM_RESIZE_HEIGHT, s);
360     }
361     private static final String FFMPEG_PARAM_KEEP_ASPECT = "ffmpeg.param.keep_aspect";
362
363     public boolean getFfmpegKeepAspect() {
364         return config.getBoolean(FFMPEG_PARAM_KEEP_ASPECT, true);
365     }
366
367     public void setFfmpegKeepAspect(boolean s) {
368         config.setProperty(FFMPEG_PARAM_KEEP_ASPECT, s);
369     }
370     private static final String NG_WORD = "ng.word";
371
372     @SuppressWarnings("unchecked")
373     public List<String> getNgWords() {
374         return config.getList(NG_WORD, new ArrayList<String>(0));
375     }
376
377     public void setNgWords(List<String> s) {
378         final String[] str = s.toArray(new String[0]);
379         config.setProperty(NG_WORD, s);
380     }
381     private static final String NG_ID = "ng.id";
382
383     @SuppressWarnings("unchecked")
384     public List<String> getNgIds() {
385         return config.getList(NG_ID, new ArrayList<String>(0));
386     }
387
388     public void setNgIds(List<String> s) {
389         config.setProperty(NG_ID, s);
390     }
391
392     /*
393      *
394      */
395     public void load(String fileName) throws ConfigurationException {
396         config.setFileName(fileName);
397         config.load();
398     }
399
400     public void save(File file) throws ConfigurationException {
401         config.setFile(file);
402         save();
403     }
404
405     public void save() throws ConfigurationException {
406         throw new UnsupportedOperationException();
407 //        try {
408 //            final Class<? extends Properties> clazz = this.getClass();
409 //            final Field[] fields = clazz.getDeclaredFields();
410 //            final Field[] propertyFields = getPropertyFields(fields);
411 //            for (Field f : propertyFields) {
412 //                config.setProperty(getPropertyName(f), getPropertyValue(f));
413 //            }
414 //            config.save();
415 //        } catch (SecurityException | IllegalArgumentException | IllegalAccessException | ConfigurationException ex) {
416 //            throw new ConfigurationException(ex);
417 //        }
418     }
419 //    private Field[] getPropertyFields(Field[] fields) {
420 //        List<Field> res = new ArrayList<Field>();
421 //        for (Field f : fields) {
422 //            if (f.getName().startsWith(getPrefix())) {
423 //                res.add(f);
424 //            }
425 //        }
426 //        return res.toArray(new Field[0]);
427 //    }
428 //
429 //    private String getPropertyName(Field field) {
430 //        return field.getName().replace(getPrefix(), "").replace("_", ".");
431 //    }
432 //
433 //    private String getPropertyValue(Field field) throws IllegalArgumentException, IllegalAccessException {
434 //        field.setAccessible(true);
435 //        return (String) field.get(this);
436 //    }
437 //
438 //    public boolean getUseMovieFileLocal() {
439 //        // TODO
440 //        return false;
441 //    }
442 //
443 //    public boolean getCommentFileLocal() {
444 //        // TODO
445 //        return false;
446 //    }
447 //
448 //    public boolean getOutputConvert() {
449 //        // TODO
450 //        return true;
451 //    }
452 //
453 //    public String getFileNamePattern() {
454 //        // TODO
455 //        return "[{id}]{title}";
456 //    }
457 }