hrntsm/STBDotNet

View on GitHub
STBDotNet/v140/StbSteel.cs

Summary

Maintainability
A
0 mins
Test Coverage
using System.Collections.Generic;
using System.Xml.Serialization;

namespace STBDotNet.v140
{
    public class StbSecSteel : StbSection
    {
        [XmlElement("StbSecRoll-H")] public List<StbSeRollH> RollH { get; set; }
        [XmlElement("StbSecBuild-H")] public List<StbSecBuildH> BuildH { get; set; }
        [XmlElement("StbSecRoll-BOX")] public List<StbSecRollBox> RollBox { get; set; }
        [XmlElement("StbSecBuild-BOX")] public List<StbSecBuildBox> BuildBox { get; set; }
        [XmlElement("StbSecPipe")] public List<StbSecPipe> Pipe { get; set; }
        [XmlElement("StbSecRoll-T")] public List<StbSecRollT> RollT { get; set; }
        [XmlElement("StbSecRoll-C")] public List<StbSecRollC> RollC { get; set; }
        [XmlElement("StbSecRoll-L")] public List<StbSecRollL> RollL { get; set; }
        [XmlElement("StbSecRoll-LipC")] public List<StbSecRollLipC> LipC { get; set; }
        [XmlElement("StbSecRoll-FB")] public List<StbSecRollFB> FlatBar { get; set; }
        [XmlElement("StbSecRoll-Bar")] public List<StbSecRollRoundBar> RoundBar { get; set; }

        public override string ToString()
        {
            int numSection
                = RollH?.Count ?? 0
                + BuildH?.Count ?? 0
                + RollBox?.Count ?? 0
                + BuildBox?.Count ?? 0
                + Pipe?.Count ?? 0
                + RollT?.Count ?? 0
                + RollC?.Count ?? 0
                + RollL?.Count ?? 0
                + LipC?.Count ?? 0
                + FlatBar?.Count ?? 0
                + RoundBar?.Count ?? 0;
            return $"Number of StbSecSteel Sections:{numSection}";
        }
    }

    public abstract class SteelSectionBase
    {
        [XmlAttribute("name")] public string Name { get; set; }
    }

    public abstract class WidthHeightSection : SteelSectionBase
    {
        [XmlAttribute("A")] public double A { get; set; }
        [XmlAttribute("B")] public double B { get; set; }
    }

    public abstract class HShapeBase : WidthHeightSection
    {
        [XmlAttribute("t1")] public double T1 { get; set; }
        [XmlAttribute("t2")] public double T2 { get; set; }
    }

    public abstract class CLShapeBase : HShapeBase, ISideType
    {
        [XmlAttribute("type")] public string Type { get; set; }
        [XmlAttribute("r1")] public double R1 { get; set; }
        [XmlAttribute("r2")] public double R2 { get; set; }
        [XmlAttribute("side")] public string Side { get; set; }
    }

    public abstract class BoxShapeBase : WidthHeightSection
    { }

    public interface ISideType
    {
        string Side { get; set; }
    }

    public class StbSeRollH : HShapeBase
    {
        [XmlAttribute("type")] public string Type { get; set; }
        [XmlAttribute("r")] public double R { get; set; }
    }

    public class StbSecBuildH : HShapeBase
    { }

    public class StbSecRollBox : BoxShapeBase
    {
        [XmlAttribute("type")] public string Type { get; set; }
        [XmlAttribute("t")] public double T { get; set; }
        [XmlAttribute("R")] public double R { get; set; }
    }

    public class StbSecBuildBox : BoxShapeBase
    {
        [XmlAttribute("t1")] public double T1 { get; set; }
        [XmlAttribute("t2")] public double T2 { get; set; }
    }

    public class StbSecPipe : SteelSectionBase
    {
        [XmlAttribute("D")] public double D { get; set; }
        [XmlAttribute("t")] public double T { get; set; }
    }

    public class StbSecRollT : StbSeRollH
    { }

    public class StbSecRollC : CLShapeBase
    { }

    public class StbSecRollL : CLShapeBase
    { }

    public class StbSecRollLipC : SteelSectionBase, ISideType
    {
        [XmlAttribute("type")] public string Type { get; set; }
        [XmlAttribute("H")] public double H { get; set; }
        [XmlAttribute("B")] public double B { get; set; }
        [XmlAttribute("C")] public double C { get; set; }
        [XmlAttribute("t")] public double T { get; set; }
        [XmlAttribute("side")] public string Side { get; set; }
    }

    public class StbSecRollFB : SteelSectionBase
    {
        [XmlAttribute("B")] public double B { get; set; }
        [XmlAttribute("t")] public double T { get; set; }
    }

    public class StbSecRollRoundBar : SteelSectionBase
    {
        [XmlAttribute("R")] public double R { get; set; }
    }
}