OSDN Git Service

コンフィグ読み書きの仮実装
authoryukihane <yukihane.feather@gmail.com>
Wed, 1 Jun 2011 14:14:35 +0000 (23:14 +0900)
committeryukihane <yukihane.feather@gmail.com>
Mon, 6 Jun 2011 13:25:30 +0000 (22:25 +0900)
frontend/inqubuss.xml [new file with mode: 0644]
frontend/src/yukihane/inqubuss/conifg/Config.java [new file with mode: 0644]
frontend/src/yukihane/inqubuss/conifg/Properties.java [new file with mode: 0644]
frontend/test/yukihane/inqubuss/config/PropertiesTest.java [new file with mode: 0644]

diff --git a/frontend/inqubuss.xml b/frontend/inqubuss.xml
new file mode 100644 (file)
index 0000000..5b720e5
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<inqubuss>\r
+<nicobrowser>\r
+<dblocation>d_loc</dblocation>\r
+</nicobrowser>\r
+</inqubuss>\r
diff --git a/frontend/src/yukihane/inqubuss/conifg/Config.java b/frontend/src/yukihane/inqubuss/conifg/Config.java
new file mode 100644 (file)
index 0000000..704a9b0
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package yukihane.inqubuss.conifg;
+
+/**
+ *
+ * @author yuki
+ */
+public interface Config {
+
+    public boolean isOwnerCommentDownload();
+
+    public boolean isCommentDownload();
+
+    public String getMovieDirectory();
+
+    public boolean isMovieDownload();
+
+    public String getDbLocation();
+
+    public boolean isDbUse();
+
+    public String getNicoVideoId();
+
+    public String getNicoVideoPassword();
+
+    public String getProxyHost();
+
+    public int getP_proxy_port();
+
+    public boolean isProxyUse();
+}
diff --git a/frontend/src/yukihane/inqubuss/conifg/Properties.java b/frontend/src/yukihane/inqubuss/conifg/Properties.java
new file mode 100644 (file)
index 0000000..992cb14
--- /dev/null
@@ -0,0 +1,177 @@
+package yukihane.inqubuss.conifg;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.XMLConfiguration;
+
+public enum Properties implements Config {
+
+    INSTANCE;
+    private final XMLConfiguration config;
+    /** ニコニコ動画ログインID */
+    private String p_nicovideo_id;
+    /** ニコニコ動画ログインパスワード */
+    private String p_nicovideo_password;
+    /** プロキシを使用する */
+    private String p_proxy_use;
+    /** プロキシホスト */
+    private String p_proxy_host;
+    /** プロキシポート */
+    private String p_proxy_port;
+    /** NicoBrowser情報を参照する */
+    private String p_nicobrowser_use;
+    /** NicoBrowser DB ディレクトリ */
+    private String p_nicobrowser_dblocation;
+    /** 動画をダウンロードする */
+    private String p_movie_download;
+    /** 動画ダウンロードディレクトリ */
+    private String p_movie_directory;
+    /** コメントをダウンロードする */
+    private String p_comment_download;
+    /** コメントダウンロードディレクトリ */
+    private String p_comment_directory;
+    /** 投稿者コメントをダウンロードする */
+    private String p_ownercomment_download;
+    /** 投稿者コメントダウンロードディレクトリ */
+    private String p_ownercomment_directory;
+
+    public boolean isOwnerCommentDownload() {
+        return Boolean.valueOf(p_ownercomment_download);
+    }
+
+    public void setOwnerCommentDownload(boolean download) {
+        p_ownercomment_download = Boolean.toString(download);
+    }
+
+    public boolean isCommentDownload() {
+        return Boolean.valueOf(p_comment_download);
+    }
+
+    public void setCommentDownload(boolean download) {
+        p_comment_download = Boolean.toString(download);
+    }
+
+    public String getMovieDirectory() {
+        return p_movie_directory;
+    }
+
+    public void setMovieDirectory(String dir) {
+        this.p_movie_directory = dir;
+    }
+
+    public boolean isMovieDownload() {
+        return Boolean.valueOf(p_movie_download);
+    }
+
+    public void setMovieDownload(boolean download) {
+        this.p_movie_download = Boolean.toString(download);
+    }
+
+    public String getDbLocation() {
+        return p_nicobrowser_dblocation;
+    }
+
+    public void setDbLocation(String p_nicobrowser_dblocation) {
+        this.p_nicobrowser_dblocation = p_nicobrowser_dblocation;
+    }
+
+    public boolean isDbUse() {
+        return Boolean.valueOf(p_nicobrowser_use);
+    }
+
+    public void setDbUse(boolean use) {
+        this.p_nicobrowser_use = Boolean.toString(use);
+    }
+
+    public String getNicoVideoId() {
+        return p_nicovideo_id;
+    }
+
+    public void setNicoVideoId(String id) {
+        this.p_nicovideo_id = id;
+    }
+
+    public String getNicoVideoPassword() {
+        return p_nicovideo_password;
+    }
+
+    public void setNicoVideoPassword(String password) {
+        this.p_nicovideo_password = password;
+    }
+
+    public String getProxyHost() {
+        return p_proxy_host;
+    }
+
+    public void setProxyHost(String host) {
+        this.p_proxy_host = host;
+    }
+
+    public int getP_proxy_port() {
+        return Integer.parseInt(p_proxy_port);
+    }
+
+    public void setP_proxy_port(int port) {
+        this.p_proxy_port = Integer.toString(port);
+    }
+
+    public boolean isProxyUse() {
+        return Boolean.valueOf(p_proxy_use);
+    }
+
+    public void setProxyUse(boolean use) {
+        this.p_proxy_use = Boolean.toString(use);
+    }
+
+    private String getConfigurationName() {
+        return "inqubuss.xml";
+    }
+
+    private String getPrefix() {
+        return "p_";
+    }
+
+    private Properties() {
+        config = new XMLConfiguration();
+        config.setFileName(getConfigurationName());
+    }
+
+    public void load() throws ConfigurationException {
+        config.load();
+    }
+
+    public void save() throws ConfigurationException {
+        try {
+            final Class<? extends Properties> clazz = this.getClass();
+            final Field[] fields = clazz.getDeclaredFields();
+            final Field[] propertyFields = getPropertyFields(fields);
+            for (Field f : propertyFields) {
+                config.setProperty(getPropertyName(f), getPropertyValue(f));
+            }
+            config.save();
+        } catch (Exception ex) {
+            throw new ConfigurationException(ex);
+        }
+    }
+
+    private Field[] getPropertyFields(Field[] fields) {
+        List<Field> res = new ArrayList<Field>();
+        for (Field f : fields) {
+            if (f.getName().startsWith(getPrefix())) {
+                res.add(f);
+            }
+        }
+        return res.toArray(new Field[0]);
+    }
+
+    private String getPropertyName(Field field) {
+        return field.getName().replace(getPrefix(), "").replace("_", ".");
+    }
+
+    private String getPropertyValue(Field field) throws IllegalArgumentException, IllegalAccessException {
+        field.setAccessible(true);
+        return (String) field.get(this);
+    }
+}
diff --git a/frontend/test/yukihane/inqubuss/config/PropertiesTest.java b/frontend/test/yukihane/inqubuss/config/PropertiesTest.java
new file mode 100644 (file)
index 0000000..af40005
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package yukihane.inqubuss.config;
+
+import yukihane.inqubuss.conifg.Properties;
+import java.lang.reflect.Field;
+import org.apache.commons.configuration.ConfigurationException;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author yuki
+ */
+public class PropertiesTest {
+
+    @Test
+    public void test() throws ConfigurationException, IllegalArgumentException, IllegalAccessException {
+        Properties p = Properties.INSTANCE;
+        p.load();
+        Field[] fields = p.getClass().getDeclaredFields();
+        for(Field f: fields){
+            f.setAccessible(true);
+            System.out.println(f.get(p));
+        }
+    }
+    @Test
+    public void test2() throws ConfigurationException, IllegalArgumentException, IllegalAccessException {
+        Properties p = Properties.INSTANCE;
+        p.load();
+        p.setDbLocation("d_loc");
+        p.save();
+        Field[] fields = p.getClass().getDeclaredFields();
+        for(Field f: fields){
+            f.setAccessible(true);
+            System.out.println(f.get(p));
+        }
+    }
+}