2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
8 package org.opendaylight.controller.model.parser.builder;
\r
10 import org.opendaylight.controller.model.parser.api.Builder;
\r
11 import org.opendaylight.controller.model.parser.util.YangModelBuilderHelper;
\r
12 import org.opendaylight.controller.yang.model.api.Deviation;
\r
13 import org.opendaylight.controller.yang.model.api.MustDefinition;
\r
14 import org.opendaylight.controller.yang.model.api.SchemaPath;
\r
15 import org.opendaylight.controller.yang.model.api.Deviation.Deviate;
\r
18 public class DeviationBuilder implements MustAwareBuilder, Builder {
\r
20 private final DeviationImpl instance;
\r
21 private MustDefinitionBuilder mustDefinitionBuilder;
\r
23 DeviationBuilder(String targetPathStr) {
\r
24 SchemaPath targetPath = YangModelBuilderHelper.parsePath(targetPathStr);
\r
25 instance = new DeviationImpl(targetPath);
\r
29 public Deviation build() {
\r
31 if(mustDefinitionBuilder != null) {
\r
32 MustDefinition md = mustDefinitionBuilder.build();
\r
33 instance.setMustDefinition(md);
\r
38 public void setDeviate(String deviate) {
\r
39 if(deviate.equals("not-supported")) {
\r
40 instance.setDeviate(Deviate.NOT_SUPPORTED);
\r
41 } else if(deviate.equals("add")) {
\r
42 instance.setDeviate(Deviate.ADD);
\r
43 } else if(deviate.equals("replace")) {
\r
44 instance.setDeviate(Deviate.REPLACE);
\r
45 } else if(deviate.equals("delete")) {
\r
46 instance.setDeviate(Deviate.DELETE);
\r
48 throw new IllegalArgumentException("Unsupported type of 'deviate' statement: "+ deviate);
\r
52 public void setReference(String reference) {
\r
53 instance.setReference(reference);
\r
57 public void setMustDefinitionBuilder(MustDefinitionBuilder mustDefinitionBuilder) {
\r
58 this.mustDefinitionBuilder = mustDefinitionBuilder;
\r
61 private static class DeviationImpl implements Deviation {
\r
63 private SchemaPath targetPath;
\r
64 private Deviate deviate;
\r
65 private String reference;
\r
66 private MustDefinition mustDefinition;
\r
68 private DeviationImpl(SchemaPath targetPath) {
\r
69 this.targetPath = targetPath;
\r
73 public SchemaPath getTargetPath() {
\r
78 public Deviate getDeviate() {
\r
81 private void setDeviate(Deviate deviate) {
\r
82 this.deviate = deviate;
\r
86 public String getReference() {
\r
89 private void setReference(String reference) {
\r
90 this.reference = reference;
\r
94 public String toString() {
\r
95 return DeviationImpl.class.getSimpleName() +"[targetPath="+ targetPath +", deviate="+ deviate +", reference="+ reference +", mustDefinition="+ mustDefinition +"]";
\r
99 public MustDefinition getMustDefinition() {
\r
100 return mustDefinition;
\r
102 private void setMustDefinition(MustDefinition mustDefinition) {
\r
103 this.mustDefinition = mustDefinition;
\r