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

com.nextbreakpoint.flink.dummies.TemperatureAccumulator Maven / Gradle / Ivy

The newest version!
/*
 * This file is part of Flink Dummies
 * https://github.com/nextbreakpoint/flink-dummies
 */
package com.nextbreakpoint.flink.dummies;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.math.RoundingMode;

@Data
@Builder(toBuilder = true, setterPrefix = "with")
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class TemperatureAccumulator {
    private BigDecimal maximumTemperature;
    private BigDecimal temperature;
    private int count;

    public TemperatureAccumulator add(BigDecimal element) {
        return this.toBuilder()
                .withMaximumTemperature(this.maximumTemperature.max(element))
                .withTemperature(this.temperature.add(element))
                .withCount(this.count + 1)
                .build();
    }

    public TemperatureAccumulator add(TemperatureAccumulator otherAccumulator) {
        return this.toBuilder()
                .withTemperature(this.maximumTemperature.max(otherAccumulator.maximumTemperature))
                .withTemperature(this.temperature.add(otherAccumulator.temperature))
                .withCount(this.count + otherAccumulator.count)
                .build();
    }

    public BigDecimal getAverageTemperature() {
        return temperature.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_DOWN);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy