1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package gov.nist.secauto.metaschema.core.model;
7   
8   import java.util.Collection;
9   
10  import edu.umd.cs.findbugs.annotations.NonNull;
11  
12  public interface IFeatureContainerModelGrouped<
13      NMI extends INamedModelInstanceGrouped,
14      FI extends IFieldInstanceGrouped,
15      AI extends IAssemblyInstanceGrouped>
16      extends IContainerModelGrouped, IContainerModel {
17    /**
18     * Get the model container implementation instance.
19     *
20     * @return the model container instance
21     */
22    @NonNull
23    IContainerModelSupport<NMI, NMI, FI, AI> getModelContainer();
24  
25    @Override
26    default boolean hasChildren() {
27      return !getModelContainer().getModelInstances().isEmpty();
28    }
29  
30    @Override
31    default Collection<NMI> getModelInstances() {
32      return getNamedModelInstances();
33    }
34  
35    @Override
36    default NMI getNamedModelInstanceByName(Integer name) {
37      return getModelContainer().getNamedModelInstanceMap().get(name);
38    }
39  
40    @SuppressWarnings("null")
41    @Override
42    default Collection<NMI> getNamedModelInstances() {
43      return getModelContainer().getNamedModelInstanceMap().values();
44    }
45  
46    @Override
47    default FI getFieldInstanceByName(Integer name) {
48      return getModelContainer().getFieldInstanceMap().get(name);
49    }
50  
51    @SuppressWarnings("null")
52    @Override
53    default Collection<FI> getFieldInstances() {
54      return getModelContainer().getFieldInstanceMap().values();
55    }
56  
57    @Override
58    default AI getAssemblyInstanceByName(Integer name) {
59      return getModelContainer().getAssemblyInstanceMap().get(name);
60    }
61  
62    @SuppressWarnings("null")
63    @Override
64    default Collection<AI> getAssemblyInstances() {
65      return getModelContainer().getAssemblyInstanceMap().values();
66    }
67  }