public void GetAllGuldmosslavParentsHierarchicalTest() { using (ShimsContext.Create()) { //Arrange const int GuldmosslavTaxonId = 228321; LoginApplicationUserAndSetSessionVariables(); SetSwedishLanguage(); IUserContext userContext = ApplicationUserContextSV; TaxonRelationSearchCriteria searchCriteria = new TaxonRelationSearchCriteria(); searchCriteria.Scope = TaxonRelationSearchScope.AllParentRelations; searchCriteria.Taxa = new TaxonList { CoreData.TaxonManager.GetTaxon(userContext, GuldmosslavTaxonId) }; TaxonRelationList guldmosslavAllParentRelations = CoreData.TaxonManager.GetTaxonRelations(userContext, searchCriteria); TaxonRelationsTree tree = TaxonRelationsTreeManager.CreateTaxonRelationsTree(userContext, guldmosslavAllParentRelations, searchCriteria.Taxa); ITaxonRelationsTreeNode node = tree.GetTreeNode(GuldmosslavTaxonId); //Act List <ITaxonRelationsTreeEdge> parentEdges = node.GetAllValidParentEdgesTopToBottom(true); //Assert Assert.AreEqual(0, parentEdges.First().Parent.Taxon.Category.Id); // Assert first item is Biota Assert.AreEqual(GuldmosslavTaxonId, parentEdges.Last().Child.Taxon.Id); // Assert last item is guldmosslav // When getting guldmosslav taxonrelations a non valid parent relation is included. // which should be removed when getting all parents hierarchical using the tree. Assert.AreNotEqual(guldmosslavAllParentRelations.Count, parentEdges.Count); } }
public ITaxon GetTaxon(IUserContext userContext, int taxonId) { if (taxonId == DyntaxaTestSettings.Default.TestTaxonId) { return(GetReferenceTaxon(userContext, taxonId)); } if (taxonId == DyntaxaTestSettings.Default.TestParentTaxonId) { ITaxon parentTaxon = GetReferenceParentTaxon(userContext, taxonId); foreach (ITaxonRelation parent in parentTaxon.GetNearestParentTaxonRelations(userContext)) { TaxonRelationList relations = new TaxonRelationList(); ITaxon grandParentTaxon = GetReferenceGrandParentTaxon(userContext, DyntaxaTestSettings.Default.TestParentTaxonId + 10); ITaxonRelation rel = new TaxonRelation() { ParentTaxon = grandParentTaxon, ValidFromDate = DateTime.Now, ValidToDate = new DateTime(2022, 1, 30), IsMainRelation = true, ReplacedInTaxonRevisionEventId = null }; relations.Add(rel); parent.ChildTaxon = grandParentTaxon; parent.ChildTaxon.SetParentTaxa(relations); } return(parentTaxon); } if (taxonId == DyntaxaTestSettings.Default.PsophusStridulusTaxonId) { return(GetReferenceTaxon(userContext, taxonId)); } if (taxonId == DyntaxaTestSettings.Default.ParnassiusApolloId) { return(GetReferenceTaxon(userContext, taxonId)); } return(null); }
/// <summary> /// Updates the cache by getting all relations and all taxa from Taxon service /// and create a TaxonRelationTree. /// This method is thread safe. /// </summary> /// <param name="userContext">The user context.</param> public static void UpdateCache(IUserContext userContext) { lock (LockingTarget) { Debug.WriteLine("Start update Cache {0}", DateTime.Now); ITaxonSearchCriteria taxonSearchCriteria = new TaxonSearchCriteria(); var allTaxa = CoreData.TaxonManager.GetTaxa(userContext, taxonSearchCriteria); TaxonRelationSearchCriteria searchCriteria = new TaxonRelationSearchCriteria(); TaxonRelationList allRelations = CoreData.TaxonManager.GetTaxonRelations(userContext, searchCriteria); TaxonRelationList = allRelations; CachedTaxonRelationTree = TaxonRelationsTreeManager.CreateTaxonRelationsTree( userContext, allRelations, allTaxa); CacheLastUpdatedTime = DateTime.Now; Debug.WriteLine("End update Cache {0}", DateTime.Now); DyntaxaLogger.WriteMessage("DyntaxaTree updated {0}", DateTime.Now); } }
public void SplitGraphTest() { using (ShimsContext.Create()) { //Arrange LoginApplicationUserAndSetSessionVariables(); SetSwedishLanguage(); IUserContext userContext = ApplicationUserContextSV; const int lumpSplitTaxonId = 2755; //TaxonIdBefore: 233285 //TaxonIdAfter: 2755 ITaxonSearchCriteria taxonSearchCriteria = new TaxonSearchCriteria(); TaxonList allTaxa = CoreData.TaxonManager.GetTaxa(userContext, taxonSearchCriteria); TaxonRelationSearchCriteria searchCriteria = new TaxonRelationSearchCriteria(); TaxonRelationList allRelations = CoreData.TaxonManager.GetTaxonRelations(userContext, searchCriteria); TaxonRelationsTree tree = TaxonRelationsTreeManager.CreateTaxonRelationsTree(userContext, allRelations, allTaxa, false); var edges = tree.GetAllChildAndParentEdges(lumpSplitTaxonId); var edges2 = tree.GetAllValidChildAndParentEdges(lumpSplitTaxonId); List <ITaxonRelationsTreeNode> sourceNodes = new List <ITaxonRelationsTreeNode> { tree.GetTreeNode(lumpSplitTaxonId) }; GraphVizFormat graphVizFormat = new GraphVizFormat() { ShowLumpsAndSplits = true, ShowRelationId = false }; string graphRepresentation2 = GraphvizManager.CreateGraphvizFormatRepresentation( userContext, tree, edges2, sourceNodes, graphVizFormat); int x = 8; } }
public TaxonRelationList GetTaxonRelations(IUserContext userContext, ITaxonRelationSearchCriteria searchCriteria) { ITaxon parentTaxon = GetReferenceParentTaxon(userContext, 5398); ITaxon taxon = new Taxon(); taxon.Id = 3897845; taxon.SortOrder = 4; taxon.Category = new TaxonCategory() { Id = 2 }; ITaxonRelation taxonRel = new TaxonRelation() { ParentTaxon = parentTaxon, ValidFromDate = DateTime.Now, ValidToDate = new DateTime(2022, 1, 30), IsMainRelation = true, ReplacedInTaxonRevisionEventId = null, ChildTaxon = taxon, }; TaxonRelationList list = new TaxonRelationList(); list.Add(taxonRel); return(list); }
/// <summary> /// Creates a taxon for test /// </summary> /// <returns></returns> public ITaxon GetReferenceTaxon(IUserContext userContext, int taxonId) { ITaxon refTaxon = new Taxon(); string conceptDefinitionPartString = "ConceptDefinitionPartString Text"; DateTime createdDate = new DateTime(2004, 01, 20); Int32 createdBy = userContext.User.Id; string personName = @"Hölje Soderås"; DateTime validFromDate = new DateTime(1763, 02, 08); DateTime validToDate = new DateTime(2447, 08, 01); // refTaxon.ConceptDefinitionFullGeneratedString = conceptDefinitionFullGeneratedString; refTaxon.PartOfConceptDefinition = conceptDefinitionPartString; refTaxon.CreatedBy = createdBy; refTaxon.CreatedDate = createdDate; refTaxon.DataContext = new DataContext(userContext); refTaxon.ModifiedByPerson = personName; refTaxon.ValidFromDate = validFromDate; refTaxon.ValidToDate = validToDate; refTaxon.Id = taxonId; int taxonNameId = DyntaxaTestSettings.Default.TestTaxonNameId; //ITaxonName refTaxonName = GetReferenceTaxonName(userContext, taxonId, taxonNameId); //ITaxonName refTaxonName2 = GetReferenceTaxonName(userContext, taxonId, taxonNameId +1); //refTaxonName2.IsRecommended = false; ITaxonCategory taxonCategory = GetReferenceTaxonCategory(userContext, 0); ITaxonProperties taxonProperties = new TaxonProperties() { DataContext = new DataContext(userContext), IsValid = true, TaxonCategory = taxonCategory, ValidToDate = new DateTime(2111, 12, 31) }; refTaxon.SetTaxonProperties(new List <ITaxonProperties>() { taxonProperties }); refTaxon.Category = taxonCategory; //ITaxonName recName = new TaxonName(userContext); refTaxon.Author = "ReferenceAuthor"; //GetReferenceTaxonName(userContext, taxonId, taxonNameId).Author; refTaxon.ScientificName = "ReferenceScentificName"; //GetReferenceTaxonName(userContext, taxonId, taxonNameId).Name; refTaxon.CommonName = "ReferenceCommonName"; //GetReferenceTaxonName(userContext, taxonId, taxonNameId + 1).Name; ITaxon parentTaxon = GetReferenceParentTaxon(userContext, DyntaxaTestSettings.Default.TestParentTaxonId); //TaxonRelationList relationList = refTaxon.GetNearestParentTaxonRelations(userContext); //ITaxonRelation taxonRel = new TaxonRelation() { ParentTaxon = parentTaxon, ValidFromDate = DateTime.Now, ValidToDate = new DateTime(2022, 1, 30), IsMainRelation = true, ReplacedInTaxonRevisionEventId = null }; //relationList.Add(taxonRel); refTaxon.GetNearestParentTaxonRelations(userContext).Add(new TaxonRelation() { ParentTaxon = parentTaxon, ValidFromDate = DateTime.Now, ValidToDate = new DateTime(2022, 1, 30), IsMainRelation = true, ReplacedInTaxonRevisionEventId = null }); ITaxon taxon = new Taxon(); taxon.Id = 3897845; taxon.SortOrder = 4; taxon.Category = new TaxonCategory() { Id = 2 }; TaxonRelationList parentsList = new TaxonRelationList(); parentsList.Add(new TaxonRelation() { ParentTaxon = parentTaxon, ValidFromDate = DateTime.Now, ValidToDate = new DateTime(2022, 1, 30), IsMainRelation = true, ReplacedInTaxonRevisionEventId = null, ChildTaxon = taxon }); refTaxon.IsInRevision = true; refTaxon.SetParentTaxa(parentsList); return(refTaxon); }