Ejemplo n.º 1
0
        void ReadHadith(XElement hadithNode)
        {
            var reference           = MultiPartReference.ParseXml(hadithNode.Element("reference"));
            var secondaryReferences = ReadSecondaryReferences(hadithNode.Element("secondaryReferences"));
            var verseReferences     = ReadVerseReferences(hadithNode.Element("verseReferences"));
            var englishTextNode     = hadithNode.Element("english");
            var englishText         = englishTextNode.Elements("text").Select(x => x.Value);
            var arabicTextNode      = hadithNode.Element("arabic");
            var arabicText          = arabicTextNode.Elements("text").Select(x => x.Value);

            HashSet <VerseRangeReference> additionalVerseReferences;

            if (VersesByHadith.TryGetValue(reference, out additionalVerseReferences))
            {
                verseReferences = verseReferences.Concat(additionalVerseReferences);
            }

            var hadith = new Hadith(
                reference: reference,
                otherReferences: secondaryReferences,
                arabicText: arabicText,
                englishText: englishText,
                verseReferences: verseReferences
                );

            Collection.AddHadith(hadith);
        }
Ejemplo n.º 2
0
 public HadithDto(Hadith hadith)
 {
     Number  = hadith.Number;
     Hadith  = hadith.HadithText;
     Tafseel = hadith.Tafseel;
     Book    = hadith.Book;
 }
Ejemplo n.º 3
0
        void ReadHadith(XElement hadithNode)
        {
            var references      = ReadReferences(hadithNode.Element("references"));
            var verseReferences = ReadVerseReferences(hadithNode.Element("verseReferences"));
            var englishTextNode = hadithNode.Element("english");
            var englishText     = englishTextNode.Elements("text").Select(x => x.Value);
            var arabicTextNode  = hadithNode.Element("arabic");
            var arabicText      = arabicTextNode.Elements("text").Select(x => x.Value);

            foreach (HadithReference reference in references)
            {
                HashSet <VerseRangeReference> additionalVerseReferences;
                if (VersesByHadith.TryGetValue(reference, out additionalVerseReferences))
                {
                    verseReferences = verseReferences.Concat(additionalVerseReferences);
                    break;
                }
            }

            var hadith = new Hadith(
                collection: Collection,
                references: references,
                arabicText: arabicText,
                englishText: englishText,
                verseReferences: verseReferences);

            Collection.AddHadith(hadith);
        }
Ejemplo n.º 4
0
        public void Write(Hadith hadith)
        {
            if (hadith.Id <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(Hadith.Id));
            }

            var document = new Document();

            document.Boost = DocumentWeights.Weights["Hadith-" + hadith.CollectionCode];
            document.StoreAndIndex(hadith, x => x.Id);
            foreach (VerseRangeReference verseRangeReference in hadith.VerseRangeReferences)
            {
                string indexName = ExpressionExtensions.GetIndexName <Hadith, object>(x => x.VerseRangeReferences);
                document.StoreAndIndex(indexName, verseRangeReference.ToIndexValue());
            }
            document.AddSearchableText(hadith.ArabicText);
            document.AddSearchableText(hadith.EnglishText);
            document.StoreAndIndex(hadith, x => x.CollectionCode);
            document.StoreAndIndex(hadith, x => x.PrimaryReferenceCode);
            document.StoreAndIndex(hadith, x => x.PrimaryReferencePath);
            document.AddObject(hadith);

            IndexWriter indexWriter = IndexWriterProvider.GetIndexWriter();

            indexWriter.AddDocument(document);

            WriteHadithReferences(indexWriter, hadith);
            WriteVerseReferences(indexWriter, hadith);
        }
Ejemplo n.º 5
0
 void WriteHadithReferences(Hadith hadith)
 {
     using (Xml.WriteElement("references"))
         foreach (var reference in hadith.References.OrderBy(x => x.Code))
         {
             WriteHadithReference(reference);
         }
 }
Ejemplo n.º 6
0
 void WriteHadithVerseReferences(Hadith hadith)
 {
     using (Xml.WriteElement("verseReferences"))
         foreach (var verseReference in hadith.VerseReferences)
         {
             WriteHadithVerseReferences(verseReference);
         }
 }
Ejemplo n.º 7
0
 void WriteHadith(Hadith hadith)
 {
     using (Xml.WriteElement("hadith"))
     {
         WriteHadithReferences(hadith);
         WriteHadithText(hadith);
         WriteHadithVerseReferences(hadith);
     }
 }
Ejemplo n.º 8
0
 public HadithViewModel(
     string collectionName,
     Hadith hadith,
     IEnumerable <HadithReferenceViewModel> references)
 {
     CollectionName = collectionName;
     Hadith         = hadith;
     References     = references.ToList().AsReadOnly();
 }
Ejemplo n.º 9
0
        private void MigrateHadith(Hadith hadith, IEnumerable <HadithIndexDefinitionViewModel> referenceDefinitions)
        {
            Dictionary <string, HadithIndexDefinitionViewModel> definitionsByCode =
                referenceDefinitions.ToDictionary(x => x.Code, StringComparer.InvariantCultureIgnoreCase);

            int hadithId   = NextHadithId++;
            var references = new List <HadithReferenceViewModel>();
            HadithReferenceViewModel primaryReference = null;

            foreach (HadithReference hadithReference in hadith.References)
            {
                (int index, string suffix)[] indexValues =
Ejemplo n.º 10
0
 private void WriteHadithReferences(IndexWriter indexWriter, Hadith hadith)
 {
     foreach (HadithReference reference in hadith.References)
     {
         var doc = new Document();
         doc
         .AddObject(reference)
         .StoreAndIndex(reference, x => x.CollectionCode)
         .StoreAndIndex(reference, x => x.ReferenceCode, x => x.Replace("-", ""))
         .StoreAndIndex(reference, x => x.ReferenceValue1)
         .StoreAndIndex(reference, x => x.ReferenceValue1Suffix)
         .StoreAndIndex(reference, x => x.ReferenceValue2)
         .StoreAndIndex(reference, x => x.ReferenceValue2Suffix)
         .StoreAndIndex(reference, x => x.ReferenceValue3)
         .StoreAndIndex(reference, x => x.ReferenceValue3Suffix);
         indexWriter.AddDocument(doc);
     }
 }
Ejemplo n.º 11
0
        private void WriteVerseReferences(IndexWriter indexWriter, Hadith hadith)
        {
            IEnumerable <HadithVerseLink> hadithVerseLinks =
                hadith.VerseRangeReferences
                .SelectMany(x => x.ToVerseReferences())
                .Select(x => x.ToIndexValue())
                .Select(x => new HadithVerseLink(
                            hadithId: hadith.Id,
                            verseId: x));

            foreach (HadithVerseLink hadithVerseLink in hadithVerseLinks)
            {
                var doc = new Document();
                doc
                .StoreAndIndex(hadithVerseLink, x => x.HadithId)
                .StoreAndIndex(hadithVerseLink, x => x.VerseId)
                .AddObject(hadithVerseLink);
                indexWriter.AddDocument(doc);
            }
        }
Ejemplo n.º 12
0
 void WriteHadithText(Hadith hadith)
 {
     WriteHadithParagraphs("arabic", hadith.ArabicText);
     WriteHadithParagraphs("english", hadith.EnglishText);
 }
Ejemplo n.º 13
0
        static void getHadith()
        {
            HadithDBEntities ctx = new HadithDBEntities();
            var perowih = new string[] { "bukhari", "muslim", "nasai", "abudawud", "tirmidhi", "ibnmajah", "malik", "nawawi40", "riyadussaliheen", "adab", "qudsi40", "shamail", "bulugh" };
            foreach (var item in perowih)
            {
                Hadith newNode = new Hadith();
                newNode.Name = item;

                try
                {

                    var Webget = new HtmlWeb();
                    var doc = Webget.Load(string.Format("http://sunnah.com/{0}/about", item));
                    foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='abouttitle']"))
                    {
                        newNode.Title = node.InnerHtml;
                    }
                    foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='about']"))
                    {
                        newNode.About = node.InnerHtml;
                    }

                }
                catch
                {


                }
                ctx.Hadiths.Add(newNode);
                ctx.SaveChanges();
            }
        }