diff --git a/api/src/main/java/ca/bc/gov/educ/studentdatacollection/api/reports/BandOfResidenceHeadcountReportService.java b/api/src/main/java/ca/bc/gov/educ/studentdatacollection/api/reports/BandOfResidenceHeadcountReportService.java index de16ce65..fedb25aa 100644 --- a/api/src/main/java/ca/bc/gov/educ/studentdatacollection/api/reports/BandOfResidenceHeadcountReportService.java +++ b/api/src/main/java/ca/bc/gov/educ/studentdatacollection/api/reports/BandOfResidenceHeadcountReportService.java @@ -22,6 +22,7 @@ import org.springframework.stereotype.Service; import java.io.InputStream; +import java.text.ParseException; import java.util.*; @Service @@ -102,11 +103,20 @@ protected void setValueForGrade(HashMap nodeMap, Ban int runningTotalHeadcount = 0; if (headcountsList != null) { for (BandResidenceHeadcountResult each : headcountsList) { - String bandKey = each.getBandCode(); - runningTotalFTE += Double.parseDouble(each.getFteTotal()); - runningTotalHeadcount += Integer.parseInt(each.getHeadcount()); - nodeMap.get(bandKey + HEADING).setValueForBand("FTE", each.getFteTotal()); - nodeMap.get(bandKey + HEADING).setValueForBand("Headcount", each.getHeadcount()); + try { + String bandKey = each.getBandCode(); + double fteTotal = numberFormat.parse(each.getFteTotal()).doubleValue(); + int headcountTotal = numberFormat.parse(each.getHeadcount()).intValue(); + + runningTotalFTE += fteTotal; + runningTotalHeadcount += headcountTotal; + + nodeMap.get(bandKey + HEADING).setValueForBand("FTE", String.format("%.4f", fteTotal)); + nodeMap.get(bandKey + HEADING).setValueForBand("Headcount", String.valueOf(headcountTotal)); + } catch (ParseException e) { + log.error("Error parsing number in setValueForGrade - Band of Residence Report: " + e.getMessage()); + throw new StudentDataCollectionAPIRuntimeException("Error parsing number in setValueForGrade - Band of Residence Report: " + e.getMessage()); + } } } nodeMap.get("allBandsHeading").setValueForBand("FTE", String.format("%.4f", runningTotalFTE)); diff --git a/api/src/main/java/ca/bc/gov/educ/studentdatacollection/api/reports/RefugeeHeadcountPerSchoolReportService.java b/api/src/main/java/ca/bc/gov/educ/studentdatacollection/api/reports/RefugeeHeadcountPerSchoolReportService.java index 6e5bc797..7b2aae52 100644 --- a/api/src/main/java/ca/bc/gov/educ/studentdatacollection/api/reports/RefugeeHeadcountPerSchoolReportService.java +++ b/api/src/main/java/ca/bc/gov/educ/studentdatacollection/api/reports/RefugeeHeadcountPerSchoolReportService.java @@ -26,6 +26,7 @@ import org.springframework.stereotype.Service; import java.io.InputStream; +import java.text.ParseException; import java.util.*; @Service @@ -141,20 +142,25 @@ protected void setValueForGrade(HashMap nodeMap, Ref int totalELL = 0; for (RefugeeHeadcountResult each : refugeeHeadcounts) { - String schoolKey = each.getSchoolID(); - int schoolHeadcount = Integer.parseInt(each.getHeadcount()); - double schoolFTE = Double.parseDouble(each.getFteTotal()); - int schoolELL = Integer.parseInt(each.getEll()); - - totalHeadcount += schoolHeadcount; - totalFTE += schoolFTE; - totalELL += schoolELL; - - HeadcountChildNode node = nodeMap.getOrDefault(schoolKey + HEADING, new HeadcountChildNode()); - node.setValueForRefugee(HEADCOUNT, String.valueOf(schoolHeadcount)); - node.setValueForRefugee("FTE", String.format("%.4f", schoolFTE)); - node.setValueForRefugee("ELL", String.valueOf(schoolELL)); - nodeMap.put(schoolKey + HEADING, node); + try { + String schoolKey = each.getSchoolID(); + int schoolHeadcount = numberFormat.parse(each.getHeadcount()).intValue(); + double schoolFTE = numberFormat.parse(each.getFteTotal()).doubleValue(); + int schoolELL = numberFormat.parse(each.getEll()).intValue(); + + totalHeadcount += schoolHeadcount; + totalFTE += schoolFTE; + totalELL += schoolELL; + + HeadcountChildNode node = nodeMap.getOrDefault(schoolKey + HEADING, new HeadcountChildNode()); + node.setValueForRefugee(HEADCOUNT, String.valueOf(schoolHeadcount)); + node.setValueForRefugee("FTE", String.format("%.4f", schoolFTE)); + node.setValueForRefugee("ELL", String.valueOf(schoolELL)); + nodeMap.put(schoolKey + HEADING, node); + } catch (ParseException e) { + log.error("Error parsing number in setValueForGrade - Refugee Report: " + e.getMessage()); + throw new StudentDataCollectionAPIRuntimeException("Error parsing number in setValueForGrade - Refugee Report: " + e.getMessage()); + } } HeadcountChildNode totalNode = nodeMap.getOrDefault(ALL_REFUGEE_HEADING, new HeadcountChildNode());