Clover.NET coverage report - Coverage for s2container.net

Coverage timestamp: 2006年5月30日 11:21:29

File Stats: LOC: 175   Methods: 7
NCLOC: 141 Classes: 1
 
Source File Conditionals Statements Methods TOTAL
Seasar.Extension.DataSets\Impl\XlsWriter.cs 50.0% 93.2% 85.7% 83.3%
coverage coverage
1   #region Copyright
2   /*
3   * Copyright 2005 the Seasar Foundation and the Others.
4   *
5   * Licensed under the Apache License, Version 2.0 (the "License");
6   * you may not use this file except in compliance with the License.
7   * You may obtain a copy of the License at
8   *
9   * http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
14   * either express or implied. See the License for the specific language
15   * governing permissions and limitations under the License.
16   */
17   #endregion
18  
19   using System;
20   using System.Data;
21   using System.Data.OleDb;
22   using System.IO;
23   using System.Text;
24   using Seasar.Extension.ADO.Types;
25   using Seasar.Extension.DataSets.Types;
26  
27   namespace Seasar.Extension.DataSets.Impl
28   {
29   public class XlsWriter : IDataWriter
30   {
31   private string fullPath_;
32  
33 2 public XlsWriter(string fullPath)
34   {
35 2 fullPath_ = Path.GetFullPath(fullPath);
36   }
37  
38 0 public string FullPath
39   {
40   get { return fullPath_; }
41   }
42  
43   #region IDataWriter メンバ
44  
45 2 public void Write(DataSet dataSet)
46   {
47 2 string connectonString = string.Format(
48   "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes\"",
49   fullPath_
50   );
51 2 CreateDir();
52 2 if (File.Exists(fullPath_))
53   {
54 0 File.Delete(fullPath_);
55   }
56 2 using (OleDbConnection con = new OleDbConnection(connectonString))
57   {
58 2 if (con.State != ConnectionState.Open)
59   {
60 2 con.Open();
61   }
62  
63 2 foreach (DataTable table in dataSet.Tables)
64   {
65 6 string createTableSql = CreateTableSql(table);
66 6 using (OleDbCommand cmd = new OleDbCommand(createTableSql, con))
67   {
68 6 cmd.ExecuteNonQuery();
69   }
70  
71 6 foreach (DataRow row in table.Rows)
72   {
73 22 string insertSql = CreateInsertSql(table, row);
74 22 using (OleDbCommand cmd = new OleDbCommand(insertSql, con))
75   {
76 22 foreach (DataColumn column in row.Table.Columns)
77   {
78 84 IColumnType columnType = ColumnTypes.GetColumnType(column.DataType);
79 84 object value = columnType.Convert(row[column.ColumnName], null);
80 84 if (value != DBNull.Value)
81   {
82 84 IDbDataParameter param = cmd.CreateParameter();
83 84 param.ParameterName = "@" + column.ColumnName;
84 84 DbType dbType = columnType.GetDbType();
85 84 param.DbType = (dbType == DbType.Binary) ? DbType.String : dbType;
86 84 param.Value = ConvertValue(value);
87 84 cmd.Parameters.Add(param);
88   }
89   }
90 22 cmd.ExecuteNonQuery();
91   }
92   }
93   }
94   }
95   }
96  
97   #endregion
98  
99 6 private string CreateTableSql(DataTable targetTable)
100   {
101 6 StringBuilder sql = new StringBuilder();
102 6 sql.AppendFormat("create table [{0}] (", targetTable.TableName);
103 6 foreach (DataColumn column in targetTable.Columns)
104   {
105 21 sql.AppendFormat(
106   "{0} {1},",
107   column.ColumnName,
108   ColumnTypes.GetColumnType(column.DataType).ToDbTypeString()
109   );
110   }
111 6 if (sql.Length > 0)
112   {
113   // remove last comma
114 6 sql.Length = sql.Length - 1;
115   }
116 6 sql.Append(")");
117 6 return sql.ToString();
118   }
119  
120 22 private string CreateInsertSql(DataTable targetTable, DataRow row)
121   {
122 22 StringBuilder sql = new StringBuilder();
123 22 StringBuilder sqlParam = new StringBuilder();
124 22 sql.AppendFormat("insert into [{0}$] (", targetTable.TableName);
125 22 foreach (DataColumn column in targetTable.Columns)
126   {
127 84 if (row[column] != DBNull.Value)
128   {
129 84 sql.Append(column.ColumnName);
130 84 sql.Append(",");
131 84 sqlParam.Append("?,");
132   }
133   }
134  
135 22 if (sql.Length > 0)
136   {
137   // remove last comma
138 22 sql.Length = sql.Length - 1;
139   }
140 22 if (sqlParam.Length > 0)
141   {
142   // remove last comma
143 22 sqlParam.Length = sqlParam.Length - 1;
144   }
145 22 sql.Append(") VALUES (");
146 22 sql.Append(sqlParam);
147 22 sql.Append(")");
148 22 return sql.ToString();
149   }
150  
151 84 private object ConvertValue(object value)
152   {
153 84 object ret = null;
154 84 if (value.GetType() == ValueTypes.BYTE_ARRAY_TYPE)
155   {
156 0 ret = DataSetConstants.BASE64_FORMAT + Convert.ToBase64String(value as byte[]);
157   }
158   else
159   {
160 84 ret = value;
161   }
162 84 return ret;
163   }
164  
165 2 private void CreateDir()
166   {
167 2 string dir = Path.GetDirectoryName(fullPath_);
168 2 if (!Directory.Exists(dir))
169   {
170 0 Directory.CreateDirectory(dir);
171   }
172   }
173   }
174   }
175