Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.text.DateFormat;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import java.util.stream.Collectors;
- public class EventCalendarTest {
- public static void main(String[] args) throws ParseException {
- Scanner scanner = new Scanner(System.in);
- int n = scanner.nextInt();
- scanner.nextLine();
- int year = scanner.nextInt();
- scanner.nextLine();
- EventCalendar eventCalendar = new EventCalendar(year);
- DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm");
- for (int i = 0; i < n; ++i) {
- String line = scanner.nextLine();
- String[] parts = line.split(";");
- String name = parts[0];
- String location = parts[1];
- Date date = df.parse(parts[2]);
- try {
- eventCalendar.addEvent(name, location, date);
- } catch (WrongDateException e) {
- System.out.println(e.getMessage());
- }
- }
- Date date = df.parse(scanner.nextLine());
- eventCalendar.listEvents(date);
- eventCalendar.listByMonth();
- }
- }
- class EventCalendar {
- List<Event> eventList;
- int godina;
- public EventCalendar(int godina) {
- this.godina = godina;
- eventList = new ArrayList<>();
- }
- public void addEvent(String name,String location,Date date) throws WrongDateException {
- if(date.getYear() != godina - 1900){
- throw new WrongDateException("Wrong date: " + date.toString().replace("GMT", "UTC"));
- }
- else {
- eventList.add(new Event(name,location,date));
- }
- }
- public void listEvents(Date date){
- List<Event> tmp;
- tmp = eventList.stream().filter(event -> event.getDate().getDay() == date.getDay()&&event.getDate().getMonth() == date.getMonth()&&event.getDate().getTime() >= date.getTime())
- .sorted(Event::compareTo).collect(Collectors.toList());
- if(tmp.isEmpty())
- System.out.println("No events on this day!");
- else {
- tmp.forEach(System.out::println);
- }
- }
- public void listByMonth(){
- Map<Integer,Integer> nastani = new HashMap<>();
- for(int i = 1; i<13; i++){
- nastani.put(i,0);
- }
- eventList.forEach(event -> nastani.computeIfPresent(event.getDate().getMonth()+1,(k,v) -> v+1));
- nastani.forEach((key,value) -> System.out.println(key + " : " + value));
- }
- }
- class Event implements Comparable<Event>{
- String ime;
- String lokacija;
- Date date;
- public Event(String ime, String lokacija, Date date) {
- this.ime = ime;
- this.lokacija = lokacija;
- this.date = date;
- }
- @Override
- public int compareTo(Event o) {
- int s = Long.compare(this.date.getTime(),o.date.getTime());
- if(s == 0)
- return this.ime.compareTo(o.ime);
- return s;
- }
- public Date getDate() {
- return date;
- }
- @Override
- public String toString() {
- DateFormat df = new SimpleDateFormat("dd MMM, yyy HH:mm");
- return String.format("%s at %s, %s", df.format(date), lokacija, ime);
- }
- }
- class WrongDateException extends Exception{
- public WrongDateException(String message) {
- super(message);
- }
- @Override
- public String getMessage() {
- return super.getMessage();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment