aboutsummaryrefslogtreecommitdiff
path: root/src/net/cbaines/suca/UniTermDates.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/cbaines/suca/UniTermDates.java')
-rw-r--r--src/net/cbaines/suca/UniTermDates.java206
1 files changed, 206 insertions, 0 deletions
diff --git a/src/net/cbaines/suca/UniTermDates.java b/src/net/cbaines/suca/UniTermDates.java
new file mode 100644
index 0000000..5c72d47
--- /dev/null
+++ b/src/net/cbaines/suca/UniTermDates.java
@@ -0,0 +1,206 @@
+package net.cbaines.suca;
+
+import java.security.InvalidParameterException;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+/**
+ * All info from here
+ * https://www.soton.ac.uk/studentadmin/academic_year/index.html
+ *
+ * @author Christopher Baines <cbaines8@gmail.com>
+ *
+ */
+public final class UniTermDates {
+
+ /**
+ * Periods
+ */
+ public static final int AUTUMN_TERM = 0;
+ public static final int SPRING_TERM = 1;
+ public static final int SUMMER_TERM = 2;
+
+ public static final int SEMESTER_1 = 3;
+ public static final int SEMESTER_2 = 4;
+
+ public static final int YEAR_BEGINING_2011 = 2011;
+ public static final int YEAR_BEGINING_2012 = 2012;
+ public static final int YEAR_BEGINING_2013 = 2013;
+ public static final int YEAR_BEGINING_2014 = 2014;
+ public static final int YEAR_BEGINING_2015 = 2015;
+ public static final int YEAR_BEGINING_2016 = 2016;
+ public static final int YEAR_BEGINING_2017 = 2017;
+ public static final int YEAR_BEGINING_2018 = 2018;
+ public static final int YEAR_BEGINING_2019 = 2019;
+
+ /**
+ * Start dates for the Autumn term's for each Academic Year starting from
+ * 2011 to 2019.
+ */
+ private static final GregorianCalendar[] startOfAutumnTermAndSemester1 = {
+ new GregorianCalendar(2011, Calendar.SEPTEMBER, 29),
+ new GregorianCalendar(2012, Calendar.SEPTEMBER, 27),
+ new GregorianCalendar(2013, Calendar.SEPTEMBER, 26),
+ new GregorianCalendar(2014, Calendar.SEPTEMBER, 25),
+ new GregorianCalendar(2015, Calendar.SEPTEMBER, 24),
+ new GregorianCalendar(2016, Calendar.SEPTEMBER, 29),
+ new GregorianCalendar(2017, Calendar.SEPTEMBER, 28),
+ new GregorianCalendar(2018, Calendar.SEPTEMBER, 27),
+ new GregorianCalendar(2019, Calendar.SEPTEMBER, 26) };
+
+ /**
+ * Start dates for the Autumn term's for each Academic Year starting from
+ * 2011 to 2019.
+ */
+ private static final GregorianCalendar[] endOfAutumnTerm = {
+ new GregorianCalendar(2011, Calendar.DECEMBER, 17),
+ new GregorianCalendar(2012, Calendar.DECEMBER, 15),
+ new GregorianCalendar(2013, Calendar.DECEMBER, 14),
+ new GregorianCalendar(2014, Calendar.DECEMBER, 13),
+ new GregorianCalendar(2015, Calendar.DECEMBER, 12),
+ new GregorianCalendar(2016, Calendar.DECEMBER, 17),
+ new GregorianCalendar(2017, Calendar.DECEMBER, 16),
+ new GregorianCalendar(2018, Calendar.DECEMBER, 15),
+ new GregorianCalendar(2019, Calendar.DECEMBER, 14) };
+
+ /**
+ * Start dates for the Autumn term's for each Academic Year starting from
+ * 2011 to 2019.
+ */
+ private static final GregorianCalendar[] startOfSpringTerm = {
+ new GregorianCalendar(2012, Calendar.JANUARY, 9),
+ new GregorianCalendar(2013, Calendar.JANUARY, 7),
+ new GregorianCalendar(2014, Calendar.JANUARY, 6),
+ new GregorianCalendar(2015, Calendar.JANUARY, 5),
+ new GregorianCalendar(2016, Calendar.JANUARY, 4),
+ new GregorianCalendar(2017, Calendar.JANUARY, 9),
+ new GregorianCalendar(2018, Calendar.JANUARY, 8),
+ new GregorianCalendar(2019, Calendar.JANUARY, 7),
+ new GregorianCalendar(2020, Calendar.JANUARY, 6) };
+
+ /**
+ * Start dates for the Autumn term's for each Academic Year starting from
+ * 2011 to 2019.
+ */
+ private static final GregorianCalendar[] endOfSemester1 = {
+ new GregorianCalendar(2012, Calendar.JANUARY, 28),
+ new GregorianCalendar(2013, Calendar.JANUARY, 26),
+ new GregorianCalendar(2014, Calendar.JANUARY, 25),
+ new GregorianCalendar(2015, Calendar.JANUARY, 24),
+ new GregorianCalendar(2016, Calendar.JANUARY, 23),
+ new GregorianCalendar(2017, Calendar.JANUARY, 28),
+ new GregorianCalendar(2018, Calendar.JANUARY, 27),
+ new GregorianCalendar(2019, Calendar.JANUARY, 26),
+ new GregorianCalendar(2020, Calendar.JANUARY, 25) };
+
+ /**
+ * Start dates for the Autumn term's for each Academic Year starting from
+ * 2011 to 2019.
+ */
+ private static final GregorianCalendar[] startOfSemester2 = {
+ new GregorianCalendar(2012, Calendar.JANUARY, 30),
+ new GregorianCalendar(2013, Calendar.JANUARY, 28),
+ new GregorianCalendar(2014, Calendar.JANUARY, 27),
+ new GregorianCalendar(2015, Calendar.JANUARY, 26),
+ new GregorianCalendar(2016, Calendar.JANUARY, 25),
+ new GregorianCalendar(2017, Calendar.JANUARY, 30),
+ new GregorianCalendar(2018, Calendar.JANUARY, 29),
+ new GregorianCalendar(2019, Calendar.JANUARY, 28),
+ new GregorianCalendar(2020, Calendar.JANUARY, 27) };
+
+ /**
+ * Start dates for the Autumn term's for each Academic Year starting from
+ * 2011 to 2019.
+ */
+ private static final GregorianCalendar[] endOfSpringTerm = {
+ new GregorianCalendar(2012, Calendar.MARCH, 17),
+ new GregorianCalendar(2013, Calendar.MARCH, 16),
+ new GregorianCalendar(2014, Calendar.MARCH, 29),
+ new GregorianCalendar(2015, Calendar.MARCH, 21),
+ new GregorianCalendar(2016, Calendar.MARCH, 19),
+ new GregorianCalendar(2017, Calendar.MARCH, 25),
+ new GregorianCalendar(2018, Calendar.MARCH, 17),
+ new GregorianCalendar(2019, Calendar.MARCH, 30),
+ new GregorianCalendar(2020, Calendar.MARCH, 21) };
+
+ /**
+ * Start dates for the Autumn term's for each Academic Year starting from
+ * 2011 to 2019.
+ */
+ private static final GregorianCalendar[] startOfSummerTerm = {
+ new GregorianCalendar(2012, Calendar.APRIL, 16),
+ new GregorianCalendar(2013, Calendar.APRIL, 15),
+ new GregorianCalendar(2014, Calendar.APRIL, 28),
+ new GregorianCalendar(2015, Calendar.APRIL, 20),
+ new GregorianCalendar(2016, Calendar.APRIL, 18),
+ new GregorianCalendar(2017, Calendar.APRIL, 24),
+ new GregorianCalendar(2018, Calendar.APRIL, 16),
+ new GregorianCalendar(2019, Calendar.APRIL, 29),
+ new GregorianCalendar(2020, Calendar.APRIL, 20) };
+
+ /**
+ * Start dates for the Autumn term's for each Academic Year starting from
+ * 2011 to 2019.
+ */
+ private static final GregorianCalendar[] endOfSummerTermAndSemester2 = {
+ new GregorianCalendar(2012, Calendar.JUNE, 16),
+ new GregorianCalendar(2013, Calendar.JUNE, 15),
+ new GregorianCalendar(2014, Calendar.JUNE, 14),
+ new GregorianCalendar(2015, Calendar.JUNE, 13),
+ new GregorianCalendar(2016, Calendar.JUNE, 11),
+ new GregorianCalendar(2017, Calendar.JUNE, 17),
+ new GregorianCalendar(2018, Calendar.JUNE, 16),
+ new GregorianCalendar(2019, Calendar.JUNE, 15),
+ new GregorianCalendar(2020, Calendar.JUNE, 13) };
+
+ public static GregorianCalendar getStartOf(int period, int academicYear) {
+ if (academicYear < YEAR_BEGINING_2011
+ || academicYear > YEAR_BEGINING_2019) {
+ throw new InvalidParameterException();
+ }
+ if (period == AUTUMN_TERM) {
+ return (GregorianCalendar) startOfAutumnTermAndSemester1[academicYear
+ - YEAR_BEGINING_2011].clone();
+ } else if (period == SPRING_TERM) {
+ return (GregorianCalendar) startOfSpringTerm[academicYear
+ - YEAR_BEGINING_2011].clone();
+ } else if (period == SUMMER_TERM) {
+ return (GregorianCalendar) startOfSummerTerm[academicYear
+ - YEAR_BEGINING_2011].clone();
+ } else if (period == SEMESTER_1) {
+ return (GregorianCalendar) startOfAutumnTermAndSemester1[academicYear
+ - YEAR_BEGINING_2011].clone();
+ } else if (period == SEMESTER_2) {
+ return (GregorianCalendar) startOfSemester2[academicYear
+ - YEAR_BEGINING_2011].clone();
+ } else {
+ throw new InvalidParameterException();
+ }
+ }
+
+ public static GregorianCalendar getEndOf(int period, int academicYear) {
+ if (academicYear < YEAR_BEGINING_2011
+ || academicYear > YEAR_BEGINING_2019) {
+ throw new InvalidParameterException();
+ }
+ if (period == AUTUMN_TERM) {
+ return (GregorianCalendar) endOfAutumnTerm[academicYear
+ - YEAR_BEGINING_2011].clone();
+ } else if (period == SPRING_TERM) {
+ return (GregorianCalendar) endOfSpringTerm[academicYear
+ - YEAR_BEGINING_2011].clone();
+ } else if (period == SUMMER_TERM) {
+ return (GregorianCalendar) endOfSummerTermAndSemester2[academicYear
+ - YEAR_BEGINING_2011].clone();
+ } else if (period == SEMESTER_1) {
+ return (GregorianCalendar) endOfSemester1[academicYear
+ - YEAR_BEGINING_2011].clone();
+ } else if (period == SEMESTER_2) {
+ return (GregorianCalendar) endOfSummerTermAndSemester2[academicYear
+ - YEAR_BEGINING_2011].clone();
+ } else {
+ throw new InvalidParameterException();
+ }
+ }
+
+}