OSDN Git Service

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