abc6198811d9ebe0bb7c06f0bdcba30657a70c1a
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / model / parser / builder / DeviationBuilder.java
1 /*\r
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
3  *\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
7  */\r
8 package org.opendaylight.controller.model.parser.builder;\r
9 \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
16 \r
17 \r
18 public class DeviationBuilder implements MustAwareBuilder, Builder {\r
19 \r
20         private final DeviationImpl instance;\r
21         private MustDefinitionBuilder mustDefinitionBuilder;\r
22 \r
23         DeviationBuilder(String targetPathStr) {\r
24                 SchemaPath targetPath = YangModelBuilderHelper.parsePath(targetPathStr);\r
25                 instance = new DeviationImpl(targetPath);\r
26         }\r
27 \r
28         @Override\r
29         public Deviation build() {\r
30                 // MUST definition\r
31                 if(mustDefinitionBuilder != null) {\r
32                         MustDefinition md = mustDefinitionBuilder.build();\r
33                         instance.setMustDefinition(md);\r
34                 }\r
35                 return instance;\r
36         }\r
37 \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
47                 } else {\r
48                         throw new IllegalArgumentException("Unsupported type of 'deviate' statement: "+ deviate);\r
49                 }\r
50         }\r
51 \r
52         public void setReference(String reference) {\r
53                 instance.setReference(reference);\r
54         }\r
55 \r
56         @Override\r
57         public void setMustDefinitionBuilder(MustDefinitionBuilder mustDefinitionBuilder) {\r
58                 this.mustDefinitionBuilder = mustDefinitionBuilder;\r
59         }\r
60 \r
61         private static class DeviationImpl implements Deviation {\r
62 \r
63                 private SchemaPath targetPath;\r
64                 private Deviate deviate;\r
65                 private String reference;\r
66                 private MustDefinition mustDefinition;\r
67 \r
68                 private DeviationImpl(SchemaPath targetPath) {\r
69                         this.targetPath = targetPath;\r
70                 }\r
71 \r
72                 @Override\r
73                 public SchemaPath getTargetPath() {\r
74                         return targetPath;\r
75                 }\r
76 \r
77                 @Override\r
78                 public Deviate getDeviate() {\r
79                         return deviate;\r
80                 }\r
81                 private void setDeviate(Deviate deviate) {\r
82                         this.deviate = deviate;\r
83                 }\r
84 \r
85                 @Override\r
86                 public String getReference() {\r
87                         return reference;\r
88                 }\r
89                 private void setReference(String reference) {\r
90                         this.reference = reference;\r
91                 }\r
92 \r
93                 @Override\r
94                 public String toString() {\r
95                         return DeviationImpl.class.getSimpleName() +"[targetPath="+ targetPath +", deviate="+ deviate +", reference="+ reference +", mustDefinition="+ mustDefinition +"]";\r
96                 }\r
97 \r
98                 @Override\r
99                 public MustDefinition getMustDefinition() {\r
100                         return mustDefinition;\r
101                 }\r
102                 private void setMustDefinition(MustDefinition mustDefinition) {\r
103                         this.mustDefinition = mustDefinition;\r
104                 }\r
105 \r
106         }\r
107 \r
108 }\r