diff options
author | Santo Cariotti <santo@dcariotti.me> | 2022-01-24 19:31:36 +0100 |
---|---|---|
committer | Santo Cariotti <santo@dcariotti.me> | 2022-01-24 19:31:36 +0100 |
commit | d43e1f5f5c0d70ca1b0ed4eed4b5364bf53e5685 (patch) | |
tree | 5a290c97a688a1df682ecc148b914998748d27e8 /Year_3/TSDWL/SPRING/petshop/src | |
parent | 0a58e131ce0d96ecd60c4daf2c41821a625d689b (diff) |
add example in spring
Diffstat (limited to 'Year_3/TSDWL/SPRING/petshop/src')
11 files changed, 400 insertions, 0 deletions
diff --git a/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/Pet.java b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/Pet.java new file mode 100644 index 0000000..770c3ce --- /dev/null +++ b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/Pet.java @@ -0,0 +1,71 @@ +package it.dmi.tsdw.petshop; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + + +import org.hibernate.validator.constraints.Length; + +@Table(name = "pets") +@Entity +public class Pet { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column + @NotNull + @NotBlank + @Length(max=30) + private String name; + + @Column + private String born; + + @ManyToOne + @NotNull + private Race race; + + public Race getRace() { + return race; + } + + public void setRace(Race race) { + this.race = race; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getBorn() { + return born; + } + + public void setBorn(String born) { + this.born = born; + } + + public Pet() { + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } +}
\ No newline at end of file diff --git a/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/PetshopApplication.java b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/PetshopApplication.java new file mode 100644 index 0000000..83d038e --- /dev/null +++ b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/PetshopApplication.java @@ -0,0 +1,13 @@ +package it.dmi.tsdw.petshop; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class PetshopApplication { + + public static void main(String[] args) { + SpringApplication.run(PetshopApplication.class, args); + } + +} diff --git a/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/Race.java b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/Race.java new file mode 100644 index 0000000..4f08fe9 --- /dev/null +++ b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/Race.java @@ -0,0 +1,42 @@ +package it.dmi.tsdw.petshop; + + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Entity +public class Race { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column + @NotBlank + @NotNull + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Race() { + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } +}
\ No newline at end of file diff --git a/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/controllers/PetController.java b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/controllers/PetController.java new file mode 100644 index 0000000..f862a2c --- /dev/null +++ b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/controllers/PetController.java @@ -0,0 +1,71 @@ +package it.dmi.tsdw.petshop.controllers; + +import java.net.URI; +import java.net.URISyntaxException; +import java.util.List; +import java.util.Optional; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import it.dmi.tsdw.petshop.Pet; +import it.dmi.tsdw.petshop.services.PetService; + +@RestController +@RequestMapping("/api") +public class PetController { + + @Autowired + private PetService service; + + @GetMapping("/pets") + public ResponseEntity<List<Pet>> getAllPets() { + List<Pet> entityList = service.getAllPets(); + return ResponseEntity.ok(entityList); + } + + @GetMapping("/pets/{id}") + public ResponseEntity<Pet> getPet(@PathVariable long id) { + Optional<Pet> entity = service.getPet(id); + if(entity.isPresent()) + return ResponseEntity.ok(entity.get()); + else + return ResponseEntity.notFound().build(); + } + + @PostMapping("/pets") + public ResponseEntity<Pet> addPet(@Valid @RequestBody Pet e) throws URISyntaxException { + if (e.getId() != null) { + return ResponseEntity.badRequest().build(); + } + Pet entity = service.addPet(e); + return ResponseEntity.created(new URI("/api/resourcePath" + entity.getId())).body(entity); + } + + @PutMapping("/pets") + public ResponseEntity<Pet> updatePet(@Valid @RequestBody Pet e) { + if (e.getId() == null) + return ResponseEntity.notFound().build(); + Pet entity = service.updatePet(e); + return ResponseEntity.ok(entity); + } + + @DeleteMapping("/pets/{id}") + public ResponseEntity<Void> deletePet(@PathVariable long id) { + if (service.getPet(id).isEmpty()) + return ResponseEntity.notFound().build(); + + service.deletePet(id); + return ResponseEntity.ok().build(); + } +}
\ No newline at end of file diff --git a/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/controllers/RaceController.java b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/controllers/RaceController.java new file mode 100644 index 0000000..c2089ef --- /dev/null +++ b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/controllers/RaceController.java @@ -0,0 +1,71 @@ +package it.dmi.tsdw.petshop.controllers; + +import java.net.URI; +import java.net.URISyntaxException; +import java.util.List; +import java.util.Optional; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import it.dmi.tsdw.petshop.Race; +import it.dmi.tsdw.petshop.services.RaceService; + +@RestController +@RequestMapping("/api") +public class RaceController { + + @Autowired + private RaceService service; + + @GetMapping("/races") + public ResponseEntity<List<Race>> getAllRaces() { + List<Race> entityList = service.getAllRaces(); + return ResponseEntity.ok(entityList); + } + + @GetMapping("/races/{id}") + public ResponseEntity<Race> getRace(@PathVariable long id) { + Optional<Race> entity = service.getRace(id); + if(entity.isPresent()) + return ResponseEntity.ok(entity.get()); + else + return ResponseEntity.notFound().build(); + } + + @PostMapping("/races") + public ResponseEntity<Race> addRace(@Valid @RequestBody Race e) throws URISyntaxException { + if (e.getId() != null) { + return ResponseEntity.badRequest().build(); + } + Race entity = service.addRace(e); + return ResponseEntity.created(new URI("/api/races" + entity.getId())).body(entity); + } + + @PutMapping("/races") + public ResponseEntity<Race> updateRace(@Valid @RequestBody Race e) { + if (e.getId() == null) + return ResponseEntity.notFound().build(); + Race entity = service.updateRace(e); + return ResponseEntity.ok(entity); + } + + @DeleteMapping("/races/{id}") + public ResponseEntity<Void> deleteRace(@PathVariable long id) { + if (service.getRace(id).isEmpty()) + return ResponseEntity.notFound().build(); + + service.deleteRace(id); + return ResponseEntity.ok().build(); + } +}
\ No newline at end of file diff --git a/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/repositories/PetRepository.java b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/repositories/PetRepository.java new file mode 100644 index 0000000..145e47e --- /dev/null +++ b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/repositories/PetRepository.java @@ -0,0 +1,14 @@ +package it.dmi.tsdw.petshop.repositories; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import it.dmi.tsdw.petshop.Pet; +import it.dmi.tsdw.petshop.Race; + +@Repository +public interface PetRepository extends JpaRepository<Pet, Long>{ + public Race findByRaceId(Long race_id); + public Race findByRaceName(String name); + +} diff --git a/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/repositories/RaceRepository.java b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/repositories/RaceRepository.java new file mode 100644 index 0000000..a9f475a --- /dev/null +++ b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/repositories/RaceRepository.java @@ -0,0 +1,10 @@ +package it.dmi.tsdw.petshop.repositories; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import it.dmi.tsdw.petshop.Race; + +@Repository +public interface RaceRepository extends JpaRepository<Race, Long>{ +}
\ No newline at end of file diff --git a/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/services/PetService.java b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/services/PetService.java new file mode 100644 index 0000000..6dcd07b --- /dev/null +++ b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/services/PetService.java @@ -0,0 +1,44 @@ +package it.dmi.tsdw.petshop.services; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import it.dmi.tsdw.petshop.Pet; +import it.dmi.tsdw.petshop.repositories.PetRepository; + +@Service +public class PetService { + + @Autowired + private PetRepository repository; + + public Pet addPet(Pet e) { + return repository.save(e); + } + + public Optional<Pet> getPet(Long id) { + return repository.findById(id); + } + + public List<Pet> getAllPets() { + List<Pet> output = new ArrayList<Pet>(); + repository.findAll().forEach(output::add); + return output; + } + + public Pet updatePet(Pet e) { + return repository.save(e); + } + + public void deletePet(Pet e) { + repository.delete(e); +} + + public void deletePet(Long id) { + repository.deleteById(id); + } +}
\ No newline at end of file diff --git a/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/services/RaceService.java b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/services/RaceService.java new file mode 100644 index 0000000..16828a7 --- /dev/null +++ b/Year_3/TSDWL/SPRING/petshop/src/main/java/it/dmi/tsdw/petshop/services/RaceService.java @@ -0,0 +1,44 @@ +package it.dmi.tsdw.petshop.services; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import it.dmi.tsdw.petshop.Race; +import it.dmi.tsdw.petshop.repositories.RaceRepository; + +@Service +public class RaceService { + + @Autowired + private RaceRepository repository; + + public Race addRace(Race e) { + return repository.save(e); + } + + public Optional<Race> getRace(Long id) { + return repository.findById(id); + } + + public List<Race> getAllRaces() { + List<Race> output = new ArrayList<Race>(); + repository.findAll().forEach(output::add); + return output; + } + + public Race updateRace(Race e) { + return repository.save(e); + } + + public void deleteRace(Race e) { + repository.delete(e); + } + + public void deleteRace(Long id) { + repository.deleteById(id); + } +}
\ No newline at end of file diff --git a/Year_3/TSDWL/SPRING/petshop/src/main/resources/application.properties b/Year_3/TSDWL/SPRING/petshop/src/main/resources/application.properties new file mode 100644 index 0000000..ac31df6 --- /dev/null +++ b/Year_3/TSDWL/SPRING/petshop/src/main/resources/application.properties @@ -0,0 +1,7 @@ +#server.port=3000 + +spring.datasource.url=jdbc:mysql://localhost:3306/sp?serverTimezone=Europe/Rome +spring.datasource.username= +spring.datasource.password= +spring.jpa.hibernate.ddl-auto=update +spring.datasource.initialization-mode=always diff --git a/Year_3/TSDWL/SPRING/petshop/src/test/java/it/dmi/tsdw/petshop/PetshopApplicationTests.java b/Year_3/TSDWL/SPRING/petshop/src/test/java/it/dmi/tsdw/petshop/PetshopApplicationTests.java new file mode 100644 index 0000000..fc52bbc --- /dev/null +++ b/Year_3/TSDWL/SPRING/petshop/src/test/java/it/dmi/tsdw/petshop/PetshopApplicationTests.java @@ -0,0 +1,13 @@ +package it.dmi.tsdw.petshop; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class PetshopApplicationTests { + + @Test + void contextLoads() { + } + +} |