]> git.mxchange.org Git - jcoreee.git/commitdiff
Continued:
authorRoland Häder <roland@mxchange.org>
Sun, 19 Apr 2020 03:09:03 +0000 (05:09 +0200)
committerRoland Häder <roland@mxchange.org>
Sun, 19 Apr 2020 03:09:03 +0000 (05:09 +0200)
- moved from jcontacts-business-core as this is very generic

Signed-off-by: Roland Häder <roland@mxchange.org>
src/org/mxchange/jcoreee/dates/DayOfTheWeek.java [new file with mode: 0644]

diff --git a/src/org/mxchange/jcoreee/dates/DayOfTheWeek.java b/src/org/mxchange/jcoreee/dates/DayOfTheWeek.java
new file mode 100644 (file)
index 0000000..7106028
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2016 - 2020 Free Software Foundation
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jcoreee.dates;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+/**
+ * An enumeration suitable for persisting
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+public enum DayOfTheWeek {
+       SUNDAY {
+               @Override
+               public int toCalendar () {
+                       return Calendar.SUNDAY;
+               }
+
+       },
+       MONDAY {
+               @Override
+               public int toCalendar () {
+                       return Calendar.MONDAY;
+               }
+       },
+       TUESDAY {
+               @Override
+               public int toCalendar () {
+                       return Calendar.TUESDAY;
+               }
+       },
+       WEDNESDAY {
+               @Override
+               public int toCalendar () {
+                       return Calendar.WEDNESDAY;
+               }
+       },
+       THURSDAY {
+               @Override
+               public int toCalendar () {
+                       return Calendar.THURSDAY;
+               }
+       },
+       FRIDAY {
+               @Override
+               public int toCalendar () {
+                       return Calendar.FRIDAY;
+               }
+       },
+       SATURDAY {
+               @Override
+               public int toCalendar () {
+                       return Calendar.SATURDAY;
+               }
+       };
+
+       /**
+        * Simple date format instance
+        */
+       private static final SimpleDateFormat SIMPLE_DATE_FORMAT;
+
+       static {
+               // Init SDF once
+               SIMPLE_DATE_FORMAT = (SimpleDateFormat) SimpleDateFormat.getInstance();
+
+               // Set pattern
+               SIMPLE_DATE_FORMAT.applyPattern("EEEEEEEEEE"); //NOI18N
+       }
+
+       public abstract int toCalendar ();
+
+       /**
+        * Returns the DateOfTheWeek instance by given day number (0-6)
+        * <p>
+        * @param day Day number (0-6)
+        * <p>
+        * @return DateOfTheWeek instance
+        */
+       public static DayOfTheWeek fromCalendarDay (final int day) {
+               // Walk through all values
+               for (final DayOfTheWeek dayOfWeek : DayOfTheWeek.values()) {
+                       if (dayOfWeek.toCalendar() == day) {
+                               return dayOfWeek;
+                       }
+               }
+
+               return null; // Consider throwing IllegalArgumentException
+       }
+
+       /**
+        * Returns the DateOfTheWeek instance by given Date instance
+        * <p>
+        * @param date Date instance
+        * <p>
+        * @return DateOfTheWeek instance
+        */
+       public static DayOfTheWeek getByDate (final Date date) {
+               // Init calendar
+               final Calendar calendar = GregorianCalendar.getInstance();
+
+               // Set time
+               calendar.setTime(date);
+
+               // Return DayOfTheWeek
+               return fromCalendarDay(calendar.get(Calendar.DAY_OF_WEEK));
+       }
+
+       /*
+        * Should return the localized day of the week
+        */
+       @Override
+       public String toString () {
+               // Init calendar
+               final Calendar calendar = new GregorianCalendar();
+
+               // Set DAY_OF_WEEK
+               calendar.set(Calendar.DAY_OF_WEEK, this.toCalendar());
+
+               // Format string
+               return SIMPLE_DATE_FORMAT.format(calendar.getTime());
+       }
+
+}