diff --git a/.classpath b/.classpath index 56e8fb3..83f7853 100644 --- a/.classpath +++ b/.classpath @@ -20,11 +20,16 @@ + - + + + + + diff --git a/build.gradle b/build.gradle index 2086520..1d8339b 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ apply plugin: 'eclipse' apply plugin: 'nu.studer.jooq' group = 'jottyfan' -version = '1.0.9' +version = '1.1.0' description = """timetrack""" diff --git a/src/main/java/de/jottyfan/timetrack/modules/done/DoneBean.java b/src/main/java/de/jottyfan/timetrack/modules/done/DoneBean.java index 8f2ddbc..edd4fdb 100644 --- a/src/main/java/de/jottyfan/timetrack/modules/done/DoneBean.java +++ b/src/main/java/de/jottyfan/timetrack/modules/done/DoneBean.java @@ -90,9 +90,18 @@ public class DoneBean implements Bean, Serializable, Comparable { return String.format("%02d:%02d", diff.toHours(), diff.toMinutes() % 60); } - public LocalDateTime getLocalDateTimeFromHHmm(String s) { + /** + * get local date time from s + * + * @param s the HH:mm formatted values + * @param ldt the date as basic for that datetime, for today one can use LocalDateTime.now(); in fact this is set if ldt is null internally + * @return the generated datetime + */ + public LocalDateTime getLocalDateTimeFromHHmm(String s, LocalDateTime ldt) { if (s == null || s.trim().isEmpty()) { return null; + } else if (ldt == null) { + ldt = LocalDateTime.now(); } String[] hm = s.split(":"); Integer hours = 0; @@ -103,7 +112,6 @@ public class DoneBean implements Bean, Serializable, Comparable { if (hm.length > 1) { minutes = Integer.valueOf(hm[1]); } - LocalDateTime ldt = LocalDateTime.now(); ldt = ldt.withHour(hours); ldt = ldt.withMinute(minutes); ldt = ldt.withSecond(0); @@ -128,7 +136,7 @@ public class DoneBean implements Bean, Serializable, Comparable { } public void setTimeFromString(String s) { - LocalDateTime ldt = getLocalDateTimeFromHHmm(s); + LocalDateTime ldt = getLocalDateTimeFromHHmm(s, null); // use setDay instead this.timeFrom = ldt == null ? null : Timestamp.valueOf(ldt); } @@ -137,7 +145,7 @@ public class DoneBean implements Bean, Serializable, Comparable { } public void setTimeUntilString(String s) { - LocalDateTime ldt = getLocalDateTimeFromHHmm(s); + LocalDateTime ldt = getLocalDateTimeFromHHmm(s, null); // use setDay instead this.timeUntil = ldt == null ? null : Timestamp.valueOf(ldt); } diff --git a/src/main/java/de/jottyfan/timetrack/modules/done/DoneModel.java b/src/main/java/de/jottyfan/timetrack/modules/done/DoneModel.java index d72103b..20cd3fc 100644 --- a/src/main/java/de/jottyfan/timetrack/modules/done/DoneModel.java +++ b/src/main/java/de/jottyfan/timetrack/modules/done/DoneModel.java @@ -167,6 +167,8 @@ public class DoneModel implements Model, Serializable { public boolean update(JooqFacesContext facesContext) { try { + // day contains the correct date; with that, refresh the current date after possibly changing the day + bean.setDay(day); new DoneGateway(facesContext).update(bean); return true; } catch (DataAccessException | ClassNotFoundException | SQLException e) { @@ -254,6 +256,10 @@ public class DoneModel implements Model, Serializable { return times; } + public String getGermanFormattedDay() { + return day == null ? "null" : new SimpleDateFormat("EEEE, dd.MMMM yyyy").format(day); + } + public Date getDay() { return day; } diff --git a/src/test/java/de/jottyfan/timetrack/moduls/done/TestDoneBean.java b/src/test/java/de/jottyfan/timetrack/moduls/done/TestDoneBean.java index c31fdd3..2b36e5d 100644 --- a/src/test/java/de/jottyfan/timetrack/moduls/done/TestDoneBean.java +++ b/src/test/java/de/jottyfan/timetrack/moduls/done/TestDoneBean.java @@ -24,19 +24,19 @@ public class TestDoneBean { public void testGetLocalDateTimeFromHHmm() { LocalDateTime ldt = LocalDateTime.now(); ldt = ldt.withSecond(0).withNano(0); - assertEquals(ldt.withHour(0).withMinute(0), new DoneBean().getLocalDateTimeFromHHmm("0:0")); - assertEquals(ldt.withHour(0).withMinute(5), new DoneBean().getLocalDateTimeFromHHmm("0:5")); - assertEquals(ldt.withHour(3).withMinute(2), new DoneBean().getLocalDateTimeFromHHmm("3:2")); - assertEquals(ldt.withHour(3).withMinute(2), new DoneBean().getLocalDateTimeFromHHmm("03:2")); - assertEquals(ldt.withHour(10).withMinute(2), new DoneBean().getLocalDateTimeFromHHmm("10:2")); - assertEquals(ldt.withHour(12).withMinute(2), new DoneBean().getLocalDateTimeFromHHmm("12:02")); - assertEquals(ldt.withHour(12).withMinute(20), new DoneBean().getLocalDateTimeFromHHmm("12:20")); - assertEquals(null, new DoneBean().getLocalDateTimeFromHHmm(null)); - assertEquals(null, new DoneBean().getLocalDateTimeFromHHmm("")); - assertEquals(null, new DoneBean().getLocalDateTimeFromHHmm(" ")); - assertEquals(ldt.withHour(0).withMinute(0), new DoneBean().getLocalDateTimeFromHHmm("0")); - assertEquals(ldt.withHour(1).withMinute(0), new DoneBean().getLocalDateTimeFromHHmm("1")); - assertEquals(ldt.withHour(5).withMinute(0), new DoneBean().getLocalDateTimeFromHHmm("5")); + assertEquals(ldt.withHour(0).withMinute(0), new DoneBean().getLocalDateTimeFromHHmm("0:0", LocalDateTime.now())); + assertEquals(ldt.withHour(0).withMinute(5), new DoneBean().getLocalDateTimeFromHHmm("0:5", LocalDateTime.now())); + assertEquals(ldt.withHour(3).withMinute(2), new DoneBean().getLocalDateTimeFromHHmm("3:2", LocalDateTime.now())); + assertEquals(ldt.withHour(3).withMinute(2), new DoneBean().getLocalDateTimeFromHHmm("03:2", LocalDateTime.now())); + assertEquals(ldt.withHour(10).withMinute(2), new DoneBean().getLocalDateTimeFromHHmm("10:2", LocalDateTime.now())); + assertEquals(ldt.withHour(12).withMinute(2), new DoneBean().getLocalDateTimeFromHHmm("12:02", LocalDateTime.now())); + assertEquals(ldt.withHour(12).withMinute(20), new DoneBean().getLocalDateTimeFromHHmm("12:20", LocalDateTime.now())); + assertEquals(null, new DoneBean().getLocalDateTimeFromHHmm(null, LocalDateTime.now())); + assertEquals(null, new DoneBean().getLocalDateTimeFromHHmm("", LocalDateTime.now())); + assertEquals(null, new DoneBean().getLocalDateTimeFromHHmm(" ", LocalDateTime.now())); + assertEquals(ldt.withHour(0).withMinute(0), new DoneBean().getLocalDateTimeFromHHmm("0", LocalDateTime.now())); + assertEquals(ldt.withHour(1).withMinute(0), new DoneBean().getLocalDateTimeFromHHmm("1", LocalDateTime.now())); + assertEquals(ldt.withHour(5).withMinute(0), new DoneBean().getLocalDateTimeFromHHmm("5", LocalDateTime.now())); } @Test