From bf96d0834dd282505b1c94a09c58554dd10fb2dd Mon Sep 17 00:00:00 2001 From: Keerthana Srinivasan Date: Sat, 18 Dec 2021 15:09:17 -0500 Subject: [PATCH] Completed Lab --- src/main/java/PersonConfig.java | 27 ++++++++++ .../io/zipcoder/crudapp/CRUDApplication.java | 2 +- src/main/java/io/zipcoder/crudapp/Person.java | 45 ++++++++++++++++ .../io/zipcoder/crudapp/PersonController.java | 49 +++++++++++++++++ .../io/zipcoder/crudapp/PersonRepository.java | 14 +++++ .../io/zipcoder/crudapp/PersonService.java | 53 +++++++++++++++++++ src/main/resources/application-h2.properties | 7 ++- src/main/resources/application.properties | 1 - 8 files changed, 195 insertions(+), 3 deletions(-) create mode 100644 src/main/java/PersonConfig.java create mode 100644 src/main/java/io/zipcoder/crudapp/Person.java create mode 100644 src/main/java/io/zipcoder/crudapp/PersonController.java create mode 100644 src/main/java/io/zipcoder/crudapp/PersonRepository.java create mode 100644 src/main/java/io/zipcoder/crudapp/PersonService.java diff --git a/src/main/java/PersonConfig.java b/src/main/java/PersonConfig.java new file mode 100644 index 0000000..f2f41ab --- /dev/null +++ b/src/main/java/PersonConfig.java @@ -0,0 +1,27 @@ + + +import javax.annotation.PostConstruct; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; + +import io.zipcoder.crudapp.Person; +import io.zipcoder.crudapp.PersonRepository; + +@Configuration +public class PersonConfig { + + private PersonRepository repository; + + + @Autowired + public PersonConfig(PersonRepository repository) { + this.repository = repository; + } + + @PostConstruct + public void setup() { + repository.save(new Person()); + } + +} diff --git a/src/main/java/io/zipcoder/crudapp/CRUDApplication.java b/src/main/java/io/zipcoder/crudapp/CRUDApplication.java index da9a9b5..f859735 100644 --- a/src/main/java/io/zipcoder/crudapp/CRUDApplication.java +++ b/src/main/java/io/zipcoder/crudapp/CRUDApplication.java @@ -16,7 +16,7 @@ public static void main(String[] args) { @Bean ServletRegistrationBean h2servletRegistration(){ ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet()); - registrationBean.addUrlMappings("/console/*"); + registrationBean.addUrlMappings("/h2-console/*"); return registrationBean; } } diff --git a/src/main/java/io/zipcoder/crudapp/Person.java b/src/main/java/io/zipcoder/crudapp/Person.java new file mode 100644 index 0000000..3b5e3b7 --- /dev/null +++ b/src/main/java/io/zipcoder/crudapp/Person.java @@ -0,0 +1,45 @@ +package io.zipcoder.crudapp; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + + + +@Entity +public class Person { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + private String firstName; + private String lastName; + + + + 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; + } + + +} diff --git a/src/main/java/io/zipcoder/crudapp/PersonController.java b/src/main/java/io/zipcoder/crudapp/PersonController.java new file mode 100644 index 0000000..554853e --- /dev/null +++ b/src/main/java/io/zipcoder/crudapp/PersonController.java @@ -0,0 +1,49 @@ +package io.zipcoder.crudapp; + + + +import org.springframework.beans.factory.annotation.Autowired; + +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; + + +import org.springframework.web.bind.annotation.PathVariable; + + +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +@Controller +@RequestMapping(value = "/person-controller") +public class PersonController { + + private PersonService service; + + @Autowired + public PersonController(PersonService service) { + this.service = service; + } + + @RequestMapping(value = "/create", method = RequestMethod.POST) + public ResponseEntity create(@RequestBody Person personRequestedToPersist) { + return service.create(personRequestedToPersist); + } + + @RequestMapping(value = "/read/{id}", method = RequestMethod.GET) + public ResponseEntity read(@PathVariable Long id) { + return service.read(id); + } + + @RequestMapping(value = "/update/{id}", method = RequestMethod.PUT) + public ResponseEntity update(@PathVariable Long id, @RequestBody Person newData) { + return service.update(id, newData); + } + + @RequestMapping(value = "/delete/{id}", method = RequestMethod.DELETE) + public ResponseEntity delete(@PathVariable Long id) { + return service.delete(id); + } + +} diff --git a/src/main/java/io/zipcoder/crudapp/PersonRepository.java b/src/main/java/io/zipcoder/crudapp/PersonRepository.java new file mode 100644 index 0000000..605edc6 --- /dev/null +++ b/src/main/java/io/zipcoder/crudapp/PersonRepository.java @@ -0,0 +1,14 @@ +package io.zipcoder.crudapp; + +import java.util.Optional; + +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface PersonRepository extends CrudRepository { + + + Optional findById(Long id); + +} diff --git a/src/main/java/io/zipcoder/crudapp/PersonService.java b/src/main/java/io/zipcoder/crudapp/PersonService.java new file mode 100644 index 0000000..156d4ac --- /dev/null +++ b/src/main/java/io/zipcoder/crudapp/PersonService.java @@ -0,0 +1,53 @@ +package io.zipcoder.crudapp; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +@Service +public class PersonService { + private PersonRepository repository; + + @Autowired + public PersonService(PersonRepository repository) { + this.repository = repository; + } + + public ResponseEntity create(Person personRequestedToPersist) { + Person personInDatabase = repository.save(personRequestedToPersist); + ResponseEntity responseEntity = new ResponseEntity<>(personInDatabase, HttpStatus.CREATED); + return responseEntity; + } + + public ResponseEntity read(Long id) { + Person personInDatabase = repository.findById(id).get(); + return new ResponseEntity<>(personInDatabase, HttpStatus.OK); + } + + public List readAll() { + Iterable allPeople = repository.findAll(); + List personList = new ArrayList<>(); + allPeople.forEach(personList::add); + return personList; + } + + public ResponseEntity update(Long id, Person newData) { + Person personInDatabase = repository.findById(id).get(); + String newFirstName = newData.getFirstName(); + String newLastName = newData.getLastName(); + personInDatabase.setFirstName(newFirstName); + personInDatabase.setLastName(newLastName); + personInDatabase = repository.save(personInDatabase); + return new ResponseEntity<>(personInDatabase, HttpStatus.OK); + } + public ResponseEntity delete(Long id) { + Person personToBeDeleted = repository.findById(id).get(); + repository.delete(id); + return new ResponseEntity<>(personToBeDeleted, HttpStatus.OK); + } + +} diff --git a/src/main/resources/application-h2.properties b/src/main/resources/application-h2.properties index 74765cc..363ab6e 100644 --- a/src/main/resources/application-h2.properties +++ b/src/main/resources/application-h2.properties @@ -1,4 +1,9 @@ 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 + +spring.h2.console.enabled=true +spring.h2.console.view=/h2-console +server.port=8080 + diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index dde67ef..6b7fa4f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,3 +1,2 @@ spring.profiles.active=h2 - spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect \ No newline at end of file