tech.deepdreams.worker.api.context.DeductionBasisContext Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of worker-api Show documentation
Show all versions of worker-api Show documentation
Payroll Worker API project for Java 17
package tech.deepdreams.worker.api.context;
import java.util.Map;
import java.util.ServiceLoader ;
import java.util.ServiceLoader.Provider;
import tech.deepdreams.worker.api.enums.CountryCode;
import tech.deepdreams.worker.api.exceptions.ServiceNotFoundException;
import tech.deepdreams.worker.api.services.DeductionBasisService;
public class DeductionBasisContext {
private DeductionBasisService deductionBasisService ;
public DeductionBasisContext(CountryCode countryCode, String deductionCode, int version){
this.deductionBasisService = ServiceLoader.load(DeductionBasisService.class)
.stream()
.map(Provider::get)
.filter(service -> service.country().equals(countryCode) && service.code().equals(deductionCode) && service.version() == version)
.findAny()
.orElseThrow(() -> new ServiceNotFoundException()) ;
}
public Double calculate(Map params, Map advantagesInKind) {
return deductionBasisService.calculate(params, advantagesInKind) ;
}
}