diff --git a/Agenda.java b/Agenda.java new file mode 100644 index 0000000..b78438f --- /dev/null +++ b/Agenda.java @@ -0,0 +1,55 @@ +package nl.kennyboy; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.GregorianCalendar; + +import nl.kennyboy.EventSorter.Mode; + +public class Agenda implements Serializable { + + private static final long serialVersionUID = -383023632433640516L; + + ArrayList afspraken; + EventSorter sort; + + public Agenda() + { + afspraken = new ArrayList(); + sort = new EventSorter(Mode.SORT_ASC); + } + + public void add(Event afspraak) + { + afspraken.add(afspraak); + } + + public void add(GregorianCalendar startDate, GregorianCalendar endDate, String name, String desc) + { + new Event(startDate, endDate, name, desc); + } + + public void add(int startYear, int startMonth, int startDay, int endYear, int endMonth, int endDay, String name, String desc) + { + new Event(startYear, startMonth,startDay, endYear, endMonth, endDay, name, desc); + } + + public void sort(EventSorter.Mode mode) + { + sort.changeMode(mode); + Collections.sort(afspraken, sort); + } + + public String toString() + { + String str = ""; + str += "All event sorted " + sort.getModeDesc() + ":\n"; + for(Event asp : afspraken) + { + str += "\t" + asp + "\n"; + } + return str; + } + +} diff --git a/Artist.java b/Artist.java deleted file mode 100644 index 911b7fa..0000000 --- a/Artist.java +++ /dev/null @@ -1,18 +0,0 @@ -import javax.swing.ImageIcon; - - -public class Artist -{ - private String genre; - private String name; - private String description; - private ImageIcon image; - private int id; - - public Artist() - { - - } - - -} diff --git a/Data.java b/Data.java deleted file mode 100644 index 148c48c..0000000 --- a/Data.java +++ /dev/null @@ -1,15 +0,0 @@ -import java.util.ArrayList; - - -public class Data -{ - private ArrayList stages; - private ArrayList events; - private ArrayList artists; - - public Data() - { - // TODO Auto-generated constructor stub - } - -} diff --git a/Event.java b/Event.java index 62cf8b4..c0b87b4 100644 --- a/Event.java +++ b/Event.java @@ -1,15 +1,81 @@ +package nl.kennyboy; -public class Event +import java.io.Serializable; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.GregorianCalendar; + +public class Event implements Serializable, Comparable { - private int startTime; - private int endTime; - private Artist artist; - private String description; - private int id; + private static final long serialVersionUID = -8412700922907201793L; - public Event() + GregorianCalendar startDate; + GregorianCalendar endDate; + String name; + String desc; + + public Event(GregorianCalendar startDate, GregorianCalendar endDate, String name, String desc) { - + this.startDate = startDate; + this.endDate = endDate; + this.name = name; + this.desc = desc; + } + public Event(int startYear, int startMonth, int startDay, int endYear, int endMonth, int endDay, String name, String desc) + { + this(new GregorianCalendar(startYear, startMonth-1, startDay), new GregorianCalendar(endYear, endMonth-1, endDay),name, desc); + } + + //Getters and Setters + public GregorianCalendar getStartDate() { + return startDate; + } + public void setStartDate(GregorianCalendar startDate) { + this.startDate = startDate; + } + public GregorianCalendar getEndDate() { + return endDate; + } + public void setEndDate(GregorianCalendar endDate) { + this.endDate = endDate; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getDesc() { + return desc; + } + public void setDesc(String desc) { + this.desc = desc; } + public int compareTo(Event o) { + if(startDate.before(o.getStartDate())) + { + return -1; + } + if(startDate.after(o.getStartDate())) + { + return 1; + } + if(startDate.equals(o.getStartDate())) + { + return 0; + } + + return 0; + } + + public String toString() + { + DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + formatter.setLenient(false); + + return name + " from " + formatter.format(startDate.getTime()) + " to " + formatter.format(endDate.getTime()); + } + + } diff --git a/EventSorter.java b/EventSorter.java new file mode 100644 index 0000000..8485849 --- /dev/null +++ b/EventSorter.java @@ -0,0 +1,135 @@ +package nl.kennyboy; + +import java.io.Serializable; +import java.util.Comparator; + + +public class EventSorter implements Serializable, Comparator { + + public enum Mode { + SORT_ASC, + SORT_DESC, + SORT_LENGTH_ASC, + SORT_LENGTH_DESC + } + + Mode mode; + + public EventSorter(Mode mode) + { + this.mode = mode; + } + + public void changeMode(Mode mode) + { + this.mode = mode; + } + + public String getModeDesc() + { + switch(mode) + { + default: + case SORT_ASC: + return "alphabetically"; + case SORT_DESC: + return "reverse alphabetically"; + case SORT_LENGTH_ASC: + return "shortest first"; + case SORT_LENGTH_DESC: + return "longstest first"; + } + } + + @Override + public int compare(Event asp1, Event asp2) { + + switch(mode) + { + default: + case SORT_ASC: + return sortAsc(asp1, asp2); + case SORT_DESC: + return sortDesc(asp1, asp2); + case SORT_LENGTH_ASC: + return sortLenAsc(asp1, asp2); + case SORT_LENGTH_DESC: + return sortLenDesc(asp1, asp2); + } + } + + public int sortAsc(Event asp1, Event asp2) + { + if(asp1.getStartDate().before(asp2.getStartDate())) + { + return -1; + } + if(asp1.getStartDate().after(asp2.getStartDate())) + { + return 1; + } + if(asp1.getStartDate().equals(asp2.getStartDate())) + { + return 0; + } + return 0; + } + + public int sortDesc(Event asp1, Event asp2) + { + if(asp1.getStartDate().after(asp2.getStartDate())) + { + return -1; + } + if(asp1.getStartDate().before(asp2.getStartDate())) + { + return 1; + } + if(asp1.getStartDate().equals(asp2.getStartDate())) + { + return 0; + } + return 0; + } + + public int sortLenAsc(Event asp1, Event asp2) + { + long len1 = asp1.getEndDate().getTimeInMillis() - asp1.getStartDate().getTimeInMillis(); + long len2 = asp2.getEndDate().getTimeInMillis() - asp2.getStartDate().getTimeInMillis(); + + if(len1 < len2) + { + return -1; + } + if(len2 < len1) + { + return 1; + } + if(len1 == len2) + { + return 0; + } + return 0; + } + + public int sortLenDesc(Event asp1, Event asp2) + { + long len1 = asp1.getEndDate().getTimeInMillis() - asp1.getStartDate().getTimeInMillis(); + long len2 = asp2.getEndDate().getTimeInMillis() - asp2.getStartDate().getTimeInMillis(); + + if(len1 > len2) + { + return -1; + } + if(len2 > len1) + { + return 1; + } + if(len1 == len2) + { + return 0; + } + return 0; + } + +} diff --git a/Main.java b/Main.java new file mode 100644 index 0000000..046eb18 --- /dev/null +++ b/Main.java @@ -0,0 +1,37 @@ +package nl.kennyboy; + +import nl.kennyboy.EventSorter.Mode; + +public class Main { + + public static void main(String[] args) { + new Main(); + } + + Agenda agenda; + Window window; + + public Main() + { + agenda = new Agenda(); + window = new Window(); + + test(); + } + + + public void test() + { + /* + agenda.add(new Event(2014, 12, 1, 2014, 12, 2, "School", "Naar school gaan kut")); + agenda.add(new Event(2014, 11, 2, 2014, 11, 4, "School2", "Naar school gaan kut")); + agenda.sort(Mode.SORT_LENGTH_DESC); + window.setText(agenda + ""); + SaveLoad.saveFile(agenda); + */ + + agenda = (Agenda) SaveLoad.loadFile(); + window.setText(agenda + ""); + } + +} diff --git a/README.md b/README.md index 3b4cfc6..273dd08 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ Avans - Technische Informatica - Periode 3 - Project Festival Planner ##Project Leden * Kenneth van Ewijk -* Remco Sannen -* Wesley de Hek -* Yorick Rommers -* Guus van Dongen \ No newline at end of file + +##Branch +Deze branch is van Kenneth van Ewijk \ No newline at end of file diff --git a/SaveLoad.java b/SaveLoad.java new file mode 100644 index 0000000..67a85ce --- /dev/null +++ b/SaveLoad.java @@ -0,0 +1,127 @@ +package nl.kennyboy; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; + +import javax.swing.JFileChooser; +import javax.swing.JOptionPane; +import javax.swing.filechooser.FileFilter; + +public class SaveLoad { + + public SaveLoad() { + // TODO Auto-generated constructor stub + } + + public static void saveFile(Object obj) + { + JFileChooser fileChooser = new JFileChooser(); + + fileChooser.setFileFilter(new FileFilter() { + @Override + public boolean accept(File pathname) { + if(pathname.isFile() && pathname.getName().endsWith(".agn")) + { + return true; + }else if(pathname.isDirectory()){return true;}else{return false;} + } + + @Override + public String getDescription() { + return "Agenda (.agn)"; + } + + }); + fileChooser.setDialogTitle("Choose save location"); + int userSelection = fileChooser.showSaveDialog(null); + + if(userSelection == JFileChooser.APPROVE_OPTION) + { + File file = fileChooser.getSelectedFile(); + if(!file.getName().endsWith(".agn")) + { + file = new File(file.getAbsolutePath() + ".agn"); + } + + if(file.exists()) + { + if(JOptionPane.showConfirmDialog(null, "Are you sure you want to overwrite: " + file.getName(), "Overwrite", JOptionPane.YES_NO_OPTION) == JOptionPane.OK_OPTION) + { + save(obj, file); + } + } + else + { + save(obj, file); + } + } + } + + public static Object loadFile() + { + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setFileFilter(new FileFilter() { + @Override + public boolean accept(File pathname) { + if(pathname.isFile() && pathname.getName().endsWith(".agn")) + { + return true; + }else if(pathname.isDirectory()){return true;}else{return false;} + } + + @Override + public String getDescription() { + return "Agenda (.agn)"; + } + + }); + + fileChooser.setDialogTitle("Choose file"); + int userSelection = fileChooser.showOpenDialog(null); + + if(userSelection == JFileChooser.APPROVE_OPTION) + { + File file = fileChooser.getSelectedFile(); + if(!file.exists()) + { + JOptionPane.showMessageDialog(null, "This file does not exist: " + file.getName()); + } + else + { + return load(file); + } + } + + return null; + } + + private static void save(Object obj, File file) + { + ObjectOutputStream oostr = null; + try { + oostr = new ObjectOutputStream(new FileOutputStream(file)); + oostr.writeObject(obj); + oostr.flush(); + oostr.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private static Object load(File file) + { + ObjectInputStream oistr = null; + try { + oistr = new ObjectInputStream(new FileInputStream(file)); + Object obj = oistr.readObject(); + oistr.close(); + return obj; + } catch (IOException | ClassNotFoundException e) { + return null; + } + } +} diff --git a/Stage.java b/Stage.java deleted file mode 100644 index d58808e..0000000 --- a/Stage.java +++ /dev/null @@ -1,14 +0,0 @@ -import java.util.ArrayList; - - -public class Stage -{ - private ArrayList performances; - private int expectedPopularity; - private String description; - - public Stage() - { - - } -} diff --git a/Window.java b/Window.java new file mode 100644 index 0000000..956a515 --- /dev/null +++ b/Window.java @@ -0,0 +1,33 @@ +package nl.kennyboy; + +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JTextArea; + +public class Window extends JFrame { + + private static final long serialVersionUID = 4468821981332661759L; + + JTextArea tarea; + + public Window() + { + super("Agenda"); + setDefaultCloseOperation(EXIT_ON_CLOSE); + setSize(500,600); + JPanel contentPanel = new JPanel(); + + tarea = new JTextArea(10,20); + tarea.setEditable(false); + + contentPanel.add(tarea); + setContentPane(contentPanel); + setVisible(true); + } + + public void setText(String str) + { + tarea.setText(str); + } + +}