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