From b975b1ba32ee3ec535f9673478416e78f18e6a92 Mon Sep 17 00:00:00 2001 From: Robert Vokac Date: Sat, 13 Jan 2024 08:48:55 +0000 Subject: [PATCH] Added files --- .gitignore | 8 ++ pom.xml | 50 ++++++++++++ src/main/java/rvc/timecalc/Main.java | 115 ++++++++++++++++++++++++++- 3 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 pom.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..be1d1e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +### IntelliJ IDEA ### +.idea +logs/* +*.iws +*.iml +*.ipr + +target/ \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..4386776 --- /dev/null +++ b/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + rvc + time-calc + 1.0.0 + + time-calc + time-calc + + + 1.8 + 8 + 8 + UTF-8 + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.1 + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-jar-plugin + + + + true + rvc.timecalc.Main + + + + + + + + \ No newline at end of file diff --git a/src/main/java/rvc/timecalc/Main.java b/src/main/java/rvc/timecalc/Main.java index fffa07a..853cca4 100644 --- a/src/main/java/rvc/timecalc/Main.java +++ b/src/main/java/rvc/timecalc/Main.java @@ -1,6 +1,119 @@ -package rvc.timecalc;/** +package rvc.timecalc; + +import java.io.IOException; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.HashSet; +import java.util.Scanner; +import java.util.Set; + +/** * @author Robert * @since 31.01.2024 */ public class Main { + public static void main(String[] args) { + while(true) {run(args); + System.out.println(("Do you want to continue (y/n)?")); + Scanner scanner = new Scanner(System.in); + if(!scanner.nextLine().equals("y")) { + System.out.println("Exiting \"Time Calc\"."); + break; + } + } + + } + public static void run(String[] args) { + System.out.println("*** Time Calc ***"); + System.out.println("-----------------\n"); + int EXPECTED_ARG_COUNT = 2; + if (args.length == 0) { + Scanner scanner = new Scanner(System.in); + args = new String[2]; + System.out.print("Arguments: "); + String returned = scanner.nextLine(); + args[0] = returned.split(" ")[0]; + if (returned.contains(" ")) { + args[1] = returned.split(" ")[1]; + } else { + args[1] = "0:00"; + } + } + if (args.length < EXPECTED_ARG_COUNT) { + throw new RuntimeException( + "Expected arg count is " + EXPECTED_ARG_COUNT + + ", but count of found args is: " + args.length); + } + String startTime = args[0]; + String overtimeUsed = args[1]; + int startHour = Integer.valueOf(startTime.split(":")[0]); + int startMinute = Integer.valueOf(startTime.split(":")[1]); + // System.out.println("startHour=" + startHour); + // System.out.println("startMinute=" + startMinute); + int overtimeUsedHour = Integer.valueOf(overtimeUsed.split(":")[0]); + int overtimeUsedMinute = Integer.valueOf(overtimeUsed.split(":")[1]); + // System.out.println("overtimeUsedHour=" + overtimeUsedHour); + // System.out.println("overtimeUsedMinute=" + overtimeUsedMinute); + + int endHour = startHour + 8 - overtimeUsedHour; + int endMinute = startMinute + 30 - overtimeUsedMinute; + while (endMinute >= 60) { + endMinute = endMinute - 60; + endHour = endHour + 1; + } + int totalMinutes = (endHour * 60 + endMinute) - (startHour * 60 + startMinute); +// System.out.println("totalMinutes=" + totalMinutes); + // System.out.println("endHour=" + endHour); + // System.out.println("endMinute=" + endMinute); + System.out.println(); + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm"); + + Set alreadyShownTimes = new HashSet<>(); + NumberFormat formatter = new DecimalFormat("#0.00"); + + while (true) { + LocalDateTime now = LocalDateTime.now(); + String nowString = dtf.format(now); + if (alreadyShownTimes.contains(nowString)) { + //nothing to do + continue; + } else { + alreadyShownTimes.add(nowString); + } + int hourNow = Integer.parseInt(nowString.split(":")[0]); + int minuteNow = Integer.parseInt(nowString.split(":")[1]); + + // System.out.println("hourNow=" + hourNow); + // System.out.println("minuteNow=" + minuteNow); + int hourRemains = endHour - hourNow; + int minuteRemains = endMinute - minuteNow; + if (minuteRemains < 0) { + minuteRemains = minuteRemains + 60; + hourRemains = hourRemains - 1; + } + int hourDone = 8 - overtimeUsedHour - hourRemains; + int minutesDone = 30 - overtimeUsedMinute - minuteRemains; + int totalMinutesDone = hourDone * 60 + minutesDone; + double done = ((double)totalMinutesDone)/((double)totalMinutes); +// System.out.println("hourDone=" + hourDone); +// System.out.println("minutesDone=" + minutesDone); +// System.out.println("totalMinutesDone=" + totalMinutesDone); + System.out.println("Progress: " + formatter.format(done * 100) + "% Remains " + String.format("%02d", hourRemains) + ":" + String + .format("%02d", minuteRemains) + " until end " + String + .format("%02d", endHour) + ":" + String + .format("%02d", endMinute)); + if(minuteRemains <= 0) { + break; + } + + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + + } + } + } } +