From 30d5aab9dd725ff39195e99b421659c365c380dd Mon Sep 17 00:00:00 2001
From: Hendrik Jungnitsch <hendrik.jungnitsch@gedoplan.de>
Date: Fr, 26 Aug 2022 17:39:24 +0200
Subject: [PATCH] Junctions hinzugefügt

---
 src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java         |   37 ++++++++++++
 src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Junction.java               |   19 ++++++
 src/main/java/de/gedoplan/seminar/jpa/exercise/domain/JunctionKind.java           |    5 +
 src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise02Test.java                |   62 ++++++++++++++++++++
 src/main/java/de/gedoplan/seminar/jpa/exercise/repository/JunctionRepository.java |   11 +++
 5 files changed, 134 insertions(+), 0 deletions(-)

diff --git a/src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Junction.java b/src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Junction.java
new file mode 100644
index 0000000..06bbc01
--- /dev/null
+++ b/src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Junction.java
@@ -0,0 +1,19 @@
+package de.gedoplan.seminar.jpa.exercise.domain;
+
+public class Junction {
+
+	private Integer id;
+
+	private String name;
+
+	private JunctionKind kind;
+
+	private String no;
+
+	public Junction(String name, JunctionKind kind, String no) {
+		this.name = name;
+		this.kind = kind;
+		this.no = no;
+	}
+
+}
diff --git a/src/main/java/de/gedoplan/seminar/jpa/exercise/domain/JunctionKind.java b/src/main/java/de/gedoplan/seminar/jpa/exercise/domain/JunctionKind.java
new file mode 100644
index 0000000..0a0de3a
--- /dev/null
+++ b/src/main/java/de/gedoplan/seminar/jpa/exercise/domain/JunctionKind.java
@@ -0,0 +1,5 @@
+package de.gedoplan.seminar.jpa.exercise.domain;
+
+public enum JunctionKind {
+  EXIT, INTERCHANGE
+}
diff --git a/src/main/java/de/gedoplan/seminar/jpa/exercise/repository/JunctionRepository.java b/src/main/java/de/gedoplan/seminar/jpa/exercise/repository/JunctionRepository.java
new file mode 100644
index 0000000..2823448
--- /dev/null
+++ b/src/main/java/de/gedoplan/seminar/jpa/exercise/repository/JunctionRepository.java
@@ -0,0 +1,11 @@
+package de.gedoplan.seminar.jpa.exercise.repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import de.gedoplan.seminar.jpa.exercise.domain.Junction;
+
+@Repository
+public interface JunctionRepository extends JpaRepository<Junction, Integer> {
+
+}
diff --git a/src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java b/src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java
new file mode 100644
index 0000000..7df8248
--- /dev/null
+++ b/src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java
@@ -0,0 +1,37 @@
+package de.gedoplan.seminar.jpa.exercise.rest;
+
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import de.gedoplan.seminar.jpa.exercise.domain.Junction;
+import de.gedoplan.seminar.jpa.exercise.repository.JunctionRepository;
+
+@RestController
+@RequestMapping("/junctions")
+public class JunctionResource {
+
+
+
+  @Autowired
+  Logger logger;
+
+  @Autowired
+  JunctionRepository junctionRepository;
+
+  /**
+   * Exercise JPA_BASICS_02: Insert test data.
+   */
+  @PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
+  public void insert(@RequestBody Junction junction) {
+    this.logger.debug("----- insert -----");
+
+    this.junctionRepository.save(junction);
+    
+    this.logger.debug("Inserted: " + junction);
+  }
+}
diff --git a/src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise02Test.java b/src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise02Test.java
new file mode 100644
index 0000000..efa7a05
--- /dev/null
+++ b/src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise02Test.java
@@ -0,0 +1,62 @@
+package de.gedoplan.seminar.jpa.exercise;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+import java.util.stream.Stream;
+
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.web.servlet.MockMvc;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import de.gedoplan.seminar.jpa.exercise.domain.Highway;
+import de.gedoplan.seminar.jpa.exercise.domain.Junction;
+import de.gedoplan.seminar.jpa.exercise.domain.JunctionKind;
+
+@TestMethodOrder(MethodOrderer.MethodName.class)
+@AutoConfigureMockMvc
+@SpringBootTest
+public class Exercise02Test {
+
+	// Sample junctions
+	// ... of A1
+	private static Junction testJunctionSchwerte = new Junction("Schwerte", JunctionKind.EXIT, "85");
+	private static Junction testJunctionKreuzWesthofen = new Junction("Westhofener Kreuz", JunctionKind.INTERCHANGE,
+			"86");
+	private static Junction testJunctionHagenNord = new Junction("Hagen-Nord", JunctionKind.EXIT, "87");
+	// ... of A2
+	private static Junction testJunctionHerfordBadSalzuflen = new Junction("Herford/Bad Salzuflen", JunctionKind.EXIT,
+			"29");
+	private static Junction testJunctionBielefeldOst = new Junction("Bielefeld-Ost", JunctionKind.EXIT, "27");
+	private static Junction testJunctionOWL = new Junction("Ostwestfalen/Lippe", JunctionKind.EXIT, "28");
+	// ... of A33
+	private static Junction testJunctionPaderbornZentrum = new Junction("Paderborn-Zentrum", JunctionKind.EXIT, "17");
+
+	@Autowired
+	MockMvc mockMvc;
+
+	@Autowired
+	private ObjectMapper mapper;
+
+	@ParameterizedTest
+	@MethodSource("getTestJunctions")
+	void test01_insert(Junction junction) throws Exception {
+		mockMvc.perform(
+				post("/junctions").contentType(MediaType.APPLICATION_JSON).content(mapper.writeValueAsString(junction)))
+				.andExpect(status().isOk());
+	}
+
+	private static Stream<Junction> getTestJunctions() {
+		return Stream.of(testJunctionSchwerte, testJunctionKreuzWesthofen, testJunctionHagenNord,
+				testJunctionHerfordBadSalzuflen, testJunctionBielefeldOst, testJunctionOWL,
+				testJunctionPaderbornZentrum);
+	}
+}

--
Gitblit v1.7.1