1 package yukihane.inqubus.config;
4 import java.util.ArrayList;
5 import java.util.Arrays;
7 import org.apache.commons.configuration.ConfigurationException;
8 import org.apache.commons.configuration.XMLConfiguration;
10 public enum Properties {
13 private final XMLConfiguration config = new XMLConfiguration();
18 private static final String ACCOUNT_ID = "network.account.id";
20 public String getId() {
21 return config.getString(ACCOUNT_ID, "");
24 public void setId(String s) {
25 config.setProperty(ACCOUNT_ID, s);
27 private static final String ACCOUNT_PASSWORD = "network.account.password";
29 public String getPassword() {
30 return config.getString(ACCOUNT_PASSWORD, "");
33 public void setPassword(String s) {
34 config.setProperty(ACCOUNT_PASSWORD, s);
40 private static final String PROXY_USE = "network.proxy.use";
42 public boolean getUseProxy() {
43 return config.getBoolean(PROXY_USE, false);
46 public void setUseProxy(boolean s) {
47 config.setProperty(PROXY_USE, s);
49 private static final String PROXY_HOST = "network.proxy.host";
51 public String getProxyHost() {
52 return config.getString(PROXY_HOST, "");
55 public void setProxyHost(String s) {
56 config.setProperty(PROXY_HOST, s);
62 private static final String FILE_VIDEO_DIR = "file.video.dir";
64 public File getVideoDir() {
65 return new File(config.getString(FILE_VIDEO_DIR, "in/video"));
68 public void setVideoDir(File s) {
69 config.setProperty(FILE_VIDEO_DIR, s.toString());
71 private static final String FILE_VIDEO_FILENAME = "file.video.filename";
73 public String getVideoFileNamePattern() {
74 return config.getString(FILE_VIDEO_FILENAME, "[{id}]{title}");
77 public void setVideoFileNamePattern(String s) {
78 config.setProperty(FILE_VIDEO_FILENAME, s.toString());
80 private static final String FILE_VIDEO_LOCAL = "file.video.local";
82 public boolean getVideoUseLocal() {
83 return config.getBoolean(FILE_VIDEO_LOCAL, false);
86 public void setVideoUseLocal(boolean s) {
87 config.setProperty(FILE_VIDEO_LOCAL, s);
93 private static final String FILE_COMMENT_DIR = "file.comment.dir";
95 public File getCommentDir() {
96 return new File(config.getString(FILE_COMMENT_DIR, "in/comment"));
99 public void setCommentDir(File s) {
100 config.setProperty(FILE_COMMENT_DIR, s.toString());
102 private static final String FILE_COMMENT_FILENAME = "file.comment.filename";
104 public String getCommentFileNamePattern() {
105 return config.getString(FILE_COMMENT_FILENAME, "[{id}]{title}");
108 public void setCommentFileNamePattern(String s) {
109 config.setProperty(FILE_COMMENT_FILENAME, s.toString());
111 private static final String FILE_COMMENT_LOCAL = "file.comment.local";
113 public boolean getCommentUseLocal() {
114 return config.getBoolean(FILE_COMMENT_LOCAL, false);
117 public void setCommentUseLocal(boolean s) {
118 config.setProperty(FILE_COMMENT_LOCAL, s);
124 private static final String FILE_OUTPUT_DIR = "file.output.dir";
126 public File getOutputDir() {
127 return new File(config.getString(FILE_OUTPUT_DIR, "out"));
130 public void setOutputDir(File s) {
131 config.setProperty(FILE_OUTPUT_DIR, s.toString());
133 private static final String FILE_OUTPUT_FILENAME = "file.output.filename";
135 public String getOutputFileNamePattern() {
136 return config.getString(FILE_OUTPUT_FILENAME, "{filename}");
139 public void setOutputFileNamePattern(String s) {
140 config.setProperty(FILE_OUTPUT_FILENAME, s.toString());
142 private static final String FILE_OUTPUT_ENABLE = "file.output.enable";
144 public boolean getOutputEnable() {
145 return config.getBoolean(FILE_OUTPUT_ENABLE, true);
148 public void setOutputEnable(boolean s) {
149 config.setProperty(FILE_OUTPUT_ENABLE, s);
151 private static final String FILE_OUTPUT_COMMENT_OVERLAY = "file.output.comment_overlay";
153 public boolean getOutputCommentOverlay() {
154 return config.getBoolean(FILE_OUTPUT_COMMENT_OVERLAY, true);
157 public void setOutputCommentOverlay(boolean s) {
158 config.setProperty(FILE_OUTPUT_COMMENT_OVERLAY, s);
160 private static final String FILE_OUTPUT_DISPLAY_PROGRESS = "file.output.display";
162 public boolean getOutputDisplayProgress() {
163 return config.getBoolean(FILE_OUTPUT_DISPLAY_PROGRESS, true);
166 public void setOutputDisplayProgress(boolean s) {
167 config.setProperty(FILE_OUTPUT_DISPLAY_PROGRESS, s);
172 private static final String COMMENT_SIZE_AUTOSIZE = "comment.size.autosize";
174 public boolean getCommentSizeAutosize() {
175 return config.getBoolean(COMMENT_SIZE_AUTOSIZE, true);
178 public void setCommentSizeAutosize(boolean s) {
179 config.setProperty(COMMENT_SIZE_AUTOSIZE, s);
181 private static final String COMMENT_SIZE_MANUAL = "comment.size.manual";
183 public Integer getCommentSizeManual() {
184 return config.getInteger(COMMENT_SIZE_MANUAL, null);
187 public void setCommentSizeManual(Integer s) {
188 config.setProperty(COMMENT_SIZE_MANUAL, s);
190 private static final String COMMENT_MIN_SIZE_AUTOSIZE = "comment.minutesize.autosize";
192 public boolean getCommentMinSizeAutosize() {
193 return config.getBoolean(COMMENT_MIN_SIZE_AUTOSIZE, true);
196 public void setCommentMinSizeAutosize(boolean s) {
197 config.setProperty(COMMENT_MIN_SIZE_AUTOSIZE, s);
199 private static final String COMMENT_MIN_SIZE_MANUAL = "comment.minutesize.manual";
201 public Integer getCommentMinSizeManual() {
202 return config.getInteger(COMMENT_MIN_SIZE_MANUAL, null);
205 public void setCommentMinSizeManual(Integer s) {
206 config.setProperty(COMMENT_MIN_SIZE_MANUAL, s);
208 private static final String COMMENT_FONTPATH = "comment.fontpath";
210 public File getFontPath() {
211 return new File(config.getString(COMMENT_FONTPATH, "C:/Windows/Fonts/msgothic.ttc"));
214 public void setFontPath(File s) {
215 config.setProperty(COMMENT_FONTPATH, s);
217 private static final String COMMENT_FONT_INDEX = "comment.fontindex";
219 public Integer getFontIndex() {
220 return config.getInteger(COMMENT_FONT_INDEX, Integer.valueOf(1));
223 public void setFontIndex(Integer s) {
224 config.setProperty(COMMENT_FONT_INDEX, s);
226 private static final String COMMENT_FONT_SHADOW = "comment.fontshadow";
228 public int getFontShadow() {
229 return config.getInt(COMMENT_FONT_SHADOW, 1);
232 public void setFontIndex(int s) {
233 config.setProperty(COMMENT_FONT_SHADOW, s);
235 private static final String COMMENT_FONT_SIZING_DISABLE = "comment.font_no_sizing";
237 public boolean getFontSizeDisable() {
238 return config.getBoolean(COMMENT_FONT_SIZING_DISABLE, false);
241 public void setFontSizeDisable(boolean s) {
242 config.setProperty(COMMENT_FONT_SIZING_DISABLE, s);
244 private static final String COMMENT_FONT_OPAQUE = "comment.opaque";
246 public boolean getCommentOpaque() {
247 return config.getBoolean(COMMENT_FONT_OPAQUE, false);
250 public void setCommentOpaque(boolean s) {
251 config.setProperty(COMMENT_FONT_OPAQUE, s);
253 private static final String FFMPEG_PATH = "ffmpeg.path";
255 public File getFfmpegPath() {
256 return new File(config.getString(FFMPEG_PATH, "bin/ffmpeg.exe"));
259 public void setFfmpegPath(File s) {
260 config.setProperty(FFMPEG_PATH, s.toString());
262 private static final String FFMPEG_DLLPATH = "ffmpeg.dllpath";
264 public File getFfmpegDllPath() {
265 return new File(config.getString(FFMPEG_DLLPATH, "bin/nicovideo.dll"));
268 public void setFfmpegDllPath(File s) {
269 config.setProperty(FFMPEG_DLLPATH, s.toString());
271 private static final String FFMPEG_PARAM_DIRECT = "ffmpeg.param.direct";
273 public boolean getFfmpegParamInputDirect() {
274 return config.getBoolean(FFMPEG_PARAM_DIRECT, true);
277 public void setFfmpegParamInputDirect(boolean s) {
278 config.setProperty(FFMPEG_PARAM_DIRECT, s);
280 private static final String FFMPEG_PARAM_OPTIONFILE = "ffmpeg.param.optionfile";
282 public String getFfmpegOptionFile() {
283 return config.getString(FFMPEG_PARAM_OPTIONFILE, "");
286 public void setFfmpegOptionFile(String s) {
287 config.setProperty(FFMPEG_PARAM_OPTIONFILE, s);
289 private static final String FFMPEG_PARAM_EXT = "ffmpeg.param.ext";
291 public String getFfmpegExtension() {
292 return config.getString(FFMPEG_PARAM_EXT, "");
295 public void setFfmpegExtension(String s) {
296 config.setProperty(FFMPEG_PARAM_EXT, s);
298 private static final String FFMPEG_PARAM_MAIN = "ffmpeg.param.main";
300 public String getFfmpegMainOption() {
301 return config.getString(FFMPEG_PARAM_MAIN, "");
304 public void setFfmpegMainOption(String s) {
305 config.setProperty(FFMPEG_PARAM_MAIN, s);
307 private static final String FFMPEG_PARAM_IN = "ffmpeg.param.in";
309 public String getFfmpegInOption() {
310 return config.getString(FFMPEG_PARAM_IN, "");
313 public void setFfmpegInOption(String s) {
314 config.setProperty(FFMPEG_PARAM_IN, s);
316 private static final String FFMPEG_PARAM_OUT = "ffmpeg.param.out";
318 public String getFfmpegOutOption() {
319 return config.getString(FFMPEG_PARAM_OUT, "");
322 public void setFfmpegOutOption(String s) {
323 config.setProperty(FFMPEG_PARAM_OUT, s);
325 private static final String FFMPEG_PARAM_AV = "ffmpeg.param.av";
327 public String getFfmpegAvOption() {
328 return config.getString(FFMPEG_PARAM_AV, "");
331 public void setFfmpegAvOption(String s) {
332 config.setProperty(FFMPEG_PARAM_AV, s);
334 private static final String FFMPEG_PARAM_RESIZE = "ffmpeg.param.resize";
336 public boolean getFfmpegResizeEnable() {
337 return config.getBoolean(FFMPEG_PARAM_RESIZE, false);
340 public void setFfmpegResizeEnable(boolean s) {
341 config.setProperty(FFMPEG_PARAM_RESIZE, s);
343 private static final String FFMPEG_PARAM_RESIZE_WIDTH = "ffmpeg.param.resize_width";
345 public Integer getFfmpegResizeWidth() {
346 return config.getInteger(FFMPEG_PARAM_RESIZE_WIDTH, Integer.valueOf(480));
349 public void getFfmpegResizeWidth(Integer s) {
350 config.setProperty(FFMPEG_PARAM_RESIZE_WIDTH, s);
352 private static final String FFMPEG_PARAM_RESIZE_HEIGHT = "ffmpeg.param.resize_height";
354 public Integer getFfmpegResizeHeight() {
355 return config.getInteger(FFMPEG_PARAM_RESIZE_HEIGHT, Integer.valueOf(480));
358 public void getFfmpegResizeHeight(Integer s) {
359 config.setProperty(FFMPEG_PARAM_RESIZE_HEIGHT, s);
361 private static final String FFMPEG_PARAM_KEEP_ASPECT = "ffmpeg.param.keep_aspect";
363 public boolean getFfmpegKeepAspect() {
364 return config.getBoolean(FFMPEG_PARAM_KEEP_ASPECT, true);
367 public void setFfmpegKeepAspect(boolean s) {
368 config.setProperty(FFMPEG_PARAM_KEEP_ASPECT, s);
370 private static final String NG_WORD = "ng.word";
372 @SuppressWarnings("unchecked")
373 public List<String> getNgWords() {
374 return config.getList(NG_WORD, new ArrayList<String>(0));
377 public void setNgWords(List<String> s) {
378 final String[] str = s.toArray(new String[0]);
379 config.setProperty(NG_WORD, s);
381 private static final String NG_ID = "ng.id";
383 @SuppressWarnings("unchecked")
384 public List<String> getNgIds() {
385 return config.getList(NG_ID, new ArrayList<String>(0));
388 public void setNgIds(List<String> s) {
389 config.setProperty(NG_ID, s);
395 public void load(String fileName) throws ConfigurationException {
396 config.setFileName(fileName);
400 public void save(File file) throws ConfigurationException {
401 config.setFile(file);
405 public void save() throws ConfigurationException {
406 throw new UnsupportedOperationException();
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));
415 // } catch (SecurityException | IllegalArgumentException | IllegalAccessException | ConfigurationException ex) {
416 // throw new ConfigurationException(ex);
419 // private Field[] getPropertyFields(Field[] fields) {
420 // List<Field> res = new ArrayList<Field>();
421 // for (Field f : fields) {
422 // if (f.getName().startsWith(getPrefix())) {
426 // return res.toArray(new Field[0]);
429 // private String getPropertyName(Field field) {
430 // return field.getName().replace(getPrefix(), "").replace("_", ".");
433 // private String getPropertyValue(Field field) throws IllegalArgumentException, IllegalAccessException {
434 // field.setAccessible(true);
435 // return (String) field.get(this);
438 // public boolean getUseMovieFileLocal() {
443 // public boolean getCommentFileLocal() {
448 // public boolean getOutputConvert() {
453 // public String getFileNamePattern() {
455 // return "[{id}]{title}";