# This an autogenerated file
# 
# Generated with SIMODynamicResultEntry
from typing import Dict,Sequence,List
from dmt.entity import Entity
from dmt.blueprint import Blueprint
from .blueprints.simodynamicresultentry import SIMODynamicResultEntryBlueprint
from typing import Dict
from sima.sima.property import Property
from sima.sima.result import Result
from sima.sima.resultentry import ResultEntry
from sima.sima.scriptablevalue import ScriptableValue
from sima.simo.lisfile import LisFile
from sima.simo.timesimulationresult import TimeSimulationResult

class SIMODynamicResultEntry(ResultEntry):
    """
    Keyword arguments
    -----------------
    name : str
         (default "")
    description : str
         (default "")
    _id : str
         (default "")
    scriptableValues : List[ScriptableValue]
    properties : List[Property]
    resource : str
         (default "")
    relative : bool
         (default False)
    changeNumber : int
         (default 0)
    results : List[Result]
    entries : List[ResultEntry]
    lisFile : LisFile
    simoLDAT : Result
    timeSimulationResult : TimeSimulationResult
    """

    def __init__(self , name="", description="", _id="", resource="", relative=False, changeNumber=0, **kwargs):
        super().__init__(**kwargs)
        self.name = name
        self.description = description
        self._id = _id
        self.scriptableValues = list()
        self.properties = list()
        self.resource = resource
        self.relative = relative
        self.changeNumber = changeNumber
        self.results = list()
        self.entries = list()
        self.lisFile = None
        self.simoLDAT = None
        self.timeSimulationResult = None
        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 SIMODynamicResultEntryBlueprint()


    @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 properties(self) -> List[Property]:
        """"""
        return self.__properties

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

    @property
    def resource(self) -> str:
        """"""
        return self.__resource

    @resource.setter
    def resource(self, value: str):
        """Set resource"""
        self.__resource = str(value)

    @property
    def relative(self) -> bool:
        """"""
        return self.__relative

    @relative.setter
    def relative(self, value: bool):
        """Set relative"""
        self.__relative = bool(value)

    @property
    def changeNumber(self) -> int:
        """"""
        return self.__changeNumber

    @changeNumber.setter
    def changeNumber(self, value: int):
        """Set changeNumber"""
        self.__changeNumber = int(value)

    @property
    def results(self) -> List[Result]:
        """"""
        return self.__results

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

    @property
    def entries(self) -> List[ResultEntry]:
        """"""
        return self.__entries

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

    @property
    def lisFile(self) -> LisFile:
        """"""
        return self.__lisFile

    @lisFile.setter
    def lisFile(self, value: LisFile):
        """Set lisFile"""
        self.__lisFile = value

    @property
    def simoLDAT(self) -> Result:
        """"""
        return self.__simoLDAT

    @simoLDAT.setter
    def simoLDAT(self, value: Result):
        """Set simoLDAT"""
        self.__simoLDAT = value

    @property
    def timeSimulationResult(self) -> TimeSimulationResult:
        """"""
        return self.__timeSimulationResult

    @timeSimulationResult.setter
    def timeSimulationResult(self, value: TimeSimulationResult):
        """Set timeSimulationResult"""
        self.__timeSimulationResult = value
