-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMailEngineRun.java
More file actions
117 lines (98 loc) · 4.15 KB
/
MailEngineRun.java
File metadata and controls
117 lines (98 loc) · 4.15 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
package com.wonderfulbytes.tests.stacksAndQueues.familymail;
import java.util.ArrayList;
public class MailEngineRun {
public MailEngineRun() {
}
public static void main(String[] args) {
// Create 3 residences with N residents
Residence[] residenceArray =
{new Residence(4), new Residence(3), new Residence(2)};
for (Residence r : residenceArray) {
System.out.println("Residence " + r.hashCode() + " has "
+ r.getNResidents() + " residents");
r.displayResidents();
}
System.out.println("\n>Residences Created\n");
// Create Mail Service and register residences
MailService mailService = new MailService();
for (Residence r : residenceArray) {
mailService.registerResidence(r);
}
System.out.println(">Residences registered to Mail Service");
// Create & register 2 postmen, assign the first one 2 mailBoxes
// and just one to the second postman.
PostMan p1 = new PostMan();
PostMan p2 = new PostMan();
mailService.registerPostMan(p1);
mailService.registerPostMan(p2);
mailService.assignResidenceToPostMan(residenceArray[0], p1);
mailService.assignResidenceToPostMan(residenceArray[1], p1);
mailService.assignResidenceToPostMan(residenceArray[2], p2);
System.out.println(">Postmen registered to Mail Service");
System.out.println(">Residences' mailboxes registered to postmen\n");
System.out.println("Postmen Status\n");
System.out.println("PostMan #1:");
System.out.println(p1);
System.out.println("PostMan #2:");
System.out.println(p2);
System.out.println();
// Create Letters for some random residents,
// then mailService collects them for processing
// and delivering.
ArrayList<Letter> letters = new ArrayList<>();
letters.add(new Letter(residenceArray[0].getResident(0)));
letters.add(new Letter(residenceArray[0].getResident(1)));
letters.add(new Letter(residenceArray[0].getResident(0)));
letters.add(new Letter(residenceArray[0].getResident(3)));
letters.add(new Letter(residenceArray[1].getResident(2)));
letters.add(new Letter(residenceArray[2].getResident(0)));
letters.add(new Letter(residenceArray[2].getResident(0)));
letters.add(new Letter(residenceArray[2].getResident(1)));
// MailService gets the letters
// and distributes them to the postmen
mailService.collect(letters);
mailService.distributeLetters();
System.out.println();
System.out.println("Postmen status\n");
System.out.println("PostMan #1");
System.out.println(p1);
p1.displayMail();
System.out.println("PostMan #2");
System.out.println(p2);
p2.displayMail();
System.out.println();
System.out.println(">Mail still not delivered;");
System.out.println(">Verifying empty mailboxes...");
for (Residence r : residenceArray) {
System.out.print("\tResidence " + r.hashCode() + " mail box empty ? - ");
System.out.println(r.getMailBox().isEmpty());
}
System.out.println();
mailService.deliver();
System.out.println();
System.out.println(">Verifying that postmen have no pending letters\n");
System.out.println("PostMan #1");
System.out.println(p1);
System.out.println("PostMan #2");
System.out.println(p2);
System.out.println();
System.out.println(">Verifying mailboxes are now not empty...");
for (Residence r : residenceArray) {
System.out.print("\tResidence " + r.hashCode() + " mail box empty ? - ");
System.out.println(r.getMailBox().isEmpty());
}
System.out.println();
System.out.println("Residence " + residenceArray[0].hashCode());
System.out.println(residenceArray[0].getMailBox());
residenceArray[0].getResident(0).checkMail(residenceArray[0].getMailBox());
System.out.println(residenceArray[0].getMailBox());
residenceArray[0].getResident(1).checkMail(residenceArray[0].getMailBox());
System.out.println(residenceArray[0].getMailBox());
residenceArray[0].getResident(1).checkMail(residenceArray[0].getMailBox());
System.out.println(residenceArray[0].getMailBox());
residenceArray[0].getResident(2).checkMail(residenceArray[0].getMailBox());
System.out.println(residenceArray[0].getMailBox());
residenceArray[0].getResident(3).checkMail(residenceArray[0].getMailBox());
System.out.println(residenceArray[0].getMailBox());
}
}