// -------------------------------------------------------------------- // 楽曲情報・番組情報をインポート // -------------------------------------------------------------------- private void ImportInfo() { try { // 準備 ShowLogMessage(Common.TRACE_EVENT_TYPE_STATUS, "楽曲情報・番組情報をインポートします..."); // 解凍 String aTempFolder = NklCommon.TempFilePath() + "\\"; Directory.CreateDirectory(aTempFolder); ZipFile.ExtractToDirectory(OpenFileDialogImport.FileName, aTempFolder); String aExtractedFolderPath = aTempFolder + NklCommon.FILE_PREFIX_INFO + "\\"; // CSV 読み込み Dictionary <String, List <List <String> > > aProgramCsvs; Dictionary <String, List <List <String> > > aSongCsvs; Dictionary <String, List <List <String> > > aProgramAliasCsvs; Dictionary <String, List <List <String> > > aSongAliasCsvs; NklCommon.LoadCsvs(mNicoKaraListerSettings, out aProgramCsvs, out aSongCsvs, out aProgramAliasCsvs, out aSongAliasCsvs); // 番組インポート Int32 aNumAddedRecords = 0; ImportInfo <ProgramCsvColumns>(aProgramCsvs, NklCommon.FILE_NAME_PROGRAM_CSV, aExtractedFolderPath, (Int32)ProgramCsvColumns.Id, ref aNumAddedRecords); // 楽曲インポート List <String> aSongCsvList = NklCommon.CreateSongCsvList(); foreach (String aCsvFileName in aSongCsvList) { ImportInfo <SongCsvColumns>(aSongCsvs, aCsvFileName, aExtractedFolderPath, (Int32)SongCsvColumns.Id, ref aNumAddedRecords); } // 番組別名インポート ImportInfo <ProgramAliasCsvColumns>(aProgramAliasCsvs, NklCommon.FILE_NAME_PROGRAM_ALIAS_CSV, aExtractedFolderPath, (Int32)ProgramAliasCsvColumns.Alias, ref aNumAddedRecords); // 楽曲別名インポート List <String> aSongAliasCsvList = NklCommon.CreateSongAliasCsvList(); foreach (String aCsvFileName in aSongAliasCsvList) { ImportInfo <SongAliasCsvColumns>(aSongAliasCsvs, aCsvFileName, aExtractedFolderPath, (Int32)SongAliasCsvColumns.Alias, ref aNumAddedRecords); } // 報告 ShowLogMessage(TraceEventType.Information, "インポートが完了しました。\n" + "重複を除く " + aNumAddedRecords + " レコードをインポートしました。"); } catch (OperationCanceledException) { ShowLogMessage(Common.TRACE_EVENT_TYPE_STATUS, "インポートを中止しました。"); } catch (Exception oExcep) { ShowLogMessage(TraceEventType.Error, "インポート時エラー:\n" + oExcep.Message); ShowLogMessage(TraceEventType.Verbose, " スタックトレース:\n" + oExcep.StackTrace); } }
// -------------------------------------------------------------------- // 楽曲情報・番組情報をエクスポート // -------------------------------------------------------------------- private void ExportInfo() { try { // 準備 ShowLogMessage(Common.TRACE_EVENT_TYPE_STATUS, "楽曲情報・番組情報をエクスポートします..."); // テンポラリーフォルダーにコピー String aTempFolder = NklCommon.TempFilePath() + "\\" + NklCommon.FILE_PREFIX_INFO + "\\"; Boolean aExists = false; Directory.CreateDirectory(aTempFolder); List <String> aCsvs = new List <String>(); aCsvs.Add(NklCommon.FILE_NAME_PROGRAM_CSV); aCsvs.AddRange(NklCommon.CreateSongCsvList()); aCsvs.Add(NklCommon.FILE_NAME_PROGRAM_ALIAS_CSV); aCsvs.AddRange(NklCommon.CreateSongAliasCsvList()); foreach (String aCsv in aCsvs) { if (File.Exists(NklCommon.UserCsvPath(aCsv))) { File.Copy(NklCommon.UserCsvPath(aCsv), aTempFolder + aCsv); aExists = true; } } if (!aExists) { throw new Exception("エクスポートする楽曲情報・番組情報がありません。"); } // 圧縮 ZipFile.CreateFromDirectory(aTempFolder, SaveFileDialogExport.FileName, CompressionLevel.Optimal, true); // 報告 ShowLogMessage(TraceEventType.Information, "エクスポートが完了しました。"); } catch (OperationCanceledException) { ShowLogMessage(Common.TRACE_EVENT_TYPE_STATUS, "エクスポートを中止しました。"); } catch (Exception oExcep) { ShowLogMessage(TraceEventType.Error, "エクスポート時エラー:\n" + oExcep.Message); ShowLogMessage(TraceEventType.Verbose, " スタックトレース:\n" + oExcep.StackTrace); } }