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 import edu.umd.cs.findbugs.annotations.Nullable;
12
13 public interface IContainerModelGrouped extends IContainerModel {
14
15 @Override
16 IAssemblyDefinition getOwningDefinition();
17
18 @Override
19 @NonNull
20 default Collection<? extends INamedModelInstanceGrouped> getModelInstances() {
21 return getNamedModelInstances();
22 }
23
24 /**
25 * Get all named model instances within the container.
26 *
27 * @return an ordered mapping of use name to model instance
28 */
29 @Override
30 @NonNull
31 Collection<? extends INamedModelInstanceGrouped> getNamedModelInstances();
32
33 /**
34 * Get the model instance contained within the model with the associated use
35 * name.
36 *
37 * @param name
38 * the effective name of the model instance
39 * @return the matching model instance, or {@code null} if no match was found
40 * @see INamedModelInstance#getEffectiveName()
41 */
42 @Override
43 @Nullable
44 INamedModelInstanceGrouped getNamedModelInstanceByName(Integer name);
45
46 /**
47 * Get all field instances within the container.
48 *
49 * @return a mapping of use name to field instance
50 */
51 @Override
52 @NonNull
53 Collection<? extends IFieldInstanceGrouped> getFieldInstances();
54
55 /**
56 * Get the field instance contained within the model with the associated use
57 * name.
58 *
59 * @param name
60 * the use name of the field instance
61 * @return the matching field instance, or {@code null} if no match was found
62 * @see IFieldInstance#getUseName()
63 */
64 @Override
65 @Nullable
66 IFieldInstanceGrouped getFieldInstanceByName(Integer name);
67
68 /**
69 * Get all assembly instances within the container.
70 *
71 * @return a mapping of use name to assembly instance
72 */
73 @Override
74 @NonNull
75 Collection<? extends IAssemblyInstanceGrouped> getAssemblyInstances();
76
77 /**
78 * Get the assembly instance contained within the model with the associated use
79 * name.
80 *
81 * @param name
82 * the effective name of the assembly instance
83 * @return the matching assembly instance, or {@code null} if no match was found
84 * @see INamedModelInstance#getEffectiveName()
85 */
86 @Override
87 @Nullable
88 IAssemblyInstanceGrouped getAssemblyInstanceByName(Integer name);
89 }