From 1d0796c6ef8b92c78e24c19b23ab970c87d5d167 Mon Sep 17 00:00:00 2001 From: Yijun Date: Sun, 28 Oct 2018 14:29:39 -0700 Subject: [PATCH 1/2] first demo --- .../com/example/demo/DemoApplication.java | 7 +++ .../demo/controller/CourseController.java | 34 ++++++++++-- .../java/com/example/demo/modal/Course.java | 20 +++++++ .../com/example/demo/modal/Instructor.java | 17 ++++++ .../com/example/demo/modal/dto/CourseDto.java | 16 ++++++ .../demo/repository/CourseRepository.java | 54 +++++++++++++++++++ .../example/demo/service/CourseService.java | 29 ++++++++++ .../example/demo/CourseServiceUnitTest.java | 36 +++++++++++++ 8 files changed, 210 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/example/demo/modal/Course.java create mode 100644 src/main/java/com/example/demo/modal/Instructor.java create mode 100644 src/main/java/com/example/demo/modal/dto/CourseDto.java create mode 100644 src/main/java/com/example/demo/repository/CourseRepository.java create mode 100644 src/main/java/com/example/demo/service/CourseService.java create mode 100644 src/test/java/com/example/demo/CourseServiceUnitTest.java diff --git a/src/main/java/com/example/demo/DemoApplication.java b/src/main/java/com/example/demo/DemoApplication.java index 2a9bdbe..a8b027b 100644 --- a/src/main/java/com/example/demo/DemoApplication.java +++ b/src/main/java/com/example/demo/DemoApplication.java @@ -3,6 +3,13 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +/* + *An informative annotation type used to indicate that an interface type + *declaration is intended to be a functional interface as defined by the + *Java Language Specification. Conceptually, a functional interface has exactly + *one abstract method. Since default methods have an implementation, + *they are not abstract. + */ @SpringBootApplication public class DemoApplication { diff --git a/src/main/java/com/example/demo/controller/CourseController.java b/src/main/java/com/example/demo/controller/CourseController.java index 39ad1d8..ee6b4e6 100644 --- a/src/main/java/com/example/demo/controller/CourseController.java +++ b/src/main/java/com/example/demo/controller/CourseController.java @@ -1,22 +1,50 @@ package com.example.demo.controller; +import com.example.demo.modal.Course; +import com.example.demo.modal.dto.CourseDto; +import com.example.demo.service.CourseService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; +// single function interface @RestController @RequestMapping public class CourseController { - @GetMapping(path = "/", produces = "application/json") + @Autowired // IOC 控制反转 + CourseService courseService; // Singleton + //依赖注入 Dependency Injection + + @GetMapping(path = "/", produces = "application/json") //如果你用get方法 call我这个地址 public HttpEntity findAllCourses(){ - // List allCourses = courseService.findAllCourses(); + List allCourses = courseService.findAllCourses(); //我就帮你用这个方法来处理这个请求 - return new ResponseEntity<>("OK",HttpStatus.OK); + return new ResponseEntity<>(allCourses,HttpStatus.OK); // 我返回结果给你 + } + +// @GetMapping(path = "/api/course/findAllCourses", produces = "application/json") +// public HttpEntity> findAllCourses(){ +// List allCourses = courseService.findAllCourses(); +// +// return new ResponseEntity<>(allCourses, HttpStatus.OK); +// } + + @GetMapping(path = "/look-up/{inputString}", produces = "application/json") + public HttpEntity searchCourse(@PathVariable("inputString") String inputString) { + + List findedCourse = courseService.searchByCourseName(inputString); + + return new ResponseEntity(findedCourse, HttpStatus.OK); } } + +// 增加一个课程/删除一个课程/更新一个课程信息 diff --git a/src/main/java/com/example/demo/modal/Course.java b/src/main/java/com/example/demo/modal/Course.java new file mode 100644 index 0000000..8917157 --- /dev/null +++ b/src/main/java/com/example/demo/modal/Course.java @@ -0,0 +1,20 @@ +package com.example.demo.modal; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class Course { + private String className; + private Instructor instructor; + private Date startDate; + private Date endDate; + private String timeFrame; +} diff --git a/src/main/java/com/example/demo/modal/Instructor.java b/src/main/java/com/example/demo/modal/Instructor.java new file mode 100644 index 0000000..95880a3 --- /dev/null +++ b/src/main/java/com/example/demo/modal/Instructor.java @@ -0,0 +1,17 @@ +package com.example.demo.modal; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class Instructor { + private String firstName; + private String lastName; + private String title; + private String office; +} diff --git a/src/main/java/com/example/demo/modal/dto/CourseDto.java b/src/main/java/com/example/demo/modal/dto/CourseDto.java new file mode 100644 index 0000000..2185c13 --- /dev/null +++ b/src/main/java/com/example/demo/modal/dto/CourseDto.java @@ -0,0 +1,16 @@ +package com.example.demo.modal.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class CourseDto { + + private String courseName; + +} diff --git a/src/main/java/com/example/demo/repository/CourseRepository.java b/src/main/java/com/example/demo/repository/CourseRepository.java new file mode 100644 index 0000000..471e1d2 --- /dev/null +++ b/src/main/java/com/example/demo/repository/CourseRepository.java @@ -0,0 +1,54 @@ +package com.example.demo.repository; + +import com.example.demo.modal.Course; +import com.example.demo.modal.Instructor; +import org.springframework.stereotype.Repository; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Repository +public class CourseRepository { + List courses = new ArrayList<>(); + + // constructor + public CourseRepository() { + Course javaOne = Course.builder() + .className("Java I") + .instructor(new Instructor("Steve", "Jobs", "Phd", "TownHall201")) + .startDate(new Date("8/1/2018")) + .endDate(new Date("12/24/2018")) + .timeFrame("8am-10am") + .build(); + Course two= Course.builder() + .className("Java II") + .instructor(new Instructor("Steve", "Jobs", "Phd", "TownHall201")) + .startDate(new Date("8/1/2018")) + .endDate(new Date("12/24/2018")) + .timeFrame("8am-10am") + .build(); + + courses.add(javaOne); + } + + + public List findAllClasses(){ + //链接数据库 + //返回数据库的信息 + return courses; + } + + public List findAllCourse(String searchByCourseName){ + + return new ArrayList(); + } + + public List findCourseByName(String courseName) { + if(courseName.equals("Java_I")) { + return courses; + } + + return new ArrayList(); + } +} diff --git a/src/main/java/com/example/demo/service/CourseService.java b/src/main/java/com/example/demo/service/CourseService.java new file mode 100644 index 0000000..6b75193 --- /dev/null +++ b/src/main/java/com/example/demo/service/CourseService.java @@ -0,0 +1,29 @@ +package com.example.demo.service; + + +import com.example.demo.modal.Course; +import com.example.demo.repository.CourseRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@Component +public class CourseService { + + @Autowired + CourseRepository courseRepository; + + public List findAllCourses(){ + + return courseRepository.findAllClasses(); + } + + public List searchByCourseName(String input){ + + return courseRepository.findCourseByName(input); + } + +} diff --git a/src/test/java/com/example/demo/CourseServiceUnitTest.java b/src/test/java/com/example/demo/CourseServiceUnitTest.java new file mode 100644 index 0000000..ebcca3a --- /dev/null +++ b/src/test/java/com/example/demo/CourseServiceUnitTest.java @@ -0,0 +1,36 @@ +package com.example.demo; + +import com.example.demo.modal.Course; +import com.example.demo.repository.CourseRepository; +import com.example.demo.service.CourseService; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +import java.util.ArrayList; +import java.util.List; + +import static junit.framework.TestCase.assertTrue; +import static org.mockito.BDDMockito.given; + +@RunWith(MockitoJUnitRunner.class) +public class CourseServiceUnitTest { + @Mock + private CourseService courseService; + + @Mock + private CourseRepository courseRepository; + + @Test + public void testCourseService(){ + List courseList = new ArrayList<>(); + + given(courseRepository.findAllClasses()).willReturn(courseList); + + List result = courseService.findAllCourses(); + + assertTrue(result.isEmpty()); + } + +} From a66faaf41c507246ce3cd44e7e79f9a60f250876 Mon Sep 17 00:00:00 2001 From: Yijun Date: Sat, 4 Jan 2020 11:11:13 -0800 Subject: [PATCH 2/2] add instructions --- .../java/com/example/demo/controller/CourseController.java | 2 -- .../java/com/example/demo/repository/CourseRepository.java | 5 +++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/example/demo/controller/CourseController.java b/src/main/java/com/example/demo/controller/CourseController.java index ee6b4e6..7ccad5c 100644 --- a/src/main/java/com/example/demo/controller/CourseController.java +++ b/src/main/java/com/example/demo/controller/CourseController.java @@ -46,5 +46,3 @@ public HttpEntity searchCourse(@PathVariable("inputString") String input return new ResponseEntity(findedCourse, HttpStatus.OK); } } - -// 增加一个课程/删除一个课程/更新一个课程信息 diff --git a/src/main/java/com/example/demo/repository/CourseRepository.java b/src/main/java/com/example/demo/repository/CourseRepository.java index 471e1d2..92e1f9e 100644 --- a/src/main/java/com/example/demo/repository/CourseRepository.java +++ b/src/main/java/com/example/demo/repository/CourseRepository.java @@ -15,14 +15,14 @@ public class CourseRepository { // constructor public CourseRepository() { Course javaOne = Course.builder() - .className("Java I") + .className("Java_I") .instructor(new Instructor("Steve", "Jobs", "Phd", "TownHall201")) .startDate(new Date("8/1/2018")) .endDate(new Date("12/24/2018")) .timeFrame("8am-10am") .build(); Course two= Course.builder() - .className("Java II") + .className("Java_II") .instructor(new Instructor("Steve", "Jobs", "Phd", "TownHall201")) .startDate(new Date("8/1/2018")) .endDate(new Date("12/24/2018")) @@ -30,6 +30,7 @@ public CourseRepository() { .build(); courses.add(javaOne); + courses.add(two); }