Exemplo n.º 1
0
        public async Task TestITISPlantInfoProcessor()
        {
            var transformer = new ITISPlantInfoTransformer();
            var itisData    = ITISPlantInfoData();
            var plantInfos  = new List <PlantInfo>();

            itisData.ForEach(i => plantInfos.AddRange(transformer.Transform(new List <TaxonomicUnit> {
                i
            })));

            var originRepository        = RepositoryMocks.GetStandardMockOriginRepository(new List <Stores.Origin>());
            var locationRepository      = RepositoryMocks.GetStandardMockLocationRepository(new List <Stores.Location>());
            var lifeformRepository      = RepositoryMocks.GetStandardMockLifeformRepository(new List <Stores.Lifeform>());
            var plantInfoRepository     = RepositoryMocks.GetStandardMockPlantInfoRepository(new List <Stores.PlantInfo>());
            var plantLocationRepository = RepositoryMocks.GetStandardMockPlantLocationRepository(new List <Stores.PlantLocation>());
            var synonymRepository       = RepositoryMocks.GetStandardMockSynonymRepository();
            var taxonRepository         = RepositoryMocks.GetStandardMockTaxonRepository(new List <Stores.Taxon>());
            var plantSynonymRepository  = new Mock <IRepository <Stores.PlantSynonym> >();
            var plantInfoIndex          = SearchMocks.GetStandardMockPlantInfoIndex();
            var lifeformIndex           = SearchMocks.GetStandardMockLifeformIndex();

            var locationService  = new LocationService(locationRepository.Object);
            var originService    = new OriginService(originRepository.Object, locationService);
            var lifeformService  = new LifeformService(lifeformRepository.Object, lifeformIndex.Object);
            var plantInfoService = new PlantInfoService(plantInfoRepository.Object, plantLocationRepository.Object, plantInfoIndex.Object);
            var synonymService   = new SynonymService(synonymRepository.Object);
            var taxonService     = new TaxonService(taxonRepository.Object, synonymService);

            var processor = new PlantInfoProcessor(lifeformService, originService, plantInfoService, taxonService, locationService);

            await processor.InitializeOrigin(transformer.Origin);

            await processor.InitializeLifeforms();

            await processor.InitializeTaxons();

            var result = await processor.Process(plantInfos);

            result.Count(p => p.ScientificName == "Glandularia quadrangulata").Should().Be(1);
            result.Count(p => p.Taxon.Subfamily == null).Should().Be(5);
            result.Count(p => p.Taxon.Species == "cremersii").Should().Be(1);
            result.Count(p => p.Taxon.Form == "viridifolia").Should().Be(1);
            result.Count(p => p.Taxon.Subspecies == "purpurea").Should().Be(1);
            result.Count(p => p.Taxon.Variety == "graminea").Should().Be(1);
            result.Where(p => p.Locations != null).SelectMany(p => p.Locations).Count().Should().Be(3);
            result.Where(p => p.Locations != null).SelectMany(p => p.Locations).Count(l => l.Status == LocationStatus.Native).Should().Be(3);
            result.Select(p => p.Origin).DistinctBy(o => o.OriginId).Count().Should().Be(5);
        }
Exemplo n.º 2
0
        public async Task TestITISSynonymProcessor()
        {
            var transformer = new ITISSynonymTransformer();

            var itisData = ITISSynonymData();
            var synonyms = new List <Synonym>();

            itisData.ForEach(i => synonyms.Add(transformer.Transform(i)));

            var originRepository   = RepositoryMocks.GetStandardMockOriginRepository(new List <Stores.Origin>());
            var locationRepository = RepositoryMocks.GetStandardMockLocationRepository(new List <Stores.Location>());
            var synonymRepository  = RepositoryMocks.GetStandardMockSynonymRepository(new List <Stores.Synonym>());
            var taxonRepository    = RepositoryMocks.GetStandardMockTaxonRepository(new List <Stores.Taxon>());

            var locationService = new LocationService(locationRepository.Object);
            var originService   = new OriginService(originRepository.Object, locationService);
            var synonymService  = new SynonymService(synonymRepository.Object);
            var taxonService    = new TaxonService(taxonRepository.Object, synonymService);

            var processor = new SynonymProcessor(synonymService, originService, taxonService);

            await processor.InitializeOrigin(transformer.Origin);

            await processor.InitializeTaxons();

            var result = await processor.Process(synonyms);

            result.Count().Should().Be(16);
            result.Count(s => s.Taxon.Kingdom == "Plantae").Should().Be(1);
            result.Count(s => s.Language == "English").Should().Be(10);
            result.Count(s => s.DateUpdated.Year == 2003).Should().Be(3);
            result.Count(s => s.Rank == "Variety").Should().Be(2);
            result.Count(s => s.Taxon.Variety != null).Should().Be(2);
            result.Count(s => s.Taxon.Variety == "paludicola").Should().Be(1);
            result.Select(s => s.Origin).Count().Should().Be(16);
        }
Exemplo n.º 3
0
        //private async Task StoreAssessment(int id, FA4 doc, User user, bool notUpdateChangedBy, bool forceStore = false)
        //{
        //    //var dateTimeFormat = "yyyy-MM-dd HH:mm:ss";
        //    var now = DateTime.Now;
        //    doc.LastUpdatedAt = now;

        //    var assessment = _dbContext.Assessments.SingleOrDefault(x => x.Id == id);

        //    if (!forceStore && (assessment.LockedForEditBy != null && assessment.LockedForEditBy != user.Brukernavn))
        //    {
        //        throw new Exception("IKKE SKRIVETILGANG TIL DENNE VURDERINGEN - Låst av annen bruker");
        //    }


        //    // check and update referenceUsages
        //    var usedReferences = doc.References.Select(x => x.ReferenceId).ToArray();
        //    if (!forceStore && usedReferences.Any())
        //    {
        //        bool ok = await _referenceService.SignalUsage(usedReferences, user.Id);
        //    }

        //    var curAss = JsonConvert.DeserializeObject<FA4>(assessment.Doc);

        //    byte[] zipfile;
        //    var fileName = "ArtskartData.zip";
        //    const string name = "Datagrunnlag fra Artskart";
        //    const string filetype = "application/zip";

        //    if (!forceStore && doc.ArtskartSistOverført != curAss.ArtskartSistOverført)
        //    {
        //        try
        //        {
        //            zipfile = await TaskHelper.TimeoutAfter(GetZipDataFromArtskart(doc), TimeSpan.FromSeconds(10));
        //        }
        //        catch
        //        {
        //            // ok here
        //            zipfile = Array.Empty<byte>();
        //        }

        //        if (zipfile.Length > 0)
        //        {
        //            var attach = await _dbContext.Attachments.Where(x =>
        //                x.AssessmentId == assessment.Id && x.Name == name && x.Type == filetype &&
        //                x.FileName == fileName).FirstOrDefaultAsync();
        //            if (attach != null)
        //            {
        //                attach.File = zipfile;
        //                attach.IsDeleted = false;
        //                attach.Date = DateTime.Now;
        //                attach.UserId = user.Id;
        //            }
        //            else
        //            {
        //                attach = new Attachment
        //                {
        //                    AssessmentId = assessment.Id,
        //                    Date = DateTime.Now,
        //                    File = zipfile,
        //                    FileName = fileName,
        //                    Name = name,
        //                    Type = filetype,
        //                    UserId = user.Id
        //                };
        //                _dbContext.Attachments.Add(attach);
        //            }
        //        }

        //    }

        //    var history = new AssessmentHistory()
        //    {
        //        Id = assessment.Id,
        //        Doc = assessment.Doc,
        //        HistoryAt = now
        //    };

        //    _dbContext.AssessmentHistories.Add(history);

        //    if (!notUpdateChangedBy)
        //    {
        //        doc.EvaluationStatus = "inprogress";
        //        doc.LastUpdatedOn = now;
        //        doc.LastUpdatedBy = user.Brukernavn;
        //    }

        //    var assessmentString = Newtonsoft.Json.JsonConvert.SerializeObject(doc);
        //    assessment.Doc = assessmentString;
        //    await _dbContext.SaveChangesAsync().ConfigureAwait(false);

        //}
        //private static async Task<byte[]> GetZipDataFromArtskart(FA4 rlRodliste2019)
        //{
        //    // hent datasett fra artskart
        //    var date = DateTime.Parse(rlRodliste2019.ArtskartSistOverført);
        //    var kriterier = rlRodliste2019.ArtskartModel;

        //    var apibase =
        //        "https://artskart.artsdatabanken.no/PublicApi/api/listhelper/";
        //    var type =
        //        kriterier.IncludeObjects == kriterier.IncludeObservations
        //            ? "all"
        //            : kriterier.IncludeObjects
        //                ? "specimen"
        //                : "observations";
        //    var region =
        //        kriterier.IncludeNorge == kriterier.IncludeSvalbard
        //            ? "all"
        //            : kriterier.IncludeNorge
        //                ? "fastland"
        //                : "svalbard";
        //    var excludeGbif =
        //    kriterier.ExcludeGbif ? "&sourcedatabases[]=-40,-211" : "";
        //    var queryparams =
        //        $"&fromYear={kriterier.ObservationFromYear}&toYear={kriterier.ObservationToYear}&fromMonth={kriterier.FromMonth}&toMonth={kriterier.ToMonth}&type={type}&region={region}{excludeGbif}";
        //    queryparams += $"&scientificNameId={rlRodliste2019.VurdertVitenskapeligNavnId}";

        //    if (!string.IsNullOrWhiteSpace(rlRodliste2019.ArtskartSelectionGeometry))
        //    {
        //        queryparams += $"&geojsonPolygon=";
        //        dynamic json = JsonConvert.DeserializeObject(rlRodliste2019.ArtskartSelectionGeometry);
        //        dynamic coordinates = json.geometry.coordinates;
        //        dynamic items = coordinates[0];
        //        foreach (dynamic item in items)
        //        {
        //            foreach (dynamic o in item)
        //            {
        //                string s = o.ToString();
        //                queryparams += s.Replace(",", ".") + ",";
        //            }
        //        }

        //        queryparams = queryparams.Substring(0, queryparams.Length - 1);
        //    }

        //    if (!string.IsNullOrWhiteSpace(rlRodliste2019.ArtskartAdded))
        //    {
        //        queryparams += $"&addPoints={rlRodliste2019.ArtskartAdded}";
        //    }

        //    if (!string.IsNullOrWhiteSpace(rlRodliste2019.ArtskartRemoved))
        //    {
        //        queryparams += $"&removePoints={rlRodliste2019.ArtskartRemoved}";
        //    }

        //    var urlen = apibase + rlRodliste2019.TaxonId + "/downloadObservations/?" + queryparams;
        //    using var client = new HttpClient();

        //    var zipfile = await client.GetByteArrayAsync(urlen);
        //    return zipfile ;
        //}

        private static FA4 CreateNewAssessment(string expertgroup, string userName, int scientificNameId)
        {
            if (string.IsNullOrWhiteSpace(expertgroup))
            {
                throw new ArgumentNullException(nameof(expertgroup));
            }
            if (string.IsNullOrWhiteSpace(userName))
            {
                throw new ArgumentNullException(nameof(userName));
            }
            var vurderingscontext = expertgroup.Contains("Svalbard") ? "S" : "N";
            var vurderingsår      = 2021;
            var createdby         = "createdbyloading";

            var ts     = new Prod.Api.Services.TaxonService();
            var titask = ts.GetTaxonInfoAsync(scientificNameId);
            var ti     = titask.GetAwaiter().GetResult();

            var(hierarcy, rank) = TaxonService.GetFullPathScientificName(ti);


            if (scientificNameId != ti.ValidScientificNameId)
            {
                throw new ArgumentException("supplied scientificNameId is not ValidScientificNameId");
            }

            var rl = new FA4();

            //rl.Ekspertgruppe = expertgroup;
            //rl.VurderingsContext = vurderingscontext;
            //rl.Slettet = false;
            //rl.LastUpdatedOn = DateTime.Now;
            //rl.LastUpdatedBy = userName;
            //rl.Vurderingsår = vurderingsår;
            //rl.SistVurdertAr = vurderingsår;
            //rl.EvaluationStatus = createdby;
            //rl.OverordnetKlassifiseringGruppeKode = "rodlisteVurdertArt";
            //rl.RodlisteVurdertArt = "etablertBestandINorge";
            //rl.VurdertVitenskapeligNavn = ti.ValidScientificName;
            //rl.VurdertVitenskapeligNavnId = ti.ValidScientificNameId;
            //rl.VurdertVitenskapeligNavnAutor = ti.ValidScientificNameAuthorship;
            //rl.VurdertVitenskapeligNavnHierarki = hierarcy;
            //rl.TaxonId = ti.TaxonId;
            //rl.TaxonRank = rank;
            //rl.PopularName = ti.PrefferedPopularname;

            ////ekstra standardverdier
            //rl.ImportInfo.VurderingsId2015 = string.Empty;
            //rl.AndelNåværendeBestand = "-";
            //rl.A1OpphørtOgReversibel = "-";
            //rl.A2Forutgående10År = "-";
            //rl.A3Kommende10År = "-";
            //rl.A4Intervall10År = "-";
            //rl.BA2FåLokaliteterProdukt = "";
            //rl.B1BeregnetAreal = "";
            //rl.B1UtbredelsesområdeKode = "-";
            //rl.B2ForekomstarealKode = "-";
            //rl.BA1KraftigFragmenteringKode = "-";
            //rl.BA2FåLokaliteterKode = "-";
            //rl.CVurdertpopulasjonsstørrelseProdukt = "";
            //rl.C1PågåendePopulasjonsreduksjonKode = "-";
            //rl.C2A1PågåendePopulasjonsreduksjonKode = "-";
            //rl.D1FåReproduserendeIndividKode = "-";
            //rl.D2MegetBegrensetForekomstarealKode = "-";
            //rl.EKvantitativUtryddingsmodellKode = "-";

            ////gudene vet om disse har betydning:
            //rl.WktPolygon = "";
            //rl.SistVurdertAr = 2021;
            //rl.C2A2PågåendePopulasjonsreduksjonKode = "-";
            //rl.C2BPågåendePopulasjonsreduksjonKode = "-";
            //rl.CPopulasjonsstørrelseKode = "-";
            //rl.B2ForekomstarealProdukt = "";
            //rl.B1UtbredelsesområdeProdukt = "";
            //rl.OppsummeringAKriterier = "";
            //rl.OppsummeringBKriterier = "";
            //rl.OppsummeringCKriterier = "";
            //rl.OppsummeringDKriterier = "";
            //rl.OppsummeringEKriterier = "";
            //rl.B2BeregnetAreal = "";
            //if (rl.Ekspertgruppe == "Leddormer") // special case - ville ha LC som standard
            //{
            //    rl.C2A2SannhetsverdiKode = "1";
            //    rl.OverordnetKlassifiseringGruppeKode = "sikkerBestandLC";
            //    rl.Kategori = "LC";
            //}

            //AddFylkeslister(rl);
            //rl.NaturtypeHovedenhet = new List<string>();
            //SetArtskartImportSettings(rl);
            return(rl);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Close all clients (connections) to web services.
        /// </summary>
        public static void CloseClients()
        {
            if (AnalysisService.IsNotNull())
            {
                AnalysisService.CloseClients();
            }

            if (GeoReferenceService.IsNotNull())
            {
                GeoReferenceService.CloseClients();
            }

            if (KulService.IsNotNull())
            {
                KulService.CloseClients();
            }

            if (MvmService.IsNotNull())
            {
                MvmService.CloseClients();
            }

            if (NorsService.IsNotNull())
            {
                NorsService.CloseClients();
            }

            if (NorwayTaxonService.IsNotNull())
            {
                NorwayTaxonService.CloseClients();
            }

            if (PESINameService.IsNotNull())
            {
                PESINameService.CloseClients();
            }

            if (PictureService.IsNotNull())
            {
                PictureService.CloseClients();
            }

            if (ReferenceService.IsNotNull())
            {
                ReferenceService.CloseClients();
            }

            if (SersService.IsNotNull())
            {
                SersService.CloseClients();
            }

            if (SpeciesObservationHarvestService.IsNotNull())
            {
                SpeciesObservationHarvestService.CloseClients();
            }

            if (SwedishSpeciesObservationService.IsNotNull())
            {
                SwedishSpeciesObservationService.CloseClients();
            }

            if (SwedishSpeciesObservationSOAPService.IsNotNull())
            {
                SwedishSpeciesObservationSOAPService.CloseClients();
            }

            if (TaxonAttributeService.IsNotNull())
            {
                TaxonAttributeService.CloseClients();
            }

            if (TaxonService.IsNotNull())
            {
                TaxonService.CloseClients();
            }

            if (DyntaxaInternalService.IsNotNull())
            {
                DyntaxaInternalService.CloseClients();
            }

            if (UserService.IsNotNull())
            {
                UserService.CloseClients();
            }

            if (WramService.IsNotNull())
            {
                WramService.CloseClients();
            }
        }