示例#1
0
        private static IReferenceRelation GetReferenceRelation(object newObject, IReference newReference)
        {
            if (newObject is ITaxon)
            {
                IUserContext      userContext          = CoreData.UserManager.GetCurrentUser();
                ReferenceRelation newReferenceRelation = new ReferenceRelation()
                {
                    RelatedObjectGuid = ((ITaxon)newObject).Guid,
                    Type        = CoreData.ReferenceManager.GetReferenceRelationType(userContext, ReferenceRelationTypeId.Source),
                    Reference   = null,
                    ReferenceId = newReference.Id
                };
                return(newReferenceRelation);
            }

            if (newObject is ITaxonName)
            {
                IUserContext      userContext          = CoreData.UserManager.GetCurrentUser();
                ReferenceRelation newReferenceRelation = new ReferenceRelation()
                {
                    RelatedObjectGuid = ((ITaxonName)newObject).Guid,
                    Type        = CoreData.ReferenceManager.GetReferenceRelationType(userContext, ReferenceRelationTypeId.Source),
                    Reference   = null,
                    ReferenceId = newReference.Id
                };
                return(newReferenceRelation);
            }

            return(null);
        }
        public void CreateReferenceRelations()
        {
            IReferenceRelation    referenceRelation;
            ITaxon                taxon;
            ReferenceRelationList referenceRelations;

            referenceRelations = new ReferenceRelationList();
            taxon                               = CoreData.TaxonManager.GetTaxon(GetUserContext(), TaxonId.Bear);
            referenceRelation                   = new ReferenceRelation();
            referenceRelation.DataContext       = new DataContext(GetUserContext());
            referenceRelation.Reference         = null;
            referenceRelation.ReferenceId       = 100;
            referenceRelation.RelatedObjectGuid = taxon.Guid;
            referenceRelation.Type              = CoreData.ReferenceManager.GetReferenceRelationType(GetUserContext(), ReferenceRelationTypeId.Source);
            referenceRelations.Add(referenceRelation);

            taxon                               = CoreData.TaxonManager.GetTaxon(GetUserContext(), TaxonId.Beaver);
            referenceRelation                   = new ReferenceRelation();
            referenceRelation.DataContext       = new DataContext(GetUserContext());
            referenceRelation.Reference         = null;
            referenceRelation.ReferenceId       = 100;
            referenceRelation.RelatedObjectGuid = taxon.Guid;
            referenceRelation.Type              = CoreData.ReferenceManager.GetReferenceRelationType(GetUserContext(), ReferenceRelationTypeId.Source);
            referenceRelations.Add(referenceRelation);
            using (ITransaction transaction = GetUserContext().StartTransaction())
            {
                GetReferenceManager(true).CreateReferenceRelations(GetUserContext(), referenceRelations);
            }
        }
        /// <summary>
        /// Convert a WebReferenceRelation instance
        /// to a IReferenceRelation instance.
        /// </summary>
        /// <param name="userContext">
        /// Information about the user that makes this method call.
        /// </param>
        /// <param name="webReferenceRelation">A WebReferenceRelation object.</param>
        /// <returns>A IReferenceRelation instance.</returns>
        private IReferenceRelation GetReferenceRelation(IUserContext userContext,
                                                        WebReferenceRelation webReferenceRelation)
        {
            IReferenceRelation referenceRelation;

            referenceRelation = new ReferenceRelation();
            UpdateReferenceRelation(userContext,
                                    referenceRelation,
                                    webReferenceRelation);
            return(referenceRelation);
        }
        public void CreateReferenceRelation()
        {
            IReferenceRelation referenceRelation;

            using (ITransaction transaction = GetUserContext().StartTransaction())
            {
                referenceRelation = new ReferenceRelation();
                referenceRelation.RelatedObjectGuid = "test:dyntaxa.se:1";
                referenceRelation.Type        = CoreData.ReferenceManager.GetReferenceRelationType(GetUserContext(), 1);
                referenceRelation.ReferenceId = 171;
                GetReferenceDataSource(true).CreateReferenceRelation(GetUserContext(), referenceRelation);
                Assert.IsNotNull(referenceRelation);
                Assert.IsTrue(referenceRelation.Id > 0);
            }
        }
示例#5
0
        /// <summary>
        /// Get dyntaxa reference relation
        /// </summary>
        /// <param name="taxonRevision"></param>
        /// <returns></returns>
        public static List <IReferenceRelation> GetDyntaxaRevisionReferenceRelation(ITaxonRevision taxonRevision)
        {
            var referencesToAdd = new List <IReferenceRelation>();

            IUserContext      userContext          = CoreData.UserManager.GetCurrentUser();
            ReferenceRelation newReferenceRelation = new ReferenceRelation()
            {
                RelatedObjectGuid = taxonRevision.Guid,
                Type        = CoreData.ReferenceManager.GetReferenceRelationType(userContext, ReferenceRelationTypeId.Source),
                Reference   = null,
                ReferenceId = DyntaxaReference
            };

            referencesToAdd.Add(newReferenceRelation);
            return(referencesToAdd);
        }
        /// <summary>
        /// Gets the reference relations that will be created.
        /// </summary>
        /// <param name="guid">The unique identifier.</param>
        /// <param name="newReferences">The new references.</param>
        /// <param name="applyMode">The apply mode.</param>
        /// <returns>A list with all reference relations that will be created.</returns>
        private ReferenceRelationList GetReferenceRelationsThatWillBeCreated(string guid, ReferenceViewModel[] newReferences, ReferenceApplyMode applyMode)
        {
            ReferenceRelationList referencesToAdd = new ReferenceRelationList();

            IEnumerable <IReferenceRelation> existingReferenceRelations = CoreData.ReferenceManager.GetReferenceRelations(user, guid);

            if (applyMode == ReferenceApplyMode.ReplaceOnlySourceInUnderlyingTaxa)
            {
                existingReferenceRelations = existingReferenceRelations.Where(referenceRelation => referenceRelation.Type.Id == (int)ReferenceRelationTypeId.Source);
            }

            foreach (ReferenceViewModel newReference in newReferences)
            {
                // If the new reference isn't source and we are in Replace only source in underlying mode, don't add this reference.
                if (applyMode == ReferenceApplyMode.ReplaceOnlySourceInUnderlyingTaxa && newReference.UsageTypeId != (int)ReferenceRelationTypeId.Source)
                {
                    continue;
                }

                bool referenceAlreadyExists = existingReferenceRelations.Any(existingReferenceRelation => newReference.Id == existingReferenceRelation.ReferenceId && newReference.UsageTypeId == existingReferenceRelation.Type.Id);

                if (!referenceAlreadyExists)
                {
                    IReference reference = new ArtDatabanken.Data.Reference();
                    reference.Id = newReference.Id;

                    ReferenceRelation newReferenceRelation = new ReferenceRelation()
                    {
                        RelatedObjectGuid = guid,
                        Type        = CoreData.ReferenceManager.GetReferenceRelationType(user, newReference.UsageTypeId),
                        Reference   = null,
                        ReferenceId = newReference.Id
                    };
                    referencesToAdd.Add(newReferenceRelation);
                }
            }

            return(referencesToAdd);
        }