# This an autogenerated file
# 
# Generated with PipeStressFilter
from typing import Dict,Sequence,List
from dmt.entity import Entity
from dmt.blueprint import Blueprint
from .blueprints.pipestressfilter import PipeStressFilterBlueprint
from typing import Dict
from sima.post.controlsignalinputslot import ControlSignalInputSlot
from sima.post.inputslot import InputSlot
from sima.post.operationnode import OperationNode
from sima.post.outputslot import OutputSlot
from sima.post.wallpoint import WallPoint
from sima.sima.scriptablevalue import ScriptableValue

class PipeStressFilter(OperationNode):
    """
    Keyword arguments
    -----------------
    name : str
         (default "")
    description : str
         (default "")
    _id : str
         (default "")
    scriptableValues : List[ScriptableValue]
    x : int
         (default 0)
    y : int
         (default 0)
    h : int
         (default 0)
    w : int
         (default 0)
    controlSignalInputSlots : List[ControlSignalInputSlot]
    filterInputSlots : List[InputSlot]
    filterOutputSlots : List[OutputSlot]
    outerDiameter : float
         (default 0.0)
    pipeThickness : float
         (default 0.0)
    internalPressure : float
         (default 0.0)
    externalPressure : float
         (default 0.0)
    numberOfPoints : int
         (default 8)
    positionForStressCalculation : WallPoint
    """

    def __init__(self , name="", description="", _id="", x=0, y=0, h=0, w=0, outerDiameter=0.0, pipeThickness=0.0, internalPressure=0.0, externalPressure=0.0, numberOfPoints=8, positionForStressCalculation=WallPoint.OUTER_WALL, **kwargs):
        super().__init__(**kwargs)
        self.name = name
        self.description = description
        self._id = _id
        self.scriptableValues = list()
        self.x = x
        self.y = y
        self.h = h
        self.w = w
        self.controlSignalInputSlots = list()
        self.filterInputSlots = list()
        self.filterOutputSlots = list()
        self.outerDiameter = outerDiameter
        self.pipeThickness = pipeThickness
        self.internalPressure = internalPressure
        self.externalPressure = externalPressure
        self.numberOfPoints = numberOfPoints
        self.positionForStressCalculation = positionForStressCalculation
        for key, value in kwargs.items():
            if not isinstance(value, Dict):
                setattr(self, key, value)


    @property
    def blueprint(self) -> Blueprint:
        """Return blueprint that this entity represents"""
        return PipeStressFilterBlueprint()


    @property
    def name(self) -> str:
        """"""
        return self.__name

    @name.setter
    def name(self, value: str):
        """Set name"""
        self.__name = str(value)

    @property
    def description(self) -> str:
        """"""
        return self.__description

    @description.setter
    def description(self, value: str):
        """Set description"""
        self.__description = str(value)

    @property
    def _id(self) -> str:
        """"""
        return self.___id

    @_id.setter
    def _id(self, value: str):
        """Set _id"""
        self.___id = str(value)

    @property
    def scriptableValues(self) -> List[ScriptableValue]:
        """"""
        return self.__scriptableValues

    @scriptableValues.setter
    def scriptableValues(self, value: List[ScriptableValue]):
        """Set scriptableValues"""
        if not isinstance(value, Sequence):
            raise Exception("Expected sequense, but was " , type(value))
        self.__scriptableValues = value

    @property
    def x(self) -> int:
        """"""
        return self.__x

    @x.setter
    def x(self, value: int):
        """Set x"""
        self.__x = int(value)

    @property
    def y(self) -> int:
        """"""
        return self.__y

    @y.setter
    def y(self, value: int):
        """Set y"""
        self.__y = int(value)

    @property
    def h(self) -> int:
        """"""
        return self.__h

    @h.setter
    def h(self, value: int):
        """Set h"""
        self.__h = int(value)

    @property
    def w(self) -> int:
        """"""
        return self.__w

    @w.setter
    def w(self, value: int):
        """Set w"""
        self.__w = int(value)

    @property
    def controlSignalInputSlots(self) -> List[ControlSignalInputSlot]:
        """"""
        return self.__controlSignalInputSlots

    @controlSignalInputSlots.setter
    def controlSignalInputSlots(self, value: List[ControlSignalInputSlot]):
        """Set controlSignalInputSlots"""
        if not isinstance(value, Sequence):
            raise Exception("Expected sequense, but was " , type(value))
        self.__controlSignalInputSlots = value

    @property
    def filterInputSlots(self) -> List[InputSlot]:
        """"""
        return self.__filterInputSlots

    @filterInputSlots.setter
    def filterInputSlots(self, value: List[InputSlot]):
        """Set filterInputSlots"""
        if not isinstance(value, Sequence):
            raise Exception("Expected sequense, but was " , type(value))
        self.__filterInputSlots = value

    @property
    def filterOutputSlots(self) -> List[OutputSlot]:
        """"""
        return self.__filterOutputSlots

    @filterOutputSlots.setter
    def filterOutputSlots(self, value: List[OutputSlot]):
        """Set filterOutputSlots"""
        if not isinstance(value, Sequence):
            raise Exception("Expected sequense, but was " , type(value))
        self.__filterOutputSlots = value

    @property
    def outerDiameter(self) -> float:
        """"""
        return self.__outerDiameter

    @outerDiameter.setter
    def outerDiameter(self, value: float):
        """Set outerDiameter"""
        self.__outerDiameter = float(value)

    @property
    def pipeThickness(self) -> float:
        """"""
        return self.__pipeThickness

    @pipeThickness.setter
    def pipeThickness(self, value: float):
        """Set pipeThickness"""
        self.__pipeThickness = float(value)

    @property
    def internalPressure(self) -> float:
        """"""
        return self.__internalPressure

    @internalPressure.setter
    def internalPressure(self, value: float):
        """Set internalPressure"""
        self.__internalPressure = float(value)

    @property
    def externalPressure(self) -> float:
        """"""
        return self.__externalPressure

    @externalPressure.setter
    def externalPressure(self, value: float):
        """Set externalPressure"""
        self.__externalPressure = float(value)

    @property
    def numberOfPoints(self) -> int:
        """"""
        return self.__numberOfPoints

    @numberOfPoints.setter
    def numberOfPoints(self, value: int):
        """Set numberOfPoints"""
        self.__numberOfPoints = int(value)

    @property
    def positionForStressCalculation(self) -> WallPoint:
        """"""
        return self.__positionForStressCalculation

    @positionForStressCalculation.setter
    def positionForStressCalculation(self, value: WallPoint):
        """Set positionForStressCalculation"""
        self.__positionForStressCalculation = value
