1 package com.ranfa.lib.calc;
3 import java.io.IOException;
4 import java.math.BigDecimal;
5 import java.math.RoundingMode;
6 import java.nio.file.Files;
7 import java.nio.file.Paths;
10 import org.slf4j.Logger;
11 import org.slf4j.LoggerFactory;
13 import com.fasterxml.jackson.core.type.TypeReference;
14 import com.fasterxml.jackson.databind.ObjectMapper;
16 public class PRPCalc {
18 private final Logger logger = LoggerFactory.getLogger(PRPCalc.class);
20 private static final String PRP_STORAGE_FILE_PATH = "generated/prp.json";
21 private static final BigDecimal THAUSAND = BigDecimal.valueOf(1000);
23 private List<Integer> TotalPRPList;
27 if(Files.notExists(Paths.get(PRP_STORAGE_FILE_PATH)))
28 generateEmptyPRPFile();
29 TypeReference<List<Integer>> typeref = new TypeReference<List<Integer>>() {};
31 TotalPRPList = new ObjectMapper().readValue(Paths.get(PRP_STORAGE_FILE_PATH).toFile(), typeref);
32 } catch (IOException e) {
33 logger.error("Couldn't read prp file from disk.", e);
35 TotalPRP = calcCurrentTotal();
38 public boolean generateEmptyPRPFile() {
39 if(Files.notExists(Paths.get("generated")))
41 Files.createDirectory(Paths.get("generated"));
42 Files.createFile(Paths.get(PRP_STORAGE_FILE_PATH));
43 } catch (IOException e) {
44 logger.error("cannot make prp file.", e);
50 public int calcCurrentTotal() {
52 for(int val : TotalPRPList)
57 public int getTotalPRP() {
61 public static int calcPRPFromScore(int score) {
62 BigDecimal scoreDecimal = BigDecimal.valueOf(score);
63 return scoreDecimal.divide(THAUSAND, RoundingMode.DOWN).intValueExact();