
io.github.qudtlib.tools.contributions.GlobalData Maven / Gradle / Ivy
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