forked from Asiatik/codezilla
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.java
More file actions
151 lines (126 loc) · 3.47 KB
/
Copy pathMain.java
File metadata and controls
151 lines (126 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
package com.company;
import java.util.ArrayList;
//Booking class which tells us about the number and type of booking
// Here 0 represents single booking where only the reception is to be informed
// 1 represents corporate booking where the reception and the manager are to be informed
// 2 represents bulk booking where the reception , manager and the food agency is to be informed
/*
food agency - only through email
manager - sms and email
reception - sms
*/
class Booking
{
private String name;
private int type ;
public Booking (String nameee , int typeee)
{
name=nameee;
type=typeee;
}
public int getbookingtype()
{
return type;
}
public String getName()
{
return name;
}
}
interface PersonalNotification
{
public void send();
}
class NotificationForFoodAgency implements PersonalNotification
{
Booking book;
public NotificationForFoodAgency(Booking booking)
{
book = booking;
}
public void send()
{
System.out.println("Food Agency informed through email for the arrival of" + book.getName());
}
}
class NotificationForManager implements PersonalNotification
{
Booking book;
public NotificationForManager(Booking booking)
{
book = booking;
}
public void send()
{
System.out.println("Manager informed through email and sms for the arrival " + book.getName());
}
}
class NotificationForReception implements PersonalNotification
{
Booking book;
public NotificationForReception(Booking booking)
{
book=booking;
}
public void send()
{
System.out.println("Reception informed through sms for the arrival of "+ book.getName());
}
}
class Notification
{
private ArrayList<PersonalNotification> listOfNotification ;
public Notification()
{
listOfNotification =new ArrayList<PersonalNotification>();
}
public void sendAll()
{
for ( PersonalNotification personalNotification : listOfNotification )
personalNotification.send();
}
public void add(PersonalNotification personalNotification)
{
listOfNotification.add(personalNotification);
}
}
class NotificationBuilder
{
Booking book ;
Notification notification;
public NotificationBuilder(Booking b)
{
book=b;
}
public void ConstructNotification()
{
notification=new Notification();
if(book.getbookingtype() == 0)
notification.add(new NotificationForReception(book));
else if (book.getbookingtype()==1)
{
notification.add(new NotificationForReception(book));
notification.add(new NotificationForManager(book));
}
else if(book.getbookingtype()==2)
{
notification.add(new NotificationForReception(book));
notification.add(new NotificationForManager(book));
notification.add(new NotificationForFoodAgency(book));
}
}
public void sendNotifications()
{
notification.sendAll();
}
}
// This is the Client Code that allows us to test the actual builder.
public class Main {
public static void main(String[] args) {
// write your code here
Booking newbook=new Booking("Suryasis",2);
NotificationBuilder notificationBuilder=new NotificationBuilder(newbook);
notificationBuilder.ConstructNotification();
notificationBuilder.sendNotifications();
}
}