diff --git a/Application.cs b/Application.cs index 4758ab8..e05686c 100644 --- a/Application.cs +++ b/Application.cs @@ -25,14 +25,28 @@ public Application() /// public void Run(ConfigurationManager conf) { + if (conf.addressFiles.Count == 0) + { + MyLogger.Error("アドレス帳ファイルが指定されていません。"); + return; + } + foreach (var filepath in conf.addressFiles) { + // 印刷を実行します。 Print(filepath, conf.dryrun); } } + /// + /// 印刷を実行します。 + /// + /// アドレス帳ファイル + /// private void Print(string filepath, bool dryrun) { + MyLogger.Info("テンプレート [", filepath, "] を印字中..."); + // ドキュメントオブジェクトを初期化 var document = new BrotherPrinterDocument(); @@ -48,30 +62,44 @@ private void Print(string filepath, bool dryrun) { var line = reader.ReadLine(); if (line == null) + { // EOF break; + } if (line == "") + { // 無視 continue; + } if (line[0] == '#') + { // 無視 continue; + } + // 行を分解 var fields = ParseAddressLine(line); if (fields == null) + { // 無視 + MyLogger.Error("次の行は無視されました。[", line, "]"); continue; + } if (dryrun) + { // 印刷しない continue; + } // 印刷 + MyLogger.Info("(印字中)"); document.Print(fields); } } finally { + MyLogger.Info("ドキュメントをクローズしています..."); document.Close(); } } @@ -79,23 +107,42 @@ private void Print(string filepath, bool dryrun) /// /// アドレス帳の行をパースします。 /// + /// 行 + /// ディクショナリー private static Dictionary ParseAddressLine(string line) { var columns = line.Split('\t'); + // 郵便番号 var postCode = StringUtility.At(columns, 0); if (postCode == "") + { + // フォーマットが無効 return null; + } + // 住所 var address = StringUtility.At(columns, 1); if (address == "") + { + // フォーマットが無効 return null; + } + // お名前 var name = StringUtility.At(columns, 2); + if (name == "") + { + // フォーマットが無効 + return null; + } + // 電話番号(もしあれば) var phoneNumber = StringUtility.At(columns, 3); + // 製品名(もしあれば) var productName = StringUtility.At(columns, 4); + // サイズ(もしあれば) var size = StringUtility.At(columns, 5); @@ -107,8 +154,7 @@ private static Dictionary ParseAddressLine(string line) // 配送会社向け連絡先 fields["PhoneText"] = StringUtility.FormatPhoneNumber(phoneNumber); - Console.WriteLine("[DEBUG] 住所: [{0}], 氏名: [{1}], 電話: [{2}]", - fields["AddressText"], fields["NameText"], fields["PhoneText"]); + MyLogger.Info("住所: [", fields["AddressText"], "], 氏名: [", fields["NameText"], "], 電話: [", fields["PhoneText"], "]"); return fields; } diff --git a/PtouchPrintSender.csproj b/PtouchPrintSender.csproj index 64e0224..f5df3fb 100644 --- a/PtouchPrintSender.csproj +++ b/PtouchPrintSender.csproj @@ -39,13 +39,14 @@ 4 - AnyCPU + x86 none true bin\Release\ TRACE prompt 4 + true @@ -61,6 +62,7 @@ + @@ -68,17 +70,6 @@ - - - {90359D74-B7D9-467F-B938-3883F4CAB582} - 1 - 3 - 0 - tlbimp - False - True - - False @@ -91,5 +82,16 @@ false + + + {90359D74-B7D9-467F-B938-3883F4CAB582} + 1 + 3 + 0 + tlbimp + False + True + + \ No newline at end of file