--- /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 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