Implemented refine statement parsing.
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / model / parser / builder / impl / UsesNodeBuilderImpl.java
index 9490e7f0a4aa4091fa57d75d1a84d0f06c4e8864..5fb4c99ff6cd8798c7023b2183e92b36014b4231 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.controller.yang.model.parser.builder.impl;
 \r
 import java.util.ArrayList;\r
 import java.util.Collections;\r
+import java.util.HashMap;\r
 import java.util.HashSet;\r
 import java.util.List;\r
 import java.util.Map;\r
@@ -21,15 +22,20 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.UsesNode;\r
 import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;\r
 import org.opendaylight.controller.yang.model.parser.builder.api.Builder;\r
+import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;\r
 import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;\r
+import org.opendaylight.controller.yang.model.parser.util.RefineHolder;\r
 \r
 public class UsesNodeBuilderImpl implements UsesNodeBuilder, Builder {\r
 \r
     private final UsesNodeImpl instance;\r
+    private final SchemaPath groupingPath;\r
     private final Set<AugmentationSchemaBuilder> addedAugments = new HashSet<AugmentationSchemaBuilder>();\r
+    private List<SchemaNodeBuilder> refineBuilders = new ArrayList<SchemaNodeBuilder>();\r
+    private List<RefineHolder> refines = Collections.emptyList();\r
 \r
-    UsesNodeBuilderImpl(String groupingPathStr) {\r
-        SchemaPath groupingPath = parseUsesPath(groupingPathStr);\r
+    UsesNodeBuilderImpl(final String groupingPathStr) {\r
+        this.groupingPath = parseUsesPath(groupingPathStr);\r
         instance = new UsesNodeImpl(groupingPath);\r
     }\r
 \r
@@ -42,25 +48,54 @@ public class UsesNodeBuilderImpl implements UsesNodeBuilder, Builder {
         }\r
         instance.setAugmentations(augments);\r
 \r
+        // REFINES\r
+        final Map<SchemaPath, SchemaNode> refineNodes = new HashMap<SchemaPath, SchemaNode>();\r
+        for(SchemaNodeBuilder refineBuilder : refineBuilders) {\r
+            SchemaNode refineNode = refineBuilder.build();\r
+            refineNodes.put(refineNode.getPath(), refineNode);\r
+        }\r
+        instance.setRefines(refineNodes);\r
+\r
         return instance;\r
     }\r
 \r
     @Override\r
-    public void addAugment(AugmentationSchemaBuilder augmentBuilder) {\r
+    public SchemaPath getGroupingPath() {\r
+        return groupingPath;\r
+    }\r
+\r
+    @Override\r
+    public void addAugment(final AugmentationSchemaBuilder augmentBuilder) {\r
         addedAugments.add(augmentBuilder);\r
     }\r
 \r
     @Override\r
-    public void setAugmenting(boolean augmenting) {\r
+    public void setAugmenting(final boolean augmenting) {\r
         instance.setAugmenting(augmenting);\r
     }\r
 \r
-    private SchemaPath parseUsesPath(String augmentPath) {\r
-        String[] splittedPath = augmentPath.split("/");\r
-        List<QName> path = new ArrayList<QName>();\r
+    @Override\r
+    public void addRefineNode(SchemaNodeBuilder refineNode) {\r
+        refineBuilders.add(refineNode);\r
+    }\r
+\r
+    public List<RefineHolder> getRefines() {\r
+        return refines;\r
+    }\r
+\r
+    @Override\r
+    public void setRefines(List<RefineHolder> refines) {\r
+        if(refines != null) {\r
+            this.refines = refines;\r
+        }\r
+    }\r
+\r
+    private SchemaPath parseUsesPath(final String augmentPath) {\r
+        final String[] splittedPath = augmentPath.split("/");\r
+        final List<QName> path = new ArrayList<QName>();\r
         QName name;\r
         for (String pathElement : splittedPath) {\r
-            String[] splittedElement = pathElement.split(":");\r
+            final String[] splittedElement = pathElement.split(":");\r
             if (splittedElement.length == 1) {\r
                 name = new QName(null, null, null, splittedElement[0]);\r
             } else {\r
@@ -74,12 +109,12 @@ public class UsesNodeBuilderImpl implements UsesNodeBuilder, Builder {
     }\r
 \r
     private static class UsesNodeImpl implements UsesNode {\r
-\r
         private final SchemaPath groupingPath;\r
         private Set<AugmentationSchema> augmentations = Collections.emptySet();\r
         private boolean augmenting;\r
+        private Map<SchemaPath, SchemaNode> refines = Collections.emptyMap();\r
 \r
-        private UsesNodeImpl(SchemaPath groupingPath) {\r
+        private UsesNodeImpl(final SchemaPath groupingPath) {\r
             this.groupingPath = groupingPath;\r
         }\r
 \r
@@ -93,7 +128,7 @@ public class UsesNodeBuilderImpl implements UsesNodeBuilder, Builder {
             return augmentations;\r
         }\r
 \r
-        private void setAugmentations(Set<AugmentationSchema> augmentations) {\r
+        private void setAugmentations(final Set<AugmentationSchema> augmentations) {\r
             if (augmentations != null) {\r
                 this.augmentations = augmentations;\r
             }\r
@@ -103,24 +138,30 @@ public class UsesNodeBuilderImpl implements UsesNodeBuilder, Builder {
         public boolean isAugmenting() {\r
             return augmenting;\r
         }\r
-        \r
-        private void setAugmenting(boolean augmenting) {\r
+\r
+        private void setAugmenting(final boolean augmenting) {\r
             this.augmenting = augmenting;\r
         }\r
-        \r
 \r
         @Override\r
         public Map<SchemaPath, SchemaNode> getRefines() {\r
-            // TODO Auto-generated method stub\r
-            return null;\r
+            return refines;\r
         }\r
-        \r
+\r
+        private void setRefines(Map<SchemaPath, SchemaNode> refines) {\r
+            if(refines != null) {\r
+                this.refines = refines;\r
+            }\r
+        }\r
+\r
         @Override\r
         public int hashCode() {\r
             final int prime = 31;\r
             int result = 1;\r
-            result = prime * result + ((groupingPath == null) ? 0 : groupingPath.hashCode());\r
-            result = prime * result + ((augmentations == null) ? 0 : augmentations.hashCode());\r
+            result = prime * result\r
+                    + ((groupingPath == null) ? 0 : groupingPath.hashCode());\r
+            result = prime * result\r
+                    + ((augmentations == null) ? 0 : augmentations.hashCode());\r
             result = prime * result + (augmenting ? 1231 : 1237);\r
             return result;\r
         }\r
@@ -136,7 +177,7 @@ public class UsesNodeBuilderImpl implements UsesNodeBuilder, Builder {
             if (getClass() != obj.getClass()) {\r
                 return false;\r
             }\r
-            UsesNodeImpl other = (UsesNodeImpl) obj;\r
+            final UsesNodeImpl other = (UsesNodeImpl) obj;\r
             if (groupingPath == null) {\r
                 if (other.groupingPath != null) {\r
                     return false;\r
@@ -161,7 +202,7 @@ public class UsesNodeBuilderImpl implements UsesNodeBuilder, Builder {
         public String toString() {\r
             StringBuilder sb = new StringBuilder(\r
                     UsesNodeImpl.class.getSimpleName());\r
-            sb.append("[groupingPath=" + groupingPath +"]");\r
+            sb.append("[groupingPath=" + groupingPath + "]");\r
             return sb.toString();\r
         }\r
     }\r