7c543dfc4edbaa39dd8deb336e63bc59871f2ed6
[genius.git] / mdsalutil / mdsalutil-api / src / main / java / org / opendaylight / genius / mdsalutil / instructions / InstructionWriteMetadata.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 java.math.BigInteger;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteMetadataCaseBuilder;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.write.metadata._case.WriteMetadataBuilder;
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  * Write metadata instruction.
19  */
20 public class InstructionWriteMetadata extends AbstractInstructionInfoImpl {
21     private static final long serialVersionUID = 1L;
22
23     private final BigInteger metadata;
24     private final BigInteger mask;
25
26     public InstructionWriteMetadata(BigInteger metadata, BigInteger mask) {
27         this.metadata = metadata;
28         this.mask = mask;
29     }
30
31     @Override
32     public Instruction buildInstruction(int instructionKey) {
33         return new InstructionBuilder()
34                 .setInstruction(new WriteMetadataCaseBuilder()
35                         .setWriteMetadata(new WriteMetadataBuilder()
36                                 .setMetadata(metadata)
37                                 .setMetadataMask(mask)
38                                 .build()
39                         )
40                         .build()
41                 )
42                 .setKey(new InstructionKey(instructionKey))
43                 .build();
44     }
45
46     public BigInteger getMetadata() {
47         return metadata;
48     }
49
50     public BigInteger getMask() {
51         return mask;
52     }
53
54     @Override
55     public boolean equals(Object other) {
56         if (this == other) {
57             return true;
58         }
59         if (other == null || getClass() != other.getClass()) {
60             return false;
61         }
62
63         InstructionWriteMetadata that = (InstructionWriteMetadata) other;
64
65         if (metadata != null ? !metadata.equals(that.metadata) : that.metadata != null) {
66             return false;
67         }
68         return mask != null ? mask.equals(that.mask) : that.mask == null;
69     }
70
71     @Override
72     public int hashCode() {
73         int result = metadata != null ? metadata.hashCode() : 0;
74         result = 31 * result + (mask != null ? mask.hashCode() : 0);
75         return result;
76     }
77
78     @Override
79     public String toString() {
80         return "InstructionWriteMetadata[metadata=" + metadata + ", mask=" + mask + "]";
81     }
82 }