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

com.fluxtion.runtime.dataflow.function.NotifyFlowFunction Maven / Gradle / Ivy

package com.fluxtion.runtime.dataflow.function;

import com.fluxtion.runtime.annotations.NoTriggerReference;
import com.fluxtion.runtime.annotations.OnTrigger;
import com.fluxtion.runtime.annotations.PushReference;
import com.fluxtion.runtime.annotations.builder.Inject;
import com.fluxtion.runtime.dataflow.DoubleFlowFunction;
import com.fluxtion.runtime.dataflow.FlowFunction;
import com.fluxtion.runtime.dataflow.IntFlowFunction;
import com.fluxtion.runtime.dataflow.LongFlowFunction;
import com.fluxtion.runtime.node.NodeNameLookup;
import lombok.ToString;

import java.util.Objects;

@ToString
public class NotifyFlowFunction> extends AbstractFlowFunction {

    @PushReference
    private final Object target;
    private final transient String auditInfo;
    private String instanceNameToNotify;
    @Inject
    @NoTriggerReference
    public NodeNameLookup nodeNameLookup;

    public NotifyFlowFunction(S inputEventStream, Object target) {
        super(inputEventStream, null);
        this.target = target;
        auditInfo = target.getClass().getSimpleName();
    }

    protected void initialise() {
        instanceNameToNotify = nodeNameLookup.lookupInstanceName(target);
    }

    @OnTrigger
    public boolean notifyChild() {
        auditLog.info("notifyClass", auditInfo);
        auditLog.info("notifyInstance", instanceNameToNotify);
        return fireEventUpdateNotification();
    }

    @Override
    public T get() {
        return getInputEventStream().get();
    }

    @ToString
    public static class IntNotifyFlowFunction extends NotifyFlowFunction implements IntFlowFunction {

        public IntNotifyFlowFunction(IntFlowFunction inputEventStream, Object target) {
            super(inputEventStream, target);
        }

        @Override
        public int getAsInt() {
            return getInputEventStream().getAsInt();
        }
    }

    @ToString
    public static class DoubleNotifyFlowFunction extends NotifyFlowFunction implements DoubleFlowFunction {

        public DoubleNotifyFlowFunction(DoubleFlowFunction inputEventStream, Object target) {
            super(inputEventStream, target);
        }

        @Override
        public double getAsDouble() {
            return getInputEventStream().getAsDouble();
        }
    }

    @ToString
    public static class LongNotifyFlowFunction extends NotifyFlowFunction implements LongFlowFunction {

        public LongNotifyFlowFunction(LongFlowFunction inputEventStream, Object target) {
            super(inputEventStream, target);
        }

        @Override
        public long getAsLong() {
            return getInputEventStream().getAsLong();
        }
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof NotifyFlowFunction)) return false;
        NotifyFlowFunction that = (NotifyFlowFunction) o;
        return target.equals(that.target);
    }

    @Override
    public int hashCode() {
        return Objects.hash(target);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy