Ejemplo n.º 1
0
        private string GenerateSource(IMusicDataTable <IMusicDataTableUnit> table, string versionName, string templatePath)
        {
            var source = ReadTemplate(templatePath);

            var tableTemplate = GetTemplate(source, "__TEMPLATE-TABLE__");
            var unitTemplate  = GetTemplate(source, "__TEMPLATE-TABLE-ROW__");

            foreach (var group in table.GetTableUnits().GroupBy(u => u.Genre))
            {
                var tableBodyHtml = group
                                    .Select(u =>
                {
                    var src = unitTemplate;
                    src     = src.Replace("%music-name%", HttpUtility.HtmlEncode(u.Name));
                    src     = src.Replace("%base-rating-basic%", u.GetBaseRating(Difficulty.Basic).ToString("0.0"));
                    src     = src.Replace("%base-rating-advanced%", u.GetBaseRating(Difficulty.Advanced).ToString("0.0"));
                    src     = src.Replace("%base-rating-expert%", u.GetBaseRating(Difficulty.Expert).ToString("0.0"));
                    src     = src.Replace("%base-rating-master%", u.GetBaseRating(Difficulty.Master).ToString("0.0"));

                    src = src.Replace("%unverified-basic%", !u.VerifiedBaseRating(Difficulty.Basic) ? "unverified" : "");
                    src = src.Replace("%unverified-advanced%", !u.VerifiedBaseRating(Difficulty.Advanced) ? "unverified" : "");
                    src = src.Replace("%unverified-expert%", !u.VerifiedBaseRating(Difficulty.Expert) ? "unverified" : "");
                    src = src.Replace("%unverified-master%", !u.VerifiedBaseRating(Difficulty.Master) ? "unverified" : "");

                    return(src);
                })
                                    .Aggregate((acc, src) => acc + "\n" + src);

                var tableHtml = tableTemplate.Replace("%table-body%", tableBodyHtml);
                source = source.Replace($@"%table({group.Key})%", tableHtml);
            }

            return(source);
        }
Ejemplo n.º 2
0
        public override MusicDataTable CreateJsonData(IMusicDataTable <IMusicDataTableUnit> data)
        {
            var musicDataTable = new MusicDataTable();

            musicDataTable.Add(data);
            return(musicDataTable);
        }
Ejemplo n.º 3
0
        private static void Deploy(DeployArgs args, IMusicDataTable <IMusicDataTableUnit> musicDataTable, string minLevelText, string maxLevelText, string currentHash = "")
        {
            var        client           = new HttpClient();
            var        getCurrent       = args.CreateRequestMessage(HttpMethod.Get);
            var        getCurrentResult = client.SendAsync(getCurrent).Result;
            var        currentSource    = Encoding.UTF8.GetString(getCurrentResult.Content.ReadAsByteArrayAsync().Result);
            var        currentDocument  = XDocument.Parse(currentSource);
            XNamespace ns             = "http://www.w3.org/2005/Atom";
            var        title          = currentDocument.Element(ns + "entry").Element(ns + "title").Value;
            var        currentContent = currentDocument.Element(ns + "entry").Element(ns + "content").Value;

            var beginToken = "<!--GEN_BY_REPORT_TOOL_BEGIN-->";
            var endToken   = "<!--GEN_BY_REPORT_TOOL_END-->";
            var beginIndex = currentContent.IndexOf(beginToken);
            var endIndex   = currentContent.IndexOf(endToken);

            if (beginIndex == -1 || endIndex == -1)
            {
                throw new Exception("Not find token.");
            }

            var(hash, expert, master) = GetTableHash(musicDataTable);
            if (currentHash == hash)
            {
                Console.WriteLine("Skipping deploy.");
                return;
            }
            var minLevel  = decimal.Parse(minLevelText);
            var maxLevel  = decimal.Parse(maxLevelText);
            var nextTable = GenerateTableText(minLevel, maxLevel, expert, master);

            var nextContent = currentContent.Remove(beginIndex + beginToken.Length, endIndex - (beginIndex + beginToken.Length));

            nextContent = nextContent.Insert(beginIndex + beginToken.Length, nextTable);

            var nextSource = $@"
<entry xmlns=""http://www.w3.org/2005/Atom""
       xmlns:app=""http://www.w3.org/2007/app"">
  <title>{title}</title>
  <author><name>name</name></author>
  <content type=""text/html"">
{HttpUtility.HtmlEncode(nextContent.ToString())}
  </content>
  <category term=""CHUNITHM"" />
  <app:control>
    <app:draft>no</app:draft>
  </app:control>
</entry>
";

            Console.WriteLine(nextSource);
            var putRequest = args.CreateRequestMessage(HttpMethod.Put);

            putRequest.Content = new StringContent(nextSource);
            var putRequestResult = client.SendAsync(putRequest).Result;

            Console.WriteLine(putRequestResult.Content.ReadAsStringAsync().Result);
        }
        public override XLWorkbook CreateWorkbook(IMusicDataTable <IMusicDataTableUnit> data)
        {
            var workbook = new XLWorkbook();

            ApplyRecord(workbook.AddWorksheet("MusicData"), data);



            return(workbook);
        }
Ejemplo n.º 5
0
        public override string CreateCsv(IMusicDataTable <IMusicDataTableUnit> data)
        {
            var csv = new StringBuilder();

            AppendHeader(csv);
            foreach (var unit in data.GetTableUnits())
            {
                AppendRow(csv, unit);
            }
            return(csv.ToString());
        }
Ejemplo n.º 6
0
        public void Call(string[] args)
        {
            var arg = new Argument(args);

            IMusicDataTable <IMusicDataTableUnit> table = null;

            using (var connector = new ChunithmMusicDatabaseHttpClientConnector(arg.DataBaseUrl))
            {
                var tableGet = connector.GetTableAsync().Result;
                table = tableGet.MusicDataTable;
            }

            using (var writer = new StreamWriter(arg.DestinationPath))
            {
                var source = GenerateSource(table, arg.VersionName, arg.TemplateHtmlPath);
                writer.Write(source);
            }
        }
        private void ApplyRecord(IXLWorksheet worksheet, IMusicDataTable <IMusicDataTableUnit> data)
        {
            if (worksheet == null || data == null)
            {
                return;
            }

            var header = new Header().GetColumnsMappedByParameter();

            worksheet.Cell(1, header[Header.Parameter.Index].Index).Value            = header[Header.Parameter.Index].Text;
            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.Basic].Index).Value            = header[Header.Parameter.Basic].Text;
            worksheet.Cell(1, header[Header.Parameter.Advanced].Index).Value         = header[Header.Parameter.Advanced].Text;
            worksheet.Cell(1, header[Header.Parameter.Expert].Index).Value           = header[Header.Parameter.Expert].Text;
            worksheet.Cell(1, header[Header.Parameter.Master].Index).Value           = header[Header.Parameter.Master].Text;
            worksheet.Cell(1, header[Header.Parameter.BasicVerified].Index).Value    = header[Header.Parameter.BasicVerified].Text;
            worksheet.Cell(1, header[Header.Parameter.AdvancedVerified].Index).Value = header[Header.Parameter.AdvancedVerified].Text;
            worksheet.Cell(1, header[Header.Parameter.ExpertVerified].Index).Value   = header[Header.Parameter.ExpertVerified].Text;
            worksheet.Cell(1, header[Header.Parameter.MasterVerified].Index).Value   = header[Header.Parameter.MasterVerified].Text;


            var musicDatas = data.GetTableUnits().ToList();

            for (var i = 0; i < musicDatas.Count; i++)
            {
                var row = i + 2;
                worksheet.Cell(row, header[Header.Parameter.Index].Index).Value            = i + 1;
                worksheet.Cell(row, header[Header.Parameter.Id].Index).Value               = musicDatas[i].Id;
                worksheet.Cell(row, header[Header.Parameter.Name].Index).Value             = musicDatas[i].Name;
                worksheet.Cell(row, header[Header.Parameter.Name].Index).DataType          = XLDataType.Text;
                worksheet.Cell(row, header[Header.Parameter.Genre].Index).Value            = musicDatas[i].Genre;
                worksheet.Cell(row, header[Header.Parameter.Basic].Index).Value            = musicDatas[i].GetBaseRating(Difficulty.Basic);
                worksheet.Cell(row, header[Header.Parameter.Advanced].Index).Value         = musicDatas[i].GetBaseRating(Difficulty.Advanced);
                worksheet.Cell(row, header[Header.Parameter.Expert].Index).Value           = musicDatas[i].GetBaseRating(Difficulty.Expert);
                worksheet.Cell(row, header[Header.Parameter.Master].Index).Value           = musicDatas[i].GetBaseRating(Difficulty.Master);
                worksheet.Cell(row, header[Header.Parameter.BasicVerified].Index).Value    = musicDatas[i].VerifiedBaseRating(Difficulty.Basic);
                worksheet.Cell(row, header[Header.Parameter.AdvancedVerified].Index).Value = musicDatas[i].VerifiedBaseRating(Difficulty.Advanced);
                worksheet.Cell(row, header[Header.Parameter.ExpertVerified].Index).Value   = musicDatas[i].VerifiedBaseRating(Difficulty.Expert);
                worksheet.Cell(row, header[Header.Parameter.MasterVerified].Index).Value   = musicDatas[i].VerifiedBaseRating(Difficulty.Master);
            }
        }
Ejemplo n.º 8
0
        public static void AreEqual(IMusicDataTable <IMusicDataTableUnit> expected, IMusicDataTable <IMusicDataTableUnit> 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]);
            }
        }
Ejemplo n.º 9
0
        private static (IMusicDataTableUnit[] expert, IMusicDataTableUnit[] master) SplitMusicDataTable(IMusicDataTable <IMusicDataTableUnit> musicDataTable)
        {
            var expert = musicDataTable.GetTableUnits()
                         .Where(m => m.VerifiedBaseRating(Difficulty.Expert))
                         .Where(m => m.GetBaseRating(Difficulty.Expert) >= 11.0)
                         .ToArray();
            var master = musicDataTable.GetTableUnits()
                         .Where(m => m.VerifiedBaseRating(Difficulty.Master))
                         .ToArray();

            return(expert, master);
        }
 public static void SetGlobalMusicDataTable(IMusicDataTable <IMusicDataTableUnit> globalMusicDataTable)
 {
     Utility.globalMusicDataTable = globalMusicDataTable;
 }
Ejemplo n.º 11
0
        private static (string hash, IMusicDataTableUnit[] expert, IMusicDataTableUnit[] master) GetTableHash(IMusicDataTable <IMusicDataTableUnit> musicDataTable)
        {
            var expert = musicDataTable.GetTableUnits()
                         .Where(m => m.VerifiedBaseRating(Difficulty.Expert))
                         .Where(m => m.GetBaseRating(Difficulty.Expert) >= 11.0)
                         .ToArray();
            var master = musicDataTable.GetTableUnits()
                         .Where(m => m.VerifiedBaseRating(Difficulty.Master))
                         .ToArray();

            var hashOrigin = new StringBuilder();

            foreach (var unit in expert)
            {
                hashOrigin.Append(unit.Name).Append("EXP");
            }
            foreach (var unit in master)
            {
                hashOrigin.Append(unit.Name);
            }

            var hash = new StringBuilder();

            foreach (var @byte in MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(hashOrigin.ToString())))
            {
                hash.Append(@byte.ToString("x2"));
            }
            return(hash.ToString(), expert, master);
        }