b654d6f1218939965651b77ca74259a56bf25ca2
[smo/teiv.git] /
1 /*
2  *  ============LICENSE_START=======================================================
3  *  Copyright (C) 2024 Ericsson
4  *  Modifications Copyright (C) 2024 OpenInfra Foundation Europe
5  *  ================================================================================
6  *  Licensed under the Apache License, Version 2.0 (the "License");
7  *  you may not use this file except in compliance with the License.
8  *  You may obtain a copy of the License at
9  *
10  *        http://www.apache.org/licenses/LICENSE-2.0
11  *
12  *  Unless required by applicable law or agreed to in writing, software
13  *  distributed under the License is distributed on an "AS IS" BASIS,
14  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  *  See the License for the specific language governing permissions and
16  *  limitations under the License.
17  *
18  *  SPDX-License-Identifier: Apache-2.0
19  *  ============LICENSE_END=========================================================
20  */
21 package org.oran.smo.yangtools.parser.model.util;
22
23 import java.util.Objects;
24
25 import org.oran.smo.yangtools.parser.util.NamespaceModuleIdentifier;
26
27 /**
28  * Represents a YANG identity. An YANG identity is uniquely identified by its
29  * namespace/module name and identifier. A YANG identity may have one or more "bases"
30  * ("super-identities") and/or may have 0..n derived identities.
31  *
32  * @author Mark Hollmann
33  */
34 public class YangIdentity extends NamespaceModuleIdentifier {
35
36     public YangIdentity(final String namespace, final String moduleName, final String identifier) {
37         super(Objects.requireNonNull(namespace), Objects.requireNonNull(moduleName), Objects.requireNonNull(identifier));
38     }
39
40     /**
41      * The name of the identity
42      */
43     public String getIdentityName() {
44         return getIdentifier();
45     }
46
47     /**
48      * The name of the module in which the identity has been declared. If the
49      * identity has been declared in a submodule, this is the name of the
50      * module that owns the submodule.
51      */
52     public String getIdentityModuleName() {
53         return getModuleName();
54     }
55
56     /**
57      * The namespace of the module in which the identity has been declared. If the
58      * identity has been declared in a submodule, this is the namespace of the
59      * module that owns the submodule.
60      */
61     public String getIdentityNamespace() {
62         return getNamespace();
63     }
64
65     @Override
66     public String toString() {
67         return "Identity " + getNamespace() + "/" + getModuleName() + "/" + getIdentifier();
68     }
69
70     @Override
71     public boolean equals(final Object other) {
72         return other != null && other.getClass().getName().equals(YangIdentity.class.getName()) && this.toString().equals(
73                 other.toString());
74     }
75 }