-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCompany.java
150 lines (129 loc) · 3.65 KB
/
Company.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
import java.util.ArrayList;
import java.util.UUID;
/**
* @author Evelyn Ellis
* @version v1.0
* Date: 10/12/2023
*/
public class Company {
private UUID id;
private String name;
private ArrayList<Board> boards;
private ArrayList<User> users;
private ArrayList<User> admins;
public Company(String name) {
init();
setUUID(null);
setName(name);
}
public Company(String name, UUID id) {
init();
setUUID(id);
setName(name);
}
public Company(String aName, User self, ArrayList<User> users, UUID id){
init();
setUUID(id);
setName(aName);
this.users = users;
addAdmin(self);
}
private void setName(String name){
this.name = name;
}
private void init(){
this.boards = new ArrayList<Board>();
this.users = new ArrayList<User>();
this.admins = new ArrayList<User>();
users.add(AppFacade.getInstance().getActiveUser());
}
public String getName() {
return name;
}
public ArrayList<Board> getBoards(){
return boards;
}
public Board getBoard(String title) {
for(Board board : boards) {
if(board.getTitle().toLowerCase().equals(title.toLowerCase()))
return board;
}
return null;
}
public ArrayList<User> getUsers(){
return users;
}
public ArrayList<User> getAdmins(){
return admins;
}
public UUID getUUID(){
return id;
}
private void setUUID(UUID id) {
if(id == null)
id = UUID.randomUUID();
this.id = id;
}
public UUID getID() {
return id;
}
public boolean addUser(User user){
if(user == null || users.contains(user))
return false;
return users.add(user);
}
public boolean removeUser(User user){
if(user == null || users.size() <= 1)
return false;
return users.remove(user);
}
public boolean addBoard(Board board){
if(board == null || boards.contains(board) || checkBoardName(board))
return false;
return boards.add(board);
}
private boolean checkBoardName(Board board) {
for(int i = 0; i < boards.size(); i++) {
if(boards.get(i).getTitle() == board.getTitle())
return true;
}
return false;
}
public boolean removeBoard(Board board){
if(boards.size() <= 1)
return false;
return boards.remove(board);
}
public boolean addAdmin(User user){
if(user == null || admins.contains(user))
return false;
// if you're adding an admin, they're by nature a user in the system as well
if(!users.contains(user))
users.add(user);
return admins.add(user);
}
public boolean removeAdmin(User user){
// don't want to remove the only admin
if(admins.size() <= 1)
return false;
return admins.remove(user);
}
public boolean isAdmin(User user){
return admins.contains(user);
}
public boolean equals(Company company) {
return company != null
&& this.admins.equals(company.getAdmins())
&& this.users.equals(company.getUsers())
&& this.boards.equals(company.getBoards())
&& this.name.equals(company.getName())
&& this.id.equals(company.getUUID());
}
public String toString() {
return "Company Name: " + name +
"\tID: " + id +
"\nUsers: " + users +
"\nAdmins: " + admins +
"\nBoards: " + boards;
}
}