| /home/oracle/labs/06CollectionOperations/examples/EmployeeSearch/src/com/example/lambda/Employee.java |
1 package com.example.lambda;
2
3 import java.time.LocalDate;
4 import java.util.ArrayList;
5 import java.util.List;
6 import java.util.function.Consumer;
7
8
9 @author
10
11 public class Employee implements Comparable<Employee>{
12 private String givenName;
13 private String surName;
14 private int age;
15 private Gender gender;
16 private Role role;
17 private String dept;
18 private LocalDate startDate;
19 private double salary;
20 private String eMail;
21 private String phone;
22 private String address;
23 private String city;
24 private String state;
25 private String code;
26
27 public static class Builder{
28
29 private String givenName="";
30 private String surName="";
31 private int age = 0;
32 private Gender gender = Gender.FEMALE;
33 private Role role = Role.STAFF;
34 private String dept = "";
35 private LocalDate startDate = LocalDate.of(1,1,1);
36 private double salary = 0;
37 private String eMail = "";
38 private String phone = "";
39 private String address = "";
40 private String city = "";
41 private String state = "";
42 private String code = "";
43
44
45 public Employee.Builder givenName(String givenName){
46 this.givenName = givenName;
47 return this;
48 }
49
50 public Employee.Builder surName(String surName){
51 this.surName = surName;
52 return this;
53 }
54
55 public Employee.Builder age (int val){
56 age = val;
57 return this;
58 }
59
60 public Employee.Builder gender(Gender val){
61 gender = val;
62 return this;
63 }
64
65 public Employee.Builder role(Role val){
66 role = val;
67 return this;
68 }
69
70 public Employee.Builder dept(String val){
71 dept = val;
72 return this;
73 }
74
75 public Employee.Builder startDate(LocalDate val){
76 startDate = val;
77 return this;
78 }
79
80 public Employee.Builder salary(double val){
81 salary = val;
82 return this;
83 }
84
85 public Employee.Builder email(String val){
86 eMail = val;
87 return this;
88 }
89
90 public Employee.Builder phoneNumber(String val){
91 phone = val;
92 return this;
93 }
94
95 public Employee.Builder address(String val){
96 address = val;
97 return this;
98 }
99
100 public Employee.Builder city(String val){
101 city = val;
102 return this;
103 }
104
105 public Employee.Builder state(String val){
106 state = val;
107 return this;
108 }
109
110 public Employee.Builder code(String val){
111 code = val;
112 return this;
113 }
114
115 public Employee build(){
116 return new Employee(this);
117 }
118 }
119
120 private Employee(){
121 super();
122 }
123
124 private Employee(Employee.Builder builder){
125 givenName = builder.givenName;
126 surName = builder.surName;
127 age = builder.age;
128 gender = builder.gender;
129 role = builder.role;
130 dept = builder.dept;
131 startDate = builder.startDate;
132 salary = builder.salary;
133 eMail = builder.eMail;
134 phone = builder.phone;
135 address = builder.address;
136 city = builder.city;
137 state = builder.state;
138 code = builder.code;
139
140 }
141
142 public static int sortBySalary(Employee a, Employee b){
143 Double s1 = new Double(a.getSalary());
144 Double s2 = new Double(b.getSalary());
145 return s1.compareTo(s2);
146 }
147
148 public String getGivenName(){
149 return givenName;
150 }
151
152 public String getSurName(){
153 return surName;
154 }
155
156 public void setSurName(String name){
157 this.surName = name;
158 }
159
160 public int getAge(){
161 return age;
162 }
163
164 public Gender getGender(){
165 return gender;
166 }
167
168 public Role getRole(){
169 return role;
170 }
171
172 public String getDept(){
173 return dept;
174 }
175
176 public LocalDate getStartDate(){
177 return startDate;
178 }
179
180 public double getSalary(){
181 return salary;
182 }
183
184 public String getEmail(){
185 return eMail;
186 }
187
188 public String getPhone(){
189 return phone;
190 }
191
192 public String getAddress(){
193 return address;
194 }
195
196 public String getCity(){
197 return city;
198 }
199
200 public String getState(){
201 return state;
202 }
203
204 public String getCode(){
205 return code;
206 }
207
208 @Override
209 public int compareTo(Employee e){
210 return this.getSurName().compareTo(e.getSurName());
211 }
212
213
214
215 public void print(){
216 System.out.println(
217 "\nName: " + givenName + " " + surName + "\n" +
218 "Age: " + age + "\n" +
219 "Gender: " + gender + "\n" +
220 "Role: " + role + "\n" +
221 "Dept: " + dept + "\n" +
222 "Start date: " + startDate + "\n" +
223 "Salary: " + salary + "\n" +
224 "eMail: " + eMail + "\n" +
225 "Phone: " + phone + "\n" +
226 "Address: " + address + "\n" +
227 "City: " + city + "\n" +
228 "State: " + state + "\n" +
229 "Code: " + code + "\n"
230 );
231 }
232
233 public void printSummary(){
234 System.out.println(
235 "Name: " + givenName + " " + surName +
236 " Role: " + role +
237 " Dept: " + dept +
238 " eMail: " + eMail
239 );
240 }
241
242 public void printLambda(Consumer<Employee> cons){
243 cons.accept(this);
244 }
245
246
247 @Override
248 public String toString(){
249 return
250 "Name: " + givenName + " " + surName +
251 " Age: " + age +
252 " Gender: " + gender +
253 " Role: " + role +
254 " Dept: " + dept +
255 " Start date: " + startDate +
256 " Salary: " + salary +
257 " eMail: " + eMail +
258 " Phone: " + phone +
259 " Address: " + address +
260 " City: " + city +
261 " State: " + state +
262 " Code: " + code + "\n";
263
264 }
265
266 public static List<Employee> createShortList(){
267 List<Employee> people = new ArrayList<>();
268
269 people.add(
270 new Employee.Builder()
271 .givenName("Bob")
272 .surName("Baker")
273 .age(23)
274 .gender(Gender.MALE)
275 .role(Role.STAFF)
276 .dept("Eng")
277 .startDate(LocalDate.of(2013, 1, 10))
278 .salary(40000)
279 .email("bob.baker@example.com")
280 .phoneNumber("201-121-4678")
281 .address("44 4th St")
282 .city("Smallville")
283 .state("KS")
284 .code("12333")
285 .build()
286 );
287
288 people.add(
289 new Employee.Builder()
290 .givenName("Jane")
291 .surName("Doe")
292 .age(25)
293 .gender(Gender.FEMALE)
294 .role(Role.STAFF)
295 .dept("Sales")
296 .startDate(LocalDate.of(2011, 7, 14))
297 .salary(45000)
298 .email("jane.doe@example.com")
299 .phoneNumber("202-123-4678")
300 .address("33 3rd St")
301 .city("Smallville")
302 .state("KS")
303 .code("12333")
304 .build()
305 );
306
307 people.add(
308 new Employee.Builder()
309 .givenName("John")
310 .surName("Doe")
311 .age(28)
312 .gender(Gender.MALE)
313 .role(Role.MANAGER)
314 .dept("Eng")
315 .startDate(LocalDate.of(2007, 3, 1))
316 .salary(65000)
317 .email("john.doe@example.com")
318 .phoneNumber("202-123-4678")
319 .address("33 3rd St")
320 .city("Smallville")
321 .state("KS")
322 .code("12333")
323 .build()
324 );
325
326 people.add(
327 new Employee.Builder()
328 .givenName("James")
329 .surName("Johnson")
330 .age(45)
331 .gender(Gender.MALE)
332 .role(Role.MANAGER)
333 .dept("Eng")
334 .startDate(LocalDate.of(1999, 5, 1))
335 .salary(85000)
336 .email("james.johnson@example.com")
337 .phoneNumber("333-456-1233")
338 .address("201 2nd St")
339 .city("BrainTree")
340 .state("MA")
341 .code("11111")
342 .build()
343 );
344
345 people.add(
346 new Employee.Builder()
347 .givenName("John")
348 .surName("Adams")
349 .age(52)
350 .gender(Gender.MALE)
351 .role(Role.MANAGER)
352 .dept("Sales")
353 .startDate(LocalDate.of(1994, 2, 1))
354 .salary(90000)
355 .email("john.adams@example.com")
356 .phoneNumber("112-111-1111")
357 .address("111 1st St")
358 .city("Braintree")
359 .state("MA")
360 .code("11111")
361 .build()
362 );
363
364 people.add(
365 new Employee.Builder()
366 .givenName("Joe")
367 .surName("Bailey")
368 .age(62)
369 .gender(Gender.MALE)
370 .role(Role.EXECUTIVE)
371 .dept("Eng")
372 .startDate(LocalDate.of(1992, 1, 5))
373 .salary(120000)
374 .email("joebob.bailey@example.com")
375 .phoneNumber("112-111-1111")
376 .address("111 1st St")
377 .city("Town")
378 .state("CO")
379 .code("11111")
380 .build()
381 );
382
383 people.add(
384 new Employee.Builder()
385 .givenName("Phil")
386 .surName("Smith")
387 .age(55)
388 .gender(Gender.MALE)
389 .role(Role.EXECUTIVE)
390 .dept("HR")
391 .startDate(LocalDate.of(2000, 10, 10))
392 .salary(110000)
393 .email("phil.smith@examp;e.com")
394 .phoneNumber("222-33-1234")
395 .address("22 2nd St")
396 .city("New Park")
397 .state("CO")
398 .code("222333")
399 .build()
400 );
401
402 people.add(
403 new Employee.Builder()
404 .givenName("Betty")
405 .surName("Jones")
406 .age(65)
407 .gender(Gender.FEMALE)
408 .role(Role.EXECUTIVE)
409 .dept("Sales")
410 .startDate(LocalDate.of(1984, 7, 10))
411 .salary(140000)
412 .email("betty.jones@example.com")
413 .phoneNumber("211-33-1234")
414 .address("22 4th St")
415 .city("New Park")
416 .state("CO")
417 .code("222333")
418 .build()
419 );
420
421
422 return people;
423 }
424
425 }