Esempio n. 1
0
        static void Main(string[] args)
        {
            if (string.Compare(args[0], "metric", true) == 0)
            {
                var querySet  = QueryMetadata.ReadQueryMetadata(args[1]);
                var resultSet = ResultMetadata.ReadResultMetadata(args[2]);

                // remove result set which entity id is not in query set
                resultSet = ResultMetadata.TrimResultSet(resultSet, querySet);

                var metricList = new List <string>();
                for (int i = 6; i < args.Length; i++)
                {
                    var metricName  = args[i].ToLower();
                    var metricValue = MetricCalculator.CalculateMetric(metricName, querySet, resultSet);
                    metricList.Add(metricName);
                    Console.WriteLine("{0}: {1}", metricName, Math.Round(metricValue, 4));
                }

                MetricLogger.GenerateAnalysisReport(args[3], querySet, resultSet, metricList);
                MetricLogger.OutputQueryMetadata(args[4], querySet, metricList);
                MetricLogger.OutputEntityMetadata(args[5], querySet, resultSet, metricList);
                MetricLogger.GenerateQuerySetAnalysis(args[1], querySet);
                MetricLogger.GenerateEntitySetAnalysis(resultSet);
            }
            else if (args[0].StartsWith("removejunk"))
            {
                var querySet  = QueryMetadata.ReadQueryMetadata(args[1]);
                var resultSet = ResultMetadata.ReadResultMetadata(args[2]);
                JunkFilter.DemoteJunk(args[0], querySet, resultSet);
                MetricLogger.OutputEntityMetadata(args[3], querySet, resultSet, new List <string>());
            }
            else if (string.Compare(args[0], "trim", true) == 0)
            {
                var querySet  = QueryMetadata.ReadQueryMetadata(args[1]);
                var resultSet = ResultMetadata.ReadResultMetadata(args[2]);
                JunkFilter.TrimResult(resultSet);
                MetricLogger.OutputEntityMetadata(args[3], querySet, resultSet, new List <string>());
            }
            else if (string.Compare(args[0], "statjunk", true) == 0)
            {
                var querySet  = QueryMetadata.ReadQueryMetadata(args[1]);
                var resultSet = ResultMetadata.ReadResultMetadata(args[2]);
                MetricLogger.StatisticJunk(args[3], querySet, resultSet);
            }
            else if (string.Compare(args[0], "createsbs", true) == 0)
            {
                var querySet   = QueryMetadata.ReadQueryMetadata(args[1]);
                var resultSet1 = ResultMetadata.ReadResultMetadata(args[2]);
                var resultSet2 = ResultMetadata.ReadResultMetadata(args[3]);
                Dictionary <string, List <ResultMetadata> > refSet = null;
                if (args.Length > 5)
                {
                    refSet = ResultMetadata.ReadResultMetadata(args[4]);
                }

                var folderPrefix = args.Last();

                List <string> htmlList = new List <string>();
                htmlList.Add("SideBySideHtml");
                foreach (var query in querySet)
                {
                    if (resultSet1.ContainsKey(query.EntityGuid) && resultSet2.ContainsKey(query.EntityGuid))
                    {
                        string key1 = string.Concat(resultSet1[query.EntityGuid].Select(s => s.EngineEntityId));
                        string key2 = string.Concat(resultSet2[query.EntityGuid].Select(s => s.EngineEntityId));
                        if (key1 != key2)
                        {
                            var    html  = SBSHtml.GetSideBySideHtml(query.Text, "LEFT", "RIGHT", "REFERENCE", resultSet1[query.EntityGuid], resultSet2[query.EntityGuid], refSet == null || !refSet.ContainsKey(query.EntityGuid) ? null : refSet[query.EntityGuid]);
                            string fname = folderPrefix + query.EntityGuid + ".html";
                            File.WriteAllText(fname, html);
                            htmlList.Add(html);
                        }
                    }
                }

                Console.WriteLine("queryCount:{0}, set1Count:{1}, set2Count:{2}, diffCount:{3}",
                                  querySet.Count, resultSet1.Count, resultSet2.Count, htmlList.Count - 1);
                File.WriteAllLines(folderPrefix + "0000.uhrsupload.tsv", htmlList);
            }
        }