From ab99af576b67abc45d73dd16bcffa67df893c03a Mon Sep 17 00:00:00 2001 From: NicholasWolak Date: Tue, 10 Aug 2021 13:58:09 -0400 Subject: [PATCH 1/7] Finished sql quiries, dont mind the extra classes, was trying things out --- .../io/zipcoder/persistenceapp/MovieRepo.java | 9 +++ .../zipcoder/persistenceapp/MovieService.java | 51 ++++++++++++ .../io/zipcoder/persistenceapp/Movies.java | 79 +++++++++++++++++++ src/main/resources/application-h2.properties | 7 +- src/main/resources/script.sql | 23 ++++++ 5 files changed, 167 insertions(+), 2 deletions(-) create mode 100644 src/main/java/io/zipcoder/persistenceapp/MovieRepo.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/MovieService.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/Movies.java create mode 100644 src/main/resources/script.sql diff --git a/src/main/java/io/zipcoder/persistenceapp/MovieRepo.java b/src/main/java/io/zipcoder/persistenceapp/MovieRepo.java new file mode 100644 index 0000000..18a6fef --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/MovieRepo.java @@ -0,0 +1,9 @@ +package io.zipcoder.persistenceapp; + + +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface MovieRepo extends CrudRepository { +} diff --git a/src/main/java/io/zipcoder/persistenceapp/MovieService.java b/src/main/java/io/zipcoder/persistenceapp/MovieService.java new file mode 100644 index 0000000..657fc40 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/MovieService.java @@ -0,0 +1,51 @@ +package io.zipcoder.persistenceapp; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class MovieService { + + @Autowired + private MovieRepo repo; + + public Movies create(Movies movie) { + return repo.save(movie); + } + + public Movies read(Integer id) { + return repo.findOne(id); + } + + public List readAll() { + Iterable moviesIterable = repo.findAll(); + List result = new ArrayList<>(); + moviesIterable.forEach(result::add); + return result; + } + + public Movies update(Integer id, Movies movieToUpdate) { + Movies movieInDb = read(id); + movieInDb.setGenre(movieToUpdate.getGenre()); + movieInDb.setImdbScore(movieToUpdate.getImdbScore()); + movieInDb.setRating(movieToUpdate.getRating()); + movieInDb.setRuntime(movieToUpdate.getRuntime()); + movieInDb.setTitle(movieToUpdate.getTitle()); + movieInDb = repo.save(movieInDb); + return movieInDb; + } + + public Movies delete(Integer id) { + Movies movie = read(id); + repo.delete(movie); + return movie; + } + + public Movies delete(Movies movie) { + return delete(movie.getId()); + } +} diff --git a/src/main/java/io/zipcoder/persistenceapp/Movies.java b/src/main/java/io/zipcoder/persistenceapp/Movies.java new file mode 100644 index 0000000..adc461b --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/Movies.java @@ -0,0 +1,79 @@ +package io.zipcoder.persistenceapp; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class Movies { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Integer id; + + private String title; + private int runtime; + private String genre; + private int imdbScore; + private String rating; + + public Movies() { + } + + public Movies(Integer id, String title, int runtime, String genre, int imdbScore, String rating) { + this.id = id; + this.title = title; + this.runtime = runtime; + this.genre = genre; + this.imdbScore = imdbScore; + this.rating = rating; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public int getRuntime() { + return runtime; + } + + public void setRuntime(int runtime) { + this.runtime = runtime; + } + + public String getGenre() { + return genre; + } + + public void setGenre(String genre) { + this.genre = genre; + } + + public int getImdbScore() { + return imdbScore; + } + + public void setImdbScore(int imdbScore) { + this.imdbScore = imdbScore; + } + + public String getRating() { + return rating; + } + + public void setRating(String rating) { + this.rating = rating; + } +} diff --git a/src/main/resources/application-h2.properties b/src/main/resources/application-h2.properties index 74765cc..fb5afeb 100644 --- a/src/main/resources/application-h2.properties +++ b/src/main/resources/application-h2.properties @@ -1,4 +1,7 @@ -spring.datasource.url=jdbc:h2:mem:testdb;Mode=Oracle spring.datasource.platform=h2 spring.jpa.hibernate.ddl-auto=none -spring.datasource.continue-on-error=true \ No newline at end of file +spring.datasource.continue-on-error=true +server.port=8080 +spring.datasource.url=jdbc:h2:mem:testdb +spring.h2.console.enabled=true +spring.h2.console.view=/h2-console diff --git a/src/main/resources/script.sql b/src/main/resources/script.sql new file mode 100644 index 0000000..876d203 --- /dev/null +++ b/src/main/resources/script.sql @@ -0,0 +1,23 @@ +INSERT INTO movies (title, runtime, genre, imdb_score, rating) VALUES ('Howard the Duck', 110, 'Sci-Fi', 4.6, 'PG'); +INSERT INTO movies (title, runtime, genre, imdb_score, rating) VALUES ('Lavalantula', 83, 'Horror', 4.7, 'TV-14'); +INSERT INTO movies (title, runtime, genre, imdb_score, rating) VALUES ('Starship Troopers', 129, 'Sci-Fi', 7.2, 'PG-13'); +INSERT INTO movies (title, runtime, genre, imdb_score, rating) VALUES ('Waltz With Bashir', 90, 'Documentary', 8.0, 'R'); +INSERT INTO movies (title, runtime, genre, imdb_score, rating) VALUES ('Spaceballs', 96, 'Comedy', 7.1, 'PG'); +INSERT INTO movies (title, runtime, genre, imdb_score, rating) VALUES ('Monster Inc.', 92, 'Animation', 8.1, 'G'); +INSERT INTO movies (title, runtime, genre, imdb_score, rating) VALUES ('Pineapple Express', 120, 'Documentary', 9.9, 'R'); +INSERT INTO movies (title, runtime, genre, imdb_score, rating) VALUES ('Wallys World', 15, 'Horror', 3.0, 'PG-13'); + +SELECT * FROM movies; +SELECT * FROM movies WHERE genre = 'Sci-Fi'; +SELECT * FROM movies WHERE imdb_score >= 6.5; +SELECT * FROM movies WHERE runtime < 100 AND rating IN ('G', 'PG'); + +SELECT AVG(runtime) as runtime FROM movies WHERE imdb_score < 7.5 GROUP BY GENRE; + +UPDATE movies SET rating = 'R' WHERE title = 'Starship Troopers'; +SELECT id, rating FROM movies WHERE genre IN ('Documentary', 'Horror'); +SELECT genre, AVG(imdb_score) AS Average, MIN(imdb_score) AS Min, MAX(imdb_score) AS Max FROM movies GROUP BY genre; +SELECT COUNT(rating) FROM movies HAVING COUNT(rating) > 1; +DELETE * FROM movies WHERE rating = 'R'; + + From fd9719e89cf1a89e907404555a45b12014f9a594 Mon Sep 17 00:00:00 2001 From: NicholasWolak Date: Tue, 10 Aug 2021 15:10:34 -0400 Subject: [PATCH 2/7] most recent --- .../io/zipcoder/persistenceapp/MovieRepo.java | 9 --- .../zipcoder/persistenceapp/MovieService.java | 51 ------------ .../io/zipcoder/persistenceapp/Movies.java | 79 ------------------- .../persistenceapp/NotFoundException.java | 8 ++ .../io/zipcoder/persistenceapp/Person.java | 75 ++++++++++++++++++ .../persistenceapp/PersonController.java | 49 ++++++++++++ .../zipcoder/persistenceapp/PersonRepo.java | 6 ++ .../persistenceapp/PersonService.java | 66 ++++++++++++++++ 8 files changed, 204 insertions(+), 139 deletions(-) delete mode 100644 src/main/java/io/zipcoder/persistenceapp/MovieRepo.java delete mode 100644 src/main/java/io/zipcoder/persistenceapp/MovieService.java delete mode 100644 src/main/java/io/zipcoder/persistenceapp/Movies.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/NotFoundException.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/Person.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/PersonController.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/PersonRepo.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/PersonService.java diff --git a/src/main/java/io/zipcoder/persistenceapp/MovieRepo.java b/src/main/java/io/zipcoder/persistenceapp/MovieRepo.java deleted file mode 100644 index 18a6fef..0000000 --- a/src/main/java/io/zipcoder/persistenceapp/MovieRepo.java +++ /dev/null @@ -1,9 +0,0 @@ -package io.zipcoder.persistenceapp; - - -import org.springframework.data.repository.CrudRepository; -import org.springframework.stereotype.Repository; - -@Repository -public interface MovieRepo extends CrudRepository { -} diff --git a/src/main/java/io/zipcoder/persistenceapp/MovieService.java b/src/main/java/io/zipcoder/persistenceapp/MovieService.java deleted file mode 100644 index 657fc40..0000000 --- a/src/main/java/io/zipcoder/persistenceapp/MovieService.java +++ /dev/null @@ -1,51 +0,0 @@ -package io.zipcoder.persistenceapp; - - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; - -@Service -public class MovieService { - - @Autowired - private MovieRepo repo; - - public Movies create(Movies movie) { - return repo.save(movie); - } - - public Movies read(Integer id) { - return repo.findOne(id); - } - - public List readAll() { - Iterable moviesIterable = repo.findAll(); - List result = new ArrayList<>(); - moviesIterable.forEach(result::add); - return result; - } - - public Movies update(Integer id, Movies movieToUpdate) { - Movies movieInDb = read(id); - movieInDb.setGenre(movieToUpdate.getGenre()); - movieInDb.setImdbScore(movieToUpdate.getImdbScore()); - movieInDb.setRating(movieToUpdate.getRating()); - movieInDb.setRuntime(movieToUpdate.getRuntime()); - movieInDb.setTitle(movieToUpdate.getTitle()); - movieInDb = repo.save(movieInDb); - return movieInDb; - } - - public Movies delete(Integer id) { - Movies movie = read(id); - repo.delete(movie); - return movie; - } - - public Movies delete(Movies movie) { - return delete(movie.getId()); - } -} diff --git a/src/main/java/io/zipcoder/persistenceapp/Movies.java b/src/main/java/io/zipcoder/persistenceapp/Movies.java deleted file mode 100644 index adc461b..0000000 --- a/src/main/java/io/zipcoder/persistenceapp/Movies.java +++ /dev/null @@ -1,79 +0,0 @@ -package io.zipcoder.persistenceapp; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; - -@Entity -public class Movies { - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - private Integer id; - - private String title; - private int runtime; - private String genre; - private int imdbScore; - private String rating; - - public Movies() { - } - - public Movies(Integer id, String title, int runtime, String genre, int imdbScore, String rating) { - this.id = id; - this.title = title; - this.runtime = runtime; - this.genre = genre; - this.imdbScore = imdbScore; - this.rating = rating; - } - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public int getRuntime() { - return runtime; - } - - public void setRuntime(int runtime) { - this.runtime = runtime; - } - - public String getGenre() { - return genre; - } - - public void setGenre(String genre) { - this.genre = genre; - } - - public int getImdbScore() { - return imdbScore; - } - - public void setImdbScore(int imdbScore) { - this.imdbScore = imdbScore; - } - - public String getRating() { - return rating; - } - - public void setRating(String rating) { - this.rating = rating; - } -} diff --git a/src/main/java/io/zipcoder/persistenceapp/NotFoundException.java b/src/main/java/io/zipcoder/persistenceapp/NotFoundException.java new file mode 100644 index 0000000..45333e1 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/NotFoundException.java @@ -0,0 +1,8 @@ +package io.zipcoder.persistenceapp; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "Person not found") +public class NotFoundException extends RuntimeException { +} diff --git a/src/main/java/io/zipcoder/persistenceapp/Person.java b/src/main/java/io/zipcoder/persistenceapp/Person.java new file mode 100644 index 0000000..8ca32ba --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/Person.java @@ -0,0 +1,75 @@ +package io.zipcoder.persistenceapp; + +import javax.persistence.Entity; +import java.util.Date; + + +public class Person { + + private Long id; + private String firstName; + private String lastName; + private String mobile; + private Date birthDate; + private int home_id; + + public Person() { + } + + public Person(Long id, String firstName, String lastName, String mobile, Date birthDate, int home_id) { + this.id = id; + this.firstName = firstName; + this.lastName = lastName; + this.mobile = mobile; + this.birthDate = birthDate; + this.home_id = home_id; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public Date getBirthDate() { + return birthDate; + } + + public void setBirthDate(Date birthDate) { + this.birthDate = birthDate; + } + + public int getHome_id() { + return home_id; + } + + public void setHome_id(int home_id) { + this.home_id = home_id; + } +} diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonController.java b/src/main/java/io/zipcoder/persistenceapp/PersonController.java new file mode 100644 index 0000000..ffb8339 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/PersonController.java @@ -0,0 +1,49 @@ +package io.zipcoder.persistenceapp; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver; + +import javax.net.ssl.HttpsURLConnection; +import java.util.List; + +@RestController +@RequestMapping (value = "/person-controller") +public class PersonController { + + @Autowired + private PersonService service; + + @RequestMapping(method = RequestMethod.POST, value = "/people") + public ResponseEntity create(@RequestBody Person person) { + return new ResponseEntity<>(service.create(person), HttpStatus.CREATED); + } + + @RequestMapping(method = RequestMethod.PUT, value = "/people/{id}") + public ResponseEntity update(@RequestBody Long id, Person person) { + return new ResponseEntity<>(service.update(id, person), HttpStatus.OK); + } + + @RequestMapping(method = RequestMethod.GET, value = "/people/{id}") + public ResponseEntity getPerson(@RequestBody Long id) { + return new ResponseEntity<>(service.read(id), HttpStatus.OK); + } + + @RequestMapping(method = RequestMethod.DELETE, value = "/people/{id}") + public ResponseEntity delete(@RequestBody Long id) { + return new ResponseEntity<>(service.delete(id), HttpStatus.ACCEPTED); + } + + @RequestMapping(method = RequestMethod.GET, value = "/people") + public ResponseEntity> readAll() { + return new ResponseEntity<>(service.readAll(), HttpStatus.OK); + } + + @RequestMapping(method = RequestMethod.GET, value = "/people/reverselookup/{mobileNumber}") + public ResponseEntity findByMobile(@RequestBody Integer phoneNumber) { + return null; + } +} diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonRepo.java b/src/main/java/io/zipcoder/persistenceapp/PersonRepo.java new file mode 100644 index 0000000..44046ff --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/PersonRepo.java @@ -0,0 +1,6 @@ +package io.zipcoder.persistenceapp; + +import org.springframework.data.repository.CrudRepository; + +public interface PersonRepo extends CrudRepository { +} diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonService.java b/src/main/java/io/zipcoder/persistenceapp/PersonService.java new file mode 100644 index 0000000..0eeaf4e --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/PersonService.java @@ -0,0 +1,66 @@ +package io.zipcoder.persistenceapp; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +public class PersonService { + + @Autowired + private PersonRepo repo; + + public Person create(Person person) { + return repo.save(person); + } + + public Person read(Long id) { + return repo.findOne(id); + } + + public List findAllByNames(String firstName, String lastName) { + List personList = new ArrayList<>(); + readAll().forEach(person -> { + if (person.getFirstName().equals(firstName) || person.getLastName().equals(lastName)) + personList.add(person); + }); + return personList; + } + + public List readAll() { + Iterable personIterable = repo.findAll(); + List personList = new ArrayList<>(); + personIterable.forEach(personList::add); + return personList; + } + + public Person update(Long id, Person newPersonData) { + Person personInDb = read(id); + personInDb.setFirstName(newPersonData.getFirstName()); + personInDb.setLastName(newPersonData.getLastName()); + personInDb.setBirthDate(newPersonData.getBirthDate()); + personInDb.setMobile(newPersonData.getMobile()); + personInDb.setHome_id(newPersonData.getHome_id()); + personInDb = repo.save(personInDb); + return personInDb; + } + + public Person delete(Long id) { + Person personInDb = read(id); + repo.delete(personInDb); + return personInDb; + } + + public Person delete(Person person) { + return delete(person.getId()); + } + + public List delete(List listToDelete) { + listToDelete.forEach(repo::delete); + return listToDelete; + } +} From 1730759f10fc7e562d2acc01cde886aed2d7d3a5 Mon Sep 17 00:00:00 2001 From: NicholasWolak Date: Tue, 10 Aug 2021 15:51:56 -0400 Subject: [PATCH 3/7] something broke --- .../zipcoder/persistenceapp/PersonConfig.java | 23 ++++++++++++ .../persistenceapp/PersonController.java | 36 +++++++++++++++---- .../zipcoder/persistenceapp/PersonRepo.java | 2 ++ .../persistenceapp/PersonService.java | 22 ++++++++++-- 4 files changed, 74 insertions(+), 9 deletions(-) create mode 100644 src/main/java/io/zipcoder/persistenceapp/PersonConfig.java diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonConfig.java b/src/main/java/io/zipcoder/persistenceapp/PersonConfig.java new file mode 100644 index 0000000..e7dfd2b --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/PersonConfig.java @@ -0,0 +1,23 @@ +package io.zipcoder.persistenceapp; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; + +import javax.annotation.PostConstruct; + +@Configuration +public class PersonConfig { + + @Autowired + private PersonService service; + + @PostConstruct + public void setup() { + service.create(new Person()); + service.create(new Person()); + service.create(new Person()); + service.create(new Person()); + service.create(new Person()); + } +} diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonController.java b/src/main/java/io/zipcoder/persistenceapp/PersonController.java index ffb8339..77c352e 100644 --- a/src/main/java/io/zipcoder/persistenceapp/PersonController.java +++ b/src/main/java/io/zipcoder/persistenceapp/PersonController.java @@ -15,25 +15,30 @@ public class PersonController { @Autowired - private PersonService service; + PersonService service; @RequestMapping(method = RequestMethod.POST, value = "/people") - public ResponseEntity create(@RequestBody Person person) { + public ResponseEntity create( + @RequestBody Person person) { return new ResponseEntity<>(service.create(person), HttpStatus.CREATED); } @RequestMapping(method = RequestMethod.PUT, value = "/people/{id}") - public ResponseEntity update(@RequestBody Long id, Person person) { + public ResponseEntity update( + @PathVariable Long id, + @RequestBody Person person) { return new ResponseEntity<>(service.update(id, person), HttpStatus.OK); } @RequestMapping(method = RequestMethod.GET, value = "/people/{id}") - public ResponseEntity getPerson(@RequestBody Long id) { + public ResponseEntity getPerson( + @PathVariable Long id) { return new ResponseEntity<>(service.read(id), HttpStatus.OK); } @RequestMapping(method = RequestMethod.DELETE, value = "/people/{id}") - public ResponseEntity delete(@RequestBody Long id) { + public ResponseEntity delete( + @PathVariable Long id) { return new ResponseEntity<>(service.delete(id), HttpStatus.ACCEPTED); } @@ -43,7 +48,24 @@ public ResponseEntity> readAll() { } @RequestMapping(method = RequestMethod.GET, value = "/people/reverselookup/{mobileNumber}") - public ResponseEntity findByMobile(@RequestBody Integer phoneNumber) { - return null; + public ResponseEntity> findByMobile( + @PathVariable String phoneNumber) { + return new ResponseEntity<>(service.findByMobile(phoneNumber), HttpStatus.OK); } + + @RequestMapping(method = RequestMethod.GET, value = "/people/surname/{lastName}") + public ResponseEntity> findByLastName( + @PathVariable String lastName) { + return new ResponseEntity<>(service.findAllByLastName(lastName), HttpStatus.OK); + } + +// @RequestMapping(method = RequestMethod.GET, value = "/people/surname/{firstName}") +// public ResponseEntity> findByFirstName(@PathVariable String firstName) { +// return new ResponseEntity<>(service.findAllByLastName(firstName), HttpStatus.OK); +// } + +// @RequestMapping(method = RequestMethod.GET, value = "/people/firstname/stats") +// public ResponseEntity> firstNameFrequency() { +// +// } } diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonRepo.java b/src/main/java/io/zipcoder/persistenceapp/PersonRepo.java index 44046ff..2313b4b 100644 --- a/src/main/java/io/zipcoder/persistenceapp/PersonRepo.java +++ b/src/main/java/io/zipcoder/persistenceapp/PersonRepo.java @@ -1,6 +1,8 @@ package io.zipcoder.persistenceapp; import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; +@Repository public interface PersonRepo extends CrudRepository { } diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonService.java b/src/main/java/io/zipcoder/persistenceapp/PersonService.java index 0eeaf4e..0eaee3f 100644 --- a/src/main/java/io/zipcoder/persistenceapp/PersonService.java +++ b/src/main/java/io/zipcoder/persistenceapp/PersonService.java @@ -22,15 +22,33 @@ public Person read(Long id) { return repo.findOne(id); } - public List findAllByNames(String firstName, String lastName) { + public List findAllByNames(String firstName) { List personList = new ArrayList<>(); readAll().forEach(person -> { - if (person.getFirstName().equals(firstName) || person.getLastName().equals(lastName)) + if (person.getFirstName().equals(firstName)) personList.add(person); }); return personList; } + public List findAllByLastName(String lastName) { + List personList = new ArrayList<>(); + readAll().forEach(person -> { + if (person.getLastName().equals(lastName)) + personList.add(person); + }); + return personList; + } + + public List findByMobile(String mobile) { + List result = new ArrayList<>(); + readAll().forEach(person -> { + if(person.getMobile().equals(mobile)) + result.add(person); + }); + return result; + } + public List readAll() { Iterable personIterable = repo.findAll(); List personList = new ArrayList<>(); From 5187d0cdd066b473911c2960e2547f08284fc87c Mon Sep 17 00:00:00 2001 From: NicholasWolak Date: Tue, 10 Aug 2021 16:25:59 -0400 Subject: [PATCH 4/7] g --- src/main/java/io/zipcoder/persistenceapp/Person.java | 9 ++++++++- .../io/zipcoder/persistenceapp/PersonController.java | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/zipcoder/persistenceapp/Person.java b/src/main/java/io/zipcoder/persistenceapp/Person.java index 8ca32ba..0baa62d 100644 --- a/src/main/java/io/zipcoder/persistenceapp/Person.java +++ b/src/main/java/io/zipcoder/persistenceapp/Person.java @@ -1,11 +1,18 @@ package io.zipcoder.persistenceapp; +import org.springframework.context.annotation.Bean; + import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; import java.util.Date; - +@Entity public class Person { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String firstName; private String lastName; diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonController.java b/src/main/java/io/zipcoder/persistenceapp/PersonController.java index 77c352e..9f1c36d 100644 --- a/src/main/java/io/zipcoder/persistenceapp/PersonController.java +++ b/src/main/java/io/zipcoder/persistenceapp/PersonController.java @@ -15,7 +15,7 @@ public class PersonController { @Autowired - PersonService service; + private PersonService service; @RequestMapping(method = RequestMethod.POST, value = "/people") public ResponseEntity create( From c7ddc14bead4fc46a609f878c2a89c241f4d3160 Mon Sep 17 00:00:00 2001 From: NicholasWolak Date: Wed, 11 Aug 2021 17:25:00 -0400 Subject: [PATCH 5/7] push it real good --- pom.xml | 14 +++-- .../io/zipcoder/persistenceapp/Person.java | 12 +++-- .../zipcoder/persistenceapp/PersonConfig.java | 23 -------- .../persistenceapp/PersonController.java | 4 +- src/main/resources/application.properties | 1 - src/main/resources/postman_collection.json | 54 +++++++++++++++++++ 6 files changed, 74 insertions(+), 34 deletions(-) create mode 100644 src/main/resources/postman_collection.json diff --git a/pom.xml b/pom.xml index 274f418..e2e29a0 100644 --- a/pom.xml +++ b/pom.xml @@ -29,15 +29,21 @@ org.springframework.boot spring-boot-starter-data-jpa + org.springframework.boot - spring-boot-starter-jdbc + spring-boot-starter-web + - org.springframework.boot - spring-boot-starter-web + org.hibernate + hibernate-core + + + javax.xml.bind + jaxb-api + 2.3.0 - com.h2database h2 diff --git a/src/main/java/io/zipcoder/persistenceapp/Person.java b/src/main/java/io/zipcoder/persistenceapp/Person.java index 0baa62d..a025153 100644 --- a/src/main/java/io/zipcoder/persistenceapp/Person.java +++ b/src/main/java/io/zipcoder/persistenceapp/Person.java @@ -2,10 +2,7 @@ import org.springframework.context.annotation.Bean; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; +import javax.persistence.*; import java.util.Date; @Entity @@ -13,11 +10,18 @@ public class Person { @Id @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "id") private Long id; + @Column(name = "firstName") private String firstName; + @Column(name = "lastName") private String lastName; + @Column(name = "mobile") private String mobile; + @Temporal(TemporalType.DATE) + @Column(name = "birthDate") private Date birthDate; + @Column(name = "home_id") private int home_id; public Person() { diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonConfig.java b/src/main/java/io/zipcoder/persistenceapp/PersonConfig.java index e7dfd2b..e69de29 100644 --- a/src/main/java/io/zipcoder/persistenceapp/PersonConfig.java +++ b/src/main/java/io/zipcoder/persistenceapp/PersonConfig.java @@ -1,23 +0,0 @@ -package io.zipcoder.persistenceapp; - - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; - -import javax.annotation.PostConstruct; - -@Configuration -public class PersonConfig { - - @Autowired - private PersonService service; - - @PostConstruct - public void setup() { - service.create(new Person()); - service.create(new Person()); - service.create(new Person()); - service.create(new Person()); - service.create(new Person()); - } -} diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonController.java b/src/main/java/io/zipcoder/persistenceapp/PersonController.java index 9f1c36d..f18de44 100644 --- a/src/main/java/io/zipcoder/persistenceapp/PersonController.java +++ b/src/main/java/io/zipcoder/persistenceapp/PersonController.java @@ -17,7 +17,7 @@ public class PersonController { @Autowired private PersonService service; - @RequestMapping(method = RequestMethod.POST, value = "/people") + @RequestMapping(method = RequestMethod.POST, value = "/create") public ResponseEntity create( @RequestBody Person person) { return new ResponseEntity<>(service.create(person), HttpStatus.CREATED); @@ -42,7 +42,7 @@ public ResponseEntity delete( return new ResponseEntity<>(service.delete(id), HttpStatus.ACCEPTED); } - @RequestMapping(method = RequestMethod.GET, value = "/people") + @RequestMapping(method = RequestMethod.GET, value = "/read") public ResponseEntity> readAll() { return new ResponseEntity<>(service.readAll(), HttpStatus.OK); } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 7d4dc6f..223693f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,3 +1,2 @@ spring.profiles.active=h2 logging.level.org.springframework.boot.context.embedded=INFO -spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect \ No newline at end of file diff --git a/src/main/resources/postman_collection.json b/src/main/resources/postman_collection.json new file mode 100644 index 0000000..3c5f1fb --- /dev/null +++ b/src/main/resources/postman_collection.json @@ -0,0 +1,54 @@ +{ + "info": { + "_postman_id": "1fd82683-c8da-40e7-8a19-5823fb30a4c3", + "name": "my-first-postman-collection", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "create", + "request": { + "method": "POST", + "header": [], + "url": null + }, + "response": [] + }, + { + "name": "read", + "request": { + "method": "GET", + "header": [], + "url": null + }, + "response": [] + }, + { + "name": "readAll", + "request": { + "method": "GET", + "header": [], + "url": null + }, + "response": [] + }, + { + "name": "update", + "request": { + "method": "GET", + "header": [], + "url": null + }, + "response": [] + }, + { + "name": "delete", + "request": { + "method": "GET", + "header": [], + "url": null + }, + "response": [] + } + ] +} \ No newline at end of file From 1e6970a8e1c7e858ee05bdefd2c52766ed8b2be1 Mon Sep 17 00:00:00 2001 From: NicholasWolak Date: Thu, 12 Aug 2021 16:27:56 -0400 Subject: [PATCH 6/7] Added homes, researching JDBCTemplate implementation --- .../java/io/zipcoder/persistenceapp/Home.java | 47 +++++++++++ .../io/zipcoder/persistenceapp/HomeRepo.java | 9 ++ .../zipcoder/persistenceapp/HomeService.java | 84 +++++++++++++++++++ .../io/zipcoder/persistenceapp/Person.java | 30 +++---- .../persistenceapp/PersonService.java | 2 +- 5 files changed, 156 insertions(+), 16 deletions(-) create mode 100644 src/main/java/io/zipcoder/persistenceapp/Home.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/HomeRepo.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/HomeService.java diff --git a/src/main/java/io/zipcoder/persistenceapp/Home.java b/src/main/java/io/zipcoder/persistenceapp/Home.java new file mode 100644 index 0000000..811c2df --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/Home.java @@ -0,0 +1,47 @@ +package io.zipcoder.persistenceapp; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +@Entity +public class Home { + + @Id + private Long home_id; + private String address; + private String homeNumber; + + public Home() { + } + + public Home(Long home_id, String address, String homeNumber) { + this.home_id = home_id; + this.address = address; + this.homeNumber = homeNumber; + } + + public Long getHome_id() { + return home_id; + } + + public void setHome_id(Long home_id) { + this.home_id = home_id; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getHomeNumber() { + return homeNumber; + } + + public void setHomeNumber(String homeNumber) { + this.homeNumber = homeNumber; + } +} diff --git a/src/main/java/io/zipcoder/persistenceapp/HomeRepo.java b/src/main/java/io/zipcoder/persistenceapp/HomeRepo.java new file mode 100644 index 0000000..b1807d4 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/HomeRepo.java @@ -0,0 +1,9 @@ +package io.zipcoder.persistenceapp; + +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface HomeRepo extends CrudRepository { + +} diff --git a/src/main/java/io/zipcoder/persistenceapp/HomeService.java b/src/main/java/io/zipcoder/persistenceapp/HomeService.java new file mode 100644 index 0000000..2549e67 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/HomeService.java @@ -0,0 +1,84 @@ +package io.zipcoder.persistenceapp; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class HomeService { + + @Autowired + private HomeRepo repo; + @Autowired + private Person person; + + public Home create(Home home) { + return repo.save(home); + } + + public Home read(Long homeId) { + return repo.findOne(homeId); + } + + public List readAllHomes() { + Iterable homeIterable = repo.findAll(); + List homeList = new ArrayList<>(); + homeIterable.forEach(homeList::add); + return homeList; + } + + public List readByAddress(String address) { + List homeList = new ArrayList<>(); + readAllHomes().forEach(h -> { + if(h.getAddress().equals(address)) + homeList.add(h); + }); + return homeList; + } + + public List readByHomeNumber(String homeNumber) { + List homeList = new ArrayList<>(); + readAllHomes().forEach(h -> { + if(h.getAddress().equals(homeNumber)) + homeList.add(h); + }); + return homeList; + } + + // not too confident about this one + public List findHomeByPerson(Long id) { + List homeList = new ArrayList<>(); + readAllHomes().forEach(h -> { + if (person.getHome_id().equals(id)) + homeList.add(h); + }); + return homeList; + } + + public Home update(Long homeId, Home theNewHome) { + Home homeInDb = read(homeId); + homeInDb.setAddress(theNewHome.getAddress()); + homeInDb.setHomeNumber(theNewHome.getHomeNumber()); + homeInDb = repo.save(homeInDb); + return homeInDb; + } + + public Home delete(Long id) { + Home homeInDb = read(id); + repo.delete(homeInDb); + return homeInDb; + } + + public Home delete(Home home) { + return delete(home.getHome_id()); + } + + public List delete(List listToDelete) { + listToDelete.forEach(repo::delete); + return listToDelete; + } +} diff --git a/src/main/java/io/zipcoder/persistenceapp/Person.java b/src/main/java/io/zipcoder/persistenceapp/Person.java index a025153..f0d0cf4 100644 --- a/src/main/java/io/zipcoder/persistenceapp/Person.java +++ b/src/main/java/io/zipcoder/persistenceapp/Person.java @@ -18,21 +18,21 @@ public class Person { private String lastName; @Column(name = "mobile") private String mobile; - @Temporal(TemporalType.DATE) - @Column(name = "birthDate") - private Date birthDate; +// @Temporal(TemporalType.DATE) +// @Column(name = "birthDate") +// private Date birthDate; @Column(name = "home_id") - private int home_id; + private Long home_id; public Person() { } - public Person(Long id, String firstName, String lastName, String mobile, Date birthDate, int home_id) { + public Person(Long id, String firstName, String lastName, String mobile, Long home_id) { this.id = id; this.firstName = firstName; this.lastName = lastName; this.mobile = mobile; - this.birthDate = birthDate; +// this.birthDate = birthDate; this.home_id = home_id; } @@ -68,19 +68,19 @@ public void setMobile(String mobile) { this.mobile = mobile; } - public Date getBirthDate() { - return birthDate; - } - - public void setBirthDate(Date birthDate) { - this.birthDate = birthDate; - } +// public Date getBirthDate() { +// return birthDate; +// } +// +// public void setBirthDate(Date birthDate) { +// this.birthDate = birthDate; +// } - public int getHome_id() { + public Long getHome_id() { return home_id; } - public void setHome_id(int home_id) { + public void setHome_id(Long home_id) { this.home_id = home_id; } } diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonService.java b/src/main/java/io/zipcoder/persistenceapp/PersonService.java index 0eaee3f..c754d2c 100644 --- a/src/main/java/io/zipcoder/persistenceapp/PersonService.java +++ b/src/main/java/io/zipcoder/persistenceapp/PersonService.java @@ -60,7 +60,7 @@ public Person update(Long id, Person newPersonData) { Person personInDb = read(id); personInDb.setFirstName(newPersonData.getFirstName()); personInDb.setLastName(newPersonData.getLastName()); - personInDb.setBirthDate(newPersonData.getBirthDate()); +// personInDb.setBirthDate(newPersonData.getBirthDate()); personInDb.setMobile(newPersonData.getMobile()); personInDb.setHome_id(newPersonData.getHome_id()); personInDb = repo.save(personInDb); From bb743955cf5c030baa5fa8963744805edb919497 Mon Sep 17 00:00:00 2001 From: NicholasWolak Date: Fri, 13 Aug 2021 19:00:58 -0400 Subject: [PATCH 7/7] lab --- .../zipcoder/persistenceapp/HomeService.java | 20 ++++++++--------- .../zipcoder/persistenceapp/PersonConfig.java | 22 +++++++++++++++++++ .../persistenceapp/PersonController.java | 6 ++--- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/src/main/java/io/zipcoder/persistenceapp/HomeService.java b/src/main/java/io/zipcoder/persistenceapp/HomeService.java index 2549e67..84b8e65 100644 --- a/src/main/java/io/zipcoder/persistenceapp/HomeService.java +++ b/src/main/java/io/zipcoder/persistenceapp/HomeService.java @@ -13,8 +13,8 @@ public class HomeService { @Autowired private HomeRepo repo; - @Autowired - private Person person; +// @Autowired +// private Person person; public Home create(Home home) { return repo.save(home); @@ -50,14 +50,14 @@ public List readByHomeNumber(String homeNumber) { } // not too confident about this one - public List findHomeByPerson(Long id) { - List homeList = new ArrayList<>(); - readAllHomes().forEach(h -> { - if (person.getHome_id().equals(id)) - homeList.add(h); - }); - return homeList; - } +// public List findHomeByPerson(Long id) { +// List homeList = new ArrayList<>(); +// readAllHomes().forEach(h -> { +// if (person.getHome_id().equals(id)) +// homeList.add(h); +// }); +// return homeList; +// } public Home update(Long homeId, Home theNewHome) { Home homeInDb = read(homeId); diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonConfig.java b/src/main/java/io/zipcoder/persistenceapp/PersonConfig.java index e69de29..b44ee0a 100644 --- a/src/main/java/io/zipcoder/persistenceapp/PersonConfig.java +++ b/src/main/java/io/zipcoder/persistenceapp/PersonConfig.java @@ -0,0 +1,22 @@ +package io.zipcoder.persistenceapp; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; + +import javax.annotation.PostConstruct; + +@Configuration +public class PersonConfig { + + @Autowired + private PersonService service; + + @PostConstruct + public void setup() { + service.create(new Person(5L, "Josh", "Wilkins", "12435124", 12L)); + service.create(new Person(6L, "Raf", "Wilkins", "12435124", 12L)); + service.create(new Person(7L, "Vac", "Wilkins", "12435124", 12L)); + service.create(new Person(8L, "Ewda", "Wilkins", "12435124", 12L)); + service.create(new Person(9L, "Palsd", "Wilkins", "12435124", 12L)); + } +} diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonController.java b/src/main/java/io/zipcoder/persistenceapp/PersonController.java index f18de44..bb1b70b 100644 --- a/src/main/java/io/zipcoder/persistenceapp/PersonController.java +++ b/src/main/java/io/zipcoder/persistenceapp/PersonController.java @@ -23,20 +23,20 @@ public ResponseEntity create( return new ResponseEntity<>(service.create(person), HttpStatus.CREATED); } - @RequestMapping(method = RequestMethod.PUT, value = "/people/{id}") + @RequestMapping(method = RequestMethod.PUT, value = "/people/u/{id}") public ResponseEntity update( @PathVariable Long id, @RequestBody Person person) { return new ResponseEntity<>(service.update(id, person), HttpStatus.OK); } - @RequestMapping(method = RequestMethod.GET, value = "/people/{id}") + @RequestMapping(method = RequestMethod.GET, value = "/people/r/{id}") public ResponseEntity getPerson( @PathVariable Long id) { return new ResponseEntity<>(service.read(id), HttpStatus.OK); } - @RequestMapping(method = RequestMethod.DELETE, value = "/people/{id}") + @RequestMapping(method = RequestMethod.DELETE, value = "/people/d/{id}") public ResponseEntity delete( @PathVariable Long id) { return new ResponseEntity<>(service.delete(id), HttpStatus.ACCEPTED);