Initial opendaylight infrastructure commit!!
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / model / parser / builder / DeviationBuilder.java
diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/model/parser/builder/DeviationBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/model/parser/builder/DeviationBuilder.java
new file mode 100644 (file)
index 0000000..abc6198
--- /dev/null
@@ -0,0 +1,108 @@
+/*\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 org.opendaylight.controller.model.parser.api.Builder;\r
+import org.opendaylight.controller.model.parser.util.YangModelBuilderHelper;\r
+import org.opendaylight.controller.yang.model.api.Deviation;\r
+import org.opendaylight.controller.yang.model.api.MustDefinition;\r
+import org.opendaylight.controller.yang.model.api.SchemaPath;\r
+import org.opendaylight.controller.yang.model.api.Deviation.Deviate;\r
+\r
+\r
+public class DeviationBuilder implements MustAwareBuilder, Builder {\r
+\r
+       private final DeviationImpl instance;\r
+       private MustDefinitionBuilder mustDefinitionBuilder;\r
+\r
+       DeviationBuilder(String targetPathStr) {\r
+               SchemaPath targetPath = YangModelBuilderHelper.parsePath(targetPathStr);\r
+               instance = new DeviationImpl(targetPath);\r
+       }\r
+\r
+       @Override\r
+       public Deviation build() {\r
+               // MUST definition\r
+               if(mustDefinitionBuilder != null) {\r
+                       MustDefinition md = mustDefinitionBuilder.build();\r
+                       instance.setMustDefinition(md);\r
+               }\r
+               return instance;\r
+       }\r
+\r
+       public void setDeviate(String deviate) {\r
+               if(deviate.equals("not-supported")) {\r
+                       instance.setDeviate(Deviate.NOT_SUPPORTED);\r
+               } else if(deviate.equals("add")) {\r
+                       instance.setDeviate(Deviate.ADD);\r
+               } else if(deviate.equals("replace")) {\r
+                       instance.setDeviate(Deviate.REPLACE);\r
+               } else if(deviate.equals("delete")) {\r
+                       instance.setDeviate(Deviate.DELETE);\r
+               } else {\r
+                       throw new IllegalArgumentException("Unsupported type of 'deviate' statement: "+ deviate);\r
+               }\r
+       }\r
+\r
+       public void setReference(String reference) {\r
+               instance.setReference(reference);\r
+       }\r
+\r
+       @Override\r
+       public void setMustDefinitionBuilder(MustDefinitionBuilder mustDefinitionBuilder) {\r
+               this.mustDefinitionBuilder = mustDefinitionBuilder;\r
+       }\r
+\r
+       private static class DeviationImpl implements Deviation {\r
+\r
+               private SchemaPath targetPath;\r
+               private Deviate deviate;\r
+               private String reference;\r
+               private MustDefinition mustDefinition;\r
+\r
+               private DeviationImpl(SchemaPath targetPath) {\r
+                       this.targetPath = targetPath;\r
+               }\r
+\r
+               @Override\r
+               public SchemaPath getTargetPath() {\r
+                       return targetPath;\r
+               }\r
+\r
+               @Override\r
+               public Deviate getDeviate() {\r
+                       return deviate;\r
+               }\r
+               private void setDeviate(Deviate deviate) {\r
+                       this.deviate = deviate;\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 String toString() {\r
+                       return DeviationImpl.class.getSimpleName() +"[targetPath="+ targetPath +", deviate="+ deviate +", reference="+ reference +", mustDefinition="+ mustDefinition +"]";\r
+               }\r
+\r
+               @Override\r
+               public MustDefinition getMustDefinition() {\r
+                       return mustDefinition;\r
+               }\r
+               private void setMustDefinition(MustDefinition mustDefinition) {\r
+                       this.mustDefinition = mustDefinition;\r
+               }\r
+\r
+       }\r
+\r
+}\r