Yang parser refactoring.
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / builder / api / AbstractSchemaNodeBuilder.java
1 /*\r
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.yangtools.yang.parser.builder.api;\r
9 \r
10 import java.util.List;\r
11 \r
12 import org.opendaylight.yangtools.yang.common.QName;\r
13 import org.opendaylight.yangtools.yang.model.api.SchemaPath;\r
14 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;\r
15 \r
16 /**\r
17  * Basic implementation of SchemaNodeBuilder.\r
18  */\r
19 public abstract class AbstractSchemaNodeBuilder extends AbstractBuilder implements SchemaNodeBuilder {\r
20     protected final QName qname;\r
21     protected SchemaPath schemaPath;\r
22 \r
23     protected AbstractSchemaNodeBuilder(final String moduleName, final int line, final QName qname) {\r
24         super(moduleName, line);\r
25         this.qname = qname;\r
26     }\r
27 \r
28     @Override\r
29     public int hashCode() {\r
30         final int prime = 31;\r
31         int result = super.hashCode();\r
32         result = prime * result + ((parentBuilder == null) ? 0 : parentBuilder.hashCode());\r
33         result = prime * result + ((schemaPath == null) ? 0 : schemaPath.hashCode());\r
34         return result;\r
35     }\r
36 \r
37     @Override\r
38     public boolean equals(Object obj) {\r
39         if (this == obj) {\r
40             return true;\r
41         }\r
42         if (obj == null) {\r
43             return false;\r
44         }\r
45         if (getClass() != obj.getClass()) {\r
46             return false;\r
47         }\r
48         if (!super.equals(obj)) {\r
49             return false;\r
50         }\r
51         AbstractSchemaNodeBuilder other = (AbstractSchemaNodeBuilder) obj;\r
52         if (parentBuilder == null) {\r
53             if (other.parentBuilder != null) {\r
54                 return false;\r
55             }\r
56         } else if (!parentBuilder.equals(other.parentBuilder)) {\r
57             return false;\r
58         }\r
59         if (schemaPath == null) {\r
60             if (other.schemaPath != null) {\r
61                 return false;\r
62             }\r
63         } else if (!schemaPath.equals(other.schemaPath)) {\r
64             return false;\r
65         }\r
66         return true;\r
67     }\r
68 \r
69     @Override\r
70     public QName getQName() {\r
71         return qname;\r
72     }\r
73 \r
74     public void setUnknownNodes(List<UnknownSchemaNode> unknownNodes) {\r
75         this.unknownNodes.addAll(unknownNodes);\r
76     }\r
77 \r
78 }\r