-
Notifications
You must be signed in to change notification settings - Fork 0
/
Portal.java
162 lines (125 loc) · 5.85 KB
/
Portal.java
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
152
153
154
155
156
157
158
159
160
161
162
package sample;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import javafx.scene.Scene;
import org.bson.Document;
import java.io.IOException;
import java.util.ArrayList;
public class Portal {
private ArrayList<Applicant> jobApplicantUsers; //Applicant
private ArrayList<Company> companies; // Applicant, Employee
private MongoDatabase database; // Applicant, Employee
private MongoCollection applicantsCollection; // Applicant
private MongoCollection companiesCollection;
private MongoCollection refereesCollection;
private UserCollectionHelper applicantsDatabaseHelper; // Applicant, Employee
private CompanyCollectionHelper companyDatabaseHelper;
private static String interviewer = "Interviewer";
private static String coordinator = "Coordinator";
private static String applicant = "Applicant";
private static String userType;
/**
* The MainPortal is a text-based system for use by an Applicants, a Coordinator or an Interviewer
*
* @param db a MongoDB cloud database
* @param applicantCollectionsName a String pointing to table in MongoDB database
* @param companyCollectionsName a String pointing to table in MongoDB database
*/
Portal(MongoDatabase db, String applicantCollectionsName, String companyCollectionsName) throws IOException {
this.database = db;
this.applicantsCollection = database.getCollection(applicantCollectionsName);
this.companiesCollection = database.getCollection(companyCollectionsName);
applicantsDatabaseHelper = new UserCollectionHelper(this, applicantsCollection);
companyDatabaseHelper = new CompanyCollectionHelper(this, companiesCollection);
this.companies = companyDatabaseHelper.loadCompanies();
this.jobApplicantUsers = applicantsDatabaseHelper.loadApplicants();
}
protected Applicant findApplicant(String username, String password) {
for (Applicant jobApplicantUser : jobApplicantUsers) {
if (jobApplicantUser.getUsername().equals(username)) {
if (jobApplicantUser.getPassword().equals(password)) {
return jobApplicantUser;
}
}
}
return new Applicant();
}
protected Company findCompany(String companyName) {
for (Company company : companies) {
if (company.getName().equals(companyName)) {
return company;
}
}
return new Company();
}
private ArrayList<Posting>getAllPostings() {
ArrayList<Posting> p = new ArrayList<>();
for (Company company : this.companies) {
p.addAll(company.getPostings());
}
return p;
}
ApplicantPortalInterface Applicantlogin(Applicant a) {
return new ApplicantPortalInterface(a, getAllPostings(),
applicantsCollection);
}
protected void registerApplicant(Applicant a) {
jobApplicantUsers.add(a);
Document document = new Document();
document.append("username", a.username);
document.append("password", a.password);
document.append("dateCreated", a.getDateCreated());
document.append("resume", a.getResume());
document.append("coverLetter", a.getCoverLetter());
document.append("appliedTo", new ArrayList<>());
document.append("interviews", new ArrayList<>());
applicantsDatabaseHelper.writeDocument(document);
}
protected CoordinatorPortalInterface registerCoordinator(String username, String password,
Company company){
Coordinator coord = new Coordinator(username, password, company);
if(!companies.contains(company)){
companies.add(company);
company.addCoordinator(coord);
companyDatabaseHelper.addNewCompany(company);
}
return new CoordinatorPortalInterface(coord,applicantsCollection,companiesCollection);
}
protected InterviewerPortalInterface registerInterviewer(String username, String password, Company company){
Interviewer interviewer = new Interviewer(username, password, company);
companyDatabaseHelper.addInterviewer(interviewer);
company.addInterviewer(interviewer);
return new InterviewerPortalInterface(interviewer, applicantsCollection);
}
protected Coordinator findCoordinator(String username, String password) {
for (Company company : companies) {
if (!company.findCoordinator(username, password).isEmpty()) {
return company.findCoordinator(username, password);
}
}
return new Coordinator();
}
protected Interviewer findInterviewer(String username, String password) {
for (Company company : companies) {
if (!company.findInterviewer(username, password).isEmpty()) {
return company.findInterviewer(username, password);
}
}
return new Interviewer();
}
protected InterviewerPortalInterface interviewerLogin(Interviewer i){
return new InterviewerPortalInterface(i, applicantsCollection);
}
protected CoordinatorPortalInterface coordinatorLogin(Coordinator c) {
return new CoordinatorPortalInterface(c,applicantsCollection,companiesCollection);
}
protected static String getInterviewer(){return interviewer;}
protected static String getCoordinator(){return coordinator;}
protected static String getApplicant(){return applicant;}
protected static void setUserType(String type){
userType = type;
}
protected static String getUserType(){
return userType;
}
}