From 1749f7edc11b9961b15e790c7d296bacd8d68ff5 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Fri, 23 Mar 2012 19:46:14 +0000 Subject: Updated and now in one case will work, needs more UI work. --- src/net/cbaines/suca/UniTermDates.java | 206 +++++++++++++++++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 src/net/cbaines/suca/UniTermDates.java (limited to 'src/net/cbaines/suca/UniTermDates.java') 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 + * + */ +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(); + } + } + +} -- cgit v1.2.3