comments: get version from session context and
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / core / sal / convertor / GroupConvertor.java
1 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
2
3 import java.util.ArrayList;
4 import java.util.Iterator;
5 import java.util.List;
6
7 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets;
8 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.ActionsList;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupModCommand;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInput;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.BucketsList;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.BucketsListBuilder;
16
17 /**
18  * This Utility class decodes the SAL - Group Mod Message and encodes into a OF
19  * Library for the OFPT_GROUP_MOD Message. Input:SAL Layer Group command data.
20  * Output:GroupModInput Message.
21  *
22  * @param <AddGroupInput>
23  *
24  */
25 public final class GroupConvertor {
26
27     private GroupConvertor() {
28
29     }
30
31     public static GroupModInput toGroupModInput(
32
33     org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group source, short version) {
34         List<BucketsList> bucketLists = new ArrayList<BucketsList>();
35         GroupModInputBuilder groupModInputBuilder = new GroupModInputBuilder();
36         if (source instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInput)
37             groupModInputBuilder.setCommand(GroupModCommand.OFPGCADD);
38         if (source instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.RemoveGroupInput)
39             groupModInputBuilder.setCommand(GroupModCommand.OFPGCDELETE);
40         if (source instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.UpdateGroupInput)
41             groupModInputBuilder.setCommand(GroupModCommand.OFPGCMODIFY);
42
43         if (source.getGroupType().getIntValue() == 0)
44             groupModInputBuilder.setType(GroupType.OFPGTALL);
45
46         if (source.getGroupType().getIntValue() == 1)
47             groupModInputBuilder.setType(GroupType.OFPGTSELECT);
48
49         if (source.getGroupType().getIntValue() == 2)
50             groupModInputBuilder.setType(GroupType.OFPGTINDIRECT);
51
52         if (source.getGroupType().getIntValue() == 3)
53             groupModInputBuilder.setType(GroupType.OFPGTFF);
54
55         groupModInputBuilder.setGroupId(source.getGroupId().getValue());
56
57         getbucketList(source.getBuckets(), bucketLists, version);
58         groupModInputBuilder.setBucketsList(bucketLists);
59         groupModInputBuilder.setVersion(version);
60         return groupModInputBuilder.build();
61
62     }
63
64     private static void getbucketList(Buckets buckets, List<BucketsList> bucketLists, short version) {
65
66         Iterator<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket> groupBucketIterator = buckets
67                 .getBucket().iterator();
68         org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket groupBucket;
69
70
71
72         while (groupBucketIterator.hasNext()) {
73             groupBucket = groupBucketIterator.next();
74             BucketsListBuilder bucketBuilder = new BucketsListBuilder();
75             bucketBuilder.setWeight(groupBucket.getWeight().intValue());
76             bucketBuilder.setWatchGroup(groupBucket.getWatchGroup());
77             bucketBuilder.setWatchPort(new PortNumber(groupBucket.getWatchPort()));
78
79             List<ActionsList> bucketActionList = ActionConvertor.getActionList(groupBucket.getAction(), version);
80             bucketBuilder.setActionsList(bucketActionList);
81             BucketsList bucket = bucketBuilder.build();
82             bucketLists.add(bucket);
83         }
84
85     }
86
87 }