+++ /dev/null
-/*\r
- * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.controller.model.parser.builder;\r
-\r
-import java.util.HashMap;\r
-import java.util.HashSet;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Set;\r
-\r
-import org.opendaylight.controller.model.parser.api.DataSchemaNodeBuilder;\r
-import org.opendaylight.controller.model.parser.api.GroupingBuilder;\r
-import org.opendaylight.controller.model.parser.api.TypeDefinitionBuilder;\r
-import org.opendaylight.controller.model.parser.api.UsesNodeBuilder;\r
-import org.opendaylight.controller.yang.common.QName;\r
-import org.opendaylight.controller.yang.model.api.DataSchemaNode;\r
-import org.opendaylight.controller.yang.model.api.ExtensionDefinition;\r
-import org.opendaylight.controller.yang.model.api.GroupingDefinition;\r
-import org.opendaylight.controller.yang.model.api.SchemaPath;\r
-import org.opendaylight.controller.yang.model.api.Status;\r
-import org.opendaylight.controller.yang.model.api.TypeDefinition;\r
-import org.opendaylight.controller.yang.model.api.UsesNode;\r
-\r
-\r
-public class GroupingBuilderImpl implements GroupingBuilder {\r
-\r
- private final GroupingDefinitionImpl instance;\r
- private final Set<DataSchemaNodeBuilder> childNodes = new HashSet<DataSchemaNodeBuilder>();\r
- private final Set<GroupingBuilder> groupings = new HashSet<GroupingBuilder>();\r
- private final Set<TypeDefinitionBuilder> addedTypedefs = new HashSet<TypeDefinitionBuilder>();\r
- private final Set<UsesNodeBuilder> usesNodes = new HashSet<UsesNodeBuilder>();\r
-\r
- GroupingBuilderImpl(QName qname) {\r
- this.instance = new GroupingDefinitionImpl(qname);\r
- }\r
-\r
- @Override\r
- public GroupingDefinition build() {\r
- // CHILD NODES\r
- Map<QName, DataSchemaNode> childs = new HashMap<QName, DataSchemaNode>();\r
- for(DataSchemaNodeBuilder node : childNodes) {\r
- childs.put(node.getQName(), node.build());\r
- }\r
- instance.setChildNodes(childs);\r
-\r
- // GROUPINGS\r
- Set<GroupingDefinition> groupingDefinitions = new HashSet<GroupingDefinition>();\r
- for(GroupingBuilder builder : groupings) {\r
- groupingDefinitions.add(builder.build());\r
- }\r
- instance.setGroupings(groupingDefinitions);\r
-\r
- // TYPEDEFS\r
- Set<TypeDefinition<?>> typedefs = new HashSet<TypeDefinition<?>>();\r
- for (TypeDefinitionBuilder entry : addedTypedefs) {\r
- typedefs.add(entry.build());\r
- }\r
- instance.setTypeDefinitions(typedefs);\r
-\r
- // USES\r
- Set<UsesNode> usesNodeDefinitions = new HashSet<UsesNode>();\r
- for(UsesNodeBuilder builder : usesNodes) {\r
- usesNodeDefinitions.add(builder.build());\r
- }\r
- instance.setUses(usesNodeDefinitions);\r
-\r
- return instance;\r
- }\r
-\r
- @Override\r
- public void addTypedef(TypeDefinitionBuilder type) {\r
- addedTypedefs.add(type);\r
- }\r
- @Override\r
- public void setPath(SchemaPath schemaPath) {\r
- instance.setPath(schemaPath);\r
- }\r
- @Override\r
- public void setDescription(String description) {\r
- instance.setDescription(description);\r
- }\r
- @Override\r
- public void setReference(String reference) {\r
- instance.setReference(reference);\r
- }\r
- @Override\r
- public void setStatus(Status status) {\r
- instance.setStatus(status);\r
- }\r
-\r
- @Override\r
- public void addChildNode(DataSchemaNodeBuilder childNode) {\r
- childNodes.add(childNode);\r
- }\r
-\r
- @Override\r
- public void addGrouping(GroupingBuilder grouping) {\r
- groupings.add(grouping);\r
- }\r
-\r
- @Override\r
- public void addUsesNode(UsesNodeBuilder usesBuilder) {\r
- usesNodes.add(usesBuilder);\r
- }\r
-\r
-\r
-\r
- private static class GroupingDefinitionImpl implements GroupingDefinition {\r
-\r
- private final QName qname;\r
- private SchemaPath path;\r
- private String description;\r
- private String reference;\r
- private Status status;\r
-\r
- private Map<QName, DataSchemaNode> childNodes;\r
- private Set<GroupingDefinition> groupings;\r
- private Set<TypeDefinition<?>> typeDefinitions;\r
- private Set<UsesNode> uses;\r
-\r
- private GroupingDefinitionImpl(QName qname) {\r
- this.qname = qname;\r
- }\r
-\r
- @Override\r
- public QName getQName() {\r
- return qname;\r
- }\r
-\r
- @Override\r
- public SchemaPath getPath() {\r
- return path;\r
- }\r
- private void setPath(SchemaPath path) {\r
- this.path = path;\r
- }\r
-\r
- @Override\r
- public String getDescription() {\r
- return description;\r
- }\r
- private void setDescription(String description) {\r
- this.description = description;\r
- }\r
-\r
- @Override\r
- public String getReference() {\r
- return reference;\r
- }\r
- private void setReference(String reference) {\r
- this.reference = reference;\r
- }\r
-\r
- @Override\r
- public Status getStatus() {\r
- return status;\r
- }\r
- private void setStatus(Status status) {\r
- this.status = status;\r
- }\r
-\r
- @Override\r
- public Set<DataSchemaNode> getChildNodes() {\r
- return new HashSet<DataSchemaNode>(childNodes.values());\r
- }\r
- private void setChildNodes(Map<QName, DataSchemaNode> childNodes) {\r
- this.childNodes = childNodes;\r
- }\r
-\r
- @Override\r
- public Set<GroupingDefinition> getGroupings() {\r
- return groupings;\r
- }\r
- private void setGroupings(Set<GroupingDefinition> groupings) {\r
- this.groupings = groupings;\r
- }\r
-\r
- @Override\r
- public Set<UsesNode> getUses() {\r
- return uses;\r
- }\r
- private void setUses(Set<UsesNode> uses) {\r
- this.uses = uses;\r
- }\r
-\r
- @Override\r
- public Set<TypeDefinition<?>> getTypeDefinitions() {\r
- return typeDefinitions;\r
- }\r
- private void setTypeDefinitions(Set<TypeDefinition<?>> typeDefinitions) {\r
- this.typeDefinitions = typeDefinitions;\r
- }\r
-\r
- @Override\r
- public List<ExtensionDefinition> getExtensionSchemaNodes() {\r
- // TODO Auto-generated method stub\r
- return null;\r
- }\r
-\r
- @Override\r
- public DataSchemaNode getDataChildByName(QName name) {\r
- return childNodes.get(name);\r
- }\r
-\r
- @Override\r
- public DataSchemaNode getDataChildByName(String name) {\r
- DataSchemaNode result = null;\r
- for(Map.Entry<QName, DataSchemaNode> entry : childNodes.entrySet()) {\r
- if(entry.getKey().getLocalName().equals(name)) {\r
- result = entry.getValue();\r
- break;\r
- }\r
- }\r
- return result;\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- StringBuilder sb = new StringBuilder();\r
- sb.append(GroupingDefinitionImpl.class.getSimpleName() +"[\n");\r
- sb.append("qname="+ qname +", \n");\r
- sb.append("path="+ path +", \n");\r
- sb.append("description="+ description +", \n");\r
- sb.append("reference="+ reference +", \n");\r
- sb.append("status="+ status +", \n");\r
- sb.append("childNodes="+ childNodes.values() +", \n");\r
- sb.append("groupings="+ groupings +"]");\r
- return sb.toString();\r
- }\r
- }\r
-\r
- /**\r
- * Always returns null.\r
- */\r
- @Override\r
- public QName getQName() {\r
- return null;\r
- }\r
-\r
-}\r