HONEYCOMB-58 - Routing Api
[honeycomb.git] / lisp / lisp2vpp / src / main / java / io / fd / honeycomb / lisp / translate / read / dump / executor / params / SubtableDumpParams.java
1 /*
2  * Copyright (c) 2016 Cisco and/or its affiliates.
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  */
16
17 package io.fd.honeycomb.lisp.translate.read.dump.executor.params;
18
19 import static com.google.common.base.Preconditions.checkNotNull;
20
21 import javax.annotation.Nonnull;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.BridgeDomainSubtable;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.VrfSubtable;
24
25 /**
26  * Parameters for dumping {@link VrfSubtable}/{@link BridgeDomainSubtable}
27  */
28 public final class SubtableDumpParams {
29
30     private final byte isL2;
31
32     private SubtableDumpParams(SubtableDumpParamsBuilder builder) {
33         this.isL2 = builder.isL2;
34     }
35
36     public byte isL2() {
37         return isL2;
38     }
39
40     @Override
41     public String toString() {
42         return "SubtableDumpParams{" +
43                 "isL2=" + isL2 +
44                 '}';
45     }
46
47     public enum MapLevel {
48         L2(1),
49         L3(0);
50
51         private final int value;
52
53         private MapLevel(final int value) {
54             this.value = value;
55         }
56
57         public int getValue() {
58             return value;
59         }
60     }
61
62     public static final class SubtableDumpParamsBuilder {
63
64         private byte isL2;
65
66         public SubtableDumpParamsBuilder setL2(@Nonnull final MapLevel mapLevel) {
67             isL2 = Integer.valueOf(checkNotNull(mapLevel, "Cannot set null map level").getValue()).byteValue();
68             return this;
69         }
70
71         public SubtableDumpParams build() {
72             return new SubtableDumpParams(this);
73         }
74     }
75 }