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