private Kanalisationprodukt CreateKanalisationProdukt(BIS_Kanalisation p, string suffix) { Kanalisationprodukt o = new Kanalisationprodukt { name = "Kanalisationprodukt", versionId = _VersionId, notering = p.Notering, stringSet = new KanalisationproduktStringSet { materialKanalisation = new Kanalisationprodukt_materialKanalisation { value = p.MaterialKanalisation, generalProperty = new materialKanalisation { instanceRef = "materialKanalisation", softType = _SoftTypeProperty }, JSonMapToPropertyName = _JsonMapToValue }, materialLock = new Kanalisationprodukt_materialLock { value = p.MaterialLock, generalProperty = new materialLock { instanceRef = "materialLock", softType = _SoftTypeProperty }, JSonMapToPropertyName = _JsonMapToValue }, typ = new Kanalisationprodukt_typ { value = p.Typ, generalProperty = new typ { instanceRef = "typ", softType = _SoftTypeProperty }, JSonMapToPropertyName = _JsonMapToValue } }, företeelsetyp = new ClassificationReference_Anläggningsprodukt_företeelsetyp { @class = new FTAnläggningsproduktReference { instanceRef = "Kanalisationprodukt", softType = "FTAnläggningsproduktReference" }, startSpecified = false, endSpecified = false } }; o.id = o.name + suffix; return(o); }
public override Container ObjectStructure(List <BIS_GrundObjekt> bisList) { var formattedBisList = bisList; Container container = new Container(); //All softypes must be aggregated before they are added to the container var containerSoftTypes = new List <SoftType>(); //Sort this mess out at some point var geoPlaceringar = new List <GeografiskPlaceringsreferensInstances>(); var plattformsProdukter = new List <AnläggningsproduktInstances>(); var plattformsFunktioner = new List <FunktionellAnläggningInstances>(); var plattformVäderskydd = new List <AnläggningsproduktInstances>(); var plattformStyckevaror = new List <StyckevaraInstances>(); var plattformSkylt = new List <AnläggningsproduktInstances>(); var plattformSkyltIndivid = new List <StyckevaraInstances>(); var plattformKanalisation = new List <AnläggningsproduktInstances>(); var plattformKanalisationIndivid = new List <StyckevaraInstances>(); var plattformIndivider = new List <StyckevaraInstances>(); //Does all the real mapping against ANDA resources foreach (BIS_Plattform bisPlattform in formattedBisList) { var suffix = bisPlattform.ObjektTypNummer + bisPlattform.ObjektNummer + ExtraCounter; //Noterings fix bisPlattform.Notering = string.IsNullOrEmpty(bisPlattform.Notering) ? "Ingen Notering" : bisPlattform.Notering; var plattform = new Plattform { name = "Plattform", notering = bisPlattform.Notering, versionId = _VersionId, företeelsetyp = new ClassificationReference_GeografiskPlaceringsreferens_företeelsetyp { startSpecified = false, endSpecified = false, @class = new FTGeografiskPlaceringsreferensReference { softType = "FTGeografiskPlaceringsreferens", instanceRef = "Plattform" } } }; plattform.id = plattform.name + suffix; var plattformGPR = new GeografiskPlaceringsreferensEntrydefaultIn { Array = true, id = "Plattform" + suffix, inputSchemaRef = _InputSchemaRef, data = plattform }; geoPlaceringar.Add(plattformGPR); var plattformsProduktInstans = new AnläggningsproduktEntrydefaultIn { Array = true, inputSchemaRef = _InputSchemaRef, id = "PlattformProduktAnläggningsprodukt" + suffix }; var plattformprodukt = new Plattformprodukt { notering = bisPlattform.Notering, name = "Plattformprodukt", versionId = _VersionId, stringSet = new PlattformproduktStringSet { PlattformBeläggning = SkapaPlattformBeläggning(bisPlattform, new Plattformprodukt_PlattformBeläggning()), plattformskantMaterial = SkapaPlattformKantMaterial(bisPlattform, new Plattformprodukt_plattformskantMaterial()), nominellHöjd = new Plattformprodukt_nominellHöjd { generalProperty = new nominellHöjd { instanceRef = "nominellHöjd", softType = _SoftTypeProperty }, value = bisPlattform.Höjd, JSonMapToPropertyName = _JsonMapToValue } }, numericSet = new PlattformproduktNumericSet { verkligHöjd = SkapaVerkligHöjd(bisPlattform, new Plattformprodukt_verkligHöjd()), längd = new Plattformprodukt_längd { generalProperty = new längd { instanceRef = "längd", softType = _SoftTypeProperty }, value = bisPlattform.Längd, JSonMapToPropertyName = _JsonMapToValue, Unit = new m { instanceRef = "m", softType = "Unit" } }, bredd = new Plattformprodukt_bredd { generalProperty = new bredd { instanceRef = "bredd", softType = _SoftTypeProperty }, value = bisPlattform.Bredd, JSonMapToPropertyName = _JsonMapToValue, Unit = new m { instanceRef = "m", softType = "Unit" } } }, företeelsetyp = new ClassificationReference_Anläggningsprodukt_företeelsetyp { startSpecified = false, endSpecified = false, @class = new FTAnläggningsproduktReference { softType = "FTAnläggningsprodukt", instanceRef = "Plattformprodukt" } } }; plattformprodukt.id = plattformprodukt.name + suffix; plattformsProduktInstans.data = plattformprodukt; plattformsProdukter.Add(plattformsProduktInstans); var plattformsFunktionInstans = new FunktionellAnläggningEntrydefaultIn { Array = true, inputSchemaRef = _InputSchemaRef, id = "PlattformFunktionFunktionell" + suffix }; var plattformFunktion = new Plattformfunktion { notering = bisPlattform.Notering, name = "PlattformFunktion", versionId = _VersionId, stringSet = new PlattformfunktionStringSet { harFotsteg = SkapaPlattformFotsteg(bisPlattform, new Plattformfunktion_harFotsteg()), harPlattformsutrustning = SkapaPlattformUtrustning(bisPlattform, new Plattformfunktion_harPlattformsutrustning()), harSkyddsräcken = SkapaPlattformSkyddsräcken(bisPlattform, new Plattformfunktion_harSkyddsräcken()) }, numericSet = new PlattformfunktionNumericSet(), företeelsetyp = new ClassificationReference_FunktionellAnläggning_företeelsetyp { @class = new FTFunktionellAnläggningReference { softType = "FTFunktionellAnläggning", instanceRef = "Plattformfunktion" } } }; plattformFunktion = SkyddzonOchLedstråk(bisPlattform, plattformFunktion, new Plattformfunktion_harLedstråk(), new Plattformfunktion_harSkyddszon()); plattformFunktion.id = plattformFunktion.name + suffix; plattformsFunktionInstans.data = plattformFunktion; plattformsFunktioner.Add(plattformsFunktionInstans); //Skydd eller Tak var plattformAnläggningsProduktInstans = new AnläggningsproduktEntrydefaultIn { Array = true, id = "PlattformVäderskyddOchSkärmtakAnläggningsprodukt" + suffix, inputSchemaRef = _InputSchemaRef }; var plattformStyckevaraInstans = new StyckevaraEntrydefaultIn { Array = true, id = "PlattformVäderskyddOchSkärmtakStyckevara" + suffix, inputSchemaRef = _InputSchemaRef }; var väderskyddProdukt = new Väderskyddprodukt { name = "Väderskyddprodukt", notering = bisPlattform.Notering, versionId = _VersionId, företeelsetyp = new ClassificationReference_Anläggningsprodukt_företeelsetyp { startSpecified = false, endSpecified = false, @class = new FTAnläggningsproduktReference { softType = "FTAnläggningsprodukt", instanceRef = "Väderskyddprodukt" } } }; väderskyddProdukt.id = väderskyddProdukt.name + suffix; var väderskyddIndivid = new Väderskyddindivid { startSpecified = false, endSpecified = false, name = "Väderskyddindivid", notering = bisPlattform.Notering, versionId = _VersionId, företeelsetyp = new ClassificationReference_Styckevara_företeelsetyp { startSpecified = false, endSpecified = false, @class = new FTStyckevaraReference { softType = "FTStyckevara", instanceRef = "Väderskyddindivid" } } }; väderskyddIndivid.id = väderskyddIndivid.name + suffix; var skärmtakProdukt = new Skärmtakprodukt { name = "Skärmtakprodukt", notering = bisPlattform.Notering, versionId = _VersionId, företeelsetyp = new ClassificationReference_Anläggningsprodukt_företeelsetyp { startSpecified = false, endSpecified = false, @class = new FTAnläggningsproduktReference { softType = "FTAnläggningsprodukt", instanceRef = "Skärmtakprodukt" } } }; skärmtakProdukt.id = skärmtakProdukt.name + suffix; var skärmtakIndivid = new Skärmtakindivid { startSpecified = false, endSpecified = false, name = "Skärmtakindivid", notering = bisPlattform.Notering, versionId = _VersionId, företeelsetyp = new ClassificationReference_Styckevara_företeelsetyp { startSpecified = false, endSpecified = false, @class = new FTStyckevaraReference { softType = "FTStyckevara", instanceRef = "Skärmtakindivid" } } }; skärmtakIndivid.id = skärmtakIndivid.name + suffix; switch (bisPlattform.Väderskydd) { case "Skydd": plattformAnläggningsProduktInstans.data = väderskyddProdukt; plattformStyckevaraInstans.data = väderskyddIndivid; break; case "Tak": plattformAnläggningsProduktInstans.data = skärmtakProdukt; plattformStyckevaraInstans.data = skärmtakIndivid; break; } plattformVäderskydd.Add(plattformAnläggningsProduktInstans); plattformStyckevaror.Add(plattformStyckevaraInstans); //End Väderskydd //Skylt var skyltProdukt = new Fast_skyltprodukt { name = "Fast_skyltprodukt", notering = bisPlattform.Notering, versionId = _VersionId, företeelsetyp = new ClassificationReference_Anläggningsprodukt_företeelsetyp { startSpecified = false, endSpecified = false, @class = new FTAnläggningsproduktReference { softType = "FTAnläggningsprodukt", instanceRef = "Fast_skyltprodukt" } } }; skyltProdukt.id = skyltProdukt.name + suffix; var skyltIndivid = new Fast_skyltindivid { startSpecified = false, endSpecified = false, name = "Fast_skyltindivid", notering = bisPlattform.Notering, versionId = _VersionId, företeelsetyp = new ClassificationReference_Styckevara_företeelsetyp { startSpecified = false, endSpecified = false, @class = new FTStyckevaraReference { softType = "FTStyckevara", instanceRef = "Fast_skyltindivid" } } }; skyltIndivid.id = skyltIndivid.name + suffix; var plattformSkyltAnläggningsProdukt = new AnläggningsproduktEntrydefaultIn { Array = true, id = "PlattformSkyltAnläggningsprodukt" + suffix, inputSchemaRef = _InputSchemaRef, data = skyltProdukt }; var plattformSkyltStyckevara = new StyckevaraEntrydefaultIn { Array = true, id = "PlattformSkyltStyckevara" + suffix, inputSchemaRef = _InputSchemaRef, data = skyltIndivid }; if (bisPlattform.Skylt != "?") { plattformSkylt.Add(plattformSkyltAnläggningsProdukt); plattformSkyltIndivid.Add(plattformSkyltStyckevara); } //Kanalisation (BrunOLock) var kanalisationsProdukt = new Kanalisationprodukt { name = "Kanalisationprodukt", notering = bisPlattform.Notering, versionId = _VersionId, stringSet = new KanalisationproduktStringSet(), numericSet = new KanalisationproduktNumericSet(), företeelsetyp = new ClassificationReference_Anläggningsprodukt_företeelsetyp { startSpecified = false, endSpecified = false, @class = new FTAnläggningsproduktReference { softType = "FTAnläggningsprodukt", instanceRef = "Kanalisationprodukt" } } }; kanalisationsProdukt.id = kanalisationsProdukt.name + suffix; var kanalisationsIndivid = new Kanalisationindivid { name = "Kanalisationindivid", notering = bisPlattform.Notering, versionId = _VersionId, startSpecified = false, endSpecified = false, företeelsetyp = new ClassificationReference_Styckevara_företeelsetyp { startSpecified = false, endSpecified = false, @class = new FTStyckevaraReference { softType = "FTStyckevara", instanceRef = "Kanalisationindivid" } } }; kanalisationsIndivid.id = kanalisationsIndivid.name + suffix; var plattformKanalisationProdukt = new AnläggningsproduktEntrydefaultIn { Array = true, id = "PlattformKanalisationAnläggningsprodukt" + suffix, inputSchemaRef = _InputSchemaRef, data = kanalisationsProdukt }; var plattformKanalisationStyckevara = new StyckevaraEntrydefaultIn { Array = true, id = "PlattformKanalisationStyckevara" + suffix, inputSchemaRef = _InputSchemaRef, data = kanalisationsIndivid }; if (bisPlattform.Brunn_Och_Lock != "?") { plattformKanalisation.Add(plattformKanalisationProdukt); plattformKanalisationIndivid.Add(plattformKanalisationStyckevara); } //PlattformIndivid var plattformindivid = new Plattformindivid { startSpecified = false, endSpecified = false, name = "Plattformindivid", notering = bisPlattform.Notering, versionId = _VersionId, företeelsetyp = new ClassificationReference_Styckevara_företeelsetyp { startSpecified = false, endSpecified = false, @class = new FTStyckevaraReference { softType = "FTStyckevara", instanceRef = "Plattformindivid" } } }; plattformindivid.id = plattformindivid.name + suffix; var plattformIndividStyckevara = new StyckevaraEntrydefaultIn { Array = true, id = "PlattformIndividStyckevara" + suffix, inputSchemaRef = _InputSchemaRef, data = plattformindivid }; plattformIndivider.Add(plattformIndividStyckevara); ExtraCounter++; } var anläggningsProduktSoftType = new SoftType_Anläggningsprodukt { Array = true, id = "Anläggningsprodukt", instances = plattformsProdukter.ToArray() }; var funktionellAnläggningsSoftType = new SoftType_FunktionellAnläggning { Array = true, id = "FunktionellAnläggning", instances = plattformsFunktioner.ToArray() }; var anläggningsProduktSoftTypeSkydd = new SoftType_Anläggningsprodukt { Array = true, id = "Anläggningsprodukt", instances = plattformVäderskydd.ToArray() }; var styckevaraProduktSoftType = new SoftType_Styckevara { Array = true, id = "Styckevara", instances = plattformStyckevaror.ToArray() }; var anläggningsProduktSTSkylt = new SoftType_Anläggningsprodukt { Array = true, id = "Anläggningsprodukt", instances = plattformSkylt.ToArray() }; var styckevaraProduktSTSkylt = new SoftType_Styckevara { Array = true, id = "Styckevara", instances = plattformSkyltIndivid.ToArray() }; var anläggningsProduktKanalisation = new SoftType_Anläggningsprodukt { Array = true, id = "Anläggningsprodukt", instances = plattformKanalisation.ToArray() }; var styckevaraProduktKanalisation = new SoftType_Styckevara { Array = true, id = "Styckevara", instances = plattformKanalisationIndivid.ToArray() }; var plattformIndivid = new SoftType_Styckevara { Array = true, id = "Styckevara", instances = plattformIndivider.ToArray() }; var geoPlaceringSoftType = new SoftType_GeografiskPlaceringsreferens { Array = true, id = "GeografiskPlaceringsreferens", instances = geoPlaceringar.ToArray() }; containerSoftTypes.Add(anläggningsProduktSoftType); containerSoftTypes.Add(funktionellAnläggningsSoftType); containerSoftTypes.Add(anläggningsProduktSoftTypeSkydd); containerSoftTypes.Add(styckevaraProduktSoftType); containerSoftTypes.Add(anläggningsProduktSTSkylt); containerSoftTypes.Add(styckevaraProduktSTSkylt); containerSoftTypes.Add(anläggningsProduktKanalisation); containerSoftTypes.Add(styckevaraProduktKanalisation); containerSoftTypes.Add(plattformIndivid); containerSoftTypes.Add(geoPlaceringSoftType); //Adds the extra softypes needed containerSoftTypes.AddRange(CreateSupplementarySoftypes()); containerSoftTypes.AddRange(CreateFTKeyReferenceSoftTypes()); //Last step is to prepare the container for serialization container.softTypes = containerSoftTypes.ToArray(); return(container); }