示例#1
0
        public override Container ObjectStructure(List <BIS_GrundObjekt> bisList)
        {
            Container container          = new Container();
            var       containerSofttypes = new List <SoftType>();

            var geografiskaplaceringsreferenser = new List <GeografiskPlaceringsreferensInstances>();
            var anläggningsprodukter            = new List <AnläggningsproduktInstances>();
            var funktionellaanläggningar        = new List <FunktionellAnläggningInstances>();
            var styckevaror = new List <StyckevaraInstances>();

            foreach (BIS_SpårSpärr bisSpårSpärr in bisList)
            {
                var suffix = bisSpårSpärr.ObjektTypNummer + bisSpårSpärr.ObjektNummer + ExtraCounter;

                //Noterings Fix
                bisSpårSpärr.Notering = string.IsNullOrEmpty(bisSpårSpärr.Notering)
          ? "Ingen Notering"
          : bisSpårSpärr.Notering;

                var spårspärr                 = CreateSpårSpärr(bisSpårSpärr, suffix);
                var funktionellspårspärr      = CreateFunktionellSPårSpärr(bisSpårSpärr, suffix);
                var spårrspärrindivid         = CreateSpårspärrindivid(bisSpårSpärr, suffix);
                var spårspärrprodukt          = CreateSpårSpärrProdukt(bisSpårSpärr, suffix);
                var spårspärrklotsindivid     = CreateSpårSpärrKlotIndivid(bisSpårSpärr, suffix);
                var spårspärrklotsprodukt     = CreateSpårSpärrKlotProdukt(bisSpårSpärr, suffix);
                var spårspärrdrivindivid      = CreateSpårSpärrDrivindivid(bisSpårSpärr, suffix);
                var spårspärrdrivprodukt      = CreateSpårspärdrivProdukt(bisSpårSpärr, suffix);
                var elmotorindivid            = CreateElmotorIndivid(bisSpårSpärr, suffix);
                var elmotorprodukt            = CreateElmotorProdukt(bisSpårSpärr, suffix);
                var växelställindivid         = CreateVäxelställindivid(bisSpårSpärr, suffix);
                var växelställprodukt         = Createväxelställprodukt(bisSpårSpärr, suffix);
                var kontrollanordningsindivid = CreateKontrollanordningsindivid(bisSpårSpärr, suffix);
                var kontrollanordningsprodukt = Createkontrollannordningsprodukt(bisSpårSpärr, suffix);
                var staggropsvärmeindivid     = CreateStaggropsvärmeindivid(bisSpårSpärr, suffix);
                var staggropsvärmeprodukt     = CreateStaggropsvärmeprodukt(bisSpårSpärr, suffix);

                //ENTRY INSTANCEs
                var spårspärrEntry = new GeografiskPlaceringsreferensEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "Spårspärr" + suffix,
                    data           = spårspärr
                };
                geografiskaplaceringsreferenser.Add(spårspärrEntry);

                var funktionellspårspärrEntry = new FunktionellAnläggningEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "FunktionellSpårspärr" + suffix,
                    data           = funktionellspårspärr
                };
                funktionellaanläggningar.Add(funktionellspårspärrEntry);

                var spårspärrproduktEntry = new AnläggningsproduktEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "Spårspärrprodukt" + suffix,
                    data           = spårspärrprodukt
                };
                anläggningsprodukter.Add(spårspärrproduktEntry);

                var spårspärrklotsproduktEntry = new AnläggningsproduktEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "SpårspärrklotsProdukt" + suffix,
                    data           = spårspärrklotsprodukt
                };
                anläggningsprodukter.Add(spårspärrklotsproduktEntry);

                var spårspärrdrivproduktEntry = new AnläggningsproduktEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "SpårspärrdrivProdukt" + suffix,
                    data           = spårspärrdrivprodukt
                };
                anläggningsprodukter.Add(spårspärrdrivproduktEntry);

                var elmotorproduktEntry = new AnläggningsproduktEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "ElmotorProdukt" + suffix,
                    data           = elmotorprodukt
                };
                anläggningsprodukter.Add(elmotorproduktEntry);

                var växelställproduktEntry = new AnläggningsproduktEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "VäxelställProdukt" + suffix,
                    data           = växelställprodukt
                };
                anläggningsprodukter.Add(växelställproduktEntry);

                var kontrollanordningsproduktEntry = new AnläggningsproduktEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "KontrollanordningsProdukt" + suffix,
                    data           = kontrollanordningsprodukt
                };
                anläggningsprodukter.Add(kontrollanordningsproduktEntry);

                var staggropsvärmeproduktEntry = new AnläggningsproduktEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "StaggropsvärmeProdukt" + suffix,
                    data           = staggropsvärmeprodukt
                };
                anläggningsprodukter.Add(staggropsvärmeproduktEntry);

                var spårspärrklotsindividEntry = new StyckevaraEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "SpårspärrklotsIndivid" + suffix,
                    data           = spårspärrklotsindivid
                };
                styckevaror.Add(spårspärrklotsindividEntry);


                var spårrspärrindividEntry = new StyckevaraEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "SpårrspärrIndivid" + suffix,
                    data           = spårrspärrindivid
                };
                styckevaror.Add(spårrspärrindividEntry);

                var spårspärrdrivindividEntry = new StyckevaraEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "SpårspärrdrivIndivid" + suffix,
                    data           = spårspärrdrivindivid
                };
                styckevaror.Add(spårspärrdrivindividEntry);

                var elmotorindividEntry = new StyckevaraEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "ElmotorIndivid" + suffix,
                    data           = elmotorindivid
                };
                styckevaror.Add(elmotorindividEntry);

                var växelställindividEntry = new StyckevaraEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "VäxelställIndivid" + suffix,
                    data           = växelställindivid
                };
                styckevaror.Add(växelställindividEntry);

                var kontrollanordningsindividEntry = new StyckevaraEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "KontrollanordningsIndivid" + suffix,
                    data           = kontrollanordningsindivid
                };
                styckevaror.Add(kontrollanordningsindividEntry);

                var staggropsvärmeindividEntry = new StyckevaraEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "StaggropsvärmeIndivid" + suffix,
                    data           = staggropsvärmeindivid
                };
                styckevaror.Add(staggropsvärmeindividEntry);

                ExtraCounter++;
            }

            //SOFTTYPES
            var anläggningsproduktsofttype = new SoftType_Anläggningsprodukt
            {
                Array     = true,
                id        = "Anläggningsprodukt",
                instances = anläggningsprodukter.ToArray()
            };

            var funktionellanläggningsofttype = new SoftType_FunktionellAnläggning
            {
                Array     = true,
                id        = "FunktionellAnläggning",
                instances = funktionellaanläggningar.ToArray()
            };

            var styckevarasofttype = new SoftType_Styckevara
            {
                Array     = true,
                id        = "Styckevara",
                instances = styckevaror.ToArray()
            };

            var geografiskplaceringsreferenssofttype = new SoftType_GeografiskPlaceringsreferens
            {
                Array     = true,
                id        = "GeografiskPlaceringsreferens",
                instances = geografiskaplaceringsreferenser.ToArray()
            };

            containerSofttypes.Add(anläggningsproduktsofttype);
            containerSofttypes.Add(funktionellanläggningsofttype);
            containerSofttypes.Add(styckevarasofttype);
            containerSofttypes.Add(geografiskplaceringsreferenssofttype);
            containerSofttypes.AddRange(CreateSupplementarySoftypes());
            containerSofttypes.AddRange(CreateFTKeyReferenceSoftTypes());

            container.softTypes = containerSofttypes.ToArray();

            return(container);
        }
        public override Container ObjectStructure(List <BIS_GrundObjekt> bisList)
        {
            Container container          = new Container();
            var       containerSofttypes = new List <SoftType>();

            var geografiskaplaceringsreferenser = new List <GeografiskPlaceringsreferensInstances>();
            var skarvFunktionellaAnläggningar   = new List <FunktionellAnläggningInstances>();
            var skarvAnläggningsProdukter       = new List <AnläggningsproduktInstances>();
            var skarvStyckevara = new List <StyckevaraInstances>();


            foreach (BIS_Skarv bisSkarv in bisList)
            {
                var suffix = bisSkarv.ObjektTypNummer + bisSkarv.ObjektNummer + ExtraCounter;

                //Noterings Fix
                bisSkarv.Notering = string.IsNullOrEmpty(bisSkarv.Notering)
          ? "Ingen Notering"
          : bisSkarv.Notering;

                var isolerskarvsprodukt   = CreateIsolerSkarvsProdukt(bisSkarv, suffix);
                var isolerskarvsindivid   = CreateIsolerSkarvsIndivid(bisSkarv, suffix);
                var partikelmagnetprodukt = CreatePartikelMagnetProdukt(bisSkarv, suffix);
                var partikelmagnetindivid = CreatePartikelMagnetIndivid(bisSkarv, suffix);
                var isolerskarv           = CreateIsolerskarv(bisSkarv, suffix);

                //------------------------------------------------------------------------------Entry
                var isolerskarvEntry = new GeografiskPlaceringsreferensEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "Isolerskarv" + suffix,
                    data           = isolerskarv
                };
                geografiskaplaceringsreferenser.Add(isolerskarvEntry);

                var skarvAnläggningsProdukt = new AnläggningsproduktEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "skarvAnläggningsProdukt" + suffix,
                    data           = isolerskarvsprodukt
                };
                skarvAnläggningsProdukter.Add(skarvAnläggningsProdukt);

                var isolerskarvsIndivid = new StyckevaraEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "IsolerskarvsIndivid" + suffix,
                    data           = isolerskarvsindivid
                };
                skarvStyckevara.Add(isolerskarvsIndivid);

                var partikelmagnetProduktEntry = new AnläggningsproduktEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "Partikelmagnetprodukt" + suffix,
                    data           = partikelmagnetprodukt
                };
                skarvAnläggningsProdukter.Add(partikelmagnetProduktEntry);

                var styckevara = new StyckevaraEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "Partikelmagnetindivid" + suffix,
                    data           = partikelmagnetindivid
                };
                skarvStyckevara.Add(styckevara);

                ExtraCounter++;
            }

            //------------------------------------------------------------------------------SoftTypes
            var anläggningsProduktSoftType = new SoftType_Anläggningsprodukt
            {
                Array     = true,
                id        = "Anläggningsprodukt",
                instances = skarvAnläggningsProdukter.ToArray()
            };
            var styckSoftType = new SoftType_Styckevara
            {
                Array     = true,
                id        = "Styckevara",
                instances = skarvStyckevara.ToArray()
            };
            var funktionellSoftType = new SoftType_FunktionellAnläggning
            {
                Array     = true,
                id        = "Anläggningsfunktion",
                instances = skarvFunktionellaAnläggningar.ToArray()
            };
            var geografiskplaceringsreferenssofttype = new SoftType_GeografiskPlaceringsreferens
            {
                Array     = true,
                id        = "GeografiskPlaceringsreferens",
                instances = geografiskaplaceringsreferenser.ToArray()
            };

            containerSofttypes.Add(anläggningsProduktSoftType);
            containerSofttypes.Add(styckSoftType);
            //Använder inte funktionellAnläggning för tillfället
            containerSofttypes.Add(funktionellSoftType);
            containerSofttypes.Add(geografiskplaceringsreferenssofttype);
            containerSofttypes.AddRange(CreateSupplementarySoftypes());
            containerSofttypes.AddRange(CreateFTKeyReferenceSoftTypes());

            container.softTypes = containerSofttypes.ToArray();
            return(container);
        }
        public override Container ObjectStructure(List <BIS_GrundObjekt> bisList)
        {
            var       formattedBisList   = bisList;
            Container container          = new Container();
            var       containerSofttypes = new List <SoftType>();

            var rälGpr = new List <GeografiskPlaceringsreferensInstances>();
            var rälAnläggningsSpecifikationer = new List <AnläggningsspecifikationInstances>();
            var rälAnläggningsProdukter       = new List <AnläggningsproduktInstances>();
            var rälBulkvaror = new List <BulkvaraInstances>();

            foreach (BIS_Räl bisRäl in formattedBisList)
            {
                var suffix = bisRäl.ObjektTypNummer + bisRäl.ObjektNummer + ExtraCounter;
                //Noterings Fix
                bisRäl.Notering = string.IsNullOrEmpty(bisRäl.Notering)
          ? "Ingen Notering"
          : bisRäl.Notering;

                var räl = new Räl
                {
                    name          = "Räl",
                    notering      = bisRäl.Notering,
                    versionId     = _VersionId,
                    företeelsetyp = new ClassificationReference_GeografiskPlaceringsreferens_företeelsetyp
                    {
                        startSpecified = false,
                        endSpecified   = false,
                        @class         = new FTGeografiskPlaceringsreferensReference
                        {
                            softType    = "FTGeografiskPlaceringsreferens",
                            instanceRef = "Räl"
                        }
                    }
                };
                räl.id = räl.name + suffix;
                //Allt nytt
                var rälSpec = new Rälspecifikation
                {
                    name       = "Rälspecifikation",
                    notering   = bisRäl.Notering,
                    versionId  = _VersionId,
                    numericSet = new RälspecifikationNumericSet(),
                    stringSet  = new RälspecifikationStringSet
                    {
                        skarvTyp = SkapaSkarvTyp(bisRäl, new Rälspecifikation_skarvTyp()),
                        typ      = new Rälspecifikation_typ
                        {
                            generalProperty = new typ
                            {
                                softType    = _SoftTypeProperty,
                                instanceRef = "typ"
                            },
                            JSonMapToPropertyName = _JsonMapToValue,
                            value = "?"
                        }
                    },
                    företeelsetyp = new ClassificationReference_Anläggningsspecifikation_företeelsetyp
                    {
                        @class = new FTAnläggningsspecifikationReference
                        {
                            softType    = "FTAnläggningsspecifikation",
                            instanceRef = "Rälspecifikation"
                        },
                        startSpecified = false,
                        endSpecified   = false
                    },
                    id = "Rälspecifikation" + suffix
                };

                var rälprodukt = new Rälprodukt
                {
                    name       = "Rälprodukt",
                    versionId  = _VersionId,
                    notering   = bisRäl.Notering,
                    numericSet = new RälproduktNumericSet
                    {
                        längd = SkapaLängd(bisRäl, new Rälprodukt_längd())
                    },
                    stringSet = new RälproduktStringSet
                    {
                        profiltyp = new Rälprodukt_profiltyp
                        {
                            generalProperty = new profiltyp
                            {
                                softType    = _SoftTypeProperty,
                                instanceRef = "profiltyp"
                            },
                            value = bisRäl.Rälmodell,
                            JSonMapToPropertyName = _JsonMapToValue
                        },
                        stålsort             = SkapaStålSort(bisRäl, new Rälprodukt_stålsort()),
                        tillverkningsprocess = SkapaTillverkningsProcess(bisRäl, new Rälprodukt_tillverkningsprocess()),
                        vikt = new Rälprodukt_vikt
                        {
                            generalProperty = new vikt
                            {
                                softType    = _SoftTypeProperty,
                                instanceRef = "vikt"
                            },
                            JSonMapToPropertyName = _JsonMapToValue,
                            value = bisRäl.Vikt
                        }
                    },
                    företeelsetyp = new ClassificationReference_Anläggningsprodukt_företeelsetyp
                    {
                        startSpecified = false,
                        endSpecified   = false,
                        @class         = new FTAnläggningsproduktReference
                        {
                            softType    = "FTAnläggningsprodukt",
                            instanceRef = "Rälprodukt"
                        }
                    },
                    id = "Rälprodukt" + suffix
                };

                var rälindivid = new Rälindivid
                {
                    startSpecified = false,
                    endSpecified   = false,
                    versionId      = _VersionId,
                    notering       = bisRäl.Notering,
                    name           = "Rälindivid",
                    numericSet     = new RälindividNumericSet(),
                    stringSet      = new RälindividStringSet
                    {
                        revideradKlassifikation = new Rälindivid_revideradKlassifikation
                        {
                            Array           = true,
                            generalProperty = new revideradKlassifikation
                            {
                                softType    = _SoftTypeProperty,
                                instanceRef = "revideradKlassifikation"
                            },
                            value = bisRäl.Rev_Klass
                        }
                    },
                    företeelsetyp = new ClassificationReference_Bulkvara_företeelsetyp
                    {
                        startSpecified = false,
                        endSpecified   = false,
                        @class         = new FTBulkvaraReference
                        {
                            softType    = "FTBulkvara",
                            instanceRef = "Rälindivid"
                        }
                    },
                    id = "Rälindivid" + suffix
                };

                //ENTRY INSTANCES
                var rälEntry = new GeografiskPlaceringsreferensEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "Räl" + suffix,
                    data           = räl
                };
                rälGpr.Add(rälEntry);

                var rälAnläggningsSpecifikation = new AnläggningsspecifikationEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "Anläggningsspecifikation" + suffix,
                    data           = rälSpec
                };
                rälAnläggningsSpecifikationer.Add(rälAnläggningsSpecifikation);

                var rälAnläggningsProdukt = new AnläggningsproduktEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "Anläggningsprodukt" + suffix,
                    data           = rälprodukt
                };
                rälAnläggningsProdukter.Add(rälAnläggningsProdukt);

                var rälBulkvara = new BulkvaraEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "Bulkvara" + suffix,
                    data           = rälindivid
                };
                rälBulkvaror.Add(rälBulkvara);

                ExtraCounter++;
            }

            //SOFTTYPES
            var rälSoftype = new SoftType_GeografiskPlaceringsreferens
            {
                Array     = true,
                id        = "GeografiskPlaceringsreferens",
                instances = rälGpr.ToArray()
            };
            var anläggningsSpecifikationSoftType = new SoftType_Anläggningsspecifikation
            {
                Array     = true,
                id        = "Anläggningsspecifikation",
                instances = rälAnläggningsSpecifikationer.ToArray()
            };
            var anläggningsProduktSoftType = new SoftType_Anläggningsprodukt
            {
                Array     = true,
                id        = "Anläggningsprodukt",
                instances = rälAnläggningsProdukter.ToArray()
            };
            var bulkvaraSoftType = new SoftType_Bulkvara
            {
                Array     = true,
                id        = "Bulkvara",
                instances = rälBulkvaror.ToArray()
            };

            containerSofttypes.Add(rälSoftype);
            containerSofttypes.Add(anläggningsSpecifikationSoftType);
            containerSofttypes.Add(anläggningsProduktSoftType);
            containerSofttypes.Add(bulkvaraSoftType);
            containerSofttypes.AddRange(CreateSupplementarySoftypes());
            containerSofttypes.AddRange(CreateFTKeyReferenceSoftTypes());

            container.softTypes = containerSofttypes.ToArray();
            return(container);
        }
        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);
        }