-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathUsers.java
More file actions
237 lines (197 loc) · 6.39 KB
/
Copy pathUsers.java
File metadata and controls
237 lines (197 loc) · 6.39 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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package project.trial;
import java.io.*;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Map;
import java.util.HashMap;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author jana
*/
public class Users implements Serializable{
enum Type
{
ADMIN,
RECEPTIONIST,
GUEST
}
//Implementations
protected int ID;
protected String Password;
protected String Name;
protected Type position;
private double Salary;
private int Bonus;
public static Users currentUser;
static Map<Integer, Users> usersMap = new HashMap<>();
//CONSTRUCTORS
public Users (){}
public Users(int ID, String Password, String Name)
{
this.ID = ID;
this.Password = Password;
this.Name = Name;
usersMap.put(ID,this);
}
public Users(int ID, String Password, String Name, Type position)
{
this.ID = ID;
this.Password = Password;
this.Name = Name;
this.position = position;
usersMap.put(ID,this);
}
//Read from Binary File solution
private void readFromFile()
{
FileInputStream file = null;
try {
file = new FileInputStream("user_information.dat");
while(true){
try(ObjectInputStream ois = new ObjectInputStream(file))
{
Users user = (Users) ois.readObject();
ois.close(); file.close();
}
catch(ClassNotFoundException ex)
{
System.out.println("Error opening file: " + ex.getMessage());
}
catch(IOException e)
{
System.out.println("Error reading from file: " + e.getMessage());
}
} } catch (FileNotFoundException ex) {
Logger.getLogger(Users.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
file.close();
} catch (IOException ex) {
Logger.getLogger(Users.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
//Write to Binary File solution
private void writeToFile()
{
FileOutputStream file = null;
try{
file = new FileOutputStream("user_information.dat");
try(ObjectOutputStream oos = new ObjectOutputStream(file))
{
for(Users u: Users.usersMap.values())
{
oos.writeObject(new Users());
}
oos.close(); file.close();
} catch(IOException e) {
System.err.println("Error writing to file: " + e.getMessage());
}
} catch(FileNotFoundException ex) {
Logger.getLogger(Users.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
file.close();
} catch (IOException ex) {
Logger.getLogger(Users.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
//Validation Functions
public boolean isValidAdmin(int input_id, String input_password) throws FileNotFoundException
{
Users admin = usersMap.get(input_id);
return admin != null && admin.Password.equals(input_password);
}
public boolean isValidRec(int input_id, String input_password)
{
Users rec = usersMap.get(input_id);
return rec != null && rec.Password.equals(input_password);
}
public boolean isValidGuest(int input_id, String input_password)
{
Users guest = usersMap.get(input_id);
return guest != null && guest.Password.equals(input_password);
}
//Login Function
public int Login2(int ID, String password) throws FileNotFoundException {
Users.currentUser = null; // Reset currentUser before login attempt
if (usersMap.containsKey(ID)) {
Users user = usersMap.get(ID);
if (user.getPassword().equals(password)) {
Users.currentUser = user;
return user.position.ordinal();
}
}
return -1;
}
//Setters and Getters
public int getID() {
return ID;
}
public void setID(int ID) {
this.ID = ID;
}
public String getPassword() {
return Password;
}
public void setPassword(String Password) {
this.Password = Password;
}
public String getName() {
return Name;
}
public void setName(String Name) {
this.Name = Name;
}
public static Users getCurrentUser() {
return currentUser;
}
public static void setCurrentUser(Users currentUser) {
Users.currentUser = currentUser;
}
public static Map<Integer, Users> getUsersMap() {
return usersMap;
}
public static void setUsersMap(Map<Integer, Users> usersMap) {
Users.usersMap = (HashMap<Integer, Users>) usersMap;
}
public void setSalary(double salary) {
this.Salary = salary;
}
public double getSalary()
{
return Salary;
}
public void setBonus(int bonus) {
this.Bonus = bonus;
}
public int getBonus() {
return Bonus;
}
public static void addSalaryToFile(int userId, double salary) {
try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("user_information.dat", true))) {
dos.writeInt(userId);
dos.writeDouble(salary);
System.out.println("Salary added successfully!");
} catch (IOException e) {
System.out.println("Error adding salary to file: " + e.getMessage());
}
}
public static void addBonusToFile(int userId, int bonus) {
try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("user_information.dat", true))) {
dos.writeInt(userId);
dos.writeInt(bonus);
System.out.println("Bonus added successfully!");
} catch (IOException e) {
System.out.println("Error adding bonus to file: " + e.getMessage());
}
}
}