OSDN Git Service

入力パネルの起動時の初期状態
[coroid/inqubus.git] / frontend / src / yukihane / inqubus / conifg / Properties.java
1 package yukihane.inqubus.conifg;
2
3 import java.io.File;
4 import java.lang.reflect.Field;
5 import java.util.ArrayList;
6 import java.util.List;
7 import org.apache.commons.configuration.ConfigurationException;
8 import org.apache.commons.configuration.XMLConfiguration;
9
10 public enum Properties implements Config {
11
12     INSTANCE;
13     private final XMLConfiguration config;
14     /** ニコニコ動画ログインID */
15     private String p_nicovideo_id;
16     /** ニコニコ動画ログインパスワード */
17     private String p_nicovideo_password;
18     /** プロキシを使用する */
19     private String p_proxy_use;
20     /** プロキシホスト */
21     private String p_proxy_host;
22     /** プロキシポート */
23     private String p_proxy_port;
24     /** NicoBrowser情報を参照する */
25     private String p_nicobrowser_use;
26     /** NicoBrowser DB ディレクトリ */
27     private String p_nicobrowser_dblocation;
28     /** 動画をダウンロードする */
29     private String p_movie_download;
30     /** 動画ダウンロードディレクトリ */
31     private String p_movie_directory;
32     /** コメントをダウンロードする */
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;
40
41     @Override
42     public boolean isOwnerCommentDownload() {
43         return Boolean.valueOf(p_ownercomment_download);
44     }
45
46     public void setOwnerCommentDownload(boolean download) {
47         p_ownercomment_download = Boolean.toString(download);
48     }
49
50     @Override
51     public boolean isCommentDownload() {
52         return Boolean.valueOf(p_comment_download);
53     }
54
55     public void setCommentDownload(boolean download) {
56         p_comment_download = Boolean.toString(download);
57     }
58
59     @Override
60     public String getMovieDirectory() {
61         return p_movie_directory;
62     }
63
64     public void setMovieDirectory(String dir) {
65         this.p_movie_directory = dir;
66     }
67
68     @Override
69     public boolean isMovieDownload() {
70         return Boolean.valueOf(p_movie_download);
71     }
72
73     public void setMovieDownload(boolean download) {
74         this.p_movie_download = Boolean.toString(download);
75     }
76
77     @Override
78     public String getDbLocation() {
79         return p_nicobrowser_dblocation;
80     }
81
82     public void setDbLocation(String p_nicobrowser_dblocation) {
83         this.p_nicobrowser_dblocation = p_nicobrowser_dblocation;
84     }
85
86     @Override
87     public boolean isDbUse() {
88         return Boolean.valueOf(p_nicobrowser_use);
89     }
90
91     public void setDbUse(boolean use) {
92         this.p_nicobrowser_use = Boolean.toString(use);
93     }
94
95     @Override
96     public String getNicoVideoId() {
97         return p_nicovideo_id;
98     }
99
100     public void setNicoVideoId(String id) {
101         this.p_nicovideo_id = id;
102     }
103
104     @Override
105     public String getNicoVideoPassword() {
106         return p_nicovideo_password;
107     }
108
109     public void setNicoVideoPassword(String password) {
110         this.p_nicovideo_password = password;
111     }
112
113     @Override
114     public String getProxyHost() {
115         return p_proxy_host;
116     }
117
118     public void setProxyHost(String host) {
119         this.p_proxy_host = host;
120     }
121
122     @Override
123     public int getP_proxy_port() {
124         return Integer.parseInt(p_proxy_port);
125     }
126
127     public void setP_proxy_port(int port) {
128         this.p_proxy_port = Integer.toString(port);
129     }
130
131     @Override
132     public boolean isProxyUse() {
133         return Boolean.valueOf(p_proxy_use);
134     }
135
136     public void setProxyUse(boolean use) {
137         this.p_proxy_use = Boolean.toString(use);
138     }
139
140     private String getConfigurationName() {
141         return "inqubus.xml";
142     }
143
144     private String getPrefix() {
145         return "p_";
146     }
147
148     private Properties() {
149         config = new XMLConfiguration();
150         config.setFileName(getConfigurationName());
151     }
152
153     public void load() throws ConfigurationException {
154         config.load();
155     }
156
157     public void save() throws ConfigurationException {
158         try {
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));
164             }
165             config.save();
166         } catch (Exception ex) {
167             throw new ConfigurationException(ex);
168         }
169     }
170
171     private Field[] getPropertyFields(Field[] fields) {
172         List<Field> res = new ArrayList<Field>();
173         for (Field f : fields) {
174             if (f.getName().startsWith(getPrefix())) {
175                 res.add(f);
176             }
177         }
178         return res.toArray(new Field[0]);
179     }
180
181     private String getPropertyName(Field field) {
182         return field.getName().replace(getPrefix(), "").replace("_", ".");
183     }
184
185     private String getPropertyValue(Field field) throws IllegalArgumentException, IllegalAccessException {
186         field.setAccessible(true);
187         return (String) field.get(this);
188     }
189
190     public boolean getUseMovieFileLocal() {
191         // TODO
192         return false;
193     }
194
195     public boolean getCommentFileLocal() {
196         // TODO
197         return false;
198     }
199
200     public boolean getOutputConvert() {
201         // TODO
202         return true;
203     }
204
205     public File getOutputFile() {
206         // TODO
207         return new File("out/_converted");
208     }
209 }