Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/main/java/io/khasang/rtrail/config/HibernateConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public DataSource dataSource() {
}

@Bean
public LocalSessionFactoryBean sessionFactory(){
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan("io.khasang.rtrail.entity");
Expand All @@ -53,7 +53,7 @@ private Properties properties() {

@Bean
@Autowired
public HibernateTransactionManager transactionManager(SessionFactory sessionFactory){
public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) {
HibernateTransactionManager transactionManager = new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory);
return transactionManager;
Expand Down
7 changes: 7 additions & 0 deletions src/main/java/io/khasang/rtrail/controller/CatController.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ public Cat addCat(@RequestBody Cat cat) {
return catService.addCat(cat);
}

@RequestMapping(value = "/update", method = RequestMethod.PUT, produces = "application/json;charset=utf-8")
@ResponseBody
public Cat updateCat(@RequestBody Cat cat) {
return catService.updateCat(cat);
}

@RequestMapping(value = "/get/{id}", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
@ResponseBody
public Cat getCatById(@PathVariable(value = "id") String id) {
Expand All @@ -38,6 +44,7 @@ public List<Cat> getCatsByName(@PathVariable(value = "name") String name) {
return catService.getCatsByName(name);
}

//localhost:8080/cat/delete?id="2"
@RequestMapping(value = "/delete", method = RequestMethod.DELETE, produces = "application/json;charset=utf-8")
@ResponseBody
public Cat deleteCat(@RequestParam(value = "id") String id) {
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/io/khasang/rtrail/dao/BasicDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,6 @@ public interface BasicDao<T> {
* @return deleted entityForDelete
*/
T delete(T entityForDelete);

T update(T cat);
}
6 changes: 6 additions & 0 deletions src/main/java/io/khasang/rtrail/dao/impl/BasicDaoImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@ public List<T> getList() {
return getSessionFactory().createQuery(criteriaQuery).list();
}

@Override
public T update(T cat) {
getSessionFactory().update(cat);
return cat;
}

@Override
public T delete(T entityForDelete) {
getSessionFactory().delete(entityForDelete);
Expand Down
12 changes: 12 additions & 0 deletions src/main/java/io/khasang/rtrail/entity/Cat.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package io.khasang.rtrail.entity;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table(name = "cats")
Expand All @@ -12,6 +14,16 @@ public class Cat {
private String name;
@Column(name = "descr")
private String description;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
private List<CatWoman> catWomanList = new ArrayList<>();

public List<CatWoman> getCatWomanList() {
return catWomanList;
}

public void setCatWomanList(List<CatWoman> catWomanList) {
this.catWomanList = catWomanList;
}

public String getName() {
return name;
Expand Down
29 changes: 29 additions & 0 deletions src/main/java/io/khasang/rtrail/entity/CatWoman.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package io.khasang.rtrail.entity;

import javax.persistence.*;

@Entity
@Table(name = "cat_woman")
public class CatWoman {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Long getId() {

return id;
}

public void setId(Long id) {
this.id = id;
}
}
2 changes: 2 additions & 0 deletions src/main/java/io/khasang/rtrail/service/CatService.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,6 @@ public interface CatService {
* @return cats by name
*/
List<Cat> getCatsByName(String name);

Cat updateCat(Cat cat);
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ public List<Cat> getAllCats() {
return catDao.getList();
}

@Override
public Cat updateCat(Cat cat) {
return catDao.update(cat);
}

@Override
public List<Cat> getCatsByName(String name) {
return catDao.getByName(name);
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/hibernate.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ hibernate.password=root
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.hbm2ddl.auto=update
hibernate.hbm2ddl.auto=create
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@

import io.khasang.rtrail.dao.CatDao;
import io.khasang.rtrail.entity.Cat;
import io.khasang.rtrail.entity.CatWoman;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;
import java.util.List;

import static org.junit.Assert.assertEquals;
Expand All @@ -18,6 +21,8 @@ public class CatControllerIntegrationTest {

private final static String ROOT = "http://localhost:8080/cat";
private final static String ADD = "/add";
private final static String UPDATE = "/update";
private final static String DELETE = "/delete";
private final static String ALL = "/all";
private final static String GET_BY_ID = "/get";

Expand Down Expand Up @@ -48,6 +53,51 @@ public void checkAddCatAndGet() {

Cat recievedCat = responseEntity.getBody();
assertNotNull(recievedCat);

deleteCat(cat.getId());

ResponseEntity<Cat> responseEntity2 = template.exchange(
ROOT + GET_BY_ID + "/{id}",
HttpMethod.GET,
null,
Cat.class,
cat.getId()
);
assertEquals("OK", responseEntity2.getStatusCode().getReasonPhrase());
}

@Test
public void checkUpdate() {
Cat cat = createCat();

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);

cat.setName("New Name");

HttpEntity<Cat> httpEntity = new HttpEntity<>(cat, headers);
RestTemplate template = new RestTemplate();

Cat updatedCat = template.exchange(
ROOT + UPDATE,
HttpMethod.PUT,
httpEntity,
Cat.class
).getBody();

ResponseEntity<Cat> responseEntity = template.exchange(
ROOT + GET_BY_ID + "/{id}",
HttpMethod.GET,
null,
Cat.class,
updatedCat.getId()
);

assertEquals("OK", responseEntity.getStatusCode().getReasonPhrase());

Cat receivedCat = responseEntity.getBody();
assertNotNull(receivedCat);
assertEquals("New Name", receivedCat.getName());
}

@Test
Expand Down Expand Up @@ -98,6 +148,32 @@ private Cat prefillCat(String name) {
cat.setName(name);
cat.setDescription("hungry");

CatWoman catWoman1 = new CatWoman();
CatWoman catWoman2 = new CatWoman();

catWoman1.setName("Riska");
catWoman2.setName("Murka");

List<CatWoman> catWomanList = new ArrayList<>();
catWomanList.add(catWoman1);
catWomanList.add(catWoman2);

cat.setCatWomanList(catWomanList);

return cat;
}

private void deleteCat(Long id){
RestTemplate template = new RestTemplate();
ResponseEntity<Cat> responseEntity = template.exchange(
ROOT + DELETE + "?id={id}",
HttpMethod.DELETE,
null,
Cat.class,
id
);

Assert.assertNotNull(responseEntity.getBody());

}
}