public BookRelation DeepCopy(Boolean keepId) { BookRelation newRelation = (BookRelation)MemberwiseClone(); if (keepId) { // newRelation.Id = Id; } return(newRelation); }
public BookRelation FindRelation(BookRelation targetRelation) { foreach (BookRelation relation in BookRelations) { if (relation.EqualsValue(targetRelation)) { return(relation); } } return(null); }
public bool EqualsValue(BookRelation other) { bool result = false; if (BookRelationType == BookRelationType.Abstract) { result = BookRelationType == other.BookRelationType; } else { result = BookRelationType == other.BookRelationType && MetadataId == other.MetadataId; } return(result); }
private BookRelationVM FindExistRelation(BookRelation relationModel) { foreach (BookRelationVM relation in bookRelations) { BookRelation thisRelationModel = relation.BookRelation; if (thisRelationModel.BookRelationType == relationModel.BookRelationType && thisRelationModel.MetadataId == relationModel.MetadataId) { return relation; } } return null; }
private BookRelationVM CreateRelation(BookRelation relationModel) { ObservableCollection<ITitleProvider> objects = StudyUnit.RelatedMetaData(relationModel.BookRelationType); string typeName = BookRelationItem.GetLabel(relationModel.BookRelationType); ITitleProvider obj = SelectMetaDataWindowVM.Find(objects, relationModel.MetadataId); string metaDataName = null; if (obj != null) { metaDataName = obj.Title; } BookRelationVM relation = new BookRelationVM(relationModel) { Parent = this, TypeName = typeName, MetaDataName = metaDataName }; return relation; }
public void Init(BookRelation fromRelation) { foreach (BookRelation relationModel in Book.BookRelations) { BookRelationVM relation = CreateRelation(relationModel); bookRelations.Add(relation); } if (fromRelation != null && FindExistRelation(fromRelation) == null) { Book.BookRelations.Add(fromRelation); bookRelations.Add(CreateRelation(fromRelation)); } modelSyncher = new ModelSyncher<BookRelationVM, BookRelation>(this, bookRelations, Book.BookRelations); }
public BookRelationVM(BookRelation bookRelation) { this.bookRelation = bookRelation; }
public List<BookVM> GetBooks(BookRelation relation) { List<BookVM> resultBooks = new List<BookVM>(); foreach (BookVM book in books) { if (book.ContainsRelation(relation)) { resultBooks.Add(book); } } return resultBooks; }
public BookVM AddBook(BookRelation relation) { return bookForm.AddBookExternal(relation); }
private static Book CreateBook(XElement otherMaterialElem, StudyUnit studyUnit) { string bookId = (string)otherMaterialElem.Attribute(ATTR_ID); if (bookId == null) { return null; } string type = (string)otherMaterialElem.Attribute(ATTR_TYPE); if (type == null) { return null; } XElement citationElem = otherMaterialElem.Element(r + TAG_CITATION); if (citationElem == null) { return null; } string title = (string)citationElem.Element(r + TAG_TITLE); if (title == null) { return null; } Book bookModel = new Book(); bookModel.BookTypeCode = GetBookTypeCode(type); bookModel.Id = bookId; bookModel.Title = title; bookModel.Author = (string)citationElem.Element(r + TAG_CREATOR); // PublisherとCityをセット ParsePublisher((string)citationElem.Element(r + TAG_PUBLISHER), bookModel); bookModel.Editor = (string)citationElem.Element(r + TAG_CONTRIBUTOR); bookModel.AnnouncementDate = ReadDateUnitAsString(citationElem, r + TAG_PUBLICATION_DATE); bookModel.Language = (string)citationElem.Element(r + TAG_LANGUAGE); XElement dcelements = citationElem.Element(dce + TAG_DCELEMENTS); if (dcelements != null) { bookModel.Summary = (string)dcelements.Element(dc + TAG_DC_DESCRIPTION); ParseIdentifier((string)dcelements.Element(dc + TAG_DC_IDENTIFIER), bookModel); } bookModel.Url = (string)otherMaterialElem.Element(r + TAG_EXTERNAL_URL_REFERENCE); IEnumerable<XElement> relationshipElems = otherMaterialElem.Elements(r + TAG_RELATIONSHIP); foreach (XElement relationshipElem in relationshipElems) { string id = ReadReferenceID(relationshipElem, r + TAG_RELATED_TO_REFERENCE); BookRelation relation = new BookRelation(); relation.BookRelationType = GetBookRelationType(studyUnit, id); if (relation.IsBookRelationTypeAbstract) { id = null; } relation.MetadataId = id; bookModel.BookRelations.Add(relation); } return bookModel; }
public BookRelation FindRelation(BookRelation targetRelation) { foreach (BookRelation relation in BookRelations) { if (relation.EqualsValue(targetRelation)) { return relation; } } return null; }
public bool ContainsBookRelation(BookRelation targetRelation) { BookRelation relation = FindRelation(targetRelation); return relation != null; }
public bool ContainsBookRelation(BookRelation targetRelation) { BookRelation relation = FindRelation(targetRelation); return(relation != null); }
private BookVM AddOrEditBook(Book book, BookRelation relation) { EditBookWindowVM vm = new EditBookWindowVM(book) { Parent = this }; vm.Init(relation); EditBookWindow window = new EditBookWindow(vm); window.Owner = Application.Current.MainWindow; BookVM newBook = null; if (window.ShowDialog() == true) { newBook = new BookVM(vm.Book) { Parent = this }; } window.Content = null; return newBook; }
public BookVM SelectBookExternal(BookRelation relation) { SelectObjectWindowVM<BookVM> vm = new SelectObjectWindowVM<BookVM>(books); SelectObjectWindow window = new SelectObjectWindow(vm); BookVM book = SelectObjectWindow.Select(Resources.SelectBook, vm) as BookVM; //文献の選択 if (book != null) { using (UndoTransaction tx = new UndoTransaction(UndoManager)) { if (book.Book.FindRelation(relation) == null) { //ViewModelはEditBookWindowが表示されるたびに作りなおされるのでここで生成する必要はない。 book.Book.BookRelations.Add(relation); } StudyUnit.OnRemoveBooks(); tx.Commit(); } } return book; }
private BookRelationVM SelectRelation(BookRelation selectedRelationModel) { BookRelationType type = BookRelationType.Abstract; string metaDataId = null; if (selectedRelationModel != null) { type = selectedRelationModel.BookRelationType; metaDataId = selectedRelationModel.MetadataId; } SelectMetaDataWindowVM vm = new SelectMetaDataWindowVM(type, metaDataId) { Parent = this }; vm.Init(); SelectMetaDataWindow window = new SelectMetaDataWindow(vm); window.Owner = Window; BookRelationVM relation = null; if (window.ShowDialog() == true) { BookRelation relationModel = new BookRelation(); relationModel.BookRelationType = vm.BookRelationType; ITitleProvider selectedObject = vm.SelectedObject as ITitleProvider; if (selectedObject != null) { relationModel.MetadataId = selectedObject.Id; } relation = FindExistRelation(relationModel); if (relation == null) { relation = CreateRelation(relationModel); } } return relation; }
public BookVM SelectBook(BookRelation bookRelation) { return bookForm.SelectBookExternal(bookRelation); }
public bool EqualsValue(BookRelation other) { bool result = false; if (BookRelationType == BookRelationType.Abstract) { result = BookRelationType == other.BookRelationType; } else { result = BookRelationType == other.BookRelationType && MetadataId == other.MetadataId; } return result; }
public bool ContainsRelation(BookRelation relation) { return Book.ContainsBookRelation(relation); }
public BookVM AddBookExternal(BookRelation relation) { BookVM newBook = AddOrEditBook(null, relation); if (newBook != null) { using (UndoTransaction tx = new UndoTransaction(UndoManager)) { books.Add(newBook); StudyUnit.OnRemoveBooks(); tx.Commit(); } } return newBook; }