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);
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        /// <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;
            }
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        /// <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);
        }