OSDN Git Service

Merge branch 'master' of ssh://www.deister.jp/mnt/hdb1/git/hayashi
[hayashilib/hayashi.git] / src / jp / co / areaweb / tools / csv / CsvRecord.java
index 9b48956..f6f7b9b 100644 (file)
-package jp.co.areaweb.tools.csv;
-import java.util.*;
-
-/**
- * CSVファイルの1行分のレコードを表す.<br/>
- * 1行は、Stringオブジェクトのコレクションとして表現する.<br/>
- * このクラスは通常,CsvFileクラスとセットで利用します.<br/>
- * 利用方法につては、CsvFileクラスのコメントを参照してください。<br/>
- *
- * @author y_hayashi
- * @version v2.17      2010/01/24
- * @see jp.co.areaweb.tools.csv.CsvFile
- * @since 2005/06/01
- */
-@SuppressWarnings("serial")
-public class CsvRecord extends LinkedList<String>
-{
-       /**
-        * lineで示された文字列を、CSVレコードとして構文解析を行い、自身に取り込む.
-        * 取り込まれたセル文字列は、自信(LinkedList)のアイテムとして格納されます.
-        * 格納順序は、左から順に格納される.
-        * v2.17-2010/01/24より、ダブルクォーテーションで囲まれたセルを処理できるように変更しました。
-        * 自信のアイテムとして格納するときに、前後のダブルクォーテーションは削除されます。
-        * 
-        * @param line  CSVレコード解析を行う文字列行(つまり、CSVの1ライン)
-        */
-       public void analizeRecord(String line) {
-               this.analizeRecord(line, null);
-       }
-
-       /**
-        * lineで示された文字列を、CSVレコードとして構文解析を行い、自身に取り込む.
-        * 取り込まれたセル文字列は、自信(LinkedList)のアイテムとして格納されます.
-        * 格納順序は、左から順に格納される.
-        * v2.17-2010/01/24より、ダブルクォーテーションで囲まれたセルを処理できるように変更しました。
-        * 自信のアイテムとして格納するときに、前後のダブルクォーテーションは削除されます。
-        * 
-        * @param line  CSVレコード解析を行う文字列行(つまり、CSVの1ライン)
-        * @param split 区切り記号。nullの時は「カンマ(,)」が使われる。
-        */
-       public void analizeRecord(String line, String split) {
-               this.clear();
-               if (split == null) {
-                       split = ",";
-               }
-               boolean append = false;
-               boolean sss = false;            // ダブルクォーテーション内かどうか
-               StringBuffer sbuf = null;
-               for (StringTokenizer st = new StringTokenizer(line, split + "\"", true); st.hasMoreTokens(); ) {
-                       String token = st.nextToken();
-                       if (token.equals("\"")) {
-                               if (sss) {
-                                       // ダブルクォーテーションEND
-                                       this.add(sbuf.toString());
-                                       append = true;
-                                       sss = false;
-                               }
-                               else {
-                                       // ダブルクォーテーションSTART
-                                       sbuf = new StringBuffer("");
-                                       sss = true;
-                               }
-                       }
-                       else if (token.equals(split)) {
-                               if (sss) {
-                                       sbuf.append(token);
-                               }
-                               else {
-                                       if (append == false) {
-                                               this.add("");
-                                       }
-                                       append = false;
-                               }
-                       }
-                       else {
-                               if (sss) {
-                                       sbuf.append(token);
-                               }
-                               else {
-                                       this.add(token.trim());
-                                       append = true;
-                               }
-                       }
-               }
-               if (append == false) {
-                       this.add("");
-               }
-       }
-       
-       /**
-        * レコードの内容をCSV形式の文字列にして返す.
-        * 各項目はダブルクォーテーション(")で囲まれます。
-        * 各項目間は、カンマ(,)で区切られます。
-        * 
-        * @return このオブジェクトをCSVの1ライン形式として返します。
-        */
-       public String toString() {
-               return this.toString(null);
-       }
-
-       /**
-        * レコードの内容をCSV形式の文字列にして返す.
-        * 各項目はダブルクォーテーション(")で囲まれます。
-        * 
-        * @param split 区切り記号。nullの時は「カンマ(,)」が使われる。
-        * @return このオブジェクトをCSVの1ライン形式として返します。
-        */
-       public String toString(String split) {
-               StringBuffer ret = new StringBuffer();
-               boolean top = true;
-               for (String col : this) {
-                       if (top) {
-                               top = false;
-                       }
-                       else {
-                               ret.append(",");
-                       }
-                       ret.append("\""+ col +"\"");
-               }
-               return ret.toString();
-       }
-}
+package jp.co.areaweb.tools.csv;\r
+import java.util.*;\r
+\r
+/**\r
+ * CSVファイルの1行分のレコードを表す.<br/>\r
+ * 1行は、Stringオブジェクトのコレクションとして表現する.<br/>\r
+ * このクラスは通常,CsvFileクラスとセットで利用します.<br/>\r
+ * 利用方法につては、CsvFileクラスのコメントを参照してください。<br/>\r
+ *\r
+ * @author y_hayashi\r
+ * @version v2.17      2010/01/24\r
+ * @see jp.co.areaweb.tools.csv.CsvFile\r
+ * @since 2005/06/01\r
+ */\r
+@SuppressWarnings("serial")\r
+public class CsvRecord extends LinkedList<String>\r
+{\r
+       /**\r
+        * lineで示された文字列を、CSVレコードとして構文解析を行い、自身に取り込む.\r
+        * 取り込まれたセル文字列は、自信(LinkedList)のアイテムとして格納されます.\r
+        * 格納順序は、左から順に格納される.\r
+        * v2.17-2010/01/24より、ダブルクォーテーションで囲まれたセルを処理できるように変更しました。\r
+        * 自信のアイテムとして格納するときに、前後のダブルクォーテーションは削除されます。\r
+        * \r
+        * @param line  CSVレコード解析を行う文字列行(つまり、CSVの1ライン)\r
+        */\r
+       public void analizeRecord(String line) {\r
+               this.analizeRecord(line, null);\r
+       }\r
+\r
+       /**\r
+        * lineで示された文字列を、CSVレコードとして構文解析を行い、自身に取り込む.\r
+        * 取り込まれたセル文字列は、自信(LinkedList)のアイテムとして格納されます.\r
+        * 格納順序は、左から順に格納される.\r
+        * v2.17-2010/01/24より、ダブルクォーテーションで囲まれたセルを処理できるように変更しました。\r
+        * 自信のアイテムとして格納するときに、前後のダブルクォーテーションは削除されます。\r
+        * \r
+        * @param line  CSVレコード解析を行う文字列行(つまり、CSVの1ライン)\r
+        * @param split 区切り記号。nullの時は「カンマ(,)」が使われる。\r
+        */\r
+       public void analizeRecord(String line, String split) {\r
+               this.clear();\r
+               if (split == null) {\r
+                       split = ",";\r
+               }\r
+               boolean append = false;\r
+               boolean sss = false;            // ダブルクォーテーション内かどうか\r
+               StringBuffer sbuf = null;\r
+               for (StringTokenizer st = new StringTokenizer(line, split + "\"", true); st.hasMoreTokens(); ) {\r
+                       String token = st.nextToken();\r
+                       if (token.equals("\"")) {\r
+                               if (sss) {\r
+                                       // ダブルクォーテーションEND\r
+                                       this.add(sbuf.toString());\r
+                                       append = true;\r
+                                       sss = false;\r
+                               }\r
+                               else {\r
+                                       // ダブルクォーテーションSTART\r
+                                       sbuf = new StringBuffer("");\r
+                                       sss = true;\r
+                               }\r
+                       }\r
+                       else if (token.equals(split)) {\r
+                               if (sss) {\r
+                                       sbuf.append(token);\r
+                               }\r
+                               else {\r
+                                       if (append == false) {\r
+                                               this.add("");\r
+                                       }\r
+                                       append = false;\r
+                               }\r
+                       }\r
+                       else {\r
+                               if (sss) {\r
+                                       sbuf.append(token);\r
+                               }\r
+                               else {\r
+                                       this.add(token.trim());\r
+                                       append = true;\r
+                               }\r
+                       }\r
+               }\r
+               if (append == false) {\r
+                       this.add("");\r
+               }\r
+       }\r
+       \r
+       /**\r
+        * レコードの内容をCSV形式の文字列にして返す.\r
+        * 各項目はダブルクォーテーション(")で囲まれます。\r
+        * 各項目間は、カンマ(,)で区切られます。\r
+        * \r
+        * @return このオブジェクトをCSVの1ライン形式として返します。\r
+        */\r
+       public String toString() {\r
+               return this.toString(null);\r
+       }\r
+\r
+       /**\r
+        * レコードの内容をCSV形式の文字列にして返す.\r
+        * 各項目はダブルクォーテーション(")で囲まれます。\r
+        * \r
+        * @param split 区切り記号。nullの時は「カンマ(,)」が使われる。\r
+        * @return このオブジェクトをCSVの1ライン形式として返します。\r
+        */\r
+       public String toString(String split) {\r
+               StringBuffer ret = new StringBuffer();\r
+               boolean top = true;\r
+               for (String col : this) {\r
+                       if (top) {\r
+                               top = false;\r
+                       }\r
+                       else {\r
+                               ret.append(",");\r
+                       }\r
+                       ret.append("\""+ col +"\"");\r
+               }\r
+               return ret.toString();\r
+       }\r
+}\r