blob: 6f3130f3a4ecb37e6611f4f9410b3183e548d6d8 [file] [log] [blame]
shivani vaidya530917c2017-07-11 11:27:48 -07001/*
2 * Copyright 2017-present Open Networking Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.incubator.protobuf.models.net.region;
17
18import org.onosproject.grpc.net.region.models.RegionEnumsProto;
19import org.onosproject.net.region.Region;
20import org.slf4j.Logger;
21import org.slf4j.LoggerFactory;
22
23import java.util.Optional;
24
25/**
26 * gRPC RegionType message to equivalent ONOS enum conversion related utilities.
27 */
28public final class RegionEnumsProtoTranslator {
29
30 private static final Logger log = LoggerFactory.getLogger(RegionEnumsProtoTranslator.class);
31
32 /**
33 * Translates gRPC enum RegionType to Optional of ONOS enum.
34 *
35 * @param type regiontype type in gRPC enum
36 * @return Optional of equivalent ONOS enum or empty if not recognized
37 */
38 public static Optional<Region.Type> translate(RegionEnumsProto.RegionTypeProto type) {
39 switch (type) {
40 case CONTINENT:
41 return Optional.of(Region.Type.CONTINENT);
42 case COUNTRY:
43 return Optional.of(Region.Type.COUNTRY);
44 case METRO:
45 return Optional.of(Region.Type.METRO);
46 case CAMPUS:
47 return Optional.of(Region.Type.CAMPUS);
48 case BUILDING:
49 return Optional.of(Region.Type.BUILDING);
50 case DATA_CENTER:
51 return Optional.of(Region.Type.DATA_CENTER);
52 case FLOOR:
53 return Optional.of(Region.Type.FLOOR);
54 case ROOM:
55 return Optional.of(Region.Type.ROOM);
56 case RACK:
57 return Optional.of(Region.Type.RACK);
58 case LOGICAL_GROUP:
59 return Optional.of(Region.Type.LOGICAL_GROUP);
60 default:
61 log.warn("Unrecognized Type gRPC message: {}", type);
62 return Optional.empty();
63 }
64 }
65
66
67 /**
68 * Translates ONOS enum regionType to gRPC enum regionType.
69 *
70 * @param type ONOS' Type type
71 * @return equivalent gRPC message enum
72 */
73 public static RegionEnumsProto.RegionTypeProto translate(Region.Type type) {
74 switch (type) {
75 case CONTINENT:
76 return RegionEnumsProto.RegionTypeProto.CONTINENT;
77 case COUNTRY:
78 return RegionEnumsProto.RegionTypeProto.COUNTRY;
79 case METRO:
80 return RegionEnumsProto.RegionTypeProto.METRO;
81 case CAMPUS:
82 return RegionEnumsProto.RegionTypeProto.CAMPUS;
83 case BUILDING:
84 return RegionEnumsProto.RegionTypeProto.BUILDING;
85 case DATA_CENTER:
86 return RegionEnumsProto.RegionTypeProto.DATA_CENTER;
87 case FLOOR:
88 return RegionEnumsProto.RegionTypeProto.FLOOR;
89 case ROOM:
90 return RegionEnumsProto.RegionTypeProto.ROOM;
91 case RACK:
92 return RegionEnumsProto.RegionTypeProto.RACK;
93 case LOGICAL_GROUP:
94 return RegionEnumsProto.RegionTypeProto.LOGICAL_GROUP;
95 default:
96 log.warn("Unrecognized type", type);
97 throw new IllegalArgumentException("Unrecognized Type");
98 }
99 }
100
101 // Utility class not intended for instantiation.
102 private RegionEnumsProtoTranslator() {}
103}
104