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..7ccad5c 100644 --- a/src/main/java/com/example/demo/controller/CourseController.java +++ b/src/main/java/com/example/demo/controller/CourseController.java @@ -1,22 +1,48 @@ 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<>(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<>("OK",HttpStatus.OK); + 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..92e1f9e --- /dev/null +++ b/src/main/java/com/example/demo/repository/CourseRepository.java @@ -0,0 +1,55 @@ +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); + courses.add(two); + } + + + 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()); + } + +}