\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
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 = new ArrayList<RefineHolder>();\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
}\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
+ @Override\r
+ public List<RefineHolder> getRefines() {\r
+ return refines;\r
+ }\r
+\r
+ @Override\r
+ public void addRefine(RefineHolder refine) {\r
+ refines.add(refine);\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
}\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
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
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
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
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