]> git.basschouten.com Git - openhab-addons.git/blob
162bda1a7537f122d9086a17124cc2057a4422bf
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2020 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.io.transport.modbus.internal;
14
15 import org.apache.commons.lang.builder.EqualsBuilder;
16 import org.apache.commons.lang.builder.HashCodeBuilder;
17 import org.apache.commons.lang.builder.StandardToStringStyle;
18 import org.apache.commons.lang.builder.ToStringBuilder;
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.eclipse.jdt.annotation.Nullable;
21 import org.openhab.io.transport.modbus.ModbusFailureCallback;
22 import org.openhab.io.transport.modbus.ModbusReadCallback;
23 import org.openhab.io.transport.modbus.ModbusReadRequestBlueprint;
24 import org.openhab.io.transport.modbus.PollTask;
25 import org.openhab.io.transport.modbus.endpoint.ModbusSlaveEndpoint;
26
27 /**
28  * Implementation of {@link PollTask} that differentiates tasks using endpoint, request and callbacks.
29  *
30  * Note: Two differentiate poll tasks are considered unequal if their callbacks are unequal.
31  *
32  * HashCode and equals should be defined such that two poll tasks considered the same only if their request,
33  * maxTries, endpoint and callback are the same.
34  *
35  * @author Sami Salonen - Initial contribution
36  *
37  */
38 @NonNullByDefault
39 public class BasicPollTask implements PollTask {
40
41     static StandardToStringStyle toStringStyle = new StandardToStringStyle();
42     static {
43         toStringStyle.setUseShortClassName(true);
44     }
45
46     private ModbusSlaveEndpoint endpoint;
47     private ModbusReadRequestBlueprint request;
48     private ModbusReadCallback resultCallback;
49     private ModbusFailureCallback<ModbusReadRequestBlueprint> failureCallback;
50
51     public BasicPollTask(ModbusSlaveEndpoint endpoint, ModbusReadRequestBlueprint request,
52             ModbusReadCallback resultCallback, ModbusFailureCallback<ModbusReadRequestBlueprint> failureCallback) {
53         this.endpoint = endpoint;
54         this.request = request;
55         this.resultCallback = resultCallback;
56         this.failureCallback = failureCallback;
57     }
58
59     @Override
60     public ModbusReadRequestBlueprint getRequest() {
61         return request;
62     }
63
64     @Override
65     public ModbusSlaveEndpoint getEndpoint() {
66         return endpoint;
67     }
68
69     @Override
70     public ModbusReadCallback getResultCallback() {
71         return resultCallback;
72     }
73
74     @Override
75     public ModbusFailureCallback<ModbusReadRequestBlueprint> getFailureCallback() {
76         return failureCallback;
77     }
78
79     @Override
80     public int hashCode() {
81         return new HashCodeBuilder(69, 5).append(request).append(getEndpoint()).append(getResultCallback())
82                 .append(getFailureCallback()).toHashCode();
83     }
84
85     @Override
86     public String toString() {
87         return new ToStringBuilder(this, toStringStyle).append("request", request).append("endpoint", endpoint)
88                 .append("resultCallback", getResultCallback()).append("failureCallback", getFailureCallback())
89                 .toString();
90     }
91
92     @Override
93     public boolean equals(@Nullable Object obj) {
94         if (obj == null) {
95             return false;
96         }
97         if (obj == this) {
98             return true;
99         }
100         if (obj.getClass() != getClass()) {
101             return false;
102         }
103         BasicPollTask rhs = (BasicPollTask) obj;
104         return new EqualsBuilder().append(request, rhs.request).append(endpoint, rhs.endpoint)
105                 .append(getResultCallback(), rhs.getResultCallback())
106                 .append(getFailureCallback(), rhs.getFailureCallback()).isEquals();
107     }
108 }