Commit c6d00bcc authored by tsuji's avatar tsuji

・例外処理を追加

・例外処理の検証で発見した不具合を修正
parent 0a6b9a61
......@@ -63,7 +63,10 @@ namespace CSRender
workBox.Text = dropFiles[0];
workBox.Focus();
workBox.Select(this.workBox.Text.Length, 0);
if (!Directory.Exists(System.IO.Path.Combine(workBox.Text, "report")))
{
Directory.CreateDirectory(System.IO.Path.Combine(workBox.Text, "report"));
}
}
private void ReportBox_Drop(object sender, System.Windows.DragEventArgs e)
......@@ -125,6 +128,10 @@ namespace CSRender
}
//共通部分
workBox.Text = selectFile.FileName;
if(!Directory.Exists(System.IO.Path.Combine(selectFile.FileName, "report")))
{
Directory.CreateDirectory(System.IO.Path.Combine(selectFile.FileName, "report"));
}
//reportBox.Text = System.IO.Path.Combine(selectFile.FileName, "report") + @"\";
}
......@@ -187,10 +194,11 @@ namespace CSRender
directoryCount = reportBox.Text.Split(char.Parse(@"\")).Length - 1;//入力文字列がファイル名のみかディレクトリも含むか
if (directoryCount == 0)//ファイル名のみならば作業ディレクトリのreportフォルダに出力
{
reportBox.Text = NameCalibration(reportBox.Text);
reportBox.Text = System.IO.Path.Combine(workBox.Text, "report", reportBox.Text);
}
pdfReportPath = reportBox.Text.Substring(0, reportBox.Text.LastIndexOf(@"\"));//メニュー入力から出力パスを取得
pdfReportName = reportBox.Text.Substring(reportBox.Text.LastIndexOf(@"\"));//メニュー入力から出力パスを取得
pdfReportName = reportBox.Text.Substring(reportBox.Text.LastIndexOf(@"\"));//メニュー入力からレポートファイル名を取得
if (!System.IO.Path.IsPathRooted(pdfReportPath))//指定したパス文字列にルートが含まれているかどうか
{
pdfReportPath = System.IO.Path.Combine(workBox.Text, "report", pdfReportPath);//含まれていなければ作業フォルダのreportフォルダに出力
......@@ -200,6 +208,10 @@ namespace CSRender
Directory.CreateDirectory(pdfReportPath);//なければ作成
}
pdfReportPath = System.IO.Path.GetFullPath(pdfReportPath);//フルパスを取得
//レポートファイル名に不正文字が使用されいないかチェック
pdfReportName = NameCalibration(pdfReportName);
if (pdfReportName.Length < 4 || pdfReportName.Substring(pdfReportName.Length - 4) != ".pdf")//入力に拡張子がついているか
{
pdfReportName += ".pdf";
......@@ -209,5 +221,25 @@ namespace CSRender
}
return reportFlag;
}
}
//レポート名に使用不可の文字が含まれている場合の処理
private string NameCalibration(string inFileName)
{
string[] charsToRemove = new string[] { "/", ":", "*", "?", "<", ">", "|" };
char[] charsTocheck = new char[] { '/', ':', '*', '?', '<', '>', '|' };
if (inFileName.IndexOfAny(charsTocheck) >= 0)
{
foreach (var allNg in charsToRemove)
{
inFileName = inFileName.Replace(allNg, string.Empty);
}
ResultConsole.Text += " 検版レポート名に使用できない文字が含まれていたため、自動修正しました。";
ResultConsole.Text += "\r\n\r\n";
DoEvents();
}
return inFileName;
}
}
}
......@@ -132,7 +132,7 @@ namespace CSRender
if (!Directory.Exists(workBox.Text) && !File.Exists(workBox.Text))
{
CustomMsgBox.Show(mainWindow, "指定された作業フォルダが存在しません。" +
"\nもう一度設定してください。", "The specified reference file or folder does not exist", MessageBoxButton.OK, MessageBoxImage.Information);
"\nもう一度設定してください。", "The work space folder does not exist", MessageBoxButton.OK, MessageBoxImage.Information);
ResultConsole.Text += " 指定された作業フォルダを発見できませんでした\r\n";
ResultConsole.Text += "<TIFF変換中止>\r\n";
workBox.Text = "";
......@@ -140,6 +140,26 @@ namespace CSRender
Properties.Settings.Default.Save();
return;
}
string workLogPath = System.IO.Path.Combine(workBox.Text, "report");
bool reportFlag = false;
try
{
//検版レポートの入力チェック
reportFlag = checkReportPath();
}
catch (Exception ex)
{
CustomMsgBox.Show(mainWindow, ex.Message + "\r\nレポート名を初期化しました。", "例外が発生しました", MessageBoxButton.OK, MessageBoxImage.Warning);
//ログ記述
DateTime faileTIme = DateTime.Now;
string logText = "[" + faileTIme + "]" + Environment.NewLine;
logText += "例外の生じた処理:レポート名の確認" + Environment.NewLine;
logText += ex.Message + "\n" + ex.StackTrace + Environment.NewLine;
File.AppendAllText(System.IO.Path.Combine(workLogPath, "CSRender.log"), logText);
reportBox.Text = "";
//referenceErrorFlag = true;
}
//検版パラメータの取得
string shiftPixel = PositionBox.Text;
......@@ -170,8 +190,22 @@ namespace CSRender
Directory.CreateDirectory(targetTIFFPath);//新規でTIFF用フォルダを作成
//CSRenderの実行
string targetTIFFResult =
try
{
string targetTIFFResult =
OutputTIFF.runCSRender(ResolutionBox.Text, "TIFF", pageFlag, selectedPage, targetBox.Text, targetTIFFPath);
}
catch (Exception ex)
{
CustomMsgBox.Show(mainWindow, ex.Message, "例外が発生しました", MessageBoxButton.OK, MessageBoxImage.Warning);
//ログ記述
DateTime faileTIme = DateTime.Now;
string logText = "[" + faileTIme + "]" + Environment.NewLine;
logText += "例外の生じた処理:対象PDFのTIFF画像生成" + Environment.NewLine;
logText += ex.Message + "\n" + ex.StackTrace + Environment.NewLine;
File.AppendAllText(System.IO.Path.Combine(workLogPath, "CSRender.log"), logText);
//referenceErrorFlag = true;
}
ResultConsole.Text += " リファレンスファイルをTIFF画像に変換中\r\n";
DoEvents();
......@@ -185,31 +219,85 @@ namespace CSRender
Directory.CreateDirectory(referenceTIFFPath);//新規でTIFF用フォルダを作成
//CSRenderの実行
string referenceTIFFResult =
try
{
string referenceTIFFResult =
OutputTIFF.runCSRender(ResolutionBox.Text, "TIFF", pageFlag, selectedPage, referenceBox.Text, referenceTIFFPath);
}
catch (Exception ex)
{
CustomMsgBox.Show(mainWindow, ex.Message, "例外が発生しました", MessageBoxButton.OK, MessageBoxImage.Warning);
//ログ記述
DateTime faileTIme = DateTime.Now;
string logText = "[" + faileTIme + "]" + Environment.NewLine;
logText += "例外の生じた処理:リファレンスPDFのTIFF画像生成" + Environment.NewLine;
logText += ex.Message + "\n" + ex.StackTrace + Environment.NewLine;
File.AppendAllText(System.IO.Path.Combine(workLogPath, "CSRender.log"), logText);
//referenceErrorFlag = true;
}
ResultConsole.Text += "<TIFF変換完了>\r\n\r\n";
DoEvents();
//検版レポートの入力チェック
bool reportFlag = checkReportPath();
//PureVerifyの実行
string workDir = CompareTIFF.runPureVerify(targetTIFFPath, referenceTIFFPath, workBox.Text
, shiftPixel, colorMargin, removePoint, shadingOff, reportFlag, reportBox.Text);
string workDir = "";
try
{
//PureVerifyの実行
workDir = CompareTIFF.runPureVerify(targetTIFFPath, referenceTIFFPath, workBox.Text
, shiftPixel, colorMargin, removePoint, shadingOff, reportFlag, reportBox.Text);
}
catch (Exception ex)
{
CustomMsgBox.Show(mainWindow, ex.Message, "例外が発生しました", MessageBoxButton.OK, MessageBoxImage.Warning);
//ログ記述
DateTime faileTIme = DateTime.Now;
string logText = "[" + faileTIme + "]" + Environment.NewLine;
logText += "例外の生じた処理:検版処理" + Environment.NewLine;
logText += ex.Message + "\n" + ex.StackTrace + Environment.NewLine;
File.AppendAllText(System.IO.Path.Combine(workLogPath, "CSRender.log"), logText);
//referenceErrorFlag = true;
}
//レポートを出力
outputLog(System.IO.Path.Combine(workDir, "report"));
try
{
//レポートを出力
outputLog(System.IO.Path.Combine(workDir, "report"));
}
catch (Exception ex)
{
CustomMsgBox.Show(mainWindow, ex.Message, "例外が発生しました", MessageBoxButton.OK, MessageBoxImage.Warning);
//ログ記述
DateTime faileTIme = DateTime.Now;
string logText = "[" + faileTIme + "]" + Environment.NewLine;
logText += "例外の生じた処理:検版ログの出力" + Environment.NewLine;
logText += ex.Message + "\n" + ex.StackTrace + Environment.NewLine;
File.AppendAllText(System.IO.Path.Combine(workLogPath, "CSRender.log"), logText);
//referenceErrorFlag = true;
}
//レポート名を取得
string PDFName = "";
if (reportBox.Text != "")
try
{
PDFName = reportBox.Text;
//レポート名を取得
if (reportBox.Text != "")
{
PDFName = reportBox.Text;
}
else
{
PDFName = CompareTIFF.getReportName(workDir);
}
}
else
catch (Exception ex)
{
PDFName = CompareTIFF.getReportName(workDir);
CustomMsgBox.Show(mainWindow, ex.Message, "例外が発生しました", MessageBoxButton.OK, MessageBoxImage.Warning);
//ログ記述
DateTime faileTIme = DateTime.Now;
string logText = "[" + faileTIme + "]" + Environment.NewLine;
logText += "例外の生じた処理:レポート名の取得" + Environment.NewLine;
logText += ex.Message + "\n" + ex.StackTrace + Environment.NewLine;
File.AppendAllText(System.IO.Path.Combine(workLogPath, "CSRender.log"), logText);
//referenceErrorFlag = true;
}
//指定先にレポートを移動
......@@ -219,6 +307,10 @@ namespace CSRender
ResultConsole.Text += " 検版レポートのパス:";
ResultConsole.Text += System.IO.Path.Combine(workBox.Text, "report", PDFName);
ResultConsole.Text += "\r\n";
if(reportBox.Text == "")
{
reportBox.Text = System.IO.Path.Combine(workBox.Text, "report", PDFName);
}
//パラメータを次回初期値用に保存
Properties.Settings.Default.resolutionSetting = ResolutionBox.Value;
......
......@@ -75,7 +75,7 @@ namespace CSRender
if (Pagebox.CaretIndex == 0 && inputPage == ",") { e.Handled = true; return; }
}
//誤ったハイフン・カンマの入力を修正
//誤ったハイフン・カンマ、数字の入力を修正
private void PageBox_LostFocus(object sender, RoutedEventArgs e)
{
//ハイフン、カンマの削除
......@@ -98,6 +98,12 @@ namespace CSRender
inputText = inputText.TrimStart('-');
inputText = inputText.TrimEnd('-');
}
//先頭が0の場合は1に修正
if (inputText.StartsWith("0"))
{
inputText = inputText.TrimStart('0');
inputText = "1" + inputText;
}
PageBox.Text = inputText;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment