示例#1
0
        /// <summary>
        /// Loads the articles.
        /// </summary>
        private void LoadArticles()
        {
            Results = IE_lib.Main.View(Path);

            ListRawListArticles = new List <ListArticle>();

            if (Results == null)
            {
                MessageBox.Show(Application.Current.MainWindow,
                                "There was a problem in loading the result files. Either the file selected does not contain any articles or the other result files are missing. \n\nKindly check your result files.",
                                "Loading result files");
            }
            else
            {
                foreach (DisplayArticle d in Results.ListDisplayArticles)
                {
                    ListRawListArticles.Add(new ListArticle()
                    {
                        DisplayArticle = d,
                        MatchedString  = String.Format("{0} · {1}", d.Article.Date, d.Article.Author)
                    });
                }
            }

            if (!IsAdvanced)
            {
                DisplayArticles(ListRawListArticles);
            }
        }
示例#2
0
        /// <summary>
        /// Views the specified path.
        /// </summary>
        /// <param name="path">The path.</param>
        /// <returns>Parsed results to be used for viewing</returns>
        public static ParsedResults View(string path)
        {
            if (path.Contains("_inverted_index"))
            {
                path = path.Replace("_inverted_index", "");
            }

            string invertedIndexDestinationPath = path.Insert(path.Length - 4, "_inverted_index");
            string formattedDateDestinationPath = path.Insert(path.Length - 4, "_format_date");

            FileParser fileParser = new FileParser();

            List <Article>    listArticles    = fileParser.parseFile(path);
            List <Annotation> listAnnotations = fileParser.parseAnnotations(path);
            List <Annotation> listFormattedDateAnnotations = fileParser.parseAnnotations(formattedDateDestinationPath);

            ParsedResults results = new ParsedResults();

            results.FilePath            = path;
            results.ListDisplayArticles = new List <DisplayArticle>();
            results.WhoReverseIndex     = new Dictionary <string, List <int> >();
            results.WhenReverseIndex    = new Dictionary <string, List <int> >();
            results.WhereReverseIndex   = new Dictionary <string, List <int> >();
            results.WhatReverseIndex    = new Dictionary <string, List <int> >();
            results.WhyReverseIndex     = new Dictionary <string, List <int> >();

            if (listArticles.Count <= 0 || listAnnotations.Count <= 0)
            {
                return(null);
            }

            if (File.Exists(formattedDateDestinationPath) && listAnnotations.Count == listFormattedDateAnnotations.Count)
            {
                foreach (int i in Enumerable.Range(0, listAnnotations.Count()))
                {
                    listAnnotations[i].Index         = i;
                    listAnnotations[i].FormattedWhen = listFormattedDateAnnotations[i].When;
                    results.ListDisplayArticles.Add(new DisplayArticle()
                    {
                        Article    = listArticles[i],
                        Annotation = listAnnotations[i]
                    });
                }
            }
            else
            {
                return(null);
            }

            if (File.Exists(invertedIndexDestinationPath))
            {
                XmlDocument doc = new XmlDocument();

                doc.Load(invertedIndexDestinationPath);

                XmlNodeList whoNodes   = doc.DocumentElement.SelectNodes("/data/who/entry");
                XmlNodeList whenNodes  = doc.DocumentElement.SelectNodes("/data/when/entry");
                XmlNodeList whereNodes = doc.DocumentElement.SelectNodes("/data/where/entry");
                XmlNodeList whatNodes  = doc.DocumentElement.SelectNodes("/data/what/entry");
                XmlNodeList whyNodes   = doc.DocumentElement.SelectNodes("/data/why/entry");

                foreach (XmlNode entry in whoNodes)
                {
                    List <int> indices = new List <int>();
                    foreach (XmlNode index in entry.SelectNodes("articleIndex"))
                    {
                        indices.Add(Convert.ToInt32(index.InnerText));
                    }
                    results.WhoReverseIndex.Add(entry["text"].InnerText, indices);
                }

                foreach (XmlNode entry in whenNodes)
                {
                    List <int> indices = new List <int>();
                    foreach (XmlNode index in entry.SelectNodes("articleIndex"))
                    {
                        indices.Add(Convert.ToInt32(index.InnerText));
                    }
                    results.WhenReverseIndex.Add(entry.SelectSingleNode("text").InnerText, indices);
                }

                foreach (XmlNode entry in whereNodes)
                {
                    List <int> indices = new List <int>();
                    foreach (XmlNode index in entry.SelectNodes("articleIndex"))
                    {
                        indices.Add(Convert.ToInt32(index.InnerText));
                    }
                    results.WhereReverseIndex.Add(entry.SelectSingleNode("text").InnerText, indices);
                }

                foreach (XmlNode entry in whatNodes)
                {
                    List <int> indices = new List <int>();
                    foreach (XmlNode index in entry.SelectNodes("articleIndex"))
                    {
                        indices.Add(Convert.ToInt32(index.InnerText));
                    }
                    results.WhatReverseIndex.Add(entry.SelectSingleNode("text").InnerText, indices);
                }

                foreach (XmlNode entry in whyNodes)
                {
                    List <int> indices = new List <int>();
                    foreach (XmlNode index in entry.SelectNodes("articleIndex"))
                    {
                        indices.Add(Convert.ToInt32(index.InnerText));
                    }
                    results.WhyReverseIndex.Add(entry.SelectSingleNode("text").InnerText, indices);
                }
            }
            else
            {
                return(null);
            }

            return(results);
        }