1 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
3 import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
5 import java.util.Collection;
6 import java.util.LinkedList;
7 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
8 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
9 import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement;
10 import java.util.List;
11 import org.opendaylight.yangtools.yang.common.QName;
12 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
13 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
14 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
16 public class GroupingEffectiveStatementImpl extends
17 AbstractEffectiveDocumentedDataNodeContainer<QName, GroupingStatement>
18 implements GroupingDefinition {
19 private final QName qname;
20 private final SchemaPath path;
22 private boolean addedByUses;
23 private List<UnknownSchemaNode> unknownNodes;
25 public GroupingEffectiveStatementImpl(
26 StmtContext<QName, GroupingStatement, EffectiveStatement<QName, GroupingStatement>> ctx) {
29 qname = ctx.getStatementArgument();
30 path = Utils.getSchemaPath(ctx);
31 // :TODO init other fields
33 initSubstatementCollections();
36 private void initSubstatementCollections() {
37 Collection<? extends EffectiveStatement<?, ?>> effectiveSubstatements = effectiveSubstatements();
39 unknownNodes = new LinkedList<UnknownSchemaNode>();
41 for (EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements) {
42 if (effectiveStatement instanceof UnknownSchemaNode) {
43 UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement;
44 unknownNodes.add(unknownNode);
51 public QName getQName() {
56 public SchemaPath getPath() {
61 public boolean isAddedByUses() {
66 public List<UnknownSchemaNode> getUnknownSchemaNodes() {
71 public int hashCode() {
74 result = prime * result + ((qname == null) ? 0 : qname.hashCode());
75 result = prime * result + ((path == null) ? 0 : path.hashCode());
80 public boolean equals(final Object obj) {
87 if (getClass() != obj.getClass()) {
90 final GroupingEffectiveStatementImpl other = (GroupingEffectiveStatementImpl) obj;
92 if (other.qname != null) {
95 } else if (!qname.equals(other.qname)) {
99 if (other.path != null) {
102 } else if (!path.equals(other.path)) {
109 public String toString() {
110 StringBuilder sb = new StringBuilder(
111 GroupingEffectiveStatementImpl.class.getSimpleName());
113 sb.append("qname=").append(qname);
115 return sb.toString();