public override XLWorkbook CreateWorkbook(IPlaylogRecordTable <IPlaylogRecordTableUnit> data) { var workbook = new XLWorkbook(); ApplyReocrd(workbook.Worksheets.Add("Playlog"), data); return(workbook); }
public override PlaylogRecordTable CreateJsonData(IPlaylogRecordTable <IPlaylogRecordTableUnit> data) { var jsonObject = new PlaylogRecordTable(); foreach (var unit in data.GetTableUnits()) { var recordUnit = new PlaylogRecordTableUnit(); recordUnit.Set(unit); jsonObject.TableUnits.Add(recordUnit); } return(jsonObject); }
public override string CreateCsv(IPlaylogRecordTable <IHistoryUnit> data) { var builder = new StringBuilder(); Append(builder, "No"); Append(builder, "ID"); Append(builder, "楽曲名"); Append(builder, "ジャンル"); Append(builder, "難易度"); Append(builder, "スコア"); Append(builder, "ランク"); Append(builder, "譜面定数"); Append(builder, "プレイレート"); Append(builder, "NEW RECORD"); Append(builder, "CLEAR"); Append(builder, "コンボ"); Append(builder, "チェイン"); Append(builder, "トラック"); Append(builder, "プレイ日時"); Append(builder, "表示レート"); Append(builder, "ベスト枠", true); foreach (var unit in data.GetTableUnits()) { if (unit == null) { continue; } Append(builder, unit.Number); Append(builder, unit.Id); Append(builder, unit.Name); Append(builder, unit.Genre); Append(builder, Utility.ToDifficultyText(unit.Difficulty)); Append(builder, unit.Score); Append(builder, Utility.ToRankText(unit.Rank)); Append(builder, unit.BaseRating); Append(builder, unit.Rating); Append(builder, unit.IsNewRecord); Append(builder, unit.IsClear); Append(builder, Utility.ToComboStatusText(unit.ComboStatus)); Append(builder, Utility.ToChainStatusText(unit.ChainStatus)); Append(builder, unit.Track); Append(builder, unit.PlayDate); Append(builder, unit.DisplayRating); Append(builder, unit.TotalBestRating, true); } return(builder.ToString()); }
private void ApplyReocrd(IXLWorksheet worksheet, IPlaylogRecordTable <IPlaylogRecordTableUnit> record) { if (worksheet == null || record == null) { return; } var header = new Header().GetColumnsMappedByParameter(); worksheet.Cell(1, header[Header.Parameter.Id].Index).Value = header[Header.Parameter.Id].Text; worksheet.Cell(1, header[Header.Parameter.Name].Index).Value = header[Header.Parameter.Name].Text; worksheet.Cell(1, header[Header.Parameter.Genre].Index).Value = header[Header.Parameter.Genre].Text; worksheet.Cell(1, header[Header.Parameter.Difficulty].Index).Value = header[Header.Parameter.Difficulty].Text; worksheet.Cell(1, header[Header.Parameter.Score].Index).Value = header[Header.Parameter.Score].Text; worksheet.Cell(1, header[Header.Parameter.Rank].Index).Value = header[Header.Parameter.Rank].Text; worksheet.Cell(1, header[Header.Parameter.BaseRating].Index).Value = header[Header.Parameter.BaseRating].Text; worksheet.Cell(1, header[Header.Parameter.Rating].Index).Value = header[Header.Parameter.Rating].Text; worksheet.Cell(1, header[Header.Parameter.IsNewRecord].Index).Value = header[Header.Parameter.IsNewRecord].Text; worksheet.Cell(1, header[Header.Parameter.IsClear].Index).Value = header[Header.Parameter.IsClear].Text; worksheet.Cell(1, header[Header.Parameter.ComboStatus].Index).Value = header[Header.Parameter.ComboStatus].Text; worksheet.Cell(1, header[Header.Parameter.ChainStatus].Index).Value = header[Header.Parameter.ChainStatus].Text; worksheet.Cell(1, header[Header.Parameter.Track].Index).Value = header[Header.Parameter.Track].Text; worksheet.Cell(1, header[Header.Parameter.PlayDate].Index).Value = header[Header.Parameter.PlayDate].Text; var playlogRecordUnits = record.GetTableUnits().Reverse().ToList(); for (var i = 0; i < playlogRecordUnits.Count; i++) { var row = i + 2; worksheet.Cell(row, header[Header.Parameter.Id].Index).Value = playlogRecordUnits[i].Id; worksheet.Cell(row, header[Header.Parameter.Name].Index).Value = playlogRecordUnits[i].Name; worksheet.Cell(row, header[Header.Parameter.Genre].Index).Value = playlogRecordUnits[i].Genre; worksheet.Cell(row, header[Header.Parameter.Difficulty].Index).Value = Utility.ToDifficultyText(playlogRecordUnits[i].Difficulty); worksheet.Cell(row, header[Header.Parameter.Score].Index).Value = playlogRecordUnits[i].Score; worksheet.Cell(row, header[Header.Parameter.Rank].Index).Value = Utility.ToRankText(Utility.GetRank(playlogRecordUnits[i].Score)); worksheet.Cell(row, header[Header.Parameter.BaseRating].Index).Value = playlogRecordUnits[i].BaseRating; worksheet.Cell(row, header[Header.Parameter.Rating].Index).Value = playlogRecordUnits[i].Rating; worksheet.Cell(row, header[Header.Parameter.IsNewRecord].Index).Value = playlogRecordUnits[i].IsNewRecord; worksheet.Cell(row, header[Header.Parameter.IsClear].Index).Value = playlogRecordUnits[i].IsClear; worksheet.Cell(row, header[Header.Parameter.ComboStatus].Index).Value = playlogRecordUnits[i].ComboStatus; worksheet.Cell(row, header[Header.Parameter.ChainStatus].Index).Value = playlogRecordUnits[i].ChainStatus; worksheet.Cell(row, header[Header.Parameter.Track].Index).Value = playlogRecordUnits[i].Track; worksheet.Cell(row, header[Header.Parameter.PlayDate].Index).Value = playlogRecordUnits[i].PlayDate; } }
public static void AreEqual(IPlaylogRecordTable <IPlaylogRecordTableUnit> expected, IPlaylogRecordTable <IPlaylogRecordTableUnit> actual) { Assert.IsNotNull(expected, "expected"); Assert.IsNotNull(actual, "actual"); var expectedTableUnits = expected.GetTableUnits().ToList(); var actualTableUnits = actual.GetTableUnits().ToList(); Assert.IsNotNull(expectedTableUnits, "expected.GetTableUnits()"); Assert.IsNotNull(actualTableUnits, "actual.GetTableUnits()"); Assert.AreEqual(expectedTableUnits.Count, actualTableUnits.Count, "件数"); var count = expectedTableUnits.Count; for (var i = 0; i < count; i++) { AreEqual(expectedTableUnits[i], actualTableUnits[i]); } }
public PlaylogRecordTable(IPlaylogRecordTable <IPlaylogRecordTableUnit> record) { Set(record); }
public async Task UpdatePlaylogAsync() { await LoadGlobalMusicDataTable(); DebugLogger.WriteLine("PlaylogDetailRecord更新の開始"); List <TableUnit> savedPlaylogDetailRecordUnits = null; { var readAsync = ReadPlaylogDetailRecordAsync("./test.csv"); await readAsync; savedPlaylogDetailRecordUnits = readAsync.Result; } DebugLogger.WriteLine("Playlog の取得"); IPlaylogRecordTable <IPlaylogRecordTableUnit> playlogRecord = null; { var playlogSend = chunithmNetConnector.GetPlaylogAsync(); await playlogSend; if (!playlogSend.Result.Success) { throw new Exception("Playlogの取得に失敗しました"); } var _playlogRecord = new PlaylogRecordTable(); _playlogRecord.Add(playlogSend.Result.Playlog); playlogRecord = _playlogRecord; } List <TableUnit> updatedPlaylogDetailRecordUnits = null; { var getAsync = GetUpdatedPlaylogDetailRecordUnitsAsync(playlogRecord, savedPlaylogDetailRecordUnits.LastOrDefault()); await getAsync; updatedPlaylogDetailRecordUnits = getAsync.Result; } if (updatedPlaylogDetailRecordUnits.Count == 0) { DebugLogger.WriteLine("更新データなし"); return; } DebugLogger.WriteLine("楽曲別レコードテーブル生成"); var playlogDetailRecordUnitsGroupByMusic = GroupByMusic(updatedPlaylogDetailRecordUnits); DebugLogger.WriteLine("楽曲別レコードテーブル書き込み"); await WritePlaylogDetailRecordByMusic(updatedPlaylogDetailRecordUnits); DebugLogger.WriteLine("更新データ書き込み"); { var record = new Table(); foreach (var recordUnit in savedPlaylogDetailRecordUnits) { record.RecordUnits.Add(recordUnit); } foreach (var recordUnit in updatedPlaylogDetailRecordUnits) { record.RecordUnits.Add(recordUnit); } var writer = new TableCsvWriter(); writer.Set(record); writer.Write("./test.csv"); } DebugLogger.WriteLine("Done."); }
private async Task <List <TableUnit> > GetUpdatedPlaylogDetailRecordUnitsAsync(IPlaylogRecordTable <IPlaylogRecordTableUnit> playlogRecord, TableUnit lastPlaylogDetailRecordUnit) { var updatedPlaylogDetailRecordUnits = new List <TableUnit>(); var lastPlayDate = lastPlaylogDetailRecordUnit?.PlaylogDetail?.PlayDate ?? new DateTime(); var startNumber = lastPlaylogDetailRecordUnit?.Number + 1 ?? 1; var startPlayCount = lastPlaylogDetailRecordUnit?.PlayCount + 1 ?? 1; var tableUnits = playlogRecord.GetTableUnits().ToList(); for (var i = 0; i < tableUnits.Count; i++) { if (tableUnits[i].PlayDate <= lastPlayDate) { continue; } var index = tableUnits.Count - (i + 1); DebugLogger.WriteLine("PlaylogDetailの取得 Index : {0}", index); var sendAsync = chunithmNetConnector.GetPlaylogDetailAsync(index); await sendAsync; var playlogDetail = sendAsync.Result; if (!playlogDetail.Success) { throw new Exception($"PlaylogDetail[{index}]の取得に失敗しました"); } var recordUnit = new TableUnit(); recordUnit.Number = startNumber + updatedPlaylogDetailRecordUnits.Count; recordUnit.PlayCount = startPlayCount + updatedPlaylogDetailRecordUnits.Count; recordUnit.PlaylogDetail = playlogDetail.PlaylogDetail; updatedPlaylogDetailRecordUnits.Add(recordUnit); } return(updatedPlaylogDetailRecordUnits); }
public History(IPlaylogRecordTable <IHistoryUnit> record) { Set(record); }