X Tutup
Skip to content

Commit 9aa831d

Browse files
committed
iluwatar#84 Example improvements. Instead of all toppings and all layers the
service returns available toppings and layers.
1 parent 89cb234 commit 9aa831d

File tree

5 files changed

+45
-18
lines changed

5 files changed

+45
-18
lines changed

layers/src/main/java/com/iluwatar/layers/App.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,26 @@ private static void initializeData(CakeBakingService cakeBakingService) {
2020
cakeBakingService.saveNewLayer(new CakeLayerInfo("chocolate", 1200));
2121
cakeBakingService.saveNewLayer(new CakeLayerInfo("banana", 900));
2222
cakeBakingService.saveNewLayer(new CakeLayerInfo("strawberry", 950));
23-
cakeBakingService.getAllLayers().stream().forEach((layer) -> System.out.println(layer));
23+
cakeBakingService.saveNewLayer(new CakeLayerInfo("lemon", 950));
24+
cakeBakingService.saveNewLayer(new CakeLayerInfo("vanilla", 950));
25+
cakeBakingService.saveNewLayer(new CakeLayerInfo("strawberry", 950));
2426

2527
cakeBakingService.saveNewTopping(new CakeToppingInfo("candies", 350));
26-
cakeBakingService.getAllToppings().stream().forEach((topping) -> System.out.println(topping));
28+
cakeBakingService.saveNewTopping(new CakeToppingInfo("cherry", 350));
2729

28-
CakeInfo cakeInfo = new CakeInfo(new CakeToppingInfo("candies", 0),
30+
CakeInfo cake1 = new CakeInfo(new CakeToppingInfo("candies", 0),
2931
Arrays.asList(new CakeLayerInfo("chocolate", 0), new CakeLayerInfo("banana", 0),
3032
new CakeLayerInfo("strawberry", 0)));
3133
try {
32-
cakeBakingService.bakeNewCake(cakeInfo);
34+
cakeBakingService.bakeNewCake(cake1);
35+
} catch (CakeBakingException e) {
36+
e.printStackTrace();
37+
}
38+
CakeInfo cake2 = new CakeInfo(new CakeToppingInfo("cherry", 0),
39+
Arrays.asList(new CakeLayerInfo("vanilla", 0), new CakeLayerInfo("lemon", 0),
40+
new CakeLayerInfo("strawberry", 0)));
41+
try {
42+
cakeBakingService.bakeNewCake(cake2);
3343
} catch (CakeBakingException e) {
3444
e.printStackTrace();
3545
}

layers/src/main/java/com/iluwatar/layers/CakeBakingService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ public interface CakeBakingService {
1010

1111
void saveNewTopping(CakeToppingInfo toppingInfo);
1212

13-
List<CakeToppingInfo> getAllToppings();
13+
List<CakeToppingInfo> getAvailableToppings();
1414

1515
void saveNewLayer(CakeLayerInfo layerInfo);
1616

17-
List<CakeLayerInfo> getAllLayers();
17+
List<CakeLayerInfo> getAvailableLayers();
1818
}

layers/src/main/java/com/iluwatar/layers/CakeBakingServiceImpl.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ public CakeBakingServiceImpl() {
2525

2626
@Override
2727
public void bakeNewCake(CakeInfo cakeInfo) throws CakeBakingException {
28-
List<CakeToppingInfo> allToppings = getAllToppings();
28+
List<CakeToppingInfo> allToppings = getAvailableToppings();
2929
List<CakeToppingInfo> matchingToppings = allToppings.stream()
3030
.filter((t) -> t.name.equals(cakeInfo.cakeToppingInfo.name)).collect(Collectors.toList());
3131
if (matchingToppings.isEmpty()) {
3232
throw new CakeBakingException(String.format("Topping %s is not available", cakeInfo.cakeToppingInfo.name));
3333
}
34-
List<CakeLayer> allLayers = getAllLayerEntities();
34+
List<CakeLayer> allLayers = getAvailableLayerEntities();
3535
Set<CakeLayer> foundLayers = new HashSet<>();
3636
for (CakeLayerInfo info: cakeInfo.cakeLayerInfos) {
3737
Optional<CakeLayer> found = allLayers.stream().filter((layer) -> layer.getName().equals(info.name)).findFirst();
@@ -69,46 +69,56 @@ public void saveNewLayer(CakeLayerInfo layerInfo) {
6969
bean.save(new CakeLayer(layerInfo.name, layerInfo.calories));
7070
}
7171

72-
private List<CakeTopping> getAllToppingEntities() {
72+
private List<CakeTopping> getAvailableToppingEntities() {
7373
CakeToppingDao bean = context.getBean(CakeToppingDao.class);
7474
List<CakeTopping> result = new ArrayList<>();
7575
Iterator<CakeTopping> iterator = bean.findAll().iterator();
7676
while (iterator.hasNext()) {
77-
result.add(iterator.next());
77+
CakeTopping topping = iterator.next();
78+
if (topping.getCake() == null) {
79+
result.add(topping);
80+
}
7881
}
7982
return result;
8083
}
8184

8285
@Override
83-
public List<CakeToppingInfo> getAllToppings() {
86+
public List<CakeToppingInfo> getAvailableToppings() {
8487
CakeToppingDao bean = context.getBean(CakeToppingDao.class);
8588
List<CakeToppingInfo> result = new ArrayList<>();
8689
Iterator<CakeTopping> iterator = bean.findAll().iterator();
8790
while (iterator.hasNext()) {
8891
CakeTopping next = iterator.next();
89-
result.add(new CakeToppingInfo(next.getId(), next.getName(), next.getCalories()));
92+
if (next.getCake() == null) {
93+
result.add(new CakeToppingInfo(next.getId(), next.getName(), next.getCalories()));
94+
}
9095
}
9196
return result;
9297
}
9398

94-
private List<CakeLayer> getAllLayerEntities() {
99+
private List<CakeLayer> getAvailableLayerEntities() {
95100
CakeLayerDao bean = context.getBean(CakeLayerDao.class);
96101
List<CakeLayer> result = new ArrayList<>();
97102
Iterator<CakeLayer> iterator = bean.findAll().iterator();
98103
while (iterator.hasNext()) {
99-
result.add(iterator.next());
104+
CakeLayer next = iterator.next();
105+
if (next.getCake() == null) {
106+
result.add(next);
107+
}
100108
}
101109
return result;
102110
}
103111

104112
@Override
105-
public List<CakeLayerInfo> getAllLayers() {
113+
public List<CakeLayerInfo> getAvailableLayers() {
106114
CakeLayerDao bean = context.getBean(CakeLayerDao.class);
107115
List<CakeLayerInfo> result = new ArrayList<>();
108116
Iterator<CakeLayer> iterator = bean.findAll().iterator();
109117
while (iterator.hasNext()) {
110118
CakeLayer next = iterator.next();
111-
result.add(new CakeLayerInfo(next.getId(), next.getName(), next.getCalories()));
119+
if (next.getCake() == null) {
120+
result.add(new CakeLayerInfo(next.getId(), next.getName(), next.getCalories()));
121+
}
112122
}
113123
return result;
114124
}

layers/src/main/java/com/iluwatar/layers/CakeInfo.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,15 @@ public CakeInfo(CakeToppingInfo cakeToppingInfo, List<CakeLayerInfo> cakeLayerIn
2121
this.cakeLayerInfos = cakeLayerInfos;
2222
}
2323

24+
public int calculateTotalCalories() {
25+
int total = cakeToppingInfo != null ? cakeToppingInfo.calories : 0;
26+
total += cakeLayerInfos.stream().mapToInt(c -> c.calories).sum();
27+
return total;
28+
}
29+
2430
@Override
2531
public String toString() {
26-
return String.format("CakeInfo id=%d topping=%s layers=%s", id.get(), cakeToppingInfo, cakeLayerInfos);
32+
return String.format("CakeInfo id=%d topping=%s layers=%s totalCalories=%d", id.get(), cakeToppingInfo,
33+
cakeLayerInfos, calculateTotalCalories());
2734
}
2835
}

layers/src/main/resources/applicationContext.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
<map>
3636
<entry key="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
3737
<entry key="hibernate.hbm2ddl.auto" value="create-drop" />
38-
<entry key="hibernate.show_sql" value="true" />
38+
<entry key="hibernate.show_sql" value="false" />
3939
</map>
4040
</property>
4141
</bean>

0 commit comments

Comments
 (0)
X Tutup