Exemplo n.º 1
0
        /// <summary>
        /// Compares the files provided in the data and add to an internal result.
        /// </summary>
        /// <param name="data">The data for this entry.</param>
        public void CompareAndAddToResult(CompareData data)
        {
            string onclick = "";
            string clss    = "green";
            int    changes = 0;

            if (data.ExitCode != 0)
            {
                changes = -1;
                clss    = "red";
                lock (this)
                {
                    BuilderDiff.WriteLine(String.Format(@"<div style=""display:none;"" id=""{0}"">CCExtractor quit with exit code {1}</div>", "entry_" + Count, data.ExitCode));
                    BuilderDiff.Flush();
                }
                onclick = String.Format(@"onclick=""toggle('{0}'); mark(this);""", "entry_" + Count);
            }
            else
            {
                SideBySideModel sbsm = null;
                if (!Hasher.filesAreEqual(data.CorrectFile, data.ProducedFile))
                {
                    string oldText = "ERROR - COULD NOT LOAD";
                    string newText = "ERROR - COULD NOT LOAD";
                    if (data.ProducedFile.EndsWith(".bin"))
                    {
                        if (File.Exists(data.CorrectFile))
                        {
                            using (FileStream fs = new FileStream(data.CorrectFile, FileMode.Open, FileAccess.Read))
                            {
                                StringBuilder sb = new StringBuilder();
                                int           hexIn, counter = 1;
                                while ((hexIn = fs.ReadByte()) != -1)
                                {
                                    sb.AppendFormat("{0:X2} ", hexIn);
                                    if (counter % 17 == 0)
                                    {
                                        sb.AppendLine();
                                        counter = 0;
                                    }
                                    counter++;
                                }
                                oldText = sb.ToString();
                            }
                        }
                        if (File.Exists(data.ProducedFile))
                        {
                            using (FileStream fs = new FileStream(data.ProducedFile, FileMode.Open, FileAccess.Read))
                            {
                                StringBuilder sb = new StringBuilder();
                                int           hexIn, counter = 1;
                                while ((hexIn = fs.ReadByte()) != -1)
                                {
                                    sb.AppendFormat("{0:X2} ", hexIn);
                                    if (counter % 17 == 0)
                                    {
                                        sb.AppendLine();
                                        counter = 0;
                                    }
                                    counter++;
                                }
                                newText = sb.ToString();
                            }
                        }
                    }
                    else
                    {
                        if (File.Exists(data.CorrectFile))
                        {
                            using (FileStream fs = new FileStream(data.CorrectFile, FileMode.Open, FileAccess.Read))
                            {
                                using (StreamReader streamReader = new StreamReader(fs, Encoding.UTF8))
                                {
                                    oldText = streamReader.ReadToEnd();
                                }
                            }
                        }
                        if (File.Exists(data.ProducedFile))
                        {
                            using (FileStream fs = new FileStream(data.ProducedFile, FileMode.Open, FileAccess.Read))
                            {
                                using (StreamReader streamReader = new StreamReader(fs, Encoding.UTF8))
                                {
                                    newText = streamReader.ReadToEnd();
                                }
                            }
                        }
                    }

                    sbsm    = Differ.BuildDiffModel(oldText, newText);
                    changes = sbsm.GetNumberOfChanges();
                    if ((oldText == "ERROR - COULD NOT LOAD" || newText == "ERROR - COULD NOT LOAD") && !data.Dummy)
                    {
                        changes = -1;
                    }
                }
                if (changes != 0)
                {
                    lock (this)
                    {
                        BuilderDiff.WriteLine(sbsm.GetDiffHTML(String.Format(@"style=""display:none;"" id=""{0}""", "entry_" + Count), Reduce));
                        BuilderDiff.Flush();
                    }
                    onclick = String.Format(@"onclick=""toggle('{0}'); mark(this);""", "entry_" + Count);
                    clss    = "red";
                }
                else
                {
                    Successes++;
                }
            }
            Builder.AppendFormat(
                @"<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td class=""{4}"" {5}>{6}</td></tr>",
                data.SampleFile,
                data.Command,
                data.RunTime.ToString(),
                data.ProducedFile,
                clss,
                onclick,
                changes);
            Count++;
        }
Exemplo n.º 2
0
        public ActionResult ViewChange(string Parameters)
        {
            string isSingleView; int id, leftId, rightId;

            Response response = new Response();

            if (!string.IsNullOrEmpty(Parameters))
            {
                Parameters   = StringCipher.Decrypt(Parameters.Replace(Utility.Utility.urlseparator, "+"), General.passPhrase);
                isSingleView = Utility.Utility.SplitParameters(Parameters, Utility.Utility.Colonseparator, 0, 1);
                id           = Convert.ToInt32(Utility.Utility.SplitParameters(Parameters, Utility.Utility.Colonseparator, 1, 1));
                leftId       = Convert.ToInt32(Utility.Utility.SplitParameters(Parameters, Utility.Utility.Colonseparator, 2, 1));
                rightId      = Convert.ToInt32(Utility.Utility.SplitParameters(Parameters, Utility.Utility.Colonseparator, 3, 1));

                if (isSingleView == "1")
                {
                    FamilyTreeParentModel model        = new FamilyTreeParentModel();
                    CompanyFacade         fac          = new CompanyFacade(this.CurrentClient.ApplicationDBConnectionString, Helper.UserName);
                    DataTable             dtFamilyTree = fac.GetListFamilyTree();


                    DataView  view           = new DataView(dtFamilyTree);
                    DataTable distinctValues = view.ToTable(true, "FamilyTreeType");

                    model.lstFamilyTreeType = new SelectList(distinctValues.AsDataView(), "FamilyTreeType", "FamilyTreeType");

                    model.lstFamilyTree = new SelectList(dtFamilyTree.AsDataView(), "FamilyTreeId", "FamilyTreeName");
                    if (dtFamilyTree != null && dtFamilyTree.Rows.Count > 0)
                    {
                        if (id > 0)
                        {
                            model.FamilyTreeId = id;
                        }
                        else
                        {
                            model.FamilyTreeId = Convert.ToInt32(dtFamilyTree.Rows[0]["FamilyTreeId"]);
                        }

                        DataTable dtFamilyTreeById = fac.GetFamilyTreeById(model.FamilyTreeId.ToString());

                        if (dtFamilyTreeById != null)
                        {
                            model.FamilyTreeDetails = new FamilyTreeModel();
                            foreach (DataRow row in dtFamilyTreeById.Rows)
                            {
                                DataRow[] result = dtFamilyTree.Select("FamilyTreeType = '" + row["FamilyTreeType"].ToString() + "'");
                                model.lstFamilyTree = new SelectList(result.CopyToDataTable().AsDataView(), "FamilyTreeId", "FamilyTreeName");
                                model.FamilyTreeDetails.FamilyTreeId   = row["FamilyTreeId"].ToString();
                                model.FamilyTreeDetails.FamilyTreeName = row["FamilyTreeName"].ToString();
                                model.FamilyTreeDetails.FamilyTreeType = row["FamilyTreeType"].ToString();
                                model.FamilyTreeType                = model.FamilyTreeDetails.FamilyTreeType;
                                model.FamilyTreeDetails.Editable    = (string.IsNullOrEmpty(row["Editable"].ToString()) ? false : Convert.ToBoolean(row["Editable"].ToString()));
                                model.FamilyTreeDetails.LockForEdit = (string.IsNullOrEmpty(row["LockForEdit"].ToString()) ? false : Convert.ToBoolean(row["LockForEdit"].ToString()));
                                if (!string.IsNullOrEmpty(row["LastRefreshedDate"].ToString()))
                                {
                                    model.FamilyTreeDetails.LastRefreshedDate = Convert.ToDateTime(row["LastRefreshedDate"].ToString());
                                }
                                if (!string.IsNullOrEmpty(row["AlternateId"].ToString()))
                                {
                                    model.FamilyTreeDetails.AlternateId = Convert.ToString(row["AlternateId"].ToString());
                                }
                                if (!string.IsNullOrEmpty(row["LastModifiedUserId"].ToString()))
                                {
                                    model.FamilyTreeDetails.LastModifiedUserName = Convert.ToString(row["LastModifiedUserId"].ToString());
                                }
                            }
                        }

                        DataTable dt = fac.GetFamilyTree(model.FamilyTreeId);


                        List <FamilyTreeDetailModel> treeLst = new List <FamilyTreeDetailModel>();
                        treeLst = (from DataRow dr in dt.Rows
                                   where dr["ParentFamilyTreeDetailId"].ToString() == string.Empty
                                   select new FamilyTreeDetailModel()
                        {
                            DetailId = dr["DetailId"].ToString(),
                            FamilyTreeDetailId = dr["FamilyTreeDetailId"].ToString(),
                            NodeName = dr["NodeName"].ToString(),
                            ParentFamilyTreeDetailId = dr["ParentFamilyTreeDetailId"].ToString(),
                            NodeDisplayDetail = dr["NodeDisplayDetail"].ToString(),
                            NodeType = dr["NodeType"].ToString(),
                            cntChildren = 1            //GetChildren(dt, dr["FamilyTreeDetailId"].ToString()) /* Recursively grab the children */
                        }).ToList();

                        model.lstMenu = treeLst;
                    }
                    else
                    {
                        model = new FamilyTreeParentModel();
                    }

                    response.Success        = true;
                    response.ResponseString = RenderViewAsString.RenderPartialViewToString(this, "~/Views/FamilyTree/_DetailFamilyTreeView.cshtml", model);
                }
                else
                {
                    SideBySideModel model = new SideBySideModel();

                    CompanyFacade fac = new CompanyFacade(this.CurrentClient.ApplicationDBConnectionString, Helper.UserName);

                    DataTable dtFamilyTree = fac.GetListFamilyTree();

                    if (dtFamilyTree != null && dtFamilyTree.Rows != null && dtFamilyTree.Rows.Count > 0)
                    {
                        if (dtFamilyTree.Select("LockForEdit = 1").Length > 0)
                        {
                            DataTable dtLefFamilyTree = dtFamilyTree.Select("LockForEdit = 1").CopyToDataTable();
                            #region Left View
                            model.LeftView = new FamilyTreeParentModel();
                            DataView  viewLeft           = new DataView(dtLefFamilyTree);
                            DataTable distinctValuesLeft = viewLeft.ToTable(true, "FamilyTreeType");

                            model.LeftView.lstFamilyTreeType = new SelectList(distinctValuesLeft.AsDataView(), "FamilyTreeType", "FamilyTreeType");
                            model.LeftView.lstFamilyTree     = new SelectList(dtLefFamilyTree.AsDataView(), "FamilyTreeId", "FamilyTreeName");
                            if (dtLefFamilyTree != null && dtLefFamilyTree.Rows.Count > 0)
                            {
                                if (leftId > 0)
                                {
                                    model.LeftView.FamilyTreeId = leftId;
                                }

                                DataTable dtFamilyTreeById = fac.GetFamilyTreeById(model.LeftView.FamilyTreeId.ToString());

                                if (dtFamilyTreeById != null)
                                {
                                    model.LeftView.FamilyTreeDetails = new FamilyTreeModel();
                                    foreach (DataRow row in dtFamilyTreeById.Rows)
                                    {
                                        DataRow[] result = dtFamilyTree.Select("FamilyTreeType = '" + row["FamilyTreeType"].ToString() + "'");
                                        model.LeftView.lstFamilyTree = new SelectList(result.CopyToDataTable().AsDataView(), "FamilyTreeId", "FamilyTreeName");
                                        model.LeftView.FamilyTreeDetails.FamilyTreeId   = row["FamilyTreeId"].ToString();
                                        model.LeftView.FamilyTreeDetails.FamilyTreeName = row["FamilyTreeName"].ToString();
                                        model.LeftView.FamilyTreeDetails.FamilyTreeType = row["FamilyTreeType"].ToString();
                                        model.LeftView.FamilyTreeType                = model.LeftView.FamilyTreeDetails.FamilyTreeType;
                                        model.LeftView.FamilyTreeDetails.Editable    = (string.IsNullOrEmpty(row["Editable"].ToString()) ? false : Convert.ToBoolean(row["Editable"].ToString()));
                                        model.LeftView.FamilyTreeDetails.LockForEdit = (string.IsNullOrEmpty(row["LockForEdit"].ToString()) ? false : Convert.ToBoolean(row["LockForEdit"].ToString()));
                                        if (!string.IsNullOrEmpty(row["LastRefreshedDate"].ToString()))
                                        {
                                            model.LeftView.FamilyTreeDetails.LastRefreshedDate = Convert.ToDateTime(row["LastRefreshedDate"].ToString());
                                        }
                                        if (!string.IsNullOrEmpty(row["AlternateId"].ToString()))
                                        {
                                            model.LeftView.FamilyTreeDetails.AlternateId = Convert.ToString(row["AlternateId"].ToString());
                                        }
                                        if (!string.IsNullOrEmpty(row["LastModifiedUserId"].ToString()))
                                        {
                                            model.LeftView.FamilyTreeDetails.LastModifiedUserName = Convert.ToString(row["LastModifiedUserId"].ToString());
                                        }
                                    }
                                }

                                DataTable dt = fac.GetFamilyTree(model.LeftView.FamilyTreeId);


                                List <FamilyTreeDetailModel> treeLst = new List <FamilyTreeDetailModel>();
                                treeLst = (from DataRow dr in dt.Rows
                                           where dr["ParentFamilyTreeDetailId"].ToString() == string.Empty
                                           select new FamilyTreeDetailModel()
                                {
                                    DetailId = dr["DetailId"].ToString(),
                                    FamilyTreeDetailId = dr["FamilyTreeDetailId"].ToString(),
                                    NodeName = dr["NodeName"].ToString(),
                                    ParentFamilyTreeDetailId = dr["ParentFamilyTreeDetailId"].ToString(),
                                    NodeDisplayDetail = dr["NodeDisplayDetail"].ToString(),
                                    NodeType = dr["NodeType"].ToString(),
                                    cntChildren = 1           //Children = GetChildren(dt, dr["FamilyTreeDetailId"].ToString()) /* Recursively grab the children */
                                }).ToList();

                                model.LeftView.lstMenu = treeLst;
                            }
                            #endregion

                            #region Right View
                            model.RightView = new FamilyTreeParentModel();

                            DataView  viewRight           = new DataView(dtFamilyTree);
                            DataTable distinctValuesRight = viewRight.ToTable(true, "FamilyTreeType");

                            model.RightView.lstFamilyTreeType = new SelectList(distinctValuesRight.AsDataView(), "FamilyTreeType", "FamilyTreeType");
                            model.RightView.lstFamilyTree     = new SelectList(dtFamilyTree.AsDataView(), "FamilyTreeId", "FamilyTreeName");
                            if (dtFamilyTree != null && dtFamilyTree.Rows.Count > 0)
                            {
                                if (rightId > 0)
                                {
                                    model.RightView.FamilyTreeId = rightId;
                                }

                                DataTable dtFamilyTreeById = fac.GetFamilyTreeById(model.RightView.FamilyTreeId.ToString());

                                if (dtFamilyTreeById != null)
                                {
                                    model.RightView.FamilyTreeDetails = new FamilyTreeModel();
                                    foreach (DataRow row in dtFamilyTreeById.Rows)
                                    {
                                        DataRow[] result = dtFamilyTree.Select("FamilyTreeType = '" + row["FamilyTreeType"].ToString() + "'");
                                        model.RightView.lstFamilyTree = new SelectList(result.CopyToDataTable().AsDataView(), "FamilyTreeId", "FamilyTreeName");
                                        model.RightView.FamilyTreeDetails.FamilyTreeId   = row["FamilyTreeId"].ToString();
                                        model.RightView.FamilyTreeDetails.FamilyTreeName = row["FamilyTreeName"].ToString();
                                        model.RightView.FamilyTreeDetails.FamilyTreeType = row["FamilyTreeType"].ToString();
                                        model.RightView.FamilyTreeType                = model.RightView.FamilyTreeDetails.FamilyTreeType;
                                        model.RightView.FamilyTreeDetails.Editable    = (string.IsNullOrEmpty(row["Editable"].ToString()) ? false : Convert.ToBoolean(row["Editable"].ToString()));
                                        model.RightView.FamilyTreeDetails.LockForEdit = (string.IsNullOrEmpty(row["LockForEdit"].ToString()) ? false : Convert.ToBoolean(row["LockForEdit"].ToString()));
                                        if (!string.IsNullOrEmpty(row["LastRefreshedDate"].ToString()))
                                        {
                                            model.RightView.FamilyTreeDetails.LastRefreshedDate = Convert.ToDateTime(row["LastRefreshedDate"].ToString());
                                        }
                                        if (!string.IsNullOrEmpty(row["AlternateId"].ToString()))
                                        {
                                            model.RightView.FamilyTreeDetails.AlternateId = Convert.ToString(row["AlternateId"].ToString());
                                        }
                                        if (!string.IsNullOrEmpty(row["LastModifiedUserId"].ToString()))
                                        {
                                            model.RightView.FamilyTreeDetails.LastModifiedUserName = Convert.ToString(row["LastModifiedUserId"].ToString());
                                        }
                                    }
                                }

                                DataTable dt = fac.GetFamilyTree(model.RightView.FamilyTreeId);


                                List <FamilyTreeDetailModel> treeLst = (from DataRow dr in dt.Rows
                                                                        where dr["ParentFamilyTreeDetailId"].ToString() == string.Empty
                                                                        select new FamilyTreeDetailModel()
                                {
                                    DetailId = dr["DetailId"].ToString(),
                                    FamilyTreeDetailId = dr["FamilyTreeDetailId"].ToString(),
                                    NodeName = dr["NodeName"].ToString(),
                                    ParentFamilyTreeDetailId = dr["ParentFamilyTreeDetailId"].ToString(),
                                    NodeDisplayDetail = dr["NodeDisplayDetail"].ToString(),
                                    NodeType = dr["NodeType"].ToString(),
                                    cntChildren = 1           //Children = GetChildren(dt, dr["FamilyTreeDetailId"].ToString()) /* Recursively grab the children */
                                }).ToList();

                                model.RightView.lstMenu = treeLst;
                            }
                            #endregion
                        }
                        else
                        {
                            model                   = new SideBySideModel();
                            model.LeftView          = new FamilyTreeParentModel();
                            model.RightView         = new FamilyTreeParentModel();
                            model.LeftView.lstMenu  = new List <FamilyTreeDetailModel>();
                            model.RightView.lstMenu = new List <FamilyTreeDetailModel>();
                        }
                    }
                    else
                    {
                        model                   = new SideBySideModel();
                        model.LeftView          = new FamilyTreeParentModel();
                        model.RightView         = new FamilyTreeParentModel();
                        model.LeftView.lstMenu  = new List <FamilyTreeDetailModel>();
                        model.RightView.lstMenu = new List <FamilyTreeDetailModel>();
                    }
                    response.Success        = true;
                    response.ResponseString = RenderViewAsString.RenderPartialViewToString(this, "~/Views/FamilyTree/_SIdeBySide.cshtml", model);
                }
            }
            return(Json(response));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Saves the report to a given file, with some extra data provided.
        /// </summary>
        /// <param name="pathToFolder">Path to folder to save the report in</param>
        /// <param name="data">The extra result data that should be in the report.</param>
        public String SaveReport(string pathToFolder, ResultData data)
        {
            string additionalHeader = @"
				<script type=""text/javascript"">
					function toggleNext(elm){
						var next = elm.parentNode.nextElementSibling;
						if(next.style.display == ""none""){
							next.style.display = ""block"";
						} else {
							next.style.display = ""none"";
						}
					}
					function toggle(id){
						var next = document.getElementById(id);
						if(next.style.display == ""none""){
							next.style.display = ""block"";
						} else {
							next.style.display = ""none"";
						}
					}
					function mark(elm){
						var clsses = elm.className;
						if(clsses.indexOf(""mark"") > -1){
							elm.className = clsses.replace("" mark"","""");
						} else {
							elm.className += "" mark"";
						}
					}
				</script>
				<style type=""text/css"">
					.green {
						background-color: #00ff00;
					}
					.red {
						background-color: #ff0000;
					}
					.mark {
						background-color: #0000ff;
					}
				</style>"                ;
            String table            = String.Format(@"<table><tr><th>Sample</th><th>Command</th><th>Runtime</th><th>Result file</th><th>Changes (click to show)</th></tr>{0}</table>", Builder.ToString());
            String first            = String.Format(@"<p>Report generated for CCExtractor version {0}</p>", data.CCExtractorVersion);

            BuilderDiff.Close();

            String reportName = GetReportFileName(data);

            using (StreamWriter sw = new StreamWriter(Path.Combine(pathToFolder, reportName)))
            {
                sw.WriteLine(String.Format(@"
				<html>
					<head>
						<title>{0}</title>
						<style type=""text/css"">{1}</style>
						{2}
					</head>
					<body>"                    , "Report " + DateTime.Now.ToShortDateString(), SideBySideModel.GetCSS(), additionalHeader));
                sw.WriteLine(first);
                sw.WriteLine(table);
                string[] lines = File.ReadAllLines(TempFileName);
                foreach (string line in lines)
                {
                    sw.WriteLine(line);
                }
                sw.WriteLine("</body></html>");
                // Delete temporary html.
                File.Delete(TempFileName);
            }
            return(reportName);
        }