Turn on check-style and fixed style errors
[alto.git] / alto-commons / src / main / java / org / opendaylight / alto / commons / types / converter / YANGJSON2RFCCostMapConverter.java
1 package org.opendaylight.alto.commons.types.converter;
2
3 import org.opendaylight.alto.commons.helper.Converter;
4
5 import org.opendaylight.alto.commons.types.rfc7285.RFC7285CostMap;
6 import org.opendaylight.alto.commons.types.rfc7285.RFC7285VersionTag;
7 import org.opendaylight.alto.commons.types.rfc7285.RFC7285CostType;
8
9 import java.util.Map;
10 import java.util.LinkedHashMap;
11
12 import com.fasterxml.jackson.databind.JsonNode;
13
14 public class YANGJSON2RFCCostMapConverter extends Converter<JsonNode, RFC7285CostMap> {
15     public YANGJSON2RFCCostMapConverter() {
16     }
17
18     public YANGJSON2RFCCostMapConverter(JsonNode _in) {
19         super(_in);
20     }
21
22     @Override
23     protected Object _convert() {
24         JsonNode node = this.in();
25         RFC7285CostMap cm = new RFC7285CostMap();
26
27         JsonNode meta = node.get("meta");
28         for (JsonNode vtag: meta.get("dependentVtags")) {
29             String resource_id = vtag.get("resourceId").get("value").asText();
30             String tag = vtag.get("tag").get("value").asText();
31             cm.meta.netmap_tags.add(new RFC7285VersionTag(resource_id, tag));
32         }
33
34         JsonNode cost_type = meta.get("costType");
35         String mode = cost_type.get("costMode").asText();
36         String metric = cost_type.get("costMetric").get("value").asText();
37         cm.meta.costType = new RFC7285CostType(mode, metric);
38
39         JsonNode map = node.get("map");
40         assert !map.isArray();
41         for (JsonNode cost_map: map) {
42             String src_pid = cost_map.get("src").get("value").asText();
43             Map<String, Object> data = new LinkedHashMap<String, Object>();
44
45             for (JsonNode dst: cost_map.get("dstCosts")) {
46                 String dst_pid = dst.get("dst").get("value").asText();
47
48                 JsonNode cost_node = dst.get("cost");
49                 if ((cost_node != null) && (!cost_node.isNull())) {
50                     data.put(dst_pid, cost_node.asText());
51                 }
52             }
53
54             cm.map.put(src_pid, data);
55         }
56         return cm;
57     }
58 }