From bda546157677e19d424123f389f4bcbad9bfd036 Mon Sep 17 00:00:00 2001 From: sageTheDM Date: Tue, 26 Nov 2024 15:49:29 +0100 Subject: [PATCH] changes made --- bin/App.class | Bin 7636 -> 10089 bytes bin/BreakSchedule.class | Bin 2196 -> 1599 bytes bin/Co2Data.class | Bin 3760 -> 3715 bytes bin/Teacher.class | Bin 2736 -> 1290 bytes src/App.java | 242 +++++++++++++++++++++++++--------------- src/BreakSchedule.java | 1 - src/Co2Data.java | 1 - src/Teacher.java | 80 ++++--------- 8 files changed, 173 insertions(+), 151 deletions(-) diff --git a/bin/App.class b/bin/App.class index 01dfcb4ec29509833e3d70d12a3117804241298b..a1337e99d6e3457408e55838274f658413f2ca48 100644 GIT binary patch literal 10089 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 Qt4S&Ky>h4AC3{ftf6vZdTL1t6 diff --git a/bin/BreakSchedule.class b/bin/BreakSchedule.class index a590c5921789350900cbaa74c8393d545f0db2c6..1dc403cea466d231ec45d1ec67226891899a43d4 100644 GIT binary patch delta 402 zcmY+A%`Zby5XFDD@4a5?ZAhw~1SJG54MJ&sQ`A>2xJSI#scCG-be9r1(lWW5mrod(og7i^$!2 zr73B36lhi?b)I;xPKUDfj{lJ^k8?|vW0k5B+wo@|U7%NS<-T_Y%@@Ke-oT?e))NES zb5jM)Nb$zK=)4nClc2;1f!wurPL`=*lR6Hm=9C7Bke2miIR^1d_Rx?ZRYJpz;FIc@ zQN}PR=ZJA8zrCAXB SDD=2AV*Q(mR6)mDdN|KmTkMOCM|;Gn#ib!0H_Ks z;W9%@Mx?Z$p~r-rNy-FSrWCp~DbgJZg?tr)3cnmZj;7X;=yN;s z*!{(|(#na?q{t2r?Y(Fy=nijQ;0Urfj3;QrOElvhy`^S~kC1*+kDGAPX<1>iSlJpw z1a)+KgK02FL?7{-5RdheW>anow6iBYvQA<`KwA`wlr6dBjWmX`7 zqQ+qj5%a^!AG(h9np#Eb+Nw=e1sh|L+Je$ZW6U8+ohh<&vo|<2kfsQ%iZrgQi$<$g z#{9(Cq}gcdtgMvHY%y)th+$1^(=;mvxv0h+kzaET5xPEQ=y#1)6DR4Xi@ zUmxH)H#IjD>HmdiM`P7B)eR1}=rrv*Jm9WFfB_kJ*lE7%<=&^nHP6g=Ur6C_(rN1W~6_ZdSy!d`Rc8y^XIAe-RJ#VJ^of~yue{I)R{l8lfgl&m(_)K(EfxI z3fj+E>!D(7oE4RY*5}0caGd&1GUq;_G2F}6K3X8o?ogNH?_;x=YQtiApj!UXoe{dTvNZ<#7n3#XG?RZZL{qM5`pKY# zhEwwl=<6N8zrJrYfy6vcmMxR*1JTL#fdnY2uiq{J`-7&U36sY7d;whE1kK}cg#(2RWd7XA&ug&1^BHc4cvj9!=WZw98-U zWvfE>_9fGq?zFjUy%=cqqv&_Yu+40>>RujThvs8NiL19QlkBc?QKH*a{V^uBw z+~Es?3jfAr|AwA)Iicb?Z2rYI1asQXaOZ=xeaU_AE{`Y~NtJhjq0% zI@=qpNBO6*9G{Icw^<0WDYDai1v$Qsj!D>F$!{lnv3NyR$ z>06RZTq1v4uMy*?3e0gm;;Q6YAI?(>jGg#QL5uFo|9 diff --git a/bin/Teacher.class b/bin/Teacher.class index 62f8a1c383b7691656ca5444698fc666bc69338f..69117f61b2742322ea45046dd145ec6fe6116f71 100644 GIT binary patch literal 1290 zcmZuvYfsZq7=F$+Tefv8moda~RheC<%p2ZD_#g>!38Kje3GoYOquGk3C0*yQ@`D!^ zq9(@A{wVQ1r-f~>Cha-z?RlT~dHeU@&)?_g*hE!Dj6vPCc(ZN!DiRFiNBk47INWVj z-ZhS_W!B&3>Va>&t?G5phQR2w zJwMo?CJd9;Qy3D007E+P0`9!`Y&YmIuo}bIdegC8JJ?`|8>KzU-1H7D6_X4TeWq`C zr%h~Am_Sa$G;{`KU6v)mFr(oH6fv9aT07n2hUM?_h9kLnP44V*-xhY{oHnjAEbXNb zM^2#4Ye*uM#v+zgEHPyIG>C$R+qgqqTNcS$97GDWu9gPCBbSPmp{;~cieC3Lq>&Q0 zk_HVK8b4^;Bu#QV+9-*uQLlPm-<&bnB3cWrn6knJWa+j$s51#mN@qJ)+zF#51XoU? zbtL)W;l*kcqgIpA@y;=KoY%g^KVHOi$8%dlo^-==yPb=8s_u3DrnO~@4QSCEt3pLA z)1+|#3CxO>k)@Iq!x+6Jy1bJh@+3LvR4JB)PMPCml_^g=>0g-GKf}~_dD)K-)(nrA4O}9Wn%( z#RBmV;Q0^=Ch-x^qU28hGw$O-)UZOQq+_09?h7Ria-5PdT9^>QFszO&E?zC38ChJx z!x5d0&sRDZMixK9Apa|iPW2O~gNNZFzUHN*5vP#w=CC_&&k-2^cmFX$Gh7BA&!ul@tK731^( literal 2736 zcmbVNX?GM=5WSskI+G?qlK^3nQBabwL_iizh%ythkbxix0fJl4OlPLaOn2<*27?Gj z+{JyxeZ>tIK!WHw9zT1If51QBAMmqyUw1P-BzpAtW%|{vdiU0=s`uuXKY#e?$`vGV zK7tAfks)16=X5)QDhYEAX@|A8yk=(G22zLgv?HO))C#%;H5s}F9osOo?GkDoqo6xl zD$jt~et_#3`L>=dOK#a9h?bulB8zbGEAo^K~C=WR>UGAC2C06 z_^-5o&nkDM^M+|Sof0aWTZVbcgq6`Fm?vSbcTVpZy;?CxnJ82=DwvNsOsB)!RtpIW z70iMxW08c4-hzxJ5@zkNa++zzdfh@n&)4BP#3EQmJme&wg6nYug~wf%cT00whJMZ4 zXCf^#AsH(u9M8zOi2~ianbGZ7-22FA7A{vttAx6wo7Q4+*Usv;jMa1`vNG1vu|qGq z#aJTengnj9qsx-9o{qR}Ih=@Cm!-?Ng^ukx8Ji^3^LVB?5!;@#^G2H37W%sRy-kAB zui5!nw^0@dLW$Y%BJSt-k$&%JlPhd!3JiX{^(luG4{X_;R zIl`y`+tIU{jJt^K;Q{ZFP`yW=&?$Hyp+Q0^ZXDEwV1~#LJ)_(>q?y_nH|B^9J2DOt z8`d31oHtKwgpww)5!W=bnz#{$sqb+CU>@Iy&bMsCF4_Xp=c6kHqhxMI?={kDc*0nJft~rQ0t>8@&RnMrT zW%9y#5rW`t1@ByS#VykIt@YMX+MGGAo5UMh!t1$~F&lG;%mt*A9t)(|KSDil z2@Myp;5-(nP3q#ySXzmF!dR}}7#b_pme5$Gt_h7cbzNv|P&bCgX7$$4Xjiv}#_j61 z&`7A;L!(FS3ypqtXJ`zlcZSBGx;HfTsRu&ipn7*`+^cG#kyiE4$f`zYjHw0RIOi47 z;_nFmmB3O)S+WHz*$Vzut;0NYq5=JA#D4m9dTcDj2^RYl7U47&;|!MI0+!-uz9he5 z8Gb_yzq4(B@JW%dT&gG2xTnG{kmG*8A^eJ#0&7|?!EOz@auLN=c4C$4UdEA1avr^i zV{{&8%O1Xn$uQmdoCaVeNko@hDA5k1~c5-sJF3;4wTN$hYw;(O2F2 z9gcm=MFm6^YCN#bqfz{TfJVX-c#={6*gYkN3hM(BnIy&U@$___4P`uXiRT5p$bDje zc@mS;H*YT6TwU7y5?&5A7nn>HNt!4=xp)e%i0_gqydl0zr|?!-EY%BaXQ?{a-L33k zr$^rE6O;|tcj_j*&z0y;6F%UolIVy3DE(0&eI}6pe7f{DO2;Xkpmf*&kmf59 aoVvW^lT-NmEK@9RT~Arn!jk*7J@*%X?oWRJ diff --git a/src/App.java b/src/App.java index 0b0ede2..7fe1158 100644 --- a/src/App.java +++ b/src/App.java @@ -8,58 +8,94 @@ import java.util.Scanner; public class App { // #region app constants private static final Scanner scanner = new Scanner(System.in); - private static final Teacher[] teachers = new Teacher[Teacher.nameMap.size()]; + private static Teacher[] teachers = new Teacher[Teacher.nameMap.size()]; // problem - // Room channel numbers, sorted asc. 37, 38, 39 + // Room channel numbers, sorted in ascending order: 37, 38, 39 private static final int[] ROOM_NUMBERS = { 1521263, 1364580, 1521262 }; - // Date and time constants for Start and End Dates + // Date constants for Start and End Dates private static final String[] DATES = { "2024-11-04", "2024-11-05", "2024-11-06", "2024-11-07", "2024-11-08" }; - private static ArrayList SHORT_BREAKS = new ArrayList(); - private static ArrayList LONG_BREAKS = new ArrayList(); + private static final ArrayList SHORT_BREAKS = new ArrayList<>(); + private static final ArrayList LONG_BREAKS = new ArrayList<>(); // #region Initialization - public static URL generateLink(int channelNumber, String date) throws MalformedURLException { String baseUrl = "https://api.thingspeak.com/channels/"; String formattedStartDateTime = date + " 07:00:00"; String formattedEndDateTime = date + " 19:00:00"; - return new URL(baseUrl + channelNumber + "/feeds.csv?start=" + formattedStartDateTime.replace(" ", "%20") - + "&end=" + formattedEndDateTime.replace(" ", "%20")); // %20 --> " " - + return new URL(baseUrl + channelNumber + "/feeds.csv?start=" + + formattedStartDateTime.replace(" ", "%20") + + "&end=" + formattedEndDateTime.replace(" ", "%20")); } private static void calculateBreakPoints(Break calcBreak, Teacher teacher) { int duration = calcBreak.getEnd() - calcBreak.getStart(); Co2Data[] minuteData = calcBreak.getCo2Datas(); + + if (minuteData.length != duration) { + System.out.println("Data inconsistency detected: duration mismatch."); + return; + } + int breakPoints = minuteData.length; - if (duration == minuteData.length) { - for (int i = 0; i < duration; i++) { - if (i + 1 != duration && (minuteData[i].getCo2Level() < minuteData[i + 1].getCo2Level())) { - breakPoints--; - } + for (int i = 0; i < duration - 1; i++) { + if (minuteData[i].getCo2Level() < minuteData[i + 1].getCo2Level()) { + breakPoints--; } - } else - System.out.println("Unexpected error"); + } + if (duration > 5) { teacher.addPoints(0, breakPoints, 0); } else { teacher.addPoints(breakPoints, 0, 0); } - // check if next lesson is lunch another teacher or the same and plan - // accordingly + // bonus Point for teacher switch } private static void initializeTeachers() { + // Mapping short names to full teacher names + Teacher.nameMap.put("Hm", "Johann Hummel"); + Teacher.nameMap.put("Bd", "Fender Bender"); + Teacher.nameMap.put("Bu", "Luca Burger"); + Teacher.nameMap.put("Cg", "Jesus Chung"); + Teacher.nameMap.put("Do", "Brother Doe"); + Teacher.nameMap.put("Eh", "Johnny Ehrlich"); + Teacher.nameMap.put("Fh", "Karl Fischer"); + Teacher.nameMap.put("Gi", "Bobby Giordano"); + Teacher.nameMap.put("Gr", "Graham"); + Teacher.nameMap.put("Hi", "Higgins"); + Teacher.nameMap.put("Kg", "Kang"); + Teacher.nameMap.put("Kh", "Khan"); + Teacher.nameMap.put("Lz", "Lozano"); + Teacher.nameMap.put("Lu", "Lund"); + Teacher.nameMap.put("Or", "Ortega"); + Teacher.nameMap.put("Re", "Reyes"); + Teacher.nameMap.put("Se", "Seng"); + Teacher.nameMap.put("Ts", "Tanaka"); + Teacher.nameMap.put("Vt", "Vetter"); + Teacher.nameMap.put("Zu", "Zuniga"); + Teacher.nameMap.put("Kp", "Kevin Peters"); + Teacher.nameMap.put("KP", "Kevin Peters"); + Teacher.nameMap.put("Ba", "Barbara Allen"); + Teacher.nameMap.put("Bz", "Basil Zephyr"); + Teacher.nameMap.put("Hn", "Hannah Nguyen"); + Teacher.nameMap.put("Le", "Full Name for Le"); + Teacher.nameMap.put("Du", "Full Name for Du"); + Teacher.nameMap.put("Bt", "Full Name for Bt"); + Teacher.nameMap.put("Es", "Full Name for Es"); + Teacher.nameMap.put("Hu", "Full Name for Hu"); + Teacher.nameMap.put("Ge", "Full Name for Ge"); + + // Initialize the teachers array with the size of nameMap + teachers = new Teacher[Teacher.nameMap.size()]; + int index = 0; for (String initial : Teacher.nameMap.keySet()) { Teacher teacher = new Teacher(initial); - Points points = new Points(); // Initialize Points object for each teacher - teacher.setPoints(points.getLongerBreak(), points.getBonusPoints(), points.getFiveMinuteBreak()); teachers[index++] = teacher; } } @@ -71,10 +107,26 @@ public class App { if (scanner.hasNextInt()) { return scanner.nextInt(); } - scanner.next(); // Clear invalid input + System.out.println("Invalid input. Please enter a number."); + scanner.next(); } } + private static void interactWithUser() { + while (true) { + int userInput = getUserInput("Do you want to see how the points were calculated? (1 = Yes, 0 = No)"); + if (userInput == 1) { + printExplanation(); + break; + } else if (userInput == 0) { + break; + } else { + System.out.println("Invalid input. Please enter 1 for Yes or 0 for No."); + } + } + printShutdown(); + } + // #region Explanation private static void printExplanation() { System.out.println("Point calculation explanation:"); @@ -83,8 +135,8 @@ public class App { System.out.println("3. 5 bonus points for teacher switches in classrooms."); } - // #region shutdown - private static void printShutDown() { + // #region Shutdown + private static void printShutdown() { System.out.println("Shutting down..."); for (int i = 3; i > 0; i--) { System.out.print(i + "..."); @@ -96,94 +148,100 @@ public class App { } } - // #TODO: remove this before hand-in deadline - public static void debbugingValueLists(List data) { - // Debugging co2Data - int index = 0; - for (Co2Data a : data) { - System.out.println(a.toString()); - index++; - } - - System.out.println("-----------------"); - System.out.println(index); - } - - // #TODO - // #region Print & sort + // #region Print & Sort private static void sortTeachers() { - // Sorting teachers by total points (implement sorting logic based on points) Arrays.sort(teachers, - (a, b) -> Integer.compare(b.getPoints().getTotalPoints(), a.getPoints().getTotalPoints())); + (a, b) -> Integer.compare(b.getTotalPoints(), a.getTotalPoints())); } private static void printTeachers() { int rank = 1; int previousPoints = -1; - int currentRank = 1; for (int i = 0; i < teachers.length; i++) { Teacher teacher = teachers[i]; - int teacherPoints = teacher.getPoints().getTotalPoints(); // Assuming points are available in getPoints() + int teacherPoints = teacher.getTotalPoints(); - if (teacherPoints == previousPoints) { - System.out.println(currentRank + ". " + teacher.getName() + " " + teacherPoints); - } else { - if (i > 0) { - rank += (i - (currentRank - 1)); - } - currentRank = rank; - System.out.println(rank + ". " + teacher.getName() + " " + teacherPoints); + if (teacherPoints != previousPoints) { + rank = i + 1; + previousPoints = teacherPoints; } - - previousPoints = teacherPoints; + System.out.println(rank + ". " + teacher.getName() + " - Points: " + teacherPoints); } } - // #region Main - public static void main(String[] args) throws MalformedURLException { - System.out.println("Calculations in process please do not shut off..."); - initializeTeachers(); + private static Teacher findTeacherForBreak(int breakIndex, TimeTable timeTable, int dayIndex) { + String teacherShortName = timeTable.getLesson(breakIndex, dayIndex); - ArrayList co2Datas = new ArrayList(); - for (int classrooms = 0; classrooms < 3; classrooms++) { - for (int weekday = 0; weekday < 5; weekday++) { - List tempData = Co2Data.getData(generateLink(ROOM_NUMBERS[classrooms], DATES[weekday])); - SHORT_BREAKS.add(BreakSchedule.createBreaks(BreakSchedule.START_SMALL_BREAK, - BreakSchedule.END_SMALL_BREAK, tempData)); - LONG_BREAKS.add(BreakSchedule.createBreaks(BreakSchedule.START_LONG_BREAK, - BreakSchedule.END_LONG_BREAK, tempData)); - } + if (teacherShortName == null || teacherShortName.isEmpty()) { + System.out.println("No teacher assigned during this break."); + return null; + } + if (!Teacher.nameMap.containsKey(teacherShortName) && teacherShortName != "Lunch") { + System.out.println("Teacher with short name " + teacherShortName + " not found in Teacher.nameMap."); + return null; } - calculateBreakPoints(SHORT_BREAKS.get(0)[0], teachers[0]); - - // Loop threw each day with a specific classroom and after the weekdays are over - // go to the next of the 3 classroms - // go threw every break calculate the point and give them to the teacher - // directly - // remember the point class - // BreakSchedule needed - - sortTeachers(); - printTeachers(); - - while (true) { - int userInput = getUserInput( - "Do you want to see how the points were calculated? (Yes 1, No 0; anything is an error)"); - if (userInput == 1) { - printExplanation(); - // add a more detailed listing of the teacher since points can be broken down - // further - printShutDown(); - break; - } else if (userInput == 0) { - printShutDown(); - break; - } else { - System.out.println("Invalid input. Please enter 1 for Yes or 0 for No."); + String fullName = Teacher.nameMap.get(teacherShortName); + for (Teacher teacher : teachers) { + if (teacher.getName().equals(fullName)) { + return teacher; } } - scanner.close(); + return null; + } + + // #region main + public static void main(String[] args) { + try { + System.out.println("Calculations in process. Please do not shut off..."); + initializeTeachers(); + + for (int roomIndex = 0; roomIndex < ROOM_NUMBERS.length; roomIndex++) { + TimeTable timeTable = new TimeTable(roomIndex); + + for (String date : DATES) { + try { + List tempData = Co2Data.getData(generateLink(ROOM_NUMBERS[roomIndex], date)); + if (tempData == null || tempData.isEmpty()) { + System.out + .println("No data available for " + date + " in Room" + (roomIndex + 37) + "."); + continue; + } + + Break[] shortBreaks = BreakSchedule.createBreaks( + BreakSchedule.START_SMALL_BREAK, BreakSchedule.END_SMALL_BREAK, tempData); + + Break[] longBreaks = BreakSchedule.createBreaks( + BreakSchedule.START_LONG_BREAK, BreakSchedule.END_LONG_BREAK, tempData); + + for (int i = 0; i < shortBreaks.length; i++) { + Teacher teacher = findTeacherForBreak(i, timeTable, Arrays.asList(DATES).indexOf(date)); + if (teacher != null) { + calculateBreakPoints(shortBreaks[i], teacher); + } + } + + for (int i = 0; i < longBreaks.length; i++) { + Teacher teacher = findTeacherForBreak(i, timeTable, Arrays.asList(DATES).indexOf(date)); + if (teacher != null) { + calculateBreakPoints(longBreaks[i], teacher); + } + } + } catch (Exception e) { + System.out.println("Error processing data for date: " + date + ". " + e.getMessage()); + } + } + } + + sortTeachers(); + printTeachers(); + interactWithUser(); + + } catch (Exception e) { + System.out.println("Fatal error: " + e.getMessage()); + } finally { + scanner.close(); + } } } diff --git a/src/BreakSchedule.java b/src/BreakSchedule.java index 7fc7b50..ca2b2c2 100644 --- a/src/BreakSchedule.java +++ b/src/BreakSchedule.java @@ -23,7 +23,6 @@ public class BreakSchedule { Co2Data[] co2Datas = new Co2Data[endTimes[i] - startTimes[i]]; for (Co2Data data : co2Data) { if (data.getTime() >= startTimes[i] && data.getTime() < endTimes[i]) { - System.out.println(startTimes[i] + " " + endTimes[i] + " " + data.getTime()); co2Datas[data.getTime() - startTimes[i]] = data; } } diff --git a/src/Co2Data.java b/src/Co2Data.java index fd8154d..3a8194d 100644 --- a/src/Co2Data.java +++ b/src/Co2Data.java @@ -59,7 +59,6 @@ public class Co2Data { br.readLine(); // Skip header line String output; - System.out.println(url); while ((output = br.readLine()) != null) { Co2Data data = parseData(output); if (data != null) { diff --git a/src/Teacher.java b/src/Teacher.java index c414631..495ddb6 100644 --- a/src/Teacher.java +++ b/src/Teacher.java @@ -1,73 +1,39 @@ -import java.util.Collections; import java.util.HashMap; import java.util.Map; public class Teacher { - // #region Fields - private String name; - private Map timetable = new HashMap<>(); // Map of Day -> Teachers in class for that day - private Points points; // Points field to store teacher's points - public static final Map nameMap = new HashMap<>(); + private String shortName; + private String name; + private int totalPoints; - // #region Initialization - static { - // Mapping short names to full teacher names - nameMap.put("Hm", "Johann Hummel"); - nameMap.put("Bd", "Fender Bender"); - nameMap.put("Bu", "Luca Burger"); - nameMap.put("Cg", "Jesus Chung"); - nameMap.put("Do", "Brother Doe"); - nameMap.put("Eh", "Johnny Ehrlich"); - nameMap.put("Fh", "Karl Fischer"); - nameMap.put("Gi", "Bobby Giordano"); - nameMap.put("Gr", "Graham"); - nameMap.put("Hi", "Higgins"); - nameMap.put("Kg", "Kang"); - nameMap.put("Kh", "Khan"); - nameMap.put("Lz", "Lozano"); - nameMap.put("Lu", "Lund"); - nameMap.put("Or", "Ortega"); - nameMap.put("Re", "Reyes"); - nameMap.put("Se", "Seng"); - nameMap.put("Ts", "Tanaka"); - nameMap.put("Vt", "Vetter"); - nameMap.put("Zu", "Zuniga"); + // Constructor + public Teacher(String shortName) { + this.shortName = shortName; + this.name = nameMap.get(shortName); + this.totalPoints = 0; } - // #region Constructor - public Teacher(String name) { - // Use the short name to find the full name from the nameMap - this.name = nameMap.getOrDefault(name, "Unknown"); - this.points = new Points(); // Initialize Points object when Teacher is created + // Getters + public String getShortName() { + return shortName; } - // #region Getters and Setters public String getName() { - return name; // Return the teacher's full name - } - - public Map getTimetable() { - return Collections.unmodifiableMap(timetable); // Return an unmodifiable view of the timetable - } - - public Points getPoints() { - return points; // Return the Points object associated with the teacher - } - - public void setPoints(int fiveMinute, int tenMinutes, int bonusPoints) { - this.points.setFiveMinuteBreak(fiveMinute); - this.points.setLongerBreak(tenMinutes); - this.points.setBonusPoints(bonusPoints); - } - - public void addPoints(int fiveMinute, int tenMinutes, int bonusPoints) { - this.points.addFiveMinuteBreakPoints(fiveMinute); - this.points.addLongerBreakPoints(tenMinutes); - this.points.addBonusPoints(bonusPoints); + return name; } public int getTotalPoints() { - return this.points.getTotalPoints(); + return totalPoints; + } + + // Setters + public void setTotalPoints(int points) { + this.totalPoints = points; + } + + // Method to add points + public void addPoints(int smallBreakPoints, int longBreakPoints, int bonusPoints) { + this.totalPoints += smallBreakPoints + longBreakPoints + bonusPoints; } }