Ejemplo n.º 1
0
        // --------------------------------------------------------------------
        // 楽曲情報・番組情報をインポート
        // --------------------------------------------------------------------
        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);
            }
        }
Ejemplo n.º 2
0
        // --------------------------------------------------------------------
        // 楽曲情報・番組情報をエクスポート
        // --------------------------------------------------------------------
        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);
            }
        }