Added files

This commit is contained in:
Robert Vokac 2024-01-13 08:48:55 +00:00
parent 52f5dca41d
commit b975b1ba32
No known key found for this signature in database
GPG Key ID: 693D30BEE3329055
3 changed files with 172 additions and 1 deletions

8
.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
### IntelliJ IDEA ###
.idea
logs/*
*.iws
*.iml
*.ipr
target/

50
pom.xml Normal file
View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>rvc</groupId>
<artifactId>time-calc</artifactId>
<version>1.0.0</version>
<name>time-calc</name>
<description>time-calc</description>
<properties>
<java.version>1.8</java.version>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>rvc.timecalc.Main</mainClass>
</manifest>
</archive>
</configuration>
<!-- Here come other details
...
-->
</plugin>
</plugins>
</build>
</project>

View File

@ -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<String> 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) {
}
}
}
}