예제 #1
0
 private static void WriteTocInfo(TableOfContentItem item)
 {
     Console.WriteLine("{0}: [{1}] {2}", item.Level, item.PageBreakInfo.PageBreak, item.HeadInfo.HeadText);
     foreach (TableOfContentItem section in item.Sections)
     {
         WriteTocInfo(section);
     }
 }
        public void ChangeSavedOneToManyReferenceTest()
        {
            Key tableOfContentKey;
            Key item1Key, item2Key, item3Key;

            using (var populateSession = Domain.OpenSession())
                using (var transaction = populateSession.OpenTransaction()) {
                    var tableOfContent = new TableOfContent();
                    var item1          = new TableOfContentItem();
                    var item2          = new TableOfContentItem();
                    var item3          = new TableOfContentItem();
                    tableOfContentKey = tableOfContent.Key;
                    item1Key          = item1.Key;
                    item2Key          = item2.Key;
                    item3Key          = item3.Key;
                    tableOfContent.Items.Add(item1);
                    tableOfContent.Items.Add(item2);
                    tableOfContent.Items.Add(item3);
                    transaction.Complete();
                }

            using (var session = Domain.OpenSession(sessionConfiguration)) {
                var tableOfContent = session.Query.Single <TableOfContent>(tableOfContentKey);
                var item1          = session.Query.Single <TableOfContentItem>(item1Key);
                var item2          = session.Query.Single <TableOfContentItem>(item2Key);
                var item3          = session.Query.Single <TableOfContentItem>(item3Key);
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContent).Count(), Is.EqualTo(3));
                Assert.That(ReferenceFinder.GetReferencesTo(item1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(item2).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(item3).Count(), Is.EqualTo(1));

                var newTableOfContent = new TableOfContent();
                item1.TableOfContent = newTableOfContent;

                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContent).Count(), Is.EqualTo(2));
                Assert.That(ReferenceFinder.GetReferencesTo(newTableOfContent).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(item1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(item2).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(item3).Count(), Is.EqualTo(1));

                item2.TableOfContent = null;
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContent).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(newTableOfContent).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(item1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(item2).Count(), Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(item3).Count(), Is.EqualTo(1));
            }
        }
예제 #3
0
        private XElement GenerateList(TableOfContentItem item)
        {
            if (item == null || item.PageBreakInfo.PageBreakXmlId == null)
            {
                return(null);
            }
            string   corresp = item.DivXmlId;
            XElement it      =
                new XElement(nsTei + "item", new XAttribute("corresp", "#" + corresp),
                             new XElement(nsTei + "head", new XText(item.HeadInfo.HeadText)),
                             item.PageBreakInfo.PageBreak == null ? null : new XElement(nsTei + "ref", new XAttribute("target", "#" + item.PageBreakInfo.PageBreakXmlId), new XText(item.PageBreakInfo.PageBreak)),
                             GenerateList(item.Sections)
                             );

            return(it);
        }
예제 #4
0
        private static void WriteTocInfoXml(TableOfContentItem item, int indent)
        {
            Console.WriteLine("<item corresp=\"#{0}\"><head>{1}</head><ref target=\"#{2}\">{3}</xref><item>", item.DivXmlId, item.HeadInfo.HeadText, item.PageBreakInfo.PageBreakXmlId, item.PageBreakInfo.PageBreak);
            if (item.Sections.Count > 0)
            {
                Console.WriteLine();
                indent++;
                string textIndent = new string(' ', indent);
                Console.WriteLine("{0}<list>", textIndent);

                foreach (TableOfContentItem section in item.Sections)
                {
                    WriteTocInfoXml(section, indent);
                }
                Console.WriteLine("</list>");
            }
        }
        public void RemoveEntityToEntitySetTest()
        {
            Key tableWithItemsKey;
            Key item1Key, item2Key;
            Key book1Key, book2Key;
            Key author1Key, author2Key;

            using (var populateSession = Domain.OpenSession())
                using (var transaction = populateSession.OpenTransaction()) {
                    var tableWithItems = new TableOfContent();
                    tableWithItemsKey = tableWithItems.Key;
                    var item1 = new TableOfContentItem();
                    var item2 = new TableOfContentItem();
                    item1Key = item1.Key;
                    item2Key = item2.Key;
                    tableWithItems.Items.Add(item1);
                    tableWithItems.Items.Add(item2);

                    var book1 = new Book();
                    book1Key = book1.Key;
                    var book2 = new Book();
                    book2Key = book2.Key;

                    var author1 = new Author();
                    author1Key = author1.Key;
                    var author2 = new Author();
                    author2Key = author2.Key;

                    author1.Books.Add(book1);
                    author1.Books.Add(book2);
                    author2.Books.Add(book1);
                    author2.Books.Add(book2);

                    transaction.Complete();
                }

            using (var session = Domain.OpenSession(sessionConfiguration)) {
                var tableWithItems = session.Query.Single <TableOfContent>(tableWithItemsKey);
                var item1          = session.Query.Single <TableOfContentItem>(item1Key);
                var item2          = session.Query.Single <TableOfContentItem>(item2Key);
                var item3          = new TableOfContentItem();
                tableWithItems.Items.Add(item3);

                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(item1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(item2).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(item3).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableWithItems).Count(), Is.EqualTo(3));

                tableWithItems.Items.Remove(item3);
                tableWithItems.Items.Remove(item2);
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(item1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(item2).Count(), Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(item3).Count(), Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(tableWithItems).Count(), Is.EqualTo(1));

                var oldBook1 = session.Query.Single <Book>(book1Key);
                var oldBook2 = session.Query.Single <Book>(book2Key);
                var newBook  = new Book();

                var oldAutor1 = session.Query.Single <Author>(author1Key);
                var oldAutor2 = session.Query.Single <Author>(author2Key);
                var newAuthor = new Author();

                newAuthor.Books.Add(oldBook1);
                newAuthor.Books.Add(oldBook2);
                newAuthor.Books.Add(newBook);

                newBook.Authors.Add(oldAutor1);
                newBook.Authors.Add(oldAutor2);

                Assert.That(ReferenceFinder.GetReferencesTo(oldBook1).Count(), Is.EqualTo(3));
                Assert.That(ReferenceFinder.GetReferencesTo(oldBook2).Count(), Is.EqualTo(3));
                Assert.That(ReferenceFinder.GetReferencesTo(oldAutor1).Count(), Is.EqualTo(3));
                Assert.That(ReferenceFinder.GetReferencesTo(oldAutor2).Count(), Is.EqualTo(3));
                Assert.That(ReferenceFinder.GetReferencesTo(newBook).Count(), Is.EqualTo(3));
                Assert.That(ReferenceFinder.GetReferencesTo(newAuthor).Count(), Is.EqualTo(3));

                oldAutor1.Books.Remove(oldBook1);
                Assert.That(ReferenceFinder.GetReferencesTo(oldBook1).Count(), Is.EqualTo(2));
                Assert.That(ReferenceFinder.GetReferencesTo(oldBook2).Count(), Is.EqualTo(3));
                Assert.That(ReferenceFinder.GetReferencesTo(oldAutor1).Count(), Is.EqualTo(2));
                Assert.That(ReferenceFinder.GetReferencesTo(oldAutor2).Count(), Is.EqualTo(3));
                Assert.That(ReferenceFinder.GetReferencesTo(newBook).Count(), Is.EqualTo(3));
                Assert.That(ReferenceFinder.GetReferencesTo(newAuthor).Count(), Is.EqualTo(3));

                oldBook2.Authors.Remove(oldAutor2);
                Assert.That(ReferenceFinder.GetReferencesTo(oldBook1).Count(), Is.EqualTo(2));
                Assert.That(ReferenceFinder.GetReferencesTo(oldBook2).Count(), Is.EqualTo(2));
                Assert.That(ReferenceFinder.GetReferencesTo(oldAutor1).Count(), Is.EqualTo(2));
                Assert.That(ReferenceFinder.GetReferencesTo(oldAutor2).Count(), Is.EqualTo(2));
                Assert.That(ReferenceFinder.GetReferencesTo(newBook).Count(), Is.EqualTo(3));
                Assert.That(ReferenceFinder.GetReferencesTo(newAuthor).Count(), Is.EqualTo(3));

                oldAutor1.Books.Remove(newBook);
                newBook.Authors.Remove(oldAutor2);
                Assert.That(ReferenceFinder.GetReferencesTo(oldBook1).Count(), Is.EqualTo(2));
                Assert.That(ReferenceFinder.GetReferencesTo(oldBook2).Count(), Is.EqualTo(2));
                Assert.That(ReferenceFinder.GetReferencesTo(oldAutor1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(oldAutor2).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(newBook).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(newAuthor).Count(), Is.EqualTo(3));

                newBook.Authors.Remove(newAuthor);
                Assert.That(ReferenceFinder.GetReferencesTo(oldBook1).Count(), Is.EqualTo(2));
                Assert.That(ReferenceFinder.GetReferencesTo(oldBook2).Count(), Is.EqualTo(2));
                Assert.That(ReferenceFinder.GetReferencesTo(oldAutor1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(oldAutor2).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(newBook).Count(), Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(newAuthor).Count(), Is.EqualTo(2));
            }
        }
        public void ChangeReferenceToSameObjectTest()
        {
            Key person1Key, person2Key;
            Key license1Key, license2Key;
            Key tableOfContentKey, item1Key, item2Key;

            using (var populateSession = Domain.OpenSession())
                using (var transaction = populateSession.OpenTransaction()) {
                    var person1 = new Person {
                        DriverLicense = new DriverLicense()
                    };
                    var person2 = new Person {
                        DriverLicense = new DriverLicense()
                    };
                    person1Key  = person1.Key;
                    person2Key  = person2.Key;
                    license1Key = person1.DriverLicense.Key;
                    license2Key = person2.DriverLicense.Key;

                    var tableOfContent = new TableOfContent();
                    tableOfContentKey = tableOfContent.Key;

                    var item1 = new TableOfContentItem();
                    item1Key = item1.Key;
                    tableOfContent.Items.Add(item1);

                    var item2 = new TableOfContentItem();
                    item2Key = item2.Key;
                    tableOfContent.Items.Add(item2);

                    transaction.Complete();
                }

            using (var session = Domain.OpenSession(sessionConfiguration)) {
                var person  = session.Query.Single <Person>(person1Key);
                var license = session.Query.Single <DriverLicense>(license1Key);
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(person).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(license).Count(), Is.EqualTo(1));
                person.DriverLicense = license;
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(person).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(license).Count(), Is.EqualTo(1));

                person  = session.Query.Single <Person>(person2Key);
                license = session.Query.Single <DriverLicense>(license2Key);
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(person).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(license).Count(), Is.EqualTo(1));

                license.Person = person;
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(person).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(license).Count(), Is.EqualTo(1));

                var item1          = session.Query.Single <TableOfContentItem>(item1Key);
                var item2          = session.Query.Single <TableOfContentItem>(item2Key);
                var tableOfContent = session.Query.Single <TableOfContent>(tableOfContentKey);
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(item1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(item2).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContent).Count(), Is.EqualTo(2));

                item1.TableOfContent = tableOfContent;
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(item1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(item2).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContent).Count(), Is.EqualTo(2));

                item2.TableOfContent = tableOfContent;
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(item1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(item2).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContent).Count(), Is.EqualTo(2));
            }
        }
        public void InitializeOneToManyReferenceFieldTest()
        {
            using (var session = Domain.OpenSession(sessionConfiguration)) {
                var tableOfContent      = new TableOfContent();
                var tableOfContentItem1 = new TableOfContentItem();
                var tableOfContentItem2 = new TableOfContentItem();
                var tableOfContentItem3 = new TableOfContentItem();
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContent).Count(), Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem1).Count(), Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem2).Count(), Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem3).Count(), Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));

                tableOfContent.Items.Add(tableOfContentItem1);
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContent).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem2).Count(), Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem3).Count(), Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));

                tableOfContent.Items.Add(tableOfContentItem2);
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContent).Count(), Is.EqualTo(2));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem2).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem3).Count(), Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));

                tableOfContent.Items.Add(tableOfContentItem3);
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContent).Count(), Is.EqualTo(3));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem2).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem3).Count(), Is.EqualTo(1));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));

                tableOfContent      = new TableOfContent();
                tableOfContentItem1 = new TableOfContentItem();
                tableOfContentItem2 = new TableOfContentItem();
                tableOfContentItem3 = new TableOfContentItem();
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContent).Count(), Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem1).Count(), Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem2).Count(), Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem3).Count(), Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));

                tableOfContentItem1.TableOfContent = tableOfContent;
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContent).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem2).Count(), Is.EqualTo(0));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem3).Count(), Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));

                tableOfContentItem2.TableOfContent = tableOfContent;
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContent).Count(), Is.EqualTo(2));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem2).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem3).Count(), Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));

                tableOfContentItem3.TableOfContent = tableOfContent;
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContent).Count(), Is.EqualTo(3));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem1).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem2).Count(), Is.EqualTo(1));
                Assert.That(ReferenceFinder.GetReferencesTo(tableOfContentItem3).Count(), Is.EqualTo(1));
                Assert.That(session.NonPairedReferencesRegistry.AddedReferencesCount, Is.EqualTo(0));
                Assert.That(session.NonPairedReferencesRegistry.RemovedReferencesCount, Is.EqualTo(0));
            }
        }