Add CLI in verigraph.
[parser.git] / verigraph / src / it / polito / verigraph / tosca / serializer / YamlConfigSerializer.java
1 /*******************************************************************************\r
2  * Copyright (c) 2018 Politecnico di Torino and others.\r
3  *\r
4  * All rights reserved. This program and the accompanying materials\r
5  * are made available under the terms of the Apache License, Version 2.0\r
6  * which accompanies this distribution, and is available at\r
7  * http://www.apache.org/licenses/LICENSE-2.0\r
8  *******************************************************************************/\r
9 package it.polito.verigraph.tosca.serializer;\r
10 \r
11 import java.io.IOException;\r
12 import java.util.Map;\r
13 \r
14 import com.fasterxml.jackson.core.JsonGenerator;\r
15 import com.fasterxml.jackson.core.JsonProcessingException;\r
16 import com.fasterxml.jackson.databind.SerializerProvider;\r
17 import com.fasterxml.jackson.databind.ser.std.StdSerializer;\r
18 \r
19 import it.polito.verigraph.tosca.yaml.beans.AntispamConfigurationYaml;\r
20 import it.polito.verigraph.tosca.yaml.beans.CacheConfigurationYaml;\r
21 import it.polito.verigraph.tosca.yaml.beans.ConfigurationYaml;\r
22 import it.polito.verigraph.tosca.yaml.beans.DpiConfigurationYaml;\r
23 import it.polito.verigraph.tosca.yaml.beans.EndhostConfigurationYaml;\r
24 import it.polito.verigraph.tosca.yaml.beans.EndpointConfigurationYaml;\r
25 import it.polito.verigraph.tosca.yaml.beans.FieldModifierConfigurationYaml;\r
26 import it.polito.verigraph.tosca.yaml.beans.FirewallConfigurationYaml;\r
27 import it.polito.verigraph.tosca.yaml.beans.MailClientConfigurationYaml;\r
28 import it.polito.verigraph.tosca.yaml.beans.MailServerConfigurationYaml;\r
29 import it.polito.verigraph.tosca.yaml.beans.NatConfigurationYaml;\r
30 import it.polito.verigraph.tosca.yaml.beans.VpnAccessConfigurationYaml;\r
31 import it.polito.verigraph.tosca.yaml.beans.VpnExitConfigurationYaml;\r
32 import it.polito.verigraph.tosca.yaml.beans.WebClientConfigurationYaml;\r
33 import it.polito.verigraph.tosca.yaml.beans.WebServerConfigurationYaml;\r
34 \r
35 //Custom serializer for YamlToscaConfigurationObject conversion to JSON\r
36 public class YamlConfigSerializer extends StdSerializer<ConfigurationYaml> {\r
37 \r
38     //Automatically generated VersionUID\r
39     private static final long serialVersionUID = 9102508941195129607L;\r
40 \r
41     public YamlConfigSerializer() {\r
42         this(null);\r
43     }\r
44 \r
45     public YamlConfigSerializer(Class<ConfigurationYaml> t) {\r
46         super(t);\r
47     }\r
48 \r
49     @Override\r
50     public void serialize(\r
51             ConfigurationYaml value, JsonGenerator jgen, SerializerProvider provider)\r
52                     throws IOException, JsonProcessingException {\r
53 \r
54         if(value instanceof AntispamConfigurationYaml) {\r
55             jgen.writeStartArray();\r
56             for(String source : ((AntispamConfigurationYaml) value).getSources()) {\r
57                 jgen.writeString(source);\r
58             }\r
59             jgen.writeEndArray();\r
60 \r
61         }else if(value instanceof CacheConfigurationYaml) {\r
62             jgen.writeStartArray();\r
63             for(String resource : ((CacheConfigurationYaml) value).getResources()) {\r
64                 jgen.writeString(resource);\r
65             }\r
66             jgen.writeEndArray();\r
67 \r
68         }else if(value instanceof DpiConfigurationYaml) {\r
69             jgen.writeStartArray();\r
70             for(String notAllowed : ((DpiConfigurationYaml) value).getNotAllowedList()) {\r
71                 jgen.writeString(notAllowed);\r
72             }\r
73             jgen.writeEndArray();\r
74 \r
75         }else if(value instanceof EndhostConfigurationYaml) {\r
76             jgen.writeStartArray();\r
77             jgen.writeStartObject();\r
78 \r
79             EndhostConfigurationYaml endhost = (EndhostConfigurationYaml) value;\r
80 \r
81             if(endhost.getBody() != null)\r
82                 jgen.writeObjectField("body", endhost.getBody());\r
83             if(endhost.getSequence() != 0)\r
84                 jgen.writeObjectField("sequence", endhost.getSequence());\r
85             if(endhost.getProtocol() != null)\r
86                 jgen.writeObjectField("protocol", endhost.getProtocol());\r
87             if(endhost.getEmail_from() != null)\r
88                 jgen.writeObjectField("email_from", endhost.getEmail_from());\r
89             if(endhost.getUrl() != null)\r
90                 jgen.writeObjectField("url", endhost.getUrl());\r
91             if(endhost.getOptions() != null)\r
92                 jgen.writeObjectField("options", endhost.getOptions());\r
93             if(endhost.getDestination() != null)\r
94                 jgen.writeObjectField("destination", endhost.getDestination());\r
95 \r
96             jgen.writeEndObject();\r
97             jgen.writeEndArray();\r
98 \r
99         }else if(value instanceof EndpointConfigurationYaml) {\r
100             jgen.writeStartArray();\r
101             jgen.writeEndArray();\r
102 \r
103         }else if(value instanceof FieldModifierConfigurationYaml) {\r
104             jgen.writeStartArray();\r
105             jgen.writeEndArray();\r
106 \r
107         }else if(value instanceof FirewallConfigurationYaml) {\r
108             jgen.writeStartArray();\r
109             FirewallConfigurationYaml fw = (FirewallConfigurationYaml) value;\r
110 \r
111             for(Map.Entry<String, String> entry : fw.getElements().entrySet()) {\r
112                 if(entry.getKey()!= null && entry.getValue() != null) {\r
113                     jgen.writeStartObject();\r
114                     jgen.writeObjectField(entry.getKey(),  entry.getValue());\r
115                     jgen.writeEndObject();\r
116                 }\r
117             }\r
118             jgen.writeEndArray();\r
119 \r
120         }else if(value instanceof MailClientConfigurationYaml) {\r
121             jgen.writeStartArray();\r
122 \r
123             if(((MailClientConfigurationYaml) value).getMailserver() != null) {\r
124                 jgen.writeStartObject();\r
125                 jgen.writeObjectField("mailserver", ((MailClientConfigurationYaml) value).getMailserver());\r
126                 jgen.writeEndObject();\r
127             }\r
128             jgen.writeEndArray();\r
129 \r
130         }else if(value instanceof MailServerConfigurationYaml) {\r
131             jgen.writeStartArray();\r
132             jgen.writeEndArray();\r
133 \r
134         }else if(value instanceof NatConfigurationYaml) {\r
135             jgen.writeStartArray();\r
136 \r
137             for(String source : ((NatConfigurationYaml) value).getSources()) {\r
138                 jgen.writeString(source);\r
139             }\r
140 \r
141             jgen.writeEndArray();\r
142 \r
143         }else if(value instanceof VpnAccessConfigurationYaml) {\r
144             jgen.writeStartArray();\r
145 \r
146             if(((VpnAccessConfigurationYaml) value).getVpnexit()!= null) {\r
147                 jgen.writeStartObject();\r
148                 jgen.writeObjectField("vpnexit", ((VpnAccessConfigurationYaml) value).getVpnexit());\r
149                 jgen.writeEndObject();\r
150             }\r
151 \r
152             jgen.writeEndArray();\r
153 \r
154         }else if(value instanceof VpnExitConfigurationYaml) {\r
155             jgen.writeStartArray();\r
156 \r
157             if(((VpnExitConfigurationYaml) value).getVpnaccess()!= null) {\r
158                 jgen.writeStartObject();\r
159                 jgen.writeObjectField("vpnaccess", ((VpnExitConfigurationYaml) value).getVpnaccess());\r
160                 jgen.writeEndObject();\r
161             }\r
162 \r
163             jgen.writeEndArray();\r
164 \r
165         }else if(value instanceof WebClientConfigurationYaml) {\r
166             jgen.writeStartArray();\r
167 \r
168             if(((WebClientConfigurationYaml) value).getNameWebServer() != null) {\r
169                 jgen.writeStartObject();\r
170                 jgen.writeObjectField("webserver", ((WebClientConfigurationYaml) value).getNameWebServer());\r
171                 jgen.writeEndObject();\r
172             }\r
173 \r
174             jgen.writeEndArray();\r
175 \r
176         }else if(value instanceof WebServerConfigurationYaml) {\r
177             jgen.writeStartArray();\r
178             jgen.writeEndArray();\r
179 \r
180         }else  {\r
181             jgen.writeStartArray();\r
182             jgen.writeEndArray();\r
183         }\r
184 \r
185     }\r
186 }\r