001/* 002 * SPDX-FileCopyrightText: none 003 * SPDX-License-Identifier: CC0-1.0 004 */ 005 006package dev.metaschema.core.model; 007 008import java.util.Collection; 009 010import edu.umd.cs.findbugs.annotations.NonNull; 011 012/** 013 * Common interface for model container support classes. 014 * 015 * @param <MI> 016 * the model instance Java type 017 * @param <NMI> 018 * the named model instance Java type 019 * @param <FI> 020 * the field instance Java type 021 * @param <AI> 022 * the assembly instance Java type 023 */ 024public interface IFeatureContainerModelAbsolute< 025 MI extends IModelInstanceAbsolute, 026 NMI extends INamedModelInstanceAbsolute, 027 FI extends IFieldInstanceAbsolute, 028 AI extends IAssemblyInstanceAbsolute> 029 extends IContainerModelAbsolute { 030 /** 031 * Get the model container implementation instance. 032 * 033 * @return the model container instance 034 */ 035 @NonNull 036 IContainerModelSupport<MI, NMI, FI, AI> getModelContainer(); 037 038 @Override 039 default Collection<? extends MI> getModelInstances() { 040 return getModelContainer().getModelInstances(); 041 } 042 043 @Override 044 default NMI getNamedModelInstanceByName(Integer name) { 045 return getModelContainer().getNamedModelInstanceMap().get(name); 046 } 047 048 @SuppressWarnings("null") 049 @Override 050 default Collection<NMI> getNamedModelInstances() { 051 return getModelContainer().getNamedModelInstanceMap().values(); 052 } 053 054 @Override 055 default FI getFieldInstanceByName(Integer name) { 056 return getModelContainer().getFieldInstanceMap().get(name); 057 } 058 059 @SuppressWarnings("null") 060 @Override 061 default Collection<FI> getFieldInstances() { 062 return getModelContainer().getFieldInstanceMap().values(); 063 } 064 065 @Override 066 default AI getAssemblyInstanceByName(Integer name) { 067 return getModelContainer().getAssemblyInstanceMap().get(name); 068 } 069 070 @SuppressWarnings("null") 071 @Override 072 default Collection<AI> getAssemblyInstances() { 073 return getModelContainer().getAssemblyInstanceMap().values(); 074 } 075}