Beispiel #1
0
        private static Codes CreateCodesByNaturtype(NaturTypeV22 naturType, string host)
        {
            if (naturType == null)
            {
                return(null);
            }

            return(new Codes
            {
                Navn = naturType.Navn,
                Kategori = naturType.Kategori,
                Kode = new AllCodesCode
                {
                    Id = naturType.Kode,
                    Definition = $"{host}{naturType.Kode.Replace(" ", "_")}"
                },
                ElementKode = naturType.ElementKode,
                OverordnetKode = new AllCodesCode
                {
                    Id = naturType.OverordnetKode,
                    Definition = !string.IsNullOrEmpty(naturType.OverordnetKode) ? $"{host}{naturType.OverordnetKode.Replace(" ", "_")}" : ""
                },
                UnderordnetKoder = naturType.UnderordnetKoder == null ? null : CreateCodesByNaturtype(naturType.UnderordnetKoder, host).ToArray(),
                Kartleggingsenheter = naturType.Kartleggingsenheter == null ? null : CreateKartleggingsenheter(naturType.Kartleggingsenheter, host),
                Miljovariabler = naturType.Trinn == null ? null : CreateTrinn(naturType.Trinn).ToArray()
            });
        }
        private void ProcessNinDefinisjonHovedtyper(
            IDictionary <string, NaturTypeV22> naturTypes,
            BulkInsertOperation bulk,
            IDocumentSession session,
            IEnumerable <string> indexes)
        {
            var indexName = "_Naturtype_NiN_definisjon_hovedtyper";
            var index     = indexes.FirstOrDefault(x => x.StartsWith(indexName, StringComparison.OrdinalIgnoreCase));

            if (string.IsNullOrEmpty(index))
            {
                return;
            }

            Log2Console(index, true);

            var query = session.Query <Hovedtype>(index);

            using var enumerator = session.Advanced.Stream(query);
            while (enumerator.MoveNext())
            {
                var hovedtype = enumerator.Current?.Document;
                if (hovedtype == null)
                {
                    continue;
                }

                //Log2Console($"json: {JsonSerializer.Serialize(naturtypeGrunntype, options)}", true);

                Log2Console($"docId: {hovedtype.docId}");

                var naturtype = new NaturTypeV22
                {
                    DatabankId     = -1,
                    Navn           = hovedtype.Navn,
                    Kategori       = "Hovedtype",
                    Kode           = $"NA {hovedtype.docId.Replace("_", " ")}",
                    OverordnetKode = $"NA {hovedtype.docId.Substring(0, 1)}"
                };
                //Log2Console($"Hovedtype: {JsonSerializer.Serialize(naturtype, options)}", true);

                if (naturTypes.ContainsKey(naturtype.Kode))
                {
                    var old = naturTypes[naturtype.Kode];
                    naturtype.Kartleggingsenheter = old.Kartleggingsenheter;
                    naturtype.Malestokk           = old.Malestokk;
                    naturTypes.Remove(old.Kode);
                }
                naturTypes.Add(naturtype.Kode, naturtype);

                bulk.Store(
                    RavenJObject.FromObject(naturtype),
                    RavenJObject.Parse("{'Raven-Entity-Name': 'Naturtypes'}"),
                    $"Naturtype/{naturtype.Kode.Replace(" ", "_")}"
                    );
                Thread.Sleep(1);
            }
        }
        private void ProcessNaturtypeGrunntype(
            IDictionary <string, NaturTypeV22> naturTypes,
            BulkInsertOperation bulk,
            IDocumentSession session,
            IEnumerable <string> indexes)
        {
            var indexName = "_Naturtype_Grunntype";
            var index     = indexes.FirstOrDefault(x => x.StartsWith(indexName, StringComparison.OrdinalIgnoreCase));

            if (string.IsNullOrEmpty(index))
            {
                return;
            }

            Log2Console(index, true);

            var query = session.Query <NaturtypeGrunntype>(index);

            using var enumerator = session.Advanced.Stream(query);
            while (enumerator.MoveNext())
            {
                var naturtypeGrunntype = enumerator.Current?.Document;
                if (naturtypeGrunntype == null)
                {
                    continue;
                }

                //Log2Console($"json: {JsonSerializer.Serialize(naturtypeGrunntype, options)}", true);

                Log2Console($"docId: {naturtypeGrunntype.docId}");

                var naturtype = new NaturTypeV22
                {
                    DatabankId     = -1,
                    Navn           = naturtypeGrunntype.NavnGrunntypeLong,
                    Kategori       = "Grunntype",
                    Kode           = naturtypeGrunntype.docId.Replace("_", " "),
                    OverordnetKode = $"{naturtypeGrunntype.Nivaa} {naturtypeGrunntype.HovedtypeKode}".Trim()
                };
                //Log2Console($"Hovedtype: {JsonSerializer.Serialize(naturtype, options)}", true);

                naturTypes.Add($"{naturtype.Kode}", naturtype);

                bulk.Store(
                    RavenJObject.FromObject(naturtype),
                    RavenJObject.Parse("{'Raven-Entity-Name': 'Naturtypes'}"),
                    $"Naturtype/{naturtype.Kode.Replace(" ", "_")}"
                    );
                Thread.Sleep(1);
            }
        }
Beispiel #4
0
        private static Codes CreateCodeByNaturtype(NaturTypeV22 naturType)
        {
            if (naturType == null)
            {
                return(null);
            }

            return(new Codes
            {
                Navn = naturType.Navn,
                Kategori = naturType.Kategori,
                Kode = new AllCodesCode
                {
                    Id = naturType.Kode,
                    //Definition = $"{naturType.Kode.Replace(" ", "_")}"
                    Definition = $"{RemoveNaFromKode(naturType.Kode)}"
                },
                ElementKode = naturType.ElementKode,
                UnderordnetKoder = naturType.UnderordnetKoder == null ? null : CreateCodesByNaturtype(naturType.UnderordnetKoder, "").ToArray(),
                Kartleggingsenheter = naturType.Kartleggingsenheter == null ? null : CreateKartleggingsenheter(naturType.Kartleggingsenheter, ""),
                Miljovariabler = naturType.Trinn == null ? null : CreateTrinn(naturType.Trinn).ToArray()
            });
        }
        public void Import(IDocumentStore store, Miljovariabel miljovariabel, string rootName)
        {
            var codeV21Service = new Services.v21.CodeV21Service(_configuration);
            var naKode         = codeV21Service.GetByKode(null, rootName, _dbUrl);

            var rootNaturtype = new NaturTypeV22
            {
                DatabankId     = -1,
                Navn           = naKode.Navn,
                Kategori       = naKode.Kategori,
                Kode           = naKode.Kode.Id,
                ElementKode    = naKode.ElementKode,
                OverordnetKode = null
            };

            var naturTypes = new Dictionary <string, NaturTypeV22>
            {
                {
                    rootNaturtype.Kode,
                    rootNaturtype
                }
            };

            var children = new List <string>();

            using var bulk = store.BulkInsert(null, new BulkInsertOptions { OverwriteExisting = true });

            foreach (var code in naKode.UnderordnetKoder)
            {
                naKode = _codeV22Service.GetByKode(null, code.Id, _dbUrl);
                if (naKode == null)
                {
                    naKode = codeV21Service.GetByKode(null, code.Id, _dbUrl);
                    // add to current database
                    var missing = new NaturTypeV22
                    {
                        DatabankId     = -1,
                        Navn           = naKode.Navn,
                        Kategori       = naKode.Kategori,
                        Kode           = naKode.Kode.Id,
                        ElementKode    = naKode.ElementKode,
                        OverordnetKode = naKode.OverordnetKode.Id
                    };
                    bulk.Store(
                        RavenJObject.FromObject(missing),
                        RavenJObject.Parse("{'Raven-Entity-Name': 'Naturtypes'}"),
                        $"Naturtype/{missing.Kode.Replace(" ", "_")}"
                        );
                }
                var childNaturtype = new NaturTypeV22
                {
                    DatabankId     = -1,
                    Navn           = naKode.Navn,
                    Kategori       = naKode.Kategori,
                    Kode           = naKode.Kode.Id,
                    ElementKode    = naKode.ElementKode,
                    OverordnetKode = rootNaturtype.Kode
                };
                children.Add(childNaturtype.Kode);

                naturTypes.Add($"{childNaturtype.Kode}", childNaturtype);

                bulk.Store(
                    RavenJObject.FromObject(childNaturtype),
                    RavenJObject.Parse("{'Raven-Entity-Name': 'Naturtypes'}"),
                    $"Naturtype/{childNaturtype.Kode.Replace(" ", "_")}"
                    );
            }

            rootNaturtype.UnderordnetKoder = children.ToArray();

            bulk.Store(
                RavenJObject.FromObject(rootNaturtype),
                RavenJObject.Parse("{'Raven-Entity-Name': 'Naturtypes'}"),
                $"Naturtype/{rootNaturtype.Kode.Replace(" ", "_")}"
                );

            using var session = store.OpenSession();
            var indexes = GetIndexes(session.Advanced.DocumentStore).ToList();

            ProcessNaturtypeGrunntype(naturTypes, bulk, session, indexes);
            ProcessNinDefinisjonHovedtyper(naturTypes, bulk, session, indexes);

            FixChildrenAndParents(store, naturTypes);

            ProcessNaturtypeKartlegging(ref naturTypes, bulk, session, indexes, "2500");
            ProcessNaturtypeKartlegging(ref naturTypes, bulk, session, indexes, "5000");
            ProcessNaturtypeKartlegging(ref naturTypes, bulk, session, indexes, "10000");
            ProcessNaturtypeKartlegging(ref naturTypes, bulk, session, indexes, "20000");

            //FixChildrenAndParents(store, naturTypes);
            FixEnvironment(ref naturTypes, miljovariabel, bulk, session, indexes);
        }
        private void ProcessNaturtypeKartlegging(
            ref Dictionary <string, NaturTypeV22> naturTypes,
            BulkInsertOperation bulk,
            IDocumentSession session,
            IEnumerable <string> indexes,
            string malestokk)
        {
            var indexName = $"_Naturtype_Kartleggingsenheter_1_{malestokk}";
            var index     = indexes.FirstOrDefault(x => x.StartsWith(indexName, StringComparison.OrdinalIgnoreCase));

            if (string.IsNullOrEmpty(index))
            {
                return;
            }

            Log2Console(index, true);

            var query = session.Query <Kartlegging>(index);

            using var enumerator = session.Advanced.Stream(query);
            while (enumerator.MoveNext())
            {
                var kartlegging = enumerator.Current?.Document;
                if (kartlegging == null)
                {
                    continue;
                }

                //Log2Console($"json: {JsonSerializer.Serialize(kartlegging, options)}", true);

                Log2Console($"docId: {kartlegging.docId}");

                var naturtype = new NaturTypeV22
                {
                    DatabankId     = -1,
                    Kategori       = "Kartleggingsenhet",
                    Kode           = $"{kartlegging.docId.Replace("_", " ")}",
                    OverordnetKode = $"{kartlegging.Nivaa} {kartlegging.HovedtypeKode}",
                    Malestokk      = malestokk
                };
                switch (malestokk)
                {
                case "2500":
                    naturtype.Navn = kartlegging.NavnKartleggingsenheter2500;
                    break;

                case "5000":
                    naturtype.Navn = kartlegging.NavnKartleggingsenheter5000;
                    break;

                case "10000":
                    naturtype.Navn = kartlegging.NavnKartleggingsenheter10000;
                    break;

                case "20000":
                    naturtype.Navn = kartlegging.NavnKartleggingsenheter20000;
                    break;
                }
                //Log2Console($"Hovedtype: {JsonSerializer.Serialize(naturtype, options)}", true);

                if (naturTypes.ContainsKey(naturtype.Kode))
                {
                    var old = naturTypes[naturtype.Kode];
                    naturtype.Navn                = old.Navn;
                    naturtype.Kategori            = old.Kategori;
                    naturtype.ElementKode         = old.ElementKode;
                    naturtype.OverordnetKode      = old.OverordnetKode;
                    naturtype.UnderordnetKoder    = old.UnderordnetKoder;
                    naturtype.Kartleggingsenheter = old.Kartleggingsenheter;
                    naturtype.Malestokk           = null;

                    naturTypes.Remove(naturtype.Kode);
                    naturTypes.Add(naturtype.Kode, naturtype);
                }

                if (!string.IsNullOrEmpty(naturtype.OverordnetKode) && naturTypes.ContainsKey(naturtype.OverordnetKode))
                {
                    var old = naturTypes[naturtype.OverordnetKode];

                    if (old.Kategori.Equals("Hovedtype", StringComparison.OrdinalIgnoreCase))
                    {
                        naturTypes.Remove(old.Kode);

                        if (old.Kartleggingsenheter == null)
                        {
                            old.Kartleggingsenheter = new Dictionary <string, string[]>();
                        }

                        if (!old.Kartleggingsenheter.ContainsKey(malestokk))
                        {
                            old.Kartleggingsenheter.Add(malestokk, new[] { naturtype.Kode });
                        }
                        else
                        {
                            var oldEnheter = old.Kartleggingsenheter[malestokk];
                            old.Kartleggingsenheter.Remove(malestokk);

                            var newEnheter = new List <string>();
                            newEnheter.AddRange(oldEnheter);
                            newEnheter.Add(naturtype.Kode);
                            old.Kartleggingsenheter.Add(malestokk, newEnheter.ToArray());
                        }

                        naturTypes.Add(old.Kode, old);

                        bulk.Store(
                            RavenJObject.FromObject(old),
                            RavenJObject.Parse("{'Raven-Entity-Name': 'Naturtypes'}"),
                            $"Naturtype/{old.Kode.Replace(" ", "_")}"
                            );
                        Thread.Sleep(1);
                    }
                }
                else if (!naturTypes.ContainsKey(naturtype.Kode))
                {
                    naturTypes.Add(naturtype.Kode, naturtype);
                }

                bulk.Store(
                    RavenJObject.FromObject(naturtype),
                    RavenJObject.Parse("{'Raven-Entity-Name': 'Naturtypes'}"),
                    $"Naturtype/{naturtype.Kode.Replace(" ", "_")}"
                    );
                Thread.Sleep(1);
            }
        }