]> git.basschouten.com Git - openhab-addons.git/blob
480256675ebd1a45dcf1a535562c35e97c548674
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2024 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.smartmeter.internal.sml;
14
15 import java.util.List;
16 import java.util.function.Consumer;
17
18 import org.eclipse.jdt.annotation.NonNullByDefault;
19 import org.openmuc.jsml.structures.EMessageBody;
20 import org.openmuc.jsml.structures.SmlFile;
21 import org.openmuc.jsml.structures.SmlMessage;
22 import org.openmuc.jsml.structures.responses.SmlAttentionRes;
23 import org.openmuc.jsml.structures.responses.SmlGetListRes;
24 import org.openmuc.jsml.structures.responses.SmlGetProcParameterRes;
25 import org.openmuc.jsml.structures.responses.SmlGetProfileListRes;
26 import org.openmuc.jsml.structures.responses.SmlGetProfilePackRes;
27 import org.openmuc.jsml.structures.responses.SmlPublicCloseRes;
28 import org.openmuc.jsml.structures.responses.SmlPublicOpenRes;
29
30 /**
31  * Class to parse a SML_FILE
32  *
33  * @author Matthias Steigenberger - Initial contribution
34  */
35 @NonNullByDefault
36 public class SmlFileDebugOutput {
37
38     private SmlFileDebugOutput() {
39         // private constructor to hide the implicit public one, since static methods should be accessed in static way so
40         // there is no need of public constructor
41     }
42
43     /**
44      * Prints the whole SML_File
45      *
46      * @param smlFile
47      *            the SML file
48      */
49     public static void printFile(SmlFile smlFile, Consumer<String> consumer) {
50         List<SmlMessage> smlMessages = smlFile.getMessages();
51
52         for (SmlMessage smlMessage : smlMessages) {
53             EMessageBody messageBody = smlMessage.getMessageBody().getTag();
54
55             switch (messageBody) {
56                 case OPEN_REQUEST:
57                     parseOpenRequest(smlMessage, consumer);
58                     break;
59                 case OPEN_RESPONSE:
60                     parseOpenResponse(smlMessage, consumer);
61                     break;
62                 case CLOSE_REQUEST:
63                     parseCloseRequest(smlMessage, consumer);
64                     break;
65                 case CLOSE_RESPONSE:
66                     parseCloseResponse(smlMessage, consumer);
67                     break;
68                 case GET_PROFILE_PACK_REQUEST:
69                     parseGetProfilePackRequest(smlMessage, consumer);
70                     break;
71                 case GET_PROFILE_PACK_RESPONSE:
72                     parseGetProfilePackResponse(smlMessage, consumer);
73                     break;
74                 case GET_PROFILE_LIST_REQUEST:
75                     parseGetProfileListRequest(smlMessage, consumer);
76                     break;
77                 case GET_PROFILE_LIST_RESPONSE:
78                     parseGetProfileListResponse(smlMessage, consumer);
79                     break;
80                 case GET_PROC_PARAMETER_REQUEST:
81                     parseGetProcParameterRequest(smlMessage, consumer);
82                     break;
83                 case GET_PROC_PARAMETER_RESPONSE:
84                     parseGetProcParameterResponse(smlMessage, consumer);
85                     break;
86                 case SET_PROC_PARAMETER_REQUEST:
87                     parseSetProcParameterRequest(smlMessage, consumer);
88                     break;
89                 case GET_LIST_REQUEST:
90                     parseGetListRequest(smlMessage, consumer);
91                     break;
92                 case GET_LIST_RESPONSE:
93                     parseGetListResponse(smlMessage, consumer);
94                     break;
95                 case ATTENTION_RESPONSE:
96                     parseAttentionResponse(smlMessage, consumer);
97                     break;
98                 default:
99                     consumer.accept("type not found");
100             }
101         }
102     }
103
104     // ========================= Responses =================================
105
106     private static void parseGetListResponse(SmlMessage smlMessage, Consumer<String> consumer) {
107         consumer.accept("Got GetListResponse");
108         SmlGetListRes sml_listRes = (SmlGetListRes) smlMessage.getMessageBody().getChoice();
109
110         // consumer.accept(sml_listRes.toString());
111
112         consumer.accept(sml_listRes.toStringIndent(" "));
113     }
114
115     private static void parseAttentionResponse(SmlMessage smlMessage, Consumer<String> consumer) {
116         consumer.accept("Got AttentionResponse");
117         SmlAttentionRes sml_attentionRes = (SmlAttentionRes) smlMessage.getMessageBody().getChoice();
118         consumer.accept(sml_attentionRes.toString());
119     }
120
121     private static void parseGetProcParameterResponse(SmlMessage smlMessage, Consumer<String> consumer) {
122         consumer.accept("Got GetProcParameterResponse");
123         SmlGetProcParameterRes sml_getProcParameterRes = (SmlGetProcParameterRes) smlMessage.getMessageBody()
124                 .getChoice();
125         consumer.accept(sml_getProcParameterRes.toString());
126     }
127
128     private static void parseGetProfileListResponse(SmlMessage smlMessage, Consumer<String> consumer) {
129         consumer.accept("Got GetProfileListResponse");
130         SmlGetProfileListRes sml_getProfileListRes = (SmlGetProfileListRes) smlMessage.getMessageBody().getChoice();
131         consumer.accept(sml_getProfileListRes.toString());
132     }
133
134     private static void parseOpenResponse(SmlMessage smlMessage, Consumer<String> consumer) {
135         consumer.accept("Got OpenResponse");
136         SmlPublicOpenRes sml_PublicOpenRes = (SmlPublicOpenRes) smlMessage.getMessageBody().getChoice();
137         consumer.accept(sml_PublicOpenRes.toString());
138     }
139
140     private static void parseCloseResponse(SmlMessage smlMessage, Consumer<String> consumer) {
141         consumer.accept("Got CloseResponse");
142         SmlPublicCloseRes sml_PublicCloseRes = (SmlPublicCloseRes) smlMessage.getMessageBody().getChoice();
143         consumer.accept(sml_PublicCloseRes.toString());
144     }
145
146     private static void parseGetProfilePackResponse(SmlMessage smlMessage, Consumer<String> consumer) {
147         consumer.accept("Got GetProfilePackResponse");
148         SmlGetProfilePackRes sml_getProfilePackRes = (SmlGetProfilePackRes) smlMessage.getMessageBody().getChoice();
149         consumer.accept(sml_getProfilePackRes.toString());
150     }
151
152     // ========================= Requests =================================
153
154     private static void parseCloseRequest(SmlMessage smlMessage, Consumer<String> consumer) {
155         consumer.accept("Got CloseRequest");
156     }
157
158     private static void parseGetProfileListRequest(SmlMessage smlMessage, Consumer<String> consumer) {
159         consumer.accept("Got GetProfileListRequest");
160     }
161
162     private static void parseGetProfilePackRequest(SmlMessage smlMessage, Consumer<String> consumer) {
163         consumer.accept("Got GetProfilePackRequest");
164     }
165
166     private static void parseOpenRequest(SmlMessage smlMessage, Consumer<String> consumer) {
167         consumer.accept("Got OpenRequest");
168     }
169
170     private static void parseGetProcParameterRequest(SmlMessage smlMessage, Consumer<String> consumer) {
171         consumer.accept("Got GetProcParameterRequest");
172     }
173
174     private static void parseSetProcParameterRequest(SmlMessage smlMessage, Consumer<String> consumer) {
175         consumer.accept("Got SetProcParameterRequest");
176     }
177
178     private static void parseGetListRequest(SmlMessage smlMessage, Consumer<String> consumer) {
179         consumer.accept("Got GetListRequest");
180     }
181 }