From 15de5a34fb4d854064e4c7b8ccdf2940368fb22d Mon Sep 17 00:00:00 2001 From: Nikita Myroniuk Date: Mon, 16 Sep 2024 22:31:41 +0200 Subject: [PATCH 1/9] 01-jv-salary-info --- src/main/java/core/basesyntax/SalaryInfo.java | 44 ++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/main/java/core/basesyntax/SalaryInfo.java b/src/main/java/core/basesyntax/SalaryInfo.java index 4a34339b5..7eafcbd09 100644 --- a/src/main/java/core/basesyntax/SalaryInfo.java +++ b/src/main/java/core/basesyntax/SalaryInfo.java @@ -1,7 +1,47 @@ package core.basesyntax; public class SalaryInfo { - public String getSalaryInfo(String[] names, String[] data, String dateFrom, String dateTo) { - return null; + public static String getSalaryInfo(String[] names, String[] data, + String dateFrom, String dateTo) { + String dateFromComparable = convertDateToComparable(dateFrom); + String dateToComparable = convertDateToComparable(dateTo); + int[] totalEarnings = new int[names.length]; + + for (String entry : data) { + String[] parts = entry.split(" "); + String dateStr = parts[0]; + String employeeName = parts[1]; + int hoursWorked = Integer.parseInt(parts[2]); + int incomePerHour = Integer.parseInt(parts[3]); + + String entryDateComparable = convertDateToComparable(dateStr); + + if (entryDateComparable.compareTo(dateFromComparable) + >= 0 && entryDateComparable.compareTo(dateToComparable) <= 0) { + for (int i = 0; i < names.length; i++) { + if (names[i].equals(employeeName)) { + int earnings = hoursWorked * incomePerHour; + totalEarnings[i] += earnings; + break; + } + } + } + } + + StringBuilder report = new StringBuilder(); + report.append("Report for period ").append(dateFrom) + .append(" - ").append(dateTo); + + for (int i = 0; i < names.length; i++) { + report.append(System.lineSeparator()).append(names[i]).append(" - ") + .append(totalEarnings[i]); + } + + return report.toString(); + } + + private static String convertDateToComparable(String date) { + String[] parts = date.split("\\."); + return parts[2] + parts[1] + parts[0]; } } From bc271c4a9f4811a9c019c26322f4af403c8868fa Mon Sep 17 00:00:00 2001 From: Nikita Myroniuk Date: Fri, 20 Sep 2024 00:11:22 +0200 Subject: [PATCH 2/9] 02-jv-salary-info --- src/main/java/core/basesyntax/SalaryInfo.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/core/basesyntax/SalaryInfo.java b/src/main/java/core/basesyntax/SalaryInfo.java index 7eafcbd09..d45521718 100644 --- a/src/main/java/core/basesyntax/SalaryInfo.java +++ b/src/main/java/core/basesyntax/SalaryInfo.java @@ -1,6 +1,11 @@ package core.basesyntax; public class SalaryInfo { + static int iDateStr = 0; + static int iEmployeeName = 1; + static int iHoursWorked = 2; + static int intIncomePerHour = 3; + public static String getSalaryInfo(String[] names, String[] data, String dateFrom, String dateTo) { String dateFromComparable = convertDateToComparable(dateFrom); @@ -9,10 +14,10 @@ public static String getSalaryInfo(String[] names, String[] data, for (String entry : data) { String[] parts = entry.split(" "); - String dateStr = parts[0]; - String employeeName = parts[1]; - int hoursWorked = Integer.parseInt(parts[2]); - int incomePerHour = Integer.parseInt(parts[3]); + String dateStr = parts[iDateStr]; + String employeeName = parts[iEmployeeName]; + int hoursWorked = Integer.parseInt(parts[iHoursWorked]); + int incomePerHour = Integer.parseInt(parts[intIncomePerHour]); String entryDateComparable = convertDateToComparable(dateStr); From e1ec7519703db62dc649e3e910cad914080cceeb Mon Sep 17 00:00:00 2001 From: Nikita Myroniuk Date: Fri, 20 Sep 2024 00:14:33 +0200 Subject: [PATCH 3/9] 03-jv-salary-info --- src/main/java/core/basesyntax/SalaryInfo.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/core/basesyntax/SalaryInfo.java b/src/main/java/core/basesyntax/SalaryInfo.java index d45521718..810adc5f5 100644 --- a/src/main/java/core/basesyntax/SalaryInfo.java +++ b/src/main/java/core/basesyntax/SalaryInfo.java @@ -1,10 +1,10 @@ package core.basesyntax; public class SalaryInfo { - static int iDateStr = 0; - static int iEmployeeName = 1; - static int iHoursWorked = 2; - static int intIncomePerHour = 3; + static final int iDateStr = 0; + static final int iEmployeeName = 1; + static final int iHoursWorked = 2; + static final int intIncomePerHour = 3; public static String getSalaryInfo(String[] names, String[] data, String dateFrom, String dateTo) { From 6328e5228860462773acf8461b470dde9831c0dc Mon Sep 17 00:00:00 2001 From: Nikita Myroniuk Date: Sat, 21 Sep 2024 00:42:34 +0200 Subject: [PATCH 4/9] 03-jv-salary-info --- src/main/java/core/basesyntax/SalaryInfo.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main/java/core/basesyntax/SalaryInfo.java b/src/main/java/core/basesyntax/SalaryInfo.java index 810adc5f5..ea741e5f6 100644 --- a/src/main/java/core/basesyntax/SalaryInfo.java +++ b/src/main/java/core/basesyntax/SalaryInfo.java @@ -1,9 +1,9 @@ package core.basesyntax; public class SalaryInfo { - static final int iDateStr = 0; - static final int iEmployeeName = 1; - static final int iHoursWorked = 2; + static final int intDateStr = 0; + static final int intEmployeeName = 1; + static final int intHoursWorked = 2; static final int intIncomePerHour = 3; public static String getSalaryInfo(String[] names, String[] data, @@ -14,15 +14,15 @@ public static String getSalaryInfo(String[] names, String[] data, for (String entry : data) { String[] parts = entry.split(" "); - String dateStr = parts[iDateStr]; - String employeeName = parts[iEmployeeName]; - int hoursWorked = Integer.parseInt(parts[iHoursWorked]); + String dateStr = parts[intDateStr]; + String employeeName = parts[intEmployeeName]; + int hoursWorked = Integer.parseInt(parts[intHoursWorked]); int incomePerHour = Integer.parseInt(parts[intIncomePerHour]); String entryDateComparable = convertDateToComparable(dateStr); - if (entryDateComparable.compareTo(dateFromComparable) - >= 0 && entryDateComparable.compareTo(dateToComparable) <= 0) { + if (entryDateComparable.compareTo(dateFromComparable) >= 0 + && entryDateComparable.compareTo(dateToComparable) <= 0) { for (int i = 0; i < names.length; i++) { if (names[i].equals(employeeName)) { int earnings = hoursWorked * incomePerHour; @@ -33,6 +33,11 @@ public static String getSalaryInfo(String[] names, String[] data, } } + return buildReport(names, totalEarnings, dateFrom, dateTo); + } + + private static String buildReport(String[] names, int[] totalEarnings, + String dateFrom, String dateTo) { StringBuilder report = new StringBuilder(); report.append("Report for period ").append(dateFrom) .append(" - ").append(dateTo); @@ -41,7 +46,6 @@ public static String getSalaryInfo(String[] names, String[] data, report.append(System.lineSeparator()).append(names[i]).append(" - ") .append(totalEarnings[i]); } - return report.toString(); } From 7fdd25ccf3abe87259f9aebd8565bea4ad53abaf Mon Sep 17 00:00:00 2001 From: Nikita Myroniuk Date: Sun, 22 Sep 2024 17:59:02 +0200 Subject: [PATCH 5/9] 04-jv-salary-info --- src/main/java/core/basesyntax/SalaryInfo.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main/java/core/basesyntax/SalaryInfo.java b/src/main/java/core/basesyntax/SalaryInfo.java index ea741e5f6..73b53782b 100644 --- a/src/main/java/core/basesyntax/SalaryInfo.java +++ b/src/main/java/core/basesyntax/SalaryInfo.java @@ -1,15 +1,20 @@ package core.basesyntax; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + public class SalaryInfo { - static final int intDateStr = 0; - static final int intEmployeeName = 1; - static final int intHoursWorked = 2; - static final int intIncomePerHour = 3; + private static final int intDateStr = 0; + private static final int intEmployeeName = 1; + private static final int intHoursWorked = 2; + private static final int intIncomePerHour = 3; + private static final DateTimeFormatter date_formatter = + DateTimeFormatter.ofPattern("dd.MM.yyyy"); public static String getSalaryInfo(String[] names, String[] data, String dateFrom, String dateTo) { - String dateFromComparable = convertDateToComparable(dateFrom); - String dateToComparable = convertDateToComparable(dateTo); + LocalDate dateFromComparable = convertDateToComparable(dateFrom); + LocalDate dateToComparable = convertDateToComparable(dateTo); int[] totalEarnings = new int[names.length]; for (String entry : data) { @@ -19,10 +24,10 @@ public static String getSalaryInfo(String[] names, String[] data, int hoursWorked = Integer.parseInt(parts[intHoursWorked]); int incomePerHour = Integer.parseInt(parts[intIncomePerHour]); - String entryDateComparable = convertDateToComparable(dateStr); + LocalDate entryDateComparable = convertDateToComparable(dateStr); - if (entryDateComparable.compareTo(dateFromComparable) >= 0 - && entryDateComparable.compareTo(dateToComparable) <= 0) { + if (!entryDateComparable.isBefore(dateFromComparable) + && !entryDateComparable.isAfter(dateToComparable)) { for (int i = 0; i < names.length; i++) { if (names[i].equals(employeeName)) { int earnings = hoursWorked * incomePerHour; @@ -49,8 +54,7 @@ private static String buildReport(String[] names, int[] totalEarnings, return report.toString(); } - private static String convertDateToComparable(String date) { - String[] parts = date.split("\\."); - return parts[2] + parts[1] + parts[0]; + private static LocalDate convertDateToComparable(String date) { + return LocalDate.parse(date, date_formatter); } } From 3766338031b865d61b3601a89c64b8a5efec4666 Mon Sep 17 00:00:00 2001 From: Nikita Myroniuk Date: Sun, 22 Sep 2024 21:56:53 +0200 Subject: [PATCH 6/9] 05-jv-salary-info --- src/main/java/core/basesyntax/SalaryInfo.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/core/basesyntax/SalaryInfo.java b/src/main/java/core/basesyntax/SalaryInfo.java index 73b53782b..1a16af718 100644 --- a/src/main/java/core/basesyntax/SalaryInfo.java +++ b/src/main/java/core/basesyntax/SalaryInfo.java @@ -11,7 +11,7 @@ public class SalaryInfo { private static final DateTimeFormatter date_formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); - public static String getSalaryInfo(String[] names, String[] data, + public String getSalaryInfo(String[] names, String[] data, String dateFrom, String dateTo) { LocalDate dateFromComparable = convertDateToComparable(dateFrom); LocalDate dateToComparable = convertDateToComparable(dateTo); @@ -41,7 +41,7 @@ public static String getSalaryInfo(String[] names, String[] data, return buildReport(names, totalEarnings, dateFrom, dateTo); } - private static String buildReport(String[] names, int[] totalEarnings, + private String buildReport(String[] names, int[] totalEarnings, String dateFrom, String dateTo) { StringBuilder report = new StringBuilder(); report.append("Report for period ").append(dateFrom) From 526ac448aa853cdfb090cb41bd723c8474373340 Mon Sep 17 00:00:00 2001 From: Nikita Myroniuk Date: Tue, 1 Oct 2024 22:14:03 +0200 Subject: [PATCH 7/9] 06-jv-salary-info --- src/main/java/core/basesyntax/SalaryInfo.java | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/src/main/java/core/basesyntax/SalaryInfo.java b/src/main/java/core/basesyntax/SalaryInfo.java index 1a16af718..226322645 100644 --- a/src/main/java/core/basesyntax/SalaryInfo.java +++ b/src/main/java/core/basesyntax/SalaryInfo.java @@ -4,28 +4,26 @@ import java.time.format.DateTimeFormatter; public class SalaryInfo { - private static final int intDateStr = 0; - private static final int intEmployeeName = 1; - private static final int intHoursWorked = 2; - private static final int intIncomePerHour = 3; + private static final int DATE_STR_INDEX = 0; + private static final int EMPLOYEE_NAME_INDEX = 1; + private static final int HOURS_WORKED_INDEX = 2; + private static final int INCOME_PER_HOUR_INDEX = 3; private static final DateTimeFormatter date_formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); public String getSalaryInfo(String[] names, String[] data, - String dateFrom, String dateTo) { + String dateFrom, String dateTo) { LocalDate dateFromComparable = convertDateToComparable(dateFrom); LocalDate dateToComparable = convertDateToComparable(dateTo); int[] totalEarnings = new int[names.length]; for (String entry : data) { String[] parts = entry.split(" "); - String dateStr = parts[intDateStr]; - String employeeName = parts[intEmployeeName]; - int hoursWorked = Integer.parseInt(parts[intHoursWorked]); - int incomePerHour = Integer.parseInt(parts[intIncomePerHour]); - + String dateStr = parts[DATE_STR_INDEX]; + String employeeName = parts[EMPLOYEE_NAME_INDEX]; + int hoursWorked = Integer.parseInt(parts[HOURS_WORKED_INDEX]); + int incomePerHour = Integer.parseInt(parts[INCOME_PER_HOUR_INDEX]); LocalDate entryDateComparable = convertDateToComparable(dateStr); - if (!entryDateComparable.isBefore(dateFromComparable) && !entryDateComparable.isAfter(dateToComparable)) { for (int i = 0; i < names.length; i++) { @@ -38,19 +36,16 @@ public String getSalaryInfo(String[] names, String[] data, } } - return buildReport(names, totalEarnings, dateFrom, dateTo); - } - - private String buildReport(String[] names, int[] totalEarnings, - String dateFrom, String dateTo) { StringBuilder report = new StringBuilder(); report.append("Report for period ").append(dateFrom) .append(" - ").append(dateTo); for (int i = 0; i < names.length; i++) { - report.append(System.lineSeparator()).append(names[i]).append(" - ") + report.append(System.lineSeparator()) + .append(names[i]).append(" - ") .append(totalEarnings[i]); } + return report.toString(); } From a76b9a3ee1e10a5abdcb036d08098dfb9450ac48 Mon Sep 17 00:00:00 2001 From: Nikita Myroniuk Date: Sat, 5 Oct 2024 19:08:35 +0200 Subject: [PATCH 8/9] 07-jv-salary-info --- src/main/java/core/basesyntax/SalaryInfo.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/core/basesyntax/SalaryInfo.java b/src/main/java/core/basesyntax/SalaryInfo.java index 226322645..28c56b68f 100644 --- a/src/main/java/core/basesyntax/SalaryInfo.java +++ b/src/main/java/core/basesyntax/SalaryInfo.java @@ -8,7 +8,7 @@ public class SalaryInfo { private static final int EMPLOYEE_NAME_INDEX = 1; private static final int HOURS_WORKED_INDEX = 2; private static final int INCOME_PER_HOUR_INDEX = 3; - private static final DateTimeFormatter date_formatter = + private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy"); public String getSalaryInfo(String[] names, String[] data, @@ -50,6 +50,6 @@ public String getSalaryInfo(String[] names, String[] data, } private static LocalDate convertDateToComparable(String date) { - return LocalDate.parse(date, date_formatter); + return LocalDate.parse(date, DATE_FORMATTER); } } From e02151a0aacf7b473cf9168ae64d545d8e033134 Mon Sep 17 00:00:00 2001 From: Nikita Myroniuk Date: Sat, 5 Oct 2024 19:11:52 +0200 Subject: [PATCH 9/9] 08-jv-salary-info --- src/main/java/core/basesyntax/SalaryInfo.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/core/basesyntax/SalaryInfo.java b/src/main/java/core/basesyntax/SalaryInfo.java index 28c56b68f..f56741fd9 100644 --- a/src/main/java/core/basesyntax/SalaryInfo.java +++ b/src/main/java/core/basesyntax/SalaryInfo.java @@ -8,7 +8,7 @@ public class SalaryInfo { private static final int EMPLOYEE_NAME_INDEX = 1; private static final int HOURS_WORKED_INDEX = 2; private static final int INCOME_PER_HOUR_INDEX = 3; - private static final DateTimeFormatter DATE_FORMATTER = + private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy"); public String getSalaryInfo(String[] names, String[] data, @@ -50,6 +50,6 @@ public String getSalaryInfo(String[] names, String[] data, } private static LocalDate convertDateToComparable(String date) { - return LocalDate.parse(date, DATE_FORMATTER); + return LocalDate.parse(date, DATE_FORMATTER); } }