Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 913b4fa

Browse filesBrowse files
committed
iluwatar#84 Work on cake baking
1 parent 8f5b1b0 commit 913b4fa
Copy full SHA for 913b4fa

File tree

Expand file treeCollapse file tree

9 files changed

+96
-19
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

9 files changed

+96
-19
lines changed
Open diff view settings
Collapse file

‎layers/pom.xml‎

Copy file name to clipboardExpand all lines: layers/pom.xml
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<dependency>
1515
<groupId>org.springframework.data</groupId>
1616
<artifactId>spring-data-jpa</artifactId>
17-
</dependency>
17+
</dependency>
1818
<dependency>
1919
<groupId>org.hibernate</groupId>
2020
<artifactId>hibernate-entitymanager</artifactId>
Collapse file
+14-3Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,27 @@
11
package com.iluwatar.layers;
22

3+
import java.util.Arrays;
4+
35
public class App {
46

57
public static void main(String[] args) {
68

79
CakeBakingService service = new CakeBakingServiceImpl();
8-
service.saveNewLayer(new CakeLayerInfo("foo", 1));
9-
service.saveNewLayer(new CakeLayerInfo("bar", 2));
10+
service.saveNewLayer(new CakeLayerInfo("chocolate", 1200));
11+
service.saveNewLayer(new CakeLayerInfo("banana", 900));
12+
service.saveNewLayer(new CakeLayerInfo("strawberry", 950));
1013
service.getAllLayers().stream().forEach((layer) -> System.out.println(layer));
1114

12-
service.saveNewTopping(new CakeToppingInfo("hoi", 11));
15+
service.saveNewTopping(new CakeToppingInfo("candies", 350));
1316
service.getAllToppings().stream().forEach((topping) -> System.out.println(topping));
1417

18+
CakeInfo cakeInfo = new CakeInfo(new CakeToppingInfo("candies", 0),
19+
Arrays.asList(new CakeLayerInfo("chocolate", 0), new CakeLayerInfo("chocolate", 0),
20+
new CakeLayerInfo("chocolate", 0)));
21+
try {
22+
service.bakeNewCake(cakeInfo);
23+
} catch (CakeBakingException e) {
24+
e.printStackTrace();
25+
}
1526
}
1627
}
Collapse file

‎layers/src/main/java/com/iluwatar/layers/Cake.java‎

Copy file name to clipboardExpand all lines: layers/src/main/java/com/iluwatar/layers/Cake.java
+7-2Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.ArrayList;
44
import java.util.List;
55

6+
import javax.persistence.CascadeType;
67
import javax.persistence.Entity;
78
import javax.persistence.GeneratedValue;
89
import javax.persistence.Id;
@@ -16,10 +17,10 @@ public class Cake {
1617
@GeneratedValue
1718
private Long id;
1819

19-
@OneToOne
20+
@OneToOne(cascade = CascadeType.ALL)
2021
private CakeTopping topping;
2122

22-
@OneToMany
23+
@OneToMany(cascade = CascadeType.ALL)
2324
private List<CakeLayer> layers;
2425

2526
public Cake() {
@@ -49,4 +50,8 @@ public List<CakeLayer> getLayers() {
4950
public void setLayers(List<CakeLayer> layers) {
5051
this.layers = layers;
5152
}
53+
54+
public void addLayer(CakeLayer layer) {
55+
this.layers.add(layer);
56+
}
5257
}
Collapse file

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

Copy file name to clipboardExpand all lines: layers/src/main/java/com/iluwatar/layers/CakeBakingServiceImpl.java
+42-10Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@
88

99
import org.springframework.context.support.AbstractApplicationContext;
1010
import org.springframework.context.support.ClassPathXmlApplicationContext;
11+
import org.springframework.stereotype.Service;
12+
import org.springframework.transaction.annotation.Transactional;
1113

14+
@Service
15+
@Transactional
1216
public class CakeBakingServiceImpl implements CakeBakingService {
1317

1418
private AbstractApplicationContext context;
@@ -22,23 +26,31 @@ public void bakeNewCake(CakeInfo cakeInfo) throws CakeBakingException {
2226
List<CakeToppingInfo> allToppings = getAllToppings();
2327
List<CakeToppingInfo> matchingToppings = allToppings.stream()
2428
.filter((t) -> t.name.equals(cakeInfo.cakeToppingInfo.name)).collect(Collectors.toList());
25-
if (!matchingToppings.isEmpty()) {
26-
// CakeToppingDao toppingBean = context.getBean(CakeToppingDao.class);
27-
// toppingBean.delete(matchingToppings.iterator().next().id.get());
28-
} else {
29+
if (matchingToppings.isEmpty()) {
2930
throw new CakeBakingException(String.format("Topping %s is not available", cakeInfo.cakeToppingInfo.name));
3031
}
31-
List<CakeLayerInfo> allLayers = getAllLayers();
32+
List<CakeLayer> allLayers = getAllLayerEntities();
33+
List<CakeLayer> foundLayers = new ArrayList<>();
3234
for (CakeLayerInfo info: cakeInfo.cakeLayerInfos) {
33-
Optional<CakeLayerInfo> found = allLayers.stream().filter((layer) -> layer.name.equals(info.name)).findFirst();
34-
if (found.isPresent()) {
35-
// CakeLayerDao layerBean = context.getBean(CakeLayerDao.class);
36-
// layerBean.delete(found.get().id.get());
37-
} else {
35+
Optional<CakeLayer> found = allLayers.stream().filter((layer) -> layer.getName().equals(info.name)).findFirst();
36+
if (!found.isPresent()) {
3837
throw new CakeBakingException(String.format("Layer %s is not available", info.name));
38+
} else {
39+
foundLayers.add(found.get());
3940
}
4041
}
42+
CakeToppingDao toppingBean = context.getBean(CakeToppingDao.class);
43+
CakeTopping topping = toppingBean.findOne(matchingToppings.iterator().next().id.get());
4144
CakeDao cakeBean = context.getBean(CakeDao.class);
45+
Cake cake = new Cake();
46+
cake = cakeBean.save(cake);
47+
cake.setTopping(topping);
48+
topping.setCake(cake);
49+
cake.setLayers(foundLayers);
50+
for (CakeLayer layer: foundLayers) {
51+
layer.setCake(cake);
52+
}
53+
cakeBean.save(cake);
4254
}
4355

4456
@Override
@@ -53,6 +65,16 @@ public void saveNewLayer(CakeLayerInfo layerInfo) {
5365
bean.save(new CakeLayer(layerInfo.name, layerInfo.calories));
5466
}
5567

68+
private List<CakeTopping> getAllToppingEntities() {
69+
CakeToppingDao bean = context.getBean(CakeToppingDao.class);
70+
List<CakeTopping> result = new ArrayList<>();
71+
Iterator<CakeTopping> iterator = bean.findAll().iterator();
72+
while (iterator.hasNext()) {
73+
result.add(iterator.next());
74+
}
75+
return result;
76+
}
77+
5678
@Override
5779
public List<CakeToppingInfo> getAllToppings() {
5880
CakeToppingDao bean = context.getBean(CakeToppingDao.class);
@@ -65,6 +87,16 @@ public List<CakeToppingInfo> getAllToppings() {
6587
return result;
6688
}
6789

90+
private List<CakeLayer> getAllLayerEntities() {
91+
CakeLayerDao bean = context.getBean(CakeLayerDao.class);
92+
List<CakeLayer> result = new ArrayList<>();
93+
Iterator<CakeLayer> iterator = bean.findAll().iterator();
94+
while (iterator.hasNext()) {
95+
result.add(iterator.next());
96+
}
97+
return result;
98+
}
99+
68100
@Override
69101
public List<CakeLayerInfo> getAllLayers() {
70102
CakeLayerDao bean = context.getBean(CakeLayerDao.class);
Collapse file

‎layers/src/main/java/com/iluwatar/layers/CakeLayer.java‎

Copy file name to clipboardExpand all lines: layers/src/main/java/com/iluwatar/layers/CakeLayer.java
+13Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.iluwatar.layers;
22

3+
import javax.persistence.CascadeType;
34
import javax.persistence.Entity;
45
import javax.persistence.GeneratedValue;
56
import javax.persistence.Id;
7+
import javax.persistence.ManyToOne;
68

79
@Entity
810
public class CakeLayer {
@@ -14,6 +16,9 @@ public class CakeLayer {
1416
private String name;
1517

1618
private int calories;
19+
20+
@ManyToOne(cascade = CascadeType.ALL)
21+
private Cake cake;
1722

1823
public CakeLayer() {
1924
}
@@ -51,4 +56,12 @@ public void setCalories(int calories) {
5156
public String toString() {
5257
return String.format("name: %s calories: %d", name, calories);
5358
}
59+
60+
public Cake getCake() {
61+
return cake;
62+
}
63+
64+
public void setCake(Cake cake) {
65+
this.cake = cake;
66+
}
5467
}
Collapse file

‎layers/src/main/java/com/iluwatar/layers/CakeLayerInfo.java‎

Copy file name to clipboardExpand all lines: layers/src/main/java/com/iluwatar/layers/CakeLayerInfo.java
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ public CakeLayerInfo(String name, int calories) {
2222

2323
@Override
2424
public String toString() {
25-
return String.format("name: %s calories: %d", name, calories);
25+
return String.format("CakeLayerInfo name: %s calories: %d", name, calories);
2626
}
2727
}
Collapse file

‎layers/src/main/java/com/iluwatar/layers/CakeTopping.java‎

Copy file name to clipboardExpand all lines: layers/src/main/java/com/iluwatar/layers/CakeTopping.java
+13Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.iluwatar.layers;
22

3+
import javax.persistence.CascadeType;
34
import javax.persistence.Entity;
45
import javax.persistence.GeneratedValue;
56
import javax.persistence.Id;
7+
import javax.persistence.OneToOne;
68

79
@Entity
810
public class CakeTopping {
@@ -15,6 +17,9 @@ public class CakeTopping {
1517

1618
private int calories;
1719

20+
@OneToOne(cascade = CascadeType.ALL)
21+
private Cake cake;
22+
1823
public CakeTopping() {
1924
}
2025

@@ -51,4 +56,12 @@ public void setCalories(int calories) {
5156
public String toString() {
5257
return String.format("name: %s calories: %d", name, calories);
5358
}
59+
60+
public Cake getCake() {
61+
return cake;
62+
}
63+
64+
public void setCake(Cake cake) {
65+
this.cake = cake;
66+
}
5467
}
Collapse file

‎layers/src/main/java/com/iluwatar/layers/CakeToppingInfo.java‎

Copy file name to clipboardExpand all lines: layers/src/main/java/com/iluwatar/layers/CakeToppingInfo.java
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ public CakeToppingInfo(String name, int calories) {
2222

2323
@Override
2424
public String toString() {
25-
return String.format("name: %s calories: %d", name, calories);
25+
return String.format("CakeToppingInfo name: %s calories: %d", name, calories);
2626
}
2727
}
Collapse file

‎layers/src/main/resources/applicationContext.xml‎

Copy file name to clipboardExpand all lines: layers/src/main/resources/applicationContext.xml
+4-1Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
77
xsi:schemaLocation="
88
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
9-
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsd">
9+
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
1010

1111
<jpa:repositories base-package="com.iluwatar" />
1212

13+
<tx:annotation-driven transaction-manager="transactionManager" />
14+
1315
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
1416
<property name="entityManagerFactory" ref="entityManagerFactory" />
1517
</bean>
@@ -33,6 +35,7 @@
3335
<map>
3436
<entry key="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
3537
<entry key="hibernate.hbm2ddl.auto" value="create-drop" />
38+
<entry key="hibernate.show_sql" value="true" />
3639
</map>
3740
</property>
3841
</bean>

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.