Merge "Fix for Bug 3"
[controller.git] / opendaylight / netconf / netconf-util / src / main / java / org / opendaylight / controller / netconf / util / xml / ExiParameters.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.netconf.util.xml;\r
9 \r
10 import com.siemens.ct.exi.CodingMode;\r
11 import com.siemens.ct.exi.FidelityOptions;\r
12 import com.siemens.ct.exi.GrammarFactory;\r
13 import com.siemens.ct.exi.exceptions.EXIException;\r
14 import com.siemens.ct.exi.grammars.Grammars;\r
15 \r
16 public class ExiParameters {\r
17 \r
18     private static final String EXI_PARAMETER_ALIGNMENT = "alignment";\r
19     private static final String EXI_PARAMETER_BYTE_ALIGNED = "byte-aligned";\r
20     private static final String EXI_PARAMETER_COMPRESSED = "compressed";\r
21 \r
22     private static final String EXI_PARAMETER_FIDELITY = "fidelity";\r
23     private static final String EXI_FIDELITY_DTD = "dtd";\r
24     private static final String EXI_FIDELITY_LEXICAL_VALUES = "lexical-values";\r
25     private static final String EXI_FIDELITY_COMMENTS = "comments";\r
26     private static final String EXI_FIDELITY_PIS = "pis";\r
27     private static final String EXI_FIDELITY_PREFIXES = "prefixes";\r
28 \r
29     private static final String EXI_PARAMETER_SCHEMA = "schema";\r
30     private static final String EXI_PARAMETER_SCHEMA_NONE = "none";\r
31     private static final String EXI_PARAMETER_SCHEMA_BUILT_IN = "builtin";\r
32     private static final String EXI_PARAMETER_SCHEMA_BASE_1_1 = "base:1.1";\r
33 \r
34     private static final String NETCONF_XSD_LOCATION = "";\r
35 \r
36     private FidelityOptions fidelityOptions;\r
37     private Grammars grammars;\r
38     private CodingMode codingMode = CodingMode.BIT_PACKED;\r
39 \r
40     public void setParametersFromXmlElement(XmlElement operationElement)\r
41             throws EXIException {\r
42 \r
43         if (operationElement.getElementsByTagName(EXI_PARAMETER_ALIGNMENT)\r
44                 .getLength() > 0) {\r
45 \r
46             if (operationElement.getElementsByTagName(\r
47                     EXI_PARAMETER_BYTE_ALIGNED)\r
48                     .getLength() > 0) {\r
49                 this.codingMode = CodingMode.BYTE_PACKED;\r
50             }\r
51 \r
52             if (operationElement.getElementsByTagName(\r
53                     EXI_PARAMETER_BYTE_ALIGNED).getLength() > 0) {\r
54                 this.codingMode = CodingMode.BYTE_PACKED;\r
55             }\r
56             if (operationElement.getElementsByTagName(EXI_PARAMETER_COMPRESSED)\r
57                     .getLength() > 0) {\r
58                 this.codingMode = CodingMode.COMPRESSION;\r
59             }\r
60         }\r
61 \r
62         if (operationElement.getElementsByTagName(EXI_PARAMETER_FIDELITY)\r
63                 .getLength() > 0) {\r
64 \r
65             this.fidelityOptions = FidelityOptions.createDefault();\r
66 \r
67             if (operationElement.getElementsByTagName(EXI_FIDELITY_DTD)\r
68                     .getLength() > 0) {\r
69                 this.fidelityOptions.setFidelity(FidelityOptions.FEATURE_DTD,\r
70                         true);\r
71             }\r
72             if (operationElement.getElementsByTagName(\r
73                     EXI_FIDELITY_LEXICAL_VALUES)\r
74                     .getLength() > 0) {\r
75                 this.fidelityOptions.setFidelity(\r
76                         FidelityOptions.FEATURE_LEXICAL_VALUE, true);\r
77             }\r
78 \r
79             if (operationElement.getElementsByTagName(EXI_FIDELITY_COMMENTS)\r
80                     .getLength() > 0) {\r
81                 this.fidelityOptions.setFidelity(\r
82                         FidelityOptions.FEATURE_COMMENT, true);\r
83             }\r
84 \r
85             if (operationElement.getElementsByTagName(EXI_FIDELITY_PIS)\r
86                     .getLength() > 0) {\r
87                 this.fidelityOptions.setFidelity(FidelityOptions.FEATURE_PI,\r
88                         true);\r
89             }\r
90 \r
91             if (operationElement.getElementsByTagName(EXI_FIDELITY_PREFIXES)\r
92                     .getLength() > 0) {\r
93                 this.fidelityOptions.setFidelity(\r
94                         FidelityOptions.FEATURE_PREFIX, true);\r
95             }\r
96 \r
97         }\r
98 \r
99         if (operationElement.getElementsByTagName(EXI_PARAMETER_SCHEMA)\r
100                 .getLength() > 0) {\r
101 \r
102             GrammarFactory grammarFactory = GrammarFactory.newInstance();\r
103             if (operationElement\r
104                     .getElementsByTagName(EXI_PARAMETER_SCHEMA_NONE)\r
105                     .getLength() > 0) {\r
106                 this.grammars = grammarFactory.createSchemaLessGrammars();\r
107             }\r
108 \r
109             if (operationElement.getElementsByTagName(\r
110                     EXI_PARAMETER_SCHEMA_BUILT_IN).getLength() > 0) {\r
111                 this.grammars = grammarFactory.createXSDTypesOnlyGrammars();\r
112             }\r
113 \r
114             if (operationElement.getElementsByTagName(\r
115                     EXI_PARAMETER_SCHEMA_BASE_1_1).getLength() > 0) {\r
116                 this.grammars = grammarFactory\r
117                         .createGrammars(NETCONF_XSD_LOCATION);\r
118             }\r
119 \r
120         }\r
121     }\r
122 \r
123     public FidelityOptions getFidelityOptions() {\r
124         return fidelityOptions;\r
125     }\r
126 \r
127     public Grammars getGrammars() {\r
128         return grammars;\r
129     }\r
130 \r
131     public CodingMode getCodingMode() {\r
132         return codingMode;\r
133     }\r
134 \r
135 }\r