MarkoS2900

Kalendar na nastani

Jan 22nd, 2021
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.44 KB | None | 0 0
  1. import java.text.DateFormat;
  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.*;
  5. import java.util.stream.Collectors;
  6.  
  7. public class EventCalendarTest {
  8.     public static void main(String[] args) throws ParseException {
  9.         Scanner scanner = new Scanner(System.in);
  10.         int n = scanner.nextInt();
  11.         scanner.nextLine();
  12.         int year = scanner.nextInt();
  13.         scanner.nextLine();
  14.         EventCalendar eventCalendar = new EventCalendar(year);
  15.         DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm");
  16.         for (int i = 0; i < n; ++i) {
  17.             String line = scanner.nextLine();
  18.             String[] parts = line.split(";");
  19.             String name = parts[0];
  20.             String location = parts[1];
  21.             Date date = df.parse(parts[2]);
  22.             try {
  23.                 eventCalendar.addEvent(name, location, date);
  24.             } catch (WrongDateException e) {
  25.                 System.out.println(e.getMessage());
  26.             }
  27.         }
  28.         Date date = df.parse(scanner.nextLine());
  29.         eventCalendar.listEvents(date);
  30.         eventCalendar.listByMonth();
  31.     }
  32. }
  33.  
  34. class EventCalendar {
  35.     List<Event> eventList;
  36.     int godina;
  37.  
  38.     public EventCalendar(int godina) {
  39.         this.godina = godina;
  40.         eventList = new ArrayList<>();
  41.     }
  42.     public void addEvent(String name,String location,Date date) throws WrongDateException {
  43.         if(date.getYear() != godina - 1900){
  44.             throw new WrongDateException("Wrong date: " + date.toString().replace("GMT", "UTC"));
  45.         }
  46.         else {
  47.             eventList.add(new Event(name,location,date));
  48.         }
  49.     }
  50.     public void listEvents(Date date){
  51.         List<Event> tmp;
  52.         tmp = eventList.stream().filter(event -> event.getDate().getDay() == date.getDay()&&event.getDate().getMonth() == date.getMonth()&&event.getDate().getTime() >= date.getTime())
  53.                 .sorted(Event::compareTo).collect(Collectors.toList());
  54.         if(tmp.isEmpty())
  55.             System.out.println("No events on this day!");
  56.         else {
  57.             tmp.forEach(System.out::println);
  58.         }
  59.     }
  60.     public void listByMonth(){
  61.         Map<Integer,Integer> nastani = new HashMap<>();
  62.         for(int i = 1; i<13; i++){
  63.             nastani.put(i,0);
  64.         }
  65.         eventList.forEach(event -> nastani.computeIfPresent(event.getDate().getMonth()+1,(k,v) -> v+1));
  66.         nastani.forEach((key,value) -> System.out.println(key + " : " + value));
  67.     }
  68. }
  69. class Event implements Comparable<Event>{
  70.     String ime;
  71.     String lokacija;
  72.     Date date;
  73.  
  74.     public Event(String ime, String lokacija, Date date) {
  75.         this.ime = ime;
  76.         this.lokacija = lokacija;
  77.         this.date = date;
  78.     }
  79.  
  80.     @Override
  81.     public int compareTo(Event o) {
  82.         int s = Long.compare(this.date.getTime(),o.date.getTime());
  83.         if(s == 0)
  84.             return this.ime.compareTo(o.ime);
  85.         return s;
  86.     }
  87.  
  88.     public Date getDate() {
  89.         return date;
  90.     }
  91.     @Override
  92.     public String toString() {
  93.         DateFormat df = new SimpleDateFormat("dd MMM, yyy HH:mm");
  94.         return String.format("%s at %s, %s", df.format(date), lokacija, ime);
  95.     }
  96. }
  97. class WrongDateException extends Exception{
  98.     public WrongDateException(String message) {
  99.         super(message);
  100.     }
  101.  
  102.     @Override
  103.     public String getMessage() {
  104.         return super.getMessage();
  105.     }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment