2424from ..base_model import BaseModel
2525from ..mixin import ModelRefMixin
2626from .configuration import Configuration , ConfigurationIO
27+ from .container_view import ContainerView , ContainerViewIO
2728from .system_context_view import SystemContextView , SystemContextViewIO
29+ from .system_landscape_view import SystemLandscapeView , SystemLandscapeViewIO
2830
2931
3032if TYPE_CHECKING :
@@ -44,20 +46,20 @@ class ViewSetIO(BaseModel):
4446
4547 """
4648
47- # TODO
48- # system_landscape_views: Set[SystemLandscapeView] = Field(
49- # set(), alias="systemLandscapeViews"
50- # )
49+ system_landscape_views : List [SystemLandscapeViewIO ] = Field (
50+ default = (), alias = "systemLandscapeViews"
51+ )
5152 system_context_views : List [SystemContextViewIO ] = Field (
52- [] , alias = "systemContextView "
53+ default = () , alias = "systemContextViews "
5354 )
54- configuration : Optional [ConfigurationIO ]
55- # TODO
56- # container_views: Set[ContainerView] = Field(set(), alias="containerViews")
57- # component_views: Set[ComponentView] = Field(set(), alias="componentViews")
58- # dynamic_views: Set[DynamicView] = Field(set(), alias="dynamicViews")
59- # deployment_views: Set[DeploymentView] = Field(set(), alias="deploymentViews")
60- # filtered_views: Set[FilteredView] = Field(set(), alias="filteredViews")
55+ configuration : Optional [ConfigurationIO ] = None
56+ container_views : List [ContainerViewIO ] = Field (default = (), alias = "containerViews" )
57+
58+ # TODO:
59+ # component_views: List[ComponentView] = Field(set(), alias="componentViews")
60+ # dynamic_views: List[DynamicView] = Field(set(), alias="dynamicViews")
61+ # deployment_views: List[DeploymentView] = Field(set(), alias="deploymentViews")
62+ # filtered_views: List[FilteredView] = Field(set(), alias="filteredViews")
6163
6264
6365class ViewSet (ModelRefMixin , AbstractBase ):
@@ -73,25 +75,81 @@ class ViewSet(ModelRefMixin, AbstractBase):
7375 def __init__ (
7476 self ,
7577 * ,
76- model : "Model" ,
78+ model : Optional ["Model" ] = None ,
79+ # TODO:
80+ # enterprise_context_views: Iterable[EnterpriseContextView] = (),
81+ system_landscape_views : Iterable [SystemLandscapeView ] = (),
7782 system_context_views : Iterable [SystemContextView ] = (),
83+ container_views : Iterable [ContainerView ] = (),
7884 configuration : Optional [Configuration ] = None ,
7985 ** kwargs
8086 ) -> None :
8187 """Initialize a view set."""
8288 super ().__init__ (** kwargs )
89+ # self.enterprise_context_views = set(enterprise_context_views)
90+ self .system_landscape_views = set (system_landscape_views )
8391 self .system_context_views = set (system_context_views )
92+ self .container_views = set (container_views )
8493 # TODO
8594 self .configuration = Configuration () if configuration is None else configuration
8695 self .set_model (model )
8796
97+ def create_system_landscape_view (
98+ self , system_landscape_view : Optional [SystemLandscapeView ] = None , ** kwargs
99+ ) -> SystemLandscapeView :
100+ # TODO:
101+ # assertThatTheViewKeyIsSpecifiedAndUnique(key);
102+ if system_landscape_view is None :
103+ system_landscape_view = SystemLandscapeView (
104+ model = self .get_model (), ** kwargs
105+ )
106+ system_landscape_view .set_viewset (self )
107+ self .system_landscape_views .add (system_landscape_view )
108+ return system_landscape_view
109+
88110 def create_system_context_view (
89- self , system_context_view : SystemContextView = None , ** kwargs
111+ self , system_context_view : Optional [ SystemContextView ] = None , ** kwargs
90112 ) -> SystemContextView :
113+ # TODO:
91114 # assertThatTheSoftwareSystemIsNotNull(softwareSystem);
92115 # assertThatTheViewKeyIsSpecifiedAndUnique(key);
93116 if system_context_view is None :
94117 system_context_view = SystemContextView (** kwargs )
95118 system_context_view .set_viewset (self )
96119 self .system_context_views .add (system_context_view )
97120 return system_context_view
121+
122+ def create_container_view (
123+ self , container_view : Optional [ContainerView ] = None , ** kwargs
124+ ) -> ContainerView :
125+ # TODO:
126+ # assertThatTheSoftwareSystemIsNotNull(softwareSystem);
127+ # assertThatTheViewKeyIsSpecifiedAndUnique(key);
128+ if container_view is None :
129+ container_view = ContainerView (** kwargs )
130+ container_view .set_viewset (self )
131+ self .container_views .add (container_view )
132+ return container_view
133+
134+ @classmethod
135+ def hydrate (cls , views : ViewSetIO , model : Optional ["Model" ] = None ) -> "ViewSet" :
136+ system_context_views = []
137+ for view_io in views .system_context_views :
138+ view = SystemContextView .hydrate (view_io )
139+ view .software_system_id = view_io .software_system_id
140+ view .software_system = model .get_software_system_with_id (
141+ view .software_system_id
142+ )
143+ system_context_views .append (view )
144+
145+ return cls (
146+ # model=model,
147+ # TODO:
148+ # enterprise_context_views: Iterable[EnterpriseContextView] = (),
149+ system_landscape_views = map (
150+ SystemLandscapeView .hydrate , views .system_landscape_views
151+ ),
152+ system_context_views = system_context_views ,
153+ container_views = map (ContainerView .hydrate , views .container_views ),
154+ configuration = Configuration .hydrate (views .configuration ),
155+ )
0 commit comments