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

io.github.qudtlib.tools.contributions.GlobalData Maven / Gradle / Ivy

There is a newer version: 6.8.0
Show newest version
package io.github.qudtlib.tools.contributions;

import io.github.qudtlib.Qudt;
import io.github.qudtlib.model.FactorUnit;
import io.github.qudtlib.model.Unit;
import java.util.*;
import java.util.stream.Collectors;

public class GlobalData {
    final Map> missingData = new HashMap<>();

    final Map> unitDependencies;
    final String relativeDifferenceThreshold = "0.001";
    final Set undecidedUnits = new HashSet<>();
    final Set correctUnits = new HashSet<>();
    final Set incorrectUnits = new HashSet<>();

    final Set wasIncorrect = new HashSet<>();
    final Set wasMissing = new HashSet<>();

    public GlobalData() {
        this.unitDependencies = calculateUnitDependencies();
    }

    public boolean trustCalculationForUnit(Unit u) {
        Set dependencies = unitDependencies.get(u);
        if (dependencies == null) {
            return false;
        }
        if (dependencies.equals(Set.of(u))) {
            return true;
        }
        return dependencies.stream().allMatch(dependency -> correctUnits.contains(dependency));
    }

    private static Map> calculateUnitDependencies() {
        return Qudt.allUnits().stream()
                .collect(
                        Collectors.toMap(
                                u -> u,
                                u ->
                                        u.getFactorUnits()
                                                .streamAllFactorUnitsRecursively()
                                                .map(FactorUnit::getUnit)
                                                .collect(Collectors.toSet())));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy