1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package dev.metaschema.core.model.constraint;
7   
8   import java.util.List;
9   import java.util.Map;
10  
11  import dev.metaschema.core.qname.IEnhancedQName;
12  import edu.umd.cs.findbugs.annotations.NonNull;
13  
14  /**
15   * A marker interface for a Metaschema valued construct (i.e. flag, field) that
16   * can be constrained using Metaschema constraints.
17   */
18  public interface IFeatureValueConstrained extends IValueConstrained {
19    /**
20     * Lazy initialize the instances for the constraints when the constraints are
21     * first accessed.
22     *
23     * @return the constraints instance
24     */
25    @NonNull
26    IValueConstrained getConstraintSupport();
27  
28    @Override
29    default ILet addLetExpression(ILet let) {
30      return getConstraintSupport().addLetExpression(let);
31    }
32  
33    @Override
34    default Map<IEnhancedQName, ILet> getLetExpressions() {
35      return getConstraintSupport().getLetExpressions();
36    }
37  
38    @Override
39    default List<? extends IConstraint> getConstraints() {
40      return getConstraintSupport().getConstraints();
41    }
42  
43    @Override
44    default List<? extends IAllowedValuesConstraint> getAllowedValuesConstraints() {
45      return getConstraintSupport().getAllowedValuesConstraints();
46    }
47  
48    @Override
49    default List<? extends IMatchesConstraint> getMatchesConstraints() {
50      return getConstraintSupport().getMatchesConstraints();
51    }
52  
53    @Override
54    default List<? extends IIndexHasKeyConstraint> getIndexHasKeyConstraints() {
55      return getConstraintSupport().getIndexHasKeyConstraints();
56    }
57  
58    @Override
59    default List<? extends IExpectConstraint> getExpectConstraints() {
60      return getConstraintSupport().getExpectConstraints();
61    }
62  
63    @Override
64    default List<? extends IReportConstraint> getReportConstraints() {
65      return getConstraintSupport().getReportConstraints();
66    }
67  
68    @Override
69    default void addConstraint(IAllowedValuesConstraint constraint) {
70      getConstraintSupport().addConstraint(constraint);
71    }
72  
73    @Override
74    default void addConstraint(IMatchesConstraint constraint) {
75      getConstraintSupport().addConstraint(constraint);
76    }
77  
78    @Override
79    default void addConstraint(IIndexHasKeyConstraint constraint) {
80      getConstraintSupport().addConstraint(constraint);
81    }
82  
83    @Override
84    default void addConstraint(@NonNull IExpectConstraint constraint) {
85      getConstraintSupport().addConstraint(constraint);
86    }
87  
88    @Override
89    default void addConstraint(@NonNull IReportConstraint constraint) {
90      getConstraintSupport().addConstraint(constraint);
91    }
92  }