1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package gov.nist.secauto.metaschema.databind.codegen.config;
7   
8   import java.util.LinkedList;
9   import java.util.List;
10  
11  import edu.umd.cs.findbugs.annotations.NonNull;
12  import edu.umd.cs.findbugs.annotations.Nullable;
13  
14  public class DefaultDefinitionBindingConfiguration implements IMutableDefinitionBindingConfiguration {
15    @Nullable
16    private String className;
17    @Nullable
18    private String baseClassName;
19    @NonNull
20    private final List<String> interfacesToImplement = new LinkedList<>();
21  
22    /**
23     * Create a new definition binding configuration.
24     */
25    public DefaultDefinitionBindingConfiguration() {
26      // empty configuration
27    }
28  
29    /**
30     * Create a new definition binding configuration based on a previous
31     * configuration.
32     *
33     * @param config
34     *          the previous configuration
35     */
36    public DefaultDefinitionBindingConfiguration(@NonNull IDefinitionBindingConfiguration config) {
37      this.className = config.getClassName();
38      this.baseClassName = config.getQualifiedBaseClassName();
39      this.interfacesToImplement.addAll(config.getInterfacesToImplement());
40    }
41  
42    @Override
43    public String getClassName() {
44      return className;
45    }
46  
47    @Override
48    public void setClassName(String name) {
49      this.className = name;
50    }
51  
52    @Override
53    public String getQualifiedBaseClassName() {
54      return baseClassName;
55    }
56  
57    @Override
58    public void setQualifiedBaseClassName(String name) {
59      this.baseClassName = name;
60    }
61  
62    @Override
63    public List<String> getInterfacesToImplement() {
64      return interfacesToImplement;
65    }
66  
67    @Override
68    public void addInterfaceToImplement(String interfaceName) {
69      this.interfacesToImplement.add(interfaceName);
70    }
71  }