OSDN Git Service

version情報を管理するクラスの作成
authorU-nishio-PC8\nishio <spark_xp@users.sourceforge.jp>
Sun, 28 Aug 2011 08:03:48 +0000 (17:03 +0900)
committerU-nishio-PC8\nishio <spark_xp@users.sourceforge.jp>
Sun, 28 Aug 2011 08:03:48 +0000 (17:03 +0900)
src/twitter/manage/ClientVersionManager.java [new file with mode: 0644]
src/twitter/manage/VersionInfo.java [new file with mode: 0644]

diff --git a/src/twitter/manage/ClientVersionManager.java b/src/twitter/manage/ClientVersionManager.java
new file mode 100644 (file)
index 0000000..290c3a6
--- /dev/null
@@ -0,0 +1,174 @@
+package twitter.manage;\r
+\r
+import java.io.BufferedReader;\r
+import java.io.IOException;\r
+import java.io.InputStreamReader;\r
+import java.io.StringReader;\r
+import java.net.MalformedURLException;\r
+import java.net.URL;\r
+import java.net.URLConnection;\r
+import java.text.ParseException;\r
+import java.text.SimpleDateFormat;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import javax.xml.parsers.DocumentBuilder;\r
+import javax.xml.parsers.DocumentBuilderFactory;\r
+\r
+import org.w3c.dom.Document;\r
+import org.w3c.dom.Element;\r
+import org.w3c.dom.NodeList;\r
+import org.xml.sax.InputSource;\r
+import org.xml.sax.SAXParseException;\r
+\r
+\r
+\r
+/**\r
+ * バージョン管理\r
+ * @author nishio\r
+ *\r
+ */\r
+public class ClientVersionManager {\r
+       public static final String currentVersion = "0.6";\r
+       public static final String nishioTweetManagerURL = "http://densan-labs.net/software/ntm/";\r
+       private static final String characterSet = "UTF-8";\r
+       private static final String latestInformationURL = "http://git.densan-labs.net/ntm/latest.txt";\r
+\r
+       //xml tag\r
+       private static final String versionTag = "version";\r
+       private static final String logTag = "log";\r
+\r
+       //for singleton\r
+       private static ClientVersionManager versionManager = null;\r
+\r
+       /**\r
+        * singleton\r
+        */\r
+       private ClientVersionManager() {\r
+\r
+       }\r
+\r
+       /**\r
+        * インスタンス取得\r
+        * @return\r
+        */\r
+       public static ClientVersionManager getInstance() {\r
+               if( versionManager == null ) {\r
+                       versionManager = new ClientVersionManager();\r
+               }\r
+               return versionManager;\r
+       }\r
+\r
+       /**\r
+        * currentVersionを取得します。\r
+        * @return currentVersion\r
+        */\r
+       public String getCurrentversion() {\r
+           return currentVersion;\r
+       }\r
+\r
+       /**\r
+        * 最新情報を取得\r
+        * @return\r
+        */\r
+       private String getLatestInformation() {\r
+               StringBuffer buf = new StringBuffer("");\r
+               try {\r
+                       URL url = new URL(latestInformationURL);\r
+                       URLConnection conn = url.openConnection();\r
+                       BufferedReader reader = new BufferedReader(\r
+                                       new InputStreamReader( conn.getInputStream(), characterSet));\r
+                       String line = null;\r
+                       while( (line = reader.readLine()) != null ) {\r
+                               buf.append(line + "\n");\r
+                       }\r
+               } catch (MalformedURLException e) {\r
+                       e.printStackTrace();\r
+               } catch (IOException e) {\r
+                       e.printStackTrace();\r
+               }\r
+               return buf.toString();\r
+       }\r
+\r
+       /**\r
+        * クライアントの最新バージョンの情報を取得する\r
+        * @return\r
+        */\r
+       public static VersionInfo getLatestVersionInfo() {\r
+               ClientVersionManager manager = ClientVersionManager.getInstance();\r
+               String log = manager.getLatestInformation();\r
+               VersionInfo info = null;\r
+               try {\r
+                       info = manager.XMLToVersionInfo(log);\r
+               } catch (SAXParseException e) {\r
+                       e.printStackTrace();\r
+               }\r
+               return info;\r
+       }\r
+\r
+       /**\r
+        * nishioTweetManagerURLを取得します。\r
+        * @return nishioTweetManagerURL\r
+        */\r
+       public String getNishiotweetmanagerurl() {\r
+           return nishioTweetManagerURL;\r
+       }\r
+\r
+       /**\r
+        * 指定されたエレメントから子要素の内容を取得\r
+        *\r
+        * @param element\r
+        *            指定エレメント\r
+        * @param tagName\r
+        *            指定タグ名\r
+        * @return 取得した内容\r
+        */\r
+       private static String getChildren(Element element, String tagName) {\r
+               NodeList list = element.getElementsByTagName(tagName);\r
+               Element cElement = (Element) list.item(0);\r
+               if (cElement == null || cElement.getFirstChild() == null) {\r
+                       return null;\r
+               }\r
+               return cElement.getFirstChild().getNodeValue();\r
+       }\r
+\r
+       /**\r
+        * latest info XMLからデータ取得\r
+        *\r
+        * @param xmlData\r
+        * @return\r
+        * @throws SAXParseException\r
+        */\r
+       public VersionInfo XMLToVersionInfo(String xmlData)\r
+                       throws SAXParseException {\r
+               if (xmlData == null) {\r
+                       return null;\r
+               }\r
+               try {\r
+                       // ドキュメントビルダーファクトリを生成\r
+                       DocumentBuilderFactory dbfactory = DocumentBuilderFactory\r
+                                       .newInstance();\r
+                       // ドキュメントビルダーを生成\r
+                       DocumentBuilder builder = dbfactory.newDocumentBuilder();\r
+                       // パースを実行してDocumentオブジェクトを取得\r
+                       Document doc = null;\r
+                       // 入力ストリーム作成\r
+                       StringReader sr = new StringReader(xmlData);\r
+                       InputSource is = new InputSource(sr);\r
+\r
+                       doc = builder.parse(is);\r
+\r
+                       // ルート要素になっている子ノードを取得\r
+                       Element root = doc.getDocumentElement();\r
+                       String version = getChildren(root, versionTag);\r
+                       String log = getChildren(root, logTag);\r
+\r
+                       return new VersionInfo(version, log);\r
+               } catch (SAXParseException e) {\r
+                       throw e;\r
+               } catch (Exception e) {\r
+                       e.printStackTrace();\r
+               }\r
+               return null;\r
+       }\r
+}\r
diff --git a/src/twitter/manage/VersionInfo.java b/src/twitter/manage/VersionInfo.java
new file mode 100644 (file)
index 0000000..e7a25cd
--- /dev/null
@@ -0,0 +1,37 @@
+package twitter.manage;\r
+\r
+/**\r
+ * Version情報\r
+ * @author nishio\r
+ *\r
+ */\r
+public class VersionInfo{\r
+       private String version = null;\r
+       private String log = null;\r
+\r
+       public VersionInfo(String version, String log) {\r
+               this.version = version;\r
+               this.log = log;\r
+       }\r
+\r
+       public String getVersion() {\r
+               return this.version;\r
+       }\r
+\r
+       public String getLog() {\r
+               return this.log;\r
+       }\r
+\r
+       public void setVersion(String version) {\r
+               this.version = version;\r
+       }\r
+\r
+       public void setLog(String log) {\r
+               this.log = log;\r
+       }\r
+\r
+       @Override\r
+       public String toString() {\r
+               return "VersionInfo [version=" + version + ", log=" + log + "]";\r
+       }\r
+}
\ No newline at end of file