Skip to content

Commit 000fc3a

Browse files
committed
Update Map implementation to manage setting of ID Property. Closes #39
Signed-off-by: Ankur Paul <[email protected]>
1 parent c647207 commit 000fc3a

File tree

5 files changed

+29
-14
lines changed

5 files changed

+29
-14
lines changed

Track 2_JAVA and SQL/SpringFramework/SpringPetClinic/pet-clinic-data/src/main/java/com/example/springpetclinic/services/map/AbstractMapService.java

+26-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package com.example.springpetclinic.services.map;
22

3+
import com.example.springpetclinic.model.BaseEntity;
4+
5+
import java.util.Collections;
36
import java.util.HashMap;
47
import java.util.HashSet;
58
import java.util.Map;
9+
import java.util.NoSuchElementException;
610
import java.util.Set;
711

8-
public abstract class AbstractMapService<T, ID> {
9-
protected Map<ID, T> map = new HashMap<>();
12+
public abstract class AbstractMapService<T extends BaseEntity, ID extends Long> {
13+
protected Map<Long, T> map = new HashMap<>();
1014

1115
Set<T> findAll() {
1216
return new HashSet<>(map.values());
@@ -16,8 +20,15 @@ T findById(ID id) {
1620
return map.get(id);
1721
}
1822

19-
T save(ID id, T object) {
20-
map.put(id, object);
23+
T save(T object) {
24+
if (object != null) {
25+
if (object.getId() == null) {
26+
object.setId(getNextId());
27+
}
28+
map.put(object.getId(), object);
29+
} else {
30+
throw new RuntimeException("Object cannot be null");
31+
}
2132

2233
return object;
2334
}
@@ -29,4 +40,15 @@ void deleteById(ID id) {
2940
void delete(T object) {
3041
map.entrySet().removeIf(entry -> entry.getValue().equals(object));
3142
}
43+
44+
private Long getNextId() {
45+
46+
Long nextId = null;
47+
try {
48+
nextId = Collections.max(map.keySet()) + 1;
49+
} catch (NoSuchElementException e) {
50+
nextId = 1L;
51+
}
52+
return nextId;
53+
}
3254
}

Track 2_JAVA and SQL/SpringFramework/SpringPetClinic/pet-clinic-data/src/main/java/com/example/springpetclinic/services/map/OwnerMapService.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public Owner findById(Long id) {
2525

2626
@Override
2727
public Owner save(Owner object) {
28-
return super.save(object.getId(), object);
28+
return super.save(object);
2929
}
3030

3131
@Override

Track 2_JAVA and SQL/SpringFramework/SpringPetClinic/pet-clinic-data/src/main/java/com/example/springpetclinic/services/map/PetMapService.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public Pet findById(Long id) {
2020

2121
@Override
2222
public Pet save(Pet object) {
23-
return super.save(object.getId(), object);
23+
return super.save(object);
2424
}
2525

2626
@Override

Track 2_JAVA and SQL/SpringFramework/SpringPetClinic/pet-clinic-data/src/main/java/com/example/springpetclinic/services/map/VetMapService.java

+1-4
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,16 @@ public class VetMapService extends AbstractMapService<Vet, Long> implements VetS
1111
@Override
1212
public Set<Vet> findAll() {
1313
return super.findAll();
14-
1514
}
1615

1716
@Override
1817
public Vet findById(Long id) {
1918
return super.findById(id);
20-
2119
}
2220

2321
@Override
2422
public Vet save(Vet object) {
25-
return super.save(object.getId(), object);
26-
23+
return super.save(object);
2724
}
2825

2926
@Override

Track 2_JAVA and SQL/SpringFramework/SpringPetClinic/pet-clinic-web/src/main/java/com/example/springpetclinic/bootstrap/DataLoader.java

-4
Original file line numberDiff line numberDiff line change
@@ -22,27 +22,23 @@ public DataLoader(OwnerService ownerService, VetService vetService) {
2222
@Override
2323
public void run(String... args) throws Exception {
2424
Owner owner = new Owner();
25-
owner.setId(1L);
2625
owner.setFirstName("Michael");
2726
owner.setLastName("Michael");
2827
ownerService.save(owner);
2928

3029
owner = new Owner();
31-
owner.setId(2L);
3230
owner.setFirstName("Fiona");
3331
owner.setLastName("Glenanne");
3432
ownerService.save(owner);
3533

3634
System.out.println("Loaded Owners...");
3735

3836
Vet vet = new Vet();
39-
vet.setId(1L);
4037
vet.setFirstName("Sam");
4138
vet.setLastName("Axe");
4239
vetService.save(vet);
4340

4441
vet = new Vet();
45-
vet.setId(2L);
4642
vet.setFirstName("Jessie");
4743
vet.setLastName("Porter");
4844
vetService.save(vet);

0 commit comments

Comments
 (0)