Support for network service for alto-northbound
[alto.git] / alto-commons / src / main / java / org / opendaylight / alto / commons / types / converter / RFC2ModelCostMapConverter.java
1 package org.opendaylight.alto.commons.types.converter;
2 import java.util.LinkedList;
3
4 import org.opendaylight.alto.commons.helper.Converter;
5 import org.opendaylight.alto.commons.types.model150404.ModelCostMap;
6 import org.opendaylight.alto.commons.types.model150404.ModelCostMapData;
7 import org.opendaylight.alto.commons.types.rfc7285.RFC7285CostMap;
8
9 public class RFC2ModelCostMapConverter
10     extends Converter<RFC7285CostMap, ModelCostMap>{
11
12   protected RFC2ModelCostMapMetaConverter metaConv = new RFC2ModelCostMapMetaConverter();
13   protected RFC2ModelCostMapDataConverter dataConv = new RFC2ModelCostMapDataConverter();
14
15   public RFC2ModelCostMapConverter() {
16   }
17
18   public RFC2ModelCostMapConverter(RFC7285CostMap _in) {
19       super(_in);
20   }
21
22   @Override
23   protected Object _convert() {
24     ModelCostMap out = new ModelCostMap();
25     out.rid = getCostMapResourceId(in());
26     //TODO: replace the dummy one in the future
27     out.tag = "da65eca2eb7a10ce8b059740b0b2e3f8eb1d4786";
28
29     out.meta = metaConv.convert(in().meta);
30     out.map = new LinkedList<ModelCostMapData>();
31     for (String src : in().map.keySet()) {
32       ModelCostMapData data = new ModelCostMapData();
33       data.src = src;
34       data.dstCosts = dataConv.convert(in().map.get(src));
35       out.map.add(data);
36     }
37     return out;
38   }
39
40   private String getCostMapResourceId(RFC7285CostMap costMap) {
41     String networkMapRID = costMap.meta.netmap_tags.get(0).rid;
42     String costMetric = costMap.meta.costType.metric;
43     String costMode = costMap.meta.costType.mode;
44     return networkMapRID + "-" + costMetric + "-" + costMode;
45   }
46 }