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 javax.xml.namespace.QName;
11  
12  import edu.umd.cs.findbugs.annotations.NonNull;
13  
14  public interface IFeatureContainerModelGrouped<
15      NMI extends INamedModelInstanceGrouped,
16      FI extends IFieldInstanceGrouped,
17      AI extends IAssemblyInstanceGrouped>
18      extends IContainerModelGrouped, IFeatureContainerModel<NMI, NMI, FI, AI> {
19    /**
20     * Lazy initialize the model instances associated with this choice group.
21     *
22     * @return the model container
23     */
24    @Override
25    @NonNull
26    IContainerModelSupport<NMI, NMI, FI, AI> getModelContainer();
27  
28    @Override
29    default boolean hasChildren() {
30      return !getModelContainer().getModelInstances().isEmpty();
31    }
32  
33    @Override
34    default Collection<NMI> getModelInstances() {
35      return getModelContainer().getModelInstances();
36    }
37  
38    @Override
39    default NMI getNamedModelInstanceByName(QName name) {
40      return getModelContainer().getNamedModelInstanceMap().get(name);
41    }
42  
43    @SuppressWarnings("null")
44    @Override
45    default Collection<NMI> getNamedModelInstances() {
46      return getModelContainer().getNamedModelInstanceMap().values();
47    }
48  
49    @Override
50    default FI getFieldInstanceByName(QName name) {
51      return getModelContainer().getFieldInstanceMap().get(name);
52    }
53  
54    @SuppressWarnings("null")
55    @Override
56    default Collection<FI> getFieldInstances() {
57      return getModelContainer().getFieldInstanceMap().values();
58    }
59  
60    @Override
61    default AI getAssemblyInstanceByName(QName name) {
62      return getModelContainer().getAssemblyInstanceMap().get(name);
63    }
64  
65    @SuppressWarnings("null")
66    @Override
67    default Collection<AI> getAssemblyInstances() {
68      return getModelContainer().getAssemblyInstanceMap().values();
69    }
70  }