1 package yukihane.inqubus.conifg;
4 import java.lang.reflect.Field;
5 import java.util.ArrayList;
7 import org.apache.commons.configuration.ConfigurationException;
8 import org.apache.commons.configuration.XMLConfiguration;
10 public enum Properties implements Config {
13 private final XMLConfiguration config;
15 private String p_nicovideo_id;
16 /** ニコニコ動画ログインパスワード */
17 private String p_nicovideo_password;
19 private String p_proxy_use;
21 private String p_proxy_host;
23 private String p_proxy_port;
24 /** NicoBrowser情報を参照する */
25 private String p_nicobrowser_use;
26 /** NicoBrowser DB ディレクトリ */
27 private String p_nicobrowser_dblocation;
29 private String p_movie_download;
31 private String p_movie_directory;
33 private String p_comment_download;
34 /** コメントダウンロードディレクトリ */
35 private String p_comment_directory;
36 /** 投稿者コメントをダウンロードする */
37 private String p_ownercomment_download;
38 /** 投稿者コメントダウンロードディレクトリ */
39 private String p_ownercomment_directory;
42 public boolean isOwnerCommentDownload() {
43 return Boolean.valueOf(p_ownercomment_download);
46 public void setOwnerCommentDownload(boolean download) {
47 p_ownercomment_download = Boolean.toString(download);
51 public boolean isCommentDownload() {
52 return Boolean.valueOf(p_comment_download);
55 public void setCommentDownload(boolean download) {
56 p_comment_download = Boolean.toString(download);
60 public String getMovieDirectory() {
61 return p_movie_directory;
64 public void setMovieDirectory(String dir) {
65 this.p_movie_directory = dir;
69 public boolean isMovieDownload() {
70 return Boolean.valueOf(p_movie_download);
73 public void setMovieDownload(boolean download) {
74 this.p_movie_download = Boolean.toString(download);
78 public String getDbLocation() {
79 return p_nicobrowser_dblocation;
82 public void setDbLocation(String p_nicobrowser_dblocation) {
83 this.p_nicobrowser_dblocation = p_nicobrowser_dblocation;
87 public boolean isDbUse() {
88 return Boolean.valueOf(p_nicobrowser_use);
91 public void setDbUse(boolean use) {
92 this.p_nicobrowser_use = Boolean.toString(use);
96 public String getNicoVideoId() {
97 return p_nicovideo_id;
100 public void setNicoVideoId(String id) {
101 this.p_nicovideo_id = id;
105 public String getNicoVideoPassword() {
106 return p_nicovideo_password;
109 public void setNicoVideoPassword(String password) {
110 this.p_nicovideo_password = password;
114 public String getProxyHost() {
118 public void setProxyHost(String host) {
119 this.p_proxy_host = host;
123 public int getP_proxy_port() {
124 return Integer.parseInt(p_proxy_port);
127 public void setP_proxy_port(int port) {
128 this.p_proxy_port = Integer.toString(port);
132 public boolean isProxyUse() {
133 return Boolean.valueOf(p_proxy_use);
136 public void setProxyUse(boolean use) {
137 this.p_proxy_use = Boolean.toString(use);
140 private String getConfigurationName() {
141 return "inqubus.xml";
144 private String getPrefix() {
148 private Properties() {
149 config = new XMLConfiguration();
150 config.setFileName(getConfigurationName());
153 public void load() throws ConfigurationException {
157 public void save() throws ConfigurationException {
159 final Class<? extends Properties> clazz = this.getClass();
160 final Field[] fields = clazz.getDeclaredFields();
161 final Field[] propertyFields = getPropertyFields(fields);
162 for (Field f : propertyFields) {
163 config.setProperty(getPropertyName(f), getPropertyValue(f));
166 } catch (Exception ex) {
167 throw new ConfigurationException(ex);
171 private Field[] getPropertyFields(Field[] fields) {
172 List<Field> res = new ArrayList<Field>();
173 for (Field f : fields) {
174 if (f.getName().startsWith(getPrefix())) {
178 return res.toArray(new Field[0]);
181 private String getPropertyName(Field field) {
182 return field.getName().replace(getPrefix(), "").replace("_", ".");
185 private String getPropertyValue(Field field) throws IllegalArgumentException, IllegalAccessException {
186 field.setAccessible(true);
187 return (String) field.get(this);
190 public boolean getUseMovieFileLocal() {
195 public boolean getCommentFileLocal() {
200 public boolean getOutputConvert() {
205 public File getOutputFile() {
207 return new File("out/_converted");