All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bidib.wizard.localhost.NodeSubscriptionData Maven / Gradle / Ivy

package org.bidib.wizard.localhost;

import java.util.Arrays;
import java.util.function.Predicate;

import org.bidib.jbidibc.messages.enums.TargetModeEnum;
import org.bidib.jbidibc.messages.utils.ByteUtils;
import org.bidib.jbidibc.messages.utils.NodeUtils;

public final class NodeSubscriptionData implements Predicate {
    private final byte[] subscriberAddress;

    private final Long subscriberUniqueId;

    private final TargetModeEnum targetMode;

    private final Integer subscription;

    public NodeSubscriptionData(final byte[] subscriberAddress, final TargetModeEnum targetMode, final Long subscriberUniqueId, Integer subscription) {
        this.subscriberAddress = subscriberAddress;
        this.targetMode = targetMode;
        this.subscriberUniqueId = subscriberUniqueId;

        this.subscription = subscription;
    }

    /**
     * @return the subscriber node address
     */
    public byte[] getSubscriberAddress() {
        return subscriberAddress;
    }

    /**
     * @return the uniqueId of the subscriber node
     */
    public Long getSubscriberUniqueId() {
        return subscriberUniqueId;
    }

    /**
     * @return the targetMode
     */
    public TargetModeEnum getTargetMode() {
        return targetMode;
    }

    /**
     * @return the subscription
     */
    public Integer getSubscription() {
        return subscription;
    }

    @Override
    public boolean test(byte[] address) {
        switch (targetMode) {
            case BIDIB_TARGET_MODE_TOP:
            case BIDIB_TARGET_MODE_ALL:
                return this.subscriberAddress.equals(address);
            case BIDIB_TARGET_MODE_ACCESSORY:
            case BIDIB_TARGET_MODE_BOOSTER:
            case BIDIB_TARGET_MODE_DCCGEN:
            case BIDIB_TARGET_MODE_SWITCH:
//                return NodeUtils.hasAccessoryFunctions(uniqueId);
                return true;
            case BIDIB_TARGET_MODE_UID:

            default:
                break;
        }
        return false;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + Arrays.hashCode(subscriberAddress);
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        NodeSubscriptionData other = (NodeSubscriptionData) obj;
        return Arrays.equals(subscriberAddress, other.subscriberAddress);
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder("AddressNodeData, address: ");
        sb.append(NodeUtils.formatAddressLong(subscriberAddress));
        sb.append(", uniqueId: ").append(ByteUtils.formatHexUniqueId(subscriberUniqueId));
        return sb.toString();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy