diff --git a/.gitignore b/.gitignore index e43b0f9..42a67b1 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .DS_Store +out/ \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..15cec4b --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..b8edd23 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/TimeTableDataModel.iml b/TimeTableDataModel.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/TimeTableDataModel.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/bin/TimeTable/ClassSession.class b/bin/TimeTable/ClassSession.class deleted file mode 100644 index 1ed0c72..0000000 Binary files a/bin/TimeTable/ClassSession.class and /dev/null differ diff --git a/bin/TimeTable/DatabaseConnection.class b/bin/TimeTable/DatabaseConnection.class deleted file mode 100644 index 9d5f7d5..0000000 Binary files a/bin/TimeTable/DatabaseConnection.class and /dev/null differ diff --git a/bin/TimeTable/Period.class b/bin/TimeTable/Period.class deleted file mode 100644 index cb6bfd4..0000000 Binary files a/bin/TimeTable/Period.class and /dev/null differ diff --git a/bin/TimeTable/Subject.class b/bin/TimeTable/Subject.class deleted file mode 100644 index 7143234..0000000 Binary files a/bin/TimeTable/Subject.class and /dev/null differ diff --git a/bin/TimeTable/Time.class b/bin/TimeTable/Time.class deleted file mode 100644 index 0076a02..0000000 Binary files a/bin/TimeTable/Time.class and /dev/null differ diff --git a/bin/TimeTable/TimeTable.class b/bin/TimeTable/TimeTable.class deleted file mode 100644 index 449813c..0000000 Binary files a/bin/TimeTable/TimeTable.class and /dev/null differ diff --git a/bin/TimeTable/WeekDay.class b/bin/TimeTable/WeekDay.class deleted file mode 100644 index dbb7dec..0000000 Binary files a/bin/TimeTable/WeekDay.class and /dev/null differ diff --git a/file.java b/file.java deleted file mode 100644 index 0858086..0000000 --- a/file.java +++ /dev/null @@ -1,23 +0,0 @@ -MONDAY,1,FMA, -MONDAY,2,INF, -MONDAY,3,MAM, -MONDAY,4,MAM, -MONDAY,6,JAP, -TUESDAY,1,FMA, -TUESDAY,2,FMA, -TUESDAY,3,JAP, -TUESDAY,4,JAP, -WEDNESDAY,1,JAP, -WEDNESDAY,2,JAP, -THURSDAY,1,FMA, -THURSDAY,2,FMA, -THURSDAY,3,INF, -THURSDAY,4,INF, -THURSDAY,5,ENG, -THURSDAY,6,ENG, -FRIDAY,1,MAM, -FRIDAY,2,MAM, -FRIDAY,3,ENG, -FRIDAY,4,ENG, -FRIDAY,5,INF, -FRIDAY,6,INF, diff --git a/src/TimeTable/ClassSession.java b/src/TimeTable/ClassSession.java deleted file mode 100644 index 56d6337..0000000 --- a/src/TimeTable/ClassSession.java +++ /dev/null @@ -1,72 +0,0 @@ -package TimeTable; - -import java.io.File; -import java.io.FileWriter; -import java.io.FileNotFoundException; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.Scanner; - -class ClassSession { - Subject subject; - Period period; - WeekDay day; - - public static List loadClasses(String filename) throws FileNotFoundException { - File file = new File(filename); - Scanner sc = new Scanner(file); - List classes = new ArrayList(); - while(sc.hasNextLine()) { - String line = sc.nextLine(); - String[] lineArray = line.split(","); - - ClassSession session = new ClassSession(); - session.day = WeekDay.fromString(lineArray[0]); - Integer intPNum = Integer.valueOf(lineArray[1]); - Optional a = TimeTable.datastore.periods.stream().filter(p -> p.periodNumber == intPNum).findFirst(); - // System.out.println(TimeTable.datastore.periods.size()); - if (a.isPresent()) { - session.period = a.get(); - } - String tempSubjectName = lineArray[2]; - Optional s = TimeTable.datastore.subjects.stream().filter(x -> x.shortname.matches(tempSubjectName)).findFirst(); - if (s.isPresent()) { - session.subject= s.get(); - } - classes.add(session); - } - return classes; - } - public static void saveToFile(List classes, String filename) { - System.out.println(filename); - try { - FileWriter fw = new FileWriter(filename); - for (ClassSession sesh : classes) { - String line = String.join(",", sesh.day.toString().toUpperCase(), String.valueOf(sesh.period.periodNumber), sesh.subject.shortname, "\n"); - fw.write(line); - } - fw.close(); - } catch (Exception e) { - System.out.println(e); - } - System.out.println("Succesfully written to file"); - - } - public ClassSession() { - } - public ClassSession(Subject subject, Period period, WeekDay day) { - this.subject = subject; - this.period = period; - this.day = day; - } - - public String getSummary() { - String name = this.subject.name; - String teacher = this.subject.teacher; - String startTime = this.period.startTime.toString(); - String endTime = this.period.endTime.toString(); - String returnValue = String.join(", ", name, teacher, startTime, endTime); - return returnValue; - } -} \ No newline at end of file diff --git a/src/TimeTable/DatabaseConnection.java b/src/TimeTable/DatabaseConnection.java deleted file mode 100644 index dc862ff..0000000 --- a/src/TimeTable/DatabaseConnection.java +++ /dev/null @@ -1,29 +0,0 @@ -package TimeTable; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.util.Properties; - -class DatabaseConnection { - String user; - String password; - String dbms; - String serverName; - String dbName; - String portNumber; - public Connection getConection() throws SQLException { - Connection conn = null; - var connectionProps = new Properties(); - connectionProps.put("user", this.user); - connectionProps.put("password", this.password); - - if (this.dbms.equals("mysql")) { - conn = DriverManager.getConnection("jdbc:" + this.dbms + "://" + this.serverName + ":" + this.portNumber + "/", connectionProps); - - } else if (this.dbms.equals("derby")) { - conn = DriverManager.getConnection("jdbc:" + this.dbms + ":" + this.dbName + ";create=true", connectionProps); - } - System.out.println("Connected to database"); - return conn; - } -} \ No newline at end of file diff --git a/src/TimeTable/Subject.java b/src/TimeTable/Subject.java deleted file mode 100644 index 1157f85..0000000 --- a/src/TimeTable/Subject.java +++ /dev/null @@ -1,54 +0,0 @@ -package TimeTable; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Scanner; - -class Subject { - public String name; - public String shortname; - public String teacher; - public String colour; - - public static List loadSubjects(String filename) throws FileNotFoundException { - List subjects = new ArrayList(); - File file = new File(filename); - Scanner sc = new Scanner(file); - while (sc.hasNextLine()) { - String line = sc.nextLine(); - String[] lineArray = line.split(","); - Subject s = new Subject(lineArray[0], lineArray[1], lineArray[2]); - s.colour = "Violet"; - subjects.add(s); - } - sc.close(); - return subjects; - } - - public static void saveToFile(List subjects, String filename) throws FileNotFoundException, IOException { - System.out.println(filename); - FileWriter fw = new FileWriter(filename); - for (Subject subject : subjects) { - String line = String.join(",", subject.shortname, subject.name, subject.teacher, "\n"); - fw.write(line); - } - fw.close(); - } - - public Subject(String shortname, String name, String teacher, String colour) { - this.name = name; - this.shortname = shortname; - this.teacher = teacher; - this.colour = colour; - } - - public Subject(String shortname, String name, String teacher) { - this.name = name; - this.shortname = shortname; - this.teacher = teacher; - } -} \ No newline at end of file diff --git a/src/TimeTable/SubjectProvider.java b/src/TimeTable/SubjectProvider.java new file mode 100644 index 0000000..67f61bd --- /dev/null +++ b/src/TimeTable/SubjectProvider.java @@ -0,0 +1,21 @@ +package TimeTable; + +import TimeTable.models.Subject; +import TimeTable.stores.SubjectStore; + +import java.util.ArrayList; + +public class SubjectProvider { + private TimeTableContext context; + private SubjectStore subjectStore; + + protected SubjectProvider(TimeTableContext context) { + this.context = context; + this.subjectStore = context.getTimeTableStore().getSubjectStore(); + } + + public ArrayList getSubjects() { + return subjectStore.getSubjects(); + } + +} diff --git a/src/TimeTable/TimeTable.java b/src/TimeTable/TimeTable.java index b1aaa38..fc100d0 100644 --- a/src/TimeTable/TimeTable.java +++ b/src/TimeTable/TimeTable.java @@ -1,39 +1,14 @@ package TimeTable; - -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; -import java.io.FileNotFoundException; -import java.util.ArrayList; -import java.util.Collections; - public class TimeTable { - public List periods; - public List subjects = new ArrayList(); - public List classes = new ArrayList(); - public static TimeTable datastore; - - public TimeTable(String periodfile, String subjectsfile) throws Exception { - periods = Period.loadPeriods(periodfile); - subjects = Subject.loadSubjects(subjectsfile); - - } - public static List getClassesByDay(WeekDay day) { - List classes = new ArrayList(); - datastore.classes.stream().filter(c -> c.day == day).forEach(c -> classes.add(c)); - return classes; + private TimeTableContext context; + private SubjectProvider subjectProvider; + + TimeTable(TimeTableContext context) { + this.context = context; + this.subjectProvider = new SubjectProvider(context); } - public static List getClassesBySubject (Subject subject) { - List classes = new ArrayList(); - datastore.classes.stream().filter(c -> c.subject == subject).forEach(c -> classes.add(c)); - return classes; - }; - public static void main(String[] args) throws Exception { - // Load the data store into the computer - datastore = new TimeTable("./periods.csv", "./subjects.csv"); - // Load the classes into the data store due to async issues in java this needs to be done after init. - datastore.classes = ClassSession.loadClasses("./classes.csv"); - Subject.saveToFile(datastore.subjects, "subjects.csv"); + public SubjectProvider getSubjectProvider() { + return subjectProvider; } } \ No newline at end of file diff --git a/src/TimeTable/TimeTableContext.java b/src/TimeTable/TimeTableContext.java new file mode 100644 index 0000000..560392b --- /dev/null +++ b/src/TimeTable/TimeTableContext.java @@ -0,0 +1,22 @@ +package TimeTable; + +import TimeTable.stores.TimeTableStore; + +public class TimeTableContext { + private TimeTableStore timeTableStore; + private TimeTable timeTable; + + TimeTableContext(TimeTableStore timeTableStore) { + this.timeTableStore = timeTableStore; + timeTable = new TimeTable(this); + } + + public TimeTableStore getTimeTableStore() { + return timeTableStore; + } + + public TimeTable getTimeTable() { + return timeTable; + } + +} diff --git a/src/TimeTable/TimeTableFactory.java b/src/TimeTable/TimeTableFactory.java new file mode 100644 index 0000000..bdc1dfc --- /dev/null +++ b/src/TimeTable/TimeTableFactory.java @@ -0,0 +1,25 @@ +package TimeTable; + +import TimeTable.models.Subject; +import TimeTable.plugins.ObjectTimetableStore; +import TimeTable.stores.TimeTableStore; + +import java.util.ArrayList; + +public class TimeTableFactory { + public static TimeTable createTimeTable() { + ArrayList subjects = new ArrayList(); + Subject subject = new Subject("Further Mats", "FMA", "Read"); + subjects.add(subject); + TimeTableStore store = new ObjectTimetableStore(null, null, subjects); + + TimeTable timeTable = new TimeTableContext(store).getTimeTable(); + + timeTable.getSubjectProvider().getSubjects().forEach(subject1 -> System.out.println(subject1)); + return timeTable; + } + + public static void main(String[] args) { + createTimeTable(); + } +} diff --git a/src/TimeTable/models/ClassSession.java b/src/TimeTable/models/ClassSession.java new file mode 100644 index 0000000..7533c60 --- /dev/null +++ b/src/TimeTable/models/ClassSession.java @@ -0,0 +1,49 @@ +package TimeTable.models; + +public class ClassSession { + private Subject subject; + private Period period; + private WeekDay day; + + public Subject getSubject() { + return subject; + } + + public void setSubject(Subject subject) { + this.subject = subject; + } + + public Period getPeriod() { + return period; + } + + public void setPeriod(Period period) { + this.period = period; + } + + public WeekDay getDay() { + return day; + } + + public void setDay(WeekDay day) { + this.day = day; + } + + public ClassSession() { + } + public ClassSession(Subject subject, Period period, WeekDay day) { + this.subject = subject; + this.period = period; + this.day = day; + } + + @Override + public String toString() { + String name = this.subject.getName(); + String teacher = this.subject.getTeacher(); + String startTime = this.period.getStartTime().toString(); + String endTime = this.period.getEndTime().toString(); + String returnValue = String.join(", ", name, teacher, startTime, endTime); + return returnValue; + } +} diff --git a/src/TimeTable/models/Period.java b/src/TimeTable/models/Period.java new file mode 100644 index 0000000..ad83cab --- /dev/null +++ b/src/TimeTable/models/Period.java @@ -0,0 +1,31 @@ +package TimeTable.models; + +public class Period { + private int periodNumber; + private Time startTime; + private Time endTime; + + public int getPeriodNumber() { + return periodNumber; + } + + public void setPeriodNumber(int periodNumber) { + this.periodNumber = periodNumber; + } + + public Time getStartTime() { + return startTime; + } + + public void setStartTime(Time startTime) { + this.startTime = startTime; + } + + public Time getEndTime() { + return endTime; + } + + public void setEndTime(Time endTime) { + this.endTime = endTime; + } +} diff --git a/src/TimeTable/models/Subject.java b/src/TimeTable/models/Subject.java new file mode 100644 index 0000000..beadc18 --- /dev/null +++ b/src/TimeTable/models/Subject.java @@ -0,0 +1,55 @@ +package TimeTable.models; + +public class Subject { + private String name; + private String shortname; + private String teacher; + private String colour; + + public Subject(String name, String shortname, String teacher) { + this.name = name; + this.shortname = shortname; + this.teacher = teacher; + this.colour = "purple"; + } + + public Subject() { + + } + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getShortname() { + return shortname; + } + + public void setShortname(String shortname) { + this.shortname = shortname; + } + + public String getTeacher() { + return teacher; + } + + public void setTeacher(String teacher) { + this.teacher = teacher; + } + + public String getColour() { + return colour; + } + + public void setColour(String colour) { + this.colour = colour; + } + + public String toString() { + String line = String.join(",", shortname, name, teacher); + return line; + } +} diff --git a/src/TimeTable/Time.java b/src/TimeTable/models/Time.java similarity index 75% rename from src/TimeTable/Time.java rename to src/TimeTable/models/Time.java index a713830..785db15 100644 --- a/src/TimeTable/Time.java +++ b/src/TimeTable/models/Time.java @@ -1,11 +1,11 @@ -package TimeTable; +package TimeTable.models; import java.util.regex.Pattern; -class Time { - public Integer days; - public Integer hours; - public Integer minutes; - public Integer seconds; +public class Time { + private Integer days; + private Integer hours; + private Integer minutes; + private Integer seconds; public void setHours(Integer hours) { while (hours > 24) { @@ -29,7 +29,23 @@ public void setSeconds(Integer seconds) { this.seconds = seconds; } - public Time(Integer hours, Integer minutes, Integer seconds) { + public Integer getDays() { + return days; + } + + public Integer getHours() { + return hours; + } + + public Integer getMinutes() { + return minutes; + } + + public Integer getSeconds() { + return seconds; + } + + public Time(Integer hours, Integer minutes, Integer seconds) { this.days = 0; setHours(hours); setMinutes(minutes); @@ -55,7 +71,8 @@ public Time() { this.seconds = 0; } public String toString() { - String returnValue = String.join(":", String.format("%02d", this.hours), String.format("%02d", this.minutes) , String.format("%02d", this.seconds)); + String returnValue = String.join(":", String.format("%02d", this.hours), + String.format("%02d", this.minutes) , String.format("%02d", this.seconds)); return returnValue; } } \ No newline at end of file diff --git a/src/TimeTable/WeekDay.java b/src/TimeTable/models/WeekDay.java similarity index 98% rename from src/TimeTable/WeekDay.java rename to src/TimeTable/models/WeekDay.java index b6a7394..0cae0d5 100644 --- a/src/TimeTable/WeekDay.java +++ b/src/TimeTable/models/WeekDay.java @@ -1,4 +1,4 @@ -package TimeTable; +package TimeTable.models; public enum WeekDay { // Define the properties which the Enumerator can take @@ -42,6 +42,4 @@ public static WeekDay fromString(String dayname) { throw new IllegalArgumentException("Day not found"); } } - - } \ No newline at end of file diff --git a/src/TimeTable/period.java b/src/TimeTable/period.java deleted file mode 100644 index 701ef3b..0000000 --- a/src/TimeTable/period.java +++ /dev/null @@ -1,47 +0,0 @@ -package TimeTable; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Scanner; - -class Period { - public Integer periodNumber; - public Time startTime; - public Time endTime; - - public static List loadPeriods(String filename) throws FileNotFoundException { - File file = new File(filename); - Scanner sc = new Scanner(file); - List periods = new ArrayList(); - while (sc.hasNextLine()) { - String line = sc.nextLine(); - String[] lineArray = line.split(","); - Time startTime = new Time(lineArray[1]); - Time finishTime = new Time(lineArray[2]); - Period p = new Period(); - p.periodNumber = Integer.valueOf(lineArray[0]); - - // System.out.println(p.periodNumber); - p.startTime = startTime; - p.endTime = finishTime; - periods.add(p); - } - sc.close(); // CLose the scanner - return periods; - } - - public static void saveToFile(List periods, String filename) throws FileNotFoundException, IOException { - System.out.println(filename); - FileWriter fw = new FileWriter(filename); - for (Period period : periods) { - String line = String.join(",", String.valueOf(period.periodNumber), period.startTime.toString(), - period.endTime.toString(), "\n"); - fw.write(line); - } - fw.close(); - } -} \ No newline at end of file diff --git a/src/TimeTable/plugins/ObjectTimetableStore.java b/src/TimeTable/plugins/ObjectTimetableStore.java new file mode 100644 index 0000000..6e18d71 --- /dev/null +++ b/src/TimeTable/plugins/ObjectTimetableStore.java @@ -0,0 +1,68 @@ +package TimeTable.plugins; + +import TimeTable.models.ClassSession; +import TimeTable.models.Period; +import TimeTable.models.Subject; +import TimeTable.stores.ClassSessionStore; +import TimeTable.stores.PeriodStore; +import TimeTable.stores.SubjectStore; +import TimeTable.stores.TimeTableStore; + +import java.util.ArrayList; + +public class ObjectTimetableStore implements TimeTableStore, ClassSessionStore, PeriodStore, SubjectStore { + private ArrayList classSessions; + private ArrayList periods; + private ArrayList subjects; + + public ObjectTimetableStore(ArrayList classSessions, + ArrayList periods, + ArrayList subjects) { + this.classSessions = classSessions; + this.periods = periods; + this.subjects = subjects; + } + + + public void setClassSessions(ArrayList classSessions) { + this.classSessions = classSessions; + } + + public void setPeriods(ArrayList periods) { + this.periods = periods; + } + + public void setSubjects(ArrayList subjects) { + this.subjects = subjects; + } + + @Override + public ArrayList getClassSessions() { + return classSessions; + } + + @Override + public ArrayList getPeriods() { + return periods; + } + + @Override + public ArrayList getSubjects() { + return subjects; + } + + @Override + public PeriodStore getPeriodStore() { + return this; + } + + @Override + public SubjectStore getSubjectStore() { + return this; + } + + @Override + public ClassSessionStore getClassSessionStore() { + return this; + } +} diff --git a/src/TimeTable/stores/ClassSessionStore.java b/src/TimeTable/stores/ClassSessionStore.java new file mode 100644 index 0000000..4bf78f5 --- /dev/null +++ b/src/TimeTable/stores/ClassSessionStore.java @@ -0,0 +1,9 @@ +package TimeTable.stores; + +import TimeTable.models.ClassSession; + +import java.util.ArrayList; + +public interface ClassSessionStore { + public ArrayList getClassSessions(); +} diff --git a/src/TimeTable/stores/PeriodStore.java b/src/TimeTable/stores/PeriodStore.java new file mode 100644 index 0000000..1792ff6 --- /dev/null +++ b/src/TimeTable/stores/PeriodStore.java @@ -0,0 +1,10 @@ +package TimeTable.stores; + +import TimeTable.models.Period; + +import java.util.ArrayList; + +public interface PeriodStore { + public ArrayList getPeriods(); + +} diff --git a/src/TimeTable/stores/SubjectStore.java b/src/TimeTable/stores/SubjectStore.java new file mode 100644 index 0000000..348dd46 --- /dev/null +++ b/src/TimeTable/stores/SubjectStore.java @@ -0,0 +1,9 @@ +package TimeTable.stores; + +import TimeTable.models.Subject; + +import java.util.ArrayList; + +public interface SubjectStore { + public ArrayList getSubjects(); +} diff --git a/src/TimeTable/stores/TimeTableStore.java b/src/TimeTable/stores/TimeTableStore.java new file mode 100644 index 0000000..5a532bc --- /dev/null +++ b/src/TimeTable/stores/TimeTableStore.java @@ -0,0 +1,7 @@ +package TimeTable.stores; + +public interface TimeTableStore { + public PeriodStore getPeriodStore(); + public SubjectStore getSubjectStore(); + public ClassSessionStore getClassSessionStore(); +} diff --git a/test.csv b/test.csv index e69de29..25509ac 100644 --- a/test.csv +++ b/test.csv @@ -0,0 +1,5 @@ +ENG,English,Conway, +FMA,Further Maths,Read, +JAP,Japanese,Lyons, +MAM,Methods,Macharga, +INF,Informatics,Cummings,