1 package yukihane.inqubuss.conifg;
3 import java.lang.reflect.Field;
4 import java.util.ArrayList;
6 import org.apache.commons.configuration.ConfigurationException;
7 import org.apache.commons.configuration.XMLConfiguration;
9 public enum Properties implements Config {
12 private final XMLConfiguration config;
14 private String p_nicovideo_id;
15 /** ニコニコ動画ログインパスワード */
16 private String p_nicovideo_password;
18 private String p_proxy_use;
20 private String p_proxy_host;
22 private String p_proxy_port;
23 /** NicoBrowser情報を参照する */
24 private String p_nicobrowser_use;
25 /** NicoBrowser DB ディレクトリ */
26 private String p_nicobrowser_dblocation;
28 private String p_movie_download;
30 private String p_movie_directory;
32 private String p_comment_download;
33 /** コメントダウンロードディレクトリ */
34 private String p_comment_directory;
35 /** 投稿者コメントをダウンロードする */
36 private String p_ownercomment_download;
37 /** 投稿者コメントダウンロードディレクトリ */
38 private String p_ownercomment_directory;
40 public boolean isOwnerCommentDownload() {
41 return Boolean.valueOf(p_ownercomment_download);
44 public void setOwnerCommentDownload(boolean download) {
45 p_ownercomment_download = Boolean.toString(download);
48 public boolean isCommentDownload() {
49 return Boolean.valueOf(p_comment_download);
52 public void setCommentDownload(boolean download) {
53 p_comment_download = Boolean.toString(download);
56 public String getMovieDirectory() {
57 return p_movie_directory;
60 public void setMovieDirectory(String dir) {
61 this.p_movie_directory = dir;
64 public boolean isMovieDownload() {
65 return Boolean.valueOf(p_movie_download);
68 public void setMovieDownload(boolean download) {
69 this.p_movie_download = Boolean.toString(download);
72 public String getDbLocation() {
73 return p_nicobrowser_dblocation;
76 public void setDbLocation(String p_nicobrowser_dblocation) {
77 this.p_nicobrowser_dblocation = p_nicobrowser_dblocation;
80 public boolean isDbUse() {
81 return Boolean.valueOf(p_nicobrowser_use);
84 public void setDbUse(boolean use) {
85 this.p_nicobrowser_use = Boolean.toString(use);
88 public String getNicoVideoId() {
89 return p_nicovideo_id;
92 public void setNicoVideoId(String id) {
93 this.p_nicovideo_id = id;
96 public String getNicoVideoPassword() {
97 return p_nicovideo_password;
100 public void setNicoVideoPassword(String password) {
101 this.p_nicovideo_password = password;
104 public String getProxyHost() {
108 public void setProxyHost(String host) {
109 this.p_proxy_host = host;
112 public int getP_proxy_port() {
113 return Integer.parseInt(p_proxy_port);
116 public void setP_proxy_port(int port) {
117 this.p_proxy_port = Integer.toString(port);
120 public boolean isProxyUse() {
121 return Boolean.valueOf(p_proxy_use);
124 public void setProxyUse(boolean use) {
125 this.p_proxy_use = Boolean.toString(use);
128 private String getConfigurationName() {
129 return "inqubuss.xml";
132 private String getPrefix() {
136 private Properties() {
137 config = new XMLConfiguration();
138 config.setFileName(getConfigurationName());
141 public void load() throws ConfigurationException {
145 public void save() throws ConfigurationException {
147 final Class<? extends Properties> clazz = this.getClass();
148 final Field[] fields = clazz.getDeclaredFields();
149 final Field[] propertyFields = getPropertyFields(fields);
150 for (Field f : propertyFields) {
151 config.setProperty(getPropertyName(f), getPropertyValue(f));
154 } catch (Exception ex) {
155 throw new ConfigurationException(ex);
159 private Field[] getPropertyFields(Field[] fields) {
160 List<Field> res = new ArrayList<Field>();
161 for (Field f : fields) {
162 if (f.getName().startsWith(getPrefix())) {
166 return res.toArray(new Field[0]);
169 private String getPropertyName(Field field) {
170 return field.getName().replace(getPrefix(), "").replace("_", ".");
173 private String getPropertyValue(Field field) throws IllegalArgumentException, IllegalAccessException {
174 field.setAccessible(true);
175 return (String) field.get(this);