Refactored parsing of YANG uses statement.
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / parser / builder / impl / GroupingBuilderImpl.java
index 5428259324a700a5c65ed9ac8378d0dd4df4e7ef..1cfba2517f434a84266576c674cc8ba60f886b83 100644 (file)
@@ -37,6 +37,7 @@ public final class GroupingBuilderImpl implements GroupingBuilder {
     private String description;
     private String reference;
     private Status status = Status.CURRENT;
+    private boolean addedByUses;
 
     private Set<DataSchemaNode> childNodes;
     private final Set<DataSchemaNodeBuilder> addedChildNodes = new HashSet<DataSchemaNodeBuilder>();
@@ -55,10 +56,27 @@ public final class GroupingBuilderImpl implements GroupingBuilder {
 
     public GroupingBuilderImpl(final QName qname, final int line) {
         this.qname = qname;
-        this.instance = new GroupingDefinitionImpl(qname);
+        instance = new GroupingDefinitionImpl(qname);
         this.line = line;
     }
 
+    public GroupingBuilderImpl(GroupingBuilder builder) {
+        qname = builder.getQName();
+        instance = new GroupingDefinitionImpl(qname);
+        line = builder.getLine();
+        schemaPath = builder.getPath();
+        description = builder.getDescription();
+        reference = builder.getReference();
+        status = builder.getStatus();
+        addedByUses = builder.isAddedByUses();
+        childNodes = builder.getChildNodes();
+        addedChildNodes.addAll(builder.getChildNodeBuilders());
+        groupings = builder.getGroupings();
+        addedGroupings.addAll(builder.getGroupingBuilders());
+        addedUsesNodes.addAll(builder.getUses());
+        addedUnknownNodes.addAll(builder.getUnknownNodes());
+    }
+
     @Override
     public GroupingDefinition build() {
         if (!isBuilt) {
@@ -66,15 +84,16 @@ public final class GroupingBuilderImpl implements GroupingBuilder {
             instance.setDescription(description);
             instance.setReference(reference);
             instance.setStatus(status);
+            instance.setAddedByUses(addedByUses);
 
             // CHILD NODES
             final Map<QName, DataSchemaNode> childs = new HashMap<QName, DataSchemaNode>();
-            if(childNodes == null) {
+            if (childNodes == null) {
                 for (DataSchemaNodeBuilder node : addedChildNodes) {
                     childs.put(node.getQName(), node.build());
                 }
             } else {
-                for(DataSchemaNode node : childNodes) {
+                for (DataSchemaNode node : childNodes) {
                     childs.put(node.getQName(), node);
                 }
             }
@@ -133,7 +152,7 @@ public final class GroupingBuilderImpl implements GroupingBuilder {
     }
 
     @Override
-    public Set<TypeDefinitionBuilder> getTypeDefinitions() {
+    public Set<TypeDefinitionBuilder> getTypeDefinitionBuilders() {
         return addedTypedefs;
     }
 
@@ -186,6 +205,16 @@ public final class GroupingBuilderImpl implements GroupingBuilder {
         this.status = status;
     }
 
+    @Override
+    public boolean isAddedByUses() {
+        return addedByUses;
+    }
+
+    @Override
+    public void setAddedByUses(final boolean addedByUses) {
+        this.addedByUses = addedByUses;
+    }
+
     @Override
     public DataSchemaNodeBuilder getChildNode(String name) {
         DataSchemaNodeBuilder result = null;
@@ -198,13 +227,18 @@ public final class GroupingBuilderImpl implements GroupingBuilder {
         return result;
     }
 
+    @Override
+    public Set<DataSchemaNode> getChildNodes() {
+        return childNodes;
+    }
+
     @Override
     public void addChildNode(final DataSchemaNodeBuilder childNode) {
         addedChildNodes.add(childNode);
     }
 
     @Override
-    public Set<DataSchemaNodeBuilder> getChildNodes() {
+    public Set<DataSchemaNodeBuilder> getChildNodeBuilders() {
         return addedChildNodes;
     }
 
@@ -213,7 +247,12 @@ public final class GroupingBuilderImpl implements GroupingBuilder {
     }
 
     @Override
-    public Set<GroupingBuilder> getGroupings() {
+    public Set<GroupingDefinition> getGroupings() {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public Set<GroupingBuilder> getGroupingBuilders() {
         return addedGroupings;
     }
 
@@ -261,6 +300,7 @@ public final class GroupingBuilderImpl implements GroupingBuilder {
         private String description;
         private String reference;
         private Status status;
+        private boolean addedByUses;
         private Map<QName, DataSchemaNode> childNodes = Collections.emptyMap();
         private Set<GroupingDefinition> groupings = Collections.emptySet();
         private Set<TypeDefinition<?>> typeDefinitions = Collections.emptySet();
@@ -312,6 +352,15 @@ public final class GroupingBuilderImpl implements GroupingBuilder {
             this.status = status;
         }
 
+        @Override
+        public boolean isAddedByUses() {
+            return addedByUses;
+        }
+
+        private void setAddedByUses(final boolean addedByUses) {
+            this.addedByUses = addedByUses;
+        }
+
         @Override
         public Set<DataSchemaNode> getChildNodes() {
             return new HashSet<DataSchemaNode>(childNodes.values());