Exemple #1
0
        public void EnsureBasicFunctionsWork()
        {
            using (var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(Resources.SisulizerSmallDemo)))
            {
                var options = new CommonExportOptions {
                    SisulizerProjectFileName = ""
                };
                var sisulizerFile = new SisulizerFile(memoryStream, options);

                Assert.That(sisulizerFile.Languages.Count(), Is.EqualTo(4)); // native, en, pl, cs
                var languagesStats = sisulizerFile.Languages.ToDictionary(x => x.Language, x => new { x.NativeStringCount, x.NativeWordCount, x.CountByStatus });
                var nativeStats    = languagesStats["native"];
                Assert.That(nativeStats, Is.Not.Null);
                Assert.That(nativeStats.NativeStringCount, Is.EqualTo(11));
                Assert.That(nativeStats.NativeWordCount, Is.EqualTo(17));
                var nativeStringCountByStatus = nativeStats.CountByStatus.ToDictionary(x => x.Item1, x => x.Item2);
                Assert.That(nativeStringCountByStatus[LangStatus.Completed].StringCount, Is.EqualTo(11));
                Assert.That(nativeStringCountByStatus[LangStatus.Completed].WordCount, Is.EqualTo(17));
                Assert.That(nativeStringCountByStatus[LangStatus.Completed].InvalidStringCount, Is.EqualTo(0));
                Assert.That(nativeStringCountByStatus[LangStatus.Completed].InvalidWordCount, Is.EqualTo(0));

                var enStats = languagesStats["en"];
                Assert.That(enStats, Is.Not.Null);
                Assert.That(enStats.NativeStringCount, Is.EqualTo(2));
                var enStringCountByStatus = enStats.CountByStatus.ToDictionary(x => x.Item1, x => x.Item2);
                Assert.That(enStringCountByStatus[LangStatus.AutoTranslated].StringCount, Is.EqualTo(1));
                Assert.That(enStringCountByStatus[LangStatus.AutoTranslated].WordCount, Is.EqualTo(3));
                Assert.That(enStringCountByStatus[LangStatus.AutoTranslated].InvalidStringCount, Is.EqualTo(1));
                Assert.That(enStringCountByStatus[LangStatus.AutoTranslated].InvalidWordCount, Is.EqualTo(5));

                Assert.That(sisulizerFile.Projects.Count(), Is.EqualTo(1));
                Assert.That(sisulizerFile.Projects.FirstOrDefault()?.Languages.Count(), Is.EqualTo(4)); // native, en, pl, cs
                Assert.That(sisulizerFile.Projects.FirstOrDefault()?.Name, Is.EqualTo("Magic.dll"));
            }
        }
        public void Execute(ISisulizerFile sisulizerFile, CommonExportOptions exportOptions)
        {
            if (exportOptions is OracleExportOptions oracleExportOptions)
            {
                using (var oracleConnection = new OracleConnection(oracleExportOptions.ConnectionString))
                {
                    var dbCommand = oracleConnection.CreateCommand();
                    dbCommand.CommandText = $"insert into {oracleExportOptions.TableName} (source, product, version, build, createdon, languagecode, statistictype, nottranslated, bestguess, bestguessinvalid, autotranslated, autotranslatedinvalid, translated, translatedinvalid, forreview, forreviewinvalid, complete, completeinvalid, total)"
                                            + $"values (:source, :product, :version, :build, :createdon, :languagecode, :statistictype, :nottranslated, :bestguess, :bestguessinvalid, :autotranslated, :autotranslatedinvalid, :translated, :translatedinvalid, :forreview, :forreviewinvalid, :complete, :completeinvalid, :total)";

                    var createdOn = DateTime.Now;
                    foreach (var languageStats in sisulizerFile.Languages)
                    {
                        foreach (var statType in new[] { StatType.Strings, StatType.Words })
                        {
                            this.CreateParameter(dbCommand, "source", OracleDbType.Varchar2).Value                = Path.GetFileNameWithoutExtension(sisulizerFile.FileName);
                            this.CreateParameter(dbCommand, "product", OracleDbType.Varchar2).Value               = oracleExportOptions.Product;
                            this.CreateParameter(dbCommand, "version", OracleDbType.Varchar2).Value               = oracleExportOptions.Version;
                            this.CreateParameter(dbCommand, "build", OracleDbType.Int32).Value                    = oracleExportOptions.Build;
                            this.CreateParameter(dbCommand, "createdon", OracleDbType.Date).Value                 = createdOn;
                            this.CreateParameter(dbCommand, "languagecode", OracleDbType.Varchar2).Value          = languageStats.Language;
                            this.CreateParameter(dbCommand, "statistictype", OracleDbType.Varchar2).Value         = this.GetStatisticType(statType);
                            this.CreateParameter(dbCommand, "nottranslated", OracleDbType.Varchar2).Value         = this.GetNotTranslated(languageStats, statType);
                            this.CreateParameter(dbCommand, "bestguess", OracleDbType.Varchar2).Value             = this.GetStatValue(languageStats, LangStatus.BestGuess, statType, true);
                            this.CreateParameter(dbCommand, "bestguessinvalid", OracleDbType.Varchar2).Value      = this.GetStatValue(languageStats, LangStatus.BestGuess, statType, false);
                            this.CreateParameter(dbCommand, "autotranslated", OracleDbType.Varchar2).Value        = this.GetStatValue(languageStats, LangStatus.AutoTranslated, statType, true);
                            this.CreateParameter(dbCommand, "autotranslatedinvalid", OracleDbType.Varchar2).Value = this.GetStatValue(languageStats, LangStatus.AutoTranslated, statType, false);
                            this.CreateParameter(dbCommand, "translated", OracleDbType.Varchar2).Value            = this.GetStatValue(languageStats, LangStatus.Translated, statType, true);
                            this.CreateParameter(dbCommand, "translatedinvalid", OracleDbType.Varchar2).Value     = this.GetStatValue(languageStats, LangStatus.Translated, statType, false);
                            this.CreateParameter(dbCommand, "forreview", OracleDbType.Varchar2).Value             = this.GetStatValue(languageStats, LangStatus.ForReview, statType, true);
                            this.CreateParameter(dbCommand, "forreviewinvalid", OracleDbType.Varchar2).Value      = this.GetStatValue(languageStats, LangStatus.ForReview, statType, false);
                            this.CreateParameter(dbCommand, "complete", OracleDbType.Varchar2).Value              = this.GetStatValue(languageStats, LangStatus.Completed, statType, true);
                            this.CreateParameter(dbCommand, "completeinvalid", OracleDbType.Varchar2).Value       = this.GetStatValue(languageStats, LangStatus.Completed, statType, false);
                            this.CreateParameter(dbCommand, "total", OracleDbType.Varchar2).Value                 = this.GetNativeCount(languageStats, statType);
                            var result = dbCommand.ExecuteNonQuery();
                        }
                    }
                }
            }
        }