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