package org.lrg.outcode; import java.time.Duration; import java.time.Instant; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class CountdownTimer { private static Map<String, List<Instant>> started = new HashMap<String, List<Instant>>(); private static Map<String, List<Instant>> stopped = new HashMap<String, List<Instant>>(); public static void start(String name) { if (started.get(name) == null) started.put(name, new ArrayList<Instant>()); started.get(name).add(Instant.now()); }; public static void stop(String name) { if (stopped.get(name) == null) stopped.put(name, new ArrayList<Instant>()); stopped.get(name).add(Instant.now()); }; public static void printAndReset(String name) { List<Instant> start = started.get(name); List<Instant> stop = stopped.get(name); Duration total = Duration.ZERO; if (start != null && stop != null){ for (int i = 0; i < start.size(); i++){ total = total.plus(Duration.between(start.get(i), stop.get(i))); } System.out.println(name + " " + total.toString().replaceFirst("PT", "").replaceFirst("M", " min ").replaceFirst("S", " s")); started.remove(name); stopped.remove(name); } }; }