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 FixEnvironment( ref Dictionary <string, NaturTypeV22> naturTypes, Miljovariabel miljovariabel, BulkInsertOperation bulk, IDocumentSession session, IEnumerable <string> indexes) { var indexName = "_Naturtype_LKM_hovedtypetrinn"; var index = indexes.FirstOrDefault(x => x.StartsWith(indexName, StringComparison.OrdinalIgnoreCase)); if (string.IsNullOrEmpty(index)) { return; } Log2Console(index, true); var query = session.Query <HovedtypeTrinn>(index); using var enumerator = session.Advanced.Stream(query); while (enumerator.MoveNext()) { var hovedtypeTrinn = enumerator.Current?.Document; if (hovedtypeTrinn == null) { continue; } Log2Console($"docId: {hovedtypeTrinn.docId}"); var parent = naturTypes.ContainsKey($"NA {hovedtypeTrinn.HT}") ? naturTypes[$"NA {hovedtypeTrinn.HT}"] : null; if (parent == null) { continue; } var trinn = new TrinnV22 { Kode = hovedtypeTrinn.Gradientkode, Type = "Miljøvariabel", LKMKategori = hovedtypeTrinn.LkmKategori, Navn = miljovariabel.GetTitleByKode(hovedtypeTrinn.Gradientkode) }; if (string.IsNullOrEmpty(trinn.Navn)) { continue; } var listSubTrinn = new List <SubTrinnV22>(); for (var i = 1; i < 6; i++) { var subTrinn = new SubTrinnV22(); switch (i) { case 1: subTrinn.Kode = hovedtypeTrinn.Trinn1; subTrinn.Navn = hovedtypeTrinn.Trinn1Navn; subTrinn.Basistrinn = hovedtypeTrinn.Trinn1Csv; break; case 2: subTrinn.Kode = hovedtypeTrinn.Trinn2; subTrinn.Navn = hovedtypeTrinn.Trinn2Navn; subTrinn.Basistrinn = hovedtypeTrinn.Trinn2Csv; break; case 3: subTrinn.Kode = hovedtypeTrinn.Trinn3; subTrinn.Navn = hovedtypeTrinn.Trinn3Navn; subTrinn.Basistrinn = hovedtypeTrinn.Trinn3Csv; break; case 4: subTrinn.Kode = hovedtypeTrinn.Trinn4; subTrinn.Navn = hovedtypeTrinn.Trinn4Navn; subTrinn.Basistrinn = hovedtypeTrinn.Trinn4Csv; break; case 5: subTrinn.Kode = hovedtypeTrinn.Trinn5; subTrinn.Navn = hovedtypeTrinn.Trinn5Navn; subTrinn.Basistrinn = hovedtypeTrinn.Trinn5Csv; break; } if (string.IsNullOrEmpty(subTrinn.Kode)) { continue; } listSubTrinn.Add(subTrinn); } if (listSubTrinn.Count > 0) { trinn.Trinn = listSubTrinn.ToArray(); } if (parent.Trinn == null) { parent.Trinn = new[] { trinn }; } else if (parent.Trinn.Any(x => x.Kode.Equals(trinn.Kode, StringComparison.OrdinalIgnoreCase))) { continue; } else { var list = new List <TrinnV22>(); list.AddRange(parent.Trinn); list.Add(trinn); parent.Trinn = list.ToArray(); } bulk.Store( RavenJObject.FromObject(parent), RavenJObject.Parse("{'Raven-Entity-Name': 'Naturtypes'}"), $"Naturtype/{parent.Kode.Replace(" ", "_")}" ); Thread.Sleep(1); } }