InstructionInfo redesign: clean up
[genius.git] / mdsalutil / mdsalutil-api / src / main / java / org / opendaylight / genius / mdsalutil / instructions / InstructionGotoTable.java
1 /*
2  * Copyright © 2017 Red Hat, Inc. and others. All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.genius.mdsalutil.instructions;
9
10 import org.opendaylight.genius.mdsalutil.InstructionInfo;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.GoToTableCaseBuilder;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.go.to.table._case.GoToTableBuilder;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionKey;
16
17 /**
18  * Goto table instruction.
19  */
20 public class InstructionGotoTable implements InstructionInfo {
21     private final short tableId;
22
23     public InstructionGotoTable(short tableId) {
24         this.tableId = tableId;
25     }
26
27     @Override
28     public Instruction buildInstruction(int instructionKey) {
29         return new InstructionBuilder()
30                 .setInstruction(new GoToTableCaseBuilder()
31                         .setGoToTable(new GoToTableBuilder()
32                                 .setTableId(tableId)
33                                 .build()
34                         )
35                         .build()
36                 )
37                 .setKey(new InstructionKey(instructionKey))
38                 .build();
39     }
40
41     @Override
42     public boolean equals(Object o) {
43         if (this == o) return true;
44         if (o == null || getClass() != o.getClass()) return false;
45
46         InstructionGotoTable that = (InstructionGotoTable) o;
47
48         return tableId == that.tableId;
49     }
50
51     @Override
52     public int hashCode() {
53         return (int) tableId;
54     }
55 }