Commit 88ce2805 authored by Muhammad Suleman's avatar Muhammad Suleman

Done With Controller Code

parent 2a33c914
package com.school.project.controller; package com.school.project.controller;
import com.school.project.dto.CourseDTO;
import com.school.project.mapper.CourseMapper;
import com.school.project.model.Course; import com.school.project.model.Course;
import com.school.project.service.implementation.CourseServiceImp;
import com.school.project.service.interfaces.CourseService; import com.school.project.service.interfaces.CourseService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.sql.SQLIntegrityConstraintViolationException;
import java.util.List; import java.util.List;
import java.util.NoSuchElementException;
import java.util.Optional; import java.util.Optional;
@Controller @Controller
@RequestMapping() @RequestMapping()
public class CourseController { public class CourseController {
@Autowired(required = true) @Autowired(required = true)
public CourseService courseService; public CourseServiceImp courseServiceImpl;
@PostMapping("/courses")
public ResponseEntity<CourseDTO> saveCourse(@RequestBody CourseDTO courseDTO) {
@PostMapping("/course") try {
public Course saveCourse(@RequestBody Course course){ CourseDTO course = courseServiceImpl.saveCourse(courseDTO);
return courseService.saveCourse(course); return ResponseEntity.status(HttpStatus.OK).body(course);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
}
} }
@GetMapping("/courses") @GetMapping("/courses")
public List<Course> readAllCourses(){ public ResponseEntity<List<CourseDTO>> readAllCourses() {
return courseService.readAllCourse(); List<CourseDTO> course = courseServiceImpl.readAllCourse();
if (course.size() <= 0) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
} else {
return ResponseEntity.status(HttpStatus.OK).body(course);
}
} }
@GetMapping("/course/{id}") @GetMapping("/courses/{id}")
public Optional<Course> readCourseById(@PathVariable(name = "id") Long id) public ResponseEntity<CourseDTO> readCourseById(@PathVariable(name = "id") Long id) {
{
return courseService.readCourseById(id); try {
CourseDTO course = courseServiceImpl.readCourseById(id);
return ResponseEntity.status(HttpStatus.OK).body(course);
} catch (NoSuchElementException e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
} }
@PutMapping("/course/{id}")
public Course updateCourseById(@RequestBody Course course,@PathVariable(name = "id") Long id){
return courseService.updateCourseById(course,id);
} }
@DeleteMapping("/course/{id}") @PutMapping("/courses/{id}")
public void deleteCourseById(@PathVariable(name = "id") Long id){ public ResponseEntity<CourseDTO> updateCourseById(@RequestBody CourseDTO courseDTO, @PathVariable(name = "id") Long id) {
courseService.deleteCourseById(id); try {
CourseDTO updateCourse = courseServiceImpl.updateCourseById(courseDTO, id);
return ResponseEntity.status(HttpStatus.OK).body(updateCourse);
} catch (NoSuchElementException e) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
}
}
@DeleteMapping("/courses/{id}")
public ResponseEntity deleteCourseById(@PathVariable(name = "id") Long id) {
try {
courseServiceImpl.deleteCourseById(id);
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
} catch (EmptyResultDataAccessException e) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
}
} }
} }
package com.school.project.controller; package com.school.project.controller;
import com.school.project.dto.CourseDTO;
import com.school.project.dto.DepartmentDTO; import com.school.project.dto.DepartmentDTO;
import com.school.project.service.implementation.DepartmentServiceImp; import com.school.project.service.implementation.DepartmentServiceImp;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.sql.SQLIntegrityConstraintViolationException;
import java.util.List; import java.util.List;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import java.util.Optional; import java.util.Optional;
@RestController @RestController
public class DepartmentController { public class DepartmentController {
@Autowired(required=true) @Autowired(required = true)
public DepartmentServiceImp departmentServiceImp; public DepartmentServiceImp departmentServiceImp;
@GetMapping("department") @GetMapping("departments")
public ResponseEntity<List<DepartmentDTO>> readAllDepartments() { public ResponseEntity<List<DepartmentDTO>> readAllDepartments() {
List<DepartmentDTO> departmentDTO = departmentServiceImp.readDepartment(); List<DepartmentDTO> departmentDTO = departmentServiceImp.readDepartment();
if(departmentDTO.isEmpty()){ if (departmentDTO.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
} } else {
else {
return ResponseEntity.of(Optional.of(departmentDTO)); return ResponseEntity.of(Optional.of(departmentDTO));
} }
} }
@GetMapping("departmentId/{id}") @GetMapping("departmentId/{id}")
public ResponseEntity<DepartmentDTO> readDepartmentById(@PathVariable("id") Long id){ public ResponseEntity<DepartmentDTO> readDepartmentById(@PathVariable("id") Long id) {
try { try {
DepartmentDTO departmentDTO=departmentServiceImp.readDepartmentById(id); DepartmentDTO departmentDTO = departmentServiceImp.readDepartmentById(id);
return ResponseEntity.of(Optional.of(departmentDTO)); return ResponseEntity.of(Optional.of(departmentDTO));
}catch (NoSuchElementException e){ } catch (NoSuchElementException e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
} }
...@@ -43,54 +45,49 @@ public class DepartmentController { ...@@ -43,54 +45,49 @@ public class DepartmentController {
} }
@GetMapping("departmentName/{name}") @GetMapping("departmentName/{name}")
public ResponseEntity<DepartmentDTO> findDepartmentByName(@PathVariable("name") String name){ public ResponseEntity<DepartmentDTO> findDepartmentByName(@PathVariable("name") String name) {
DepartmentDTO departmentDTO=departmentServiceImp.findDepartmentByName(name); DepartmentDTO departmentDTO = departmentServiceImp.findDepartmentByName(name);
if(departmentDTO == null){ if (departmentDTO == null) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
}else { } else {
return ResponseEntity.of(Optional.of(departmentDTO)); return ResponseEntity.of(Optional.of(departmentDTO));
} }
} }
@PostMapping("departmentSave") @PostMapping("departments")
public ResponseEntity<DepartmentDTO> saveDepartment(@RequestBody DepartmentDTO department){ public ResponseEntity<DepartmentDTO> saveDepartment(@RequestBody DepartmentDTO department) {
try {
DepartmentDTO departmentDTO = departmentServiceImp.saveDepartment(department); DepartmentDTO departmentDTO = departmentServiceImp.saveDepartment(department);
if(departmentDTO == null){
return ResponseEntity.status(HttpStatus.NOT_ACCEPTABLE).build();
}
else {
return ResponseEntity.status(HttpStatus.OK).body(departmentDTO); return ResponseEntity.status(HttpStatus.OK).body(departmentDTO);
}
}
@PutMapping("department/{id}") } catch (Exception exception) {
public ResponseEntity<DepartmentDTO> updateDepartmentById(@RequestBody DepartmentDTO department, @PathVariable("id") Long id){
DepartmentDTO checkDepartment = departmentServiceImp.readDepartmentById(id); return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
if(checkDepartment == null){
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
} }
else {
DepartmentDTO departmentDTO = departmentServiceImp.updateDepartment(department,id);
return ResponseEntity.of(Optional.of(departmentDTO)); }
@PutMapping("departments/{id}")
public ResponseEntity<DepartmentDTO> updateDepartmentById(@RequestBody DepartmentDTO department, @PathVariable("id") Long id) {
try {
DepartmentDTO updateDepartment = departmentServiceImp.updateDepartment(department, id);
return ResponseEntity.status(HttpStatus.OK).body(updateDepartment);
} catch (NoSuchElementException e) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
} }
} }
@DeleteMapping("department/{id}") @DeleteMapping("departments/{id}")
public ResponseEntity<Object> deleteDepartmentById(@PathVariable("id") Long id){ public ResponseEntity<Object> deleteDepartmentById(@PathVariable("id") Long id) {
try {
departmentServiceImp.deleteDepartmentById(id); departmentServiceImp.deleteDepartmentById(id);
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
DepartmentDTO departmentDTO = departmentServiceImp.readDepartmentById(id); } catch (EmptyResultDataAccessException e) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
if(departmentDTO == null){
return ResponseEntity.status(HttpStatus.OK).build();
}else {
return ResponseEntity.of(Optional.of("Department Already Not Exist"));
} }
} }
} }
package com.school.project.controller; package com.school.project.controller;
import com.school.project.dto.DepartmentDTO;
import com.school.project.dto.StudentDTO;
import com.school.project.model.Student; import com.school.project.model.Student;
import com.school.project.service.implementation.StudentServiceImp;
import com.school.project.service.interfaces.StudentService; import com.school.project.service.interfaces.StudentService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.NoSuchElementException;
import java.util.Optional; import java.util.Optional;
@RestController @RestController
public class StudentController { public class StudentController {
@Autowired(required=true) @Autowired(required = true)
public StudentService studentService; public StudentServiceImp studentServiceImp;
@PostMapping("/student") @PostMapping("/students")
public Student saveStudent(@RequestBody Student student){ public ResponseEntity<StudentDTO> saveStudent(@RequestBody StudentDTO studentDTO) {
return studentService.saveStudent(student);
StudentDTO student = studentServiceImp.saveStudent(studentDTO);
if (student == null) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
} else {
return ResponseEntity.status(HttpStatus.OK).body(student);
}
} }
@GetMapping("/students") @GetMapping("/students")
public ResponseEntity<List<Student>> readAllStudents(){ public ResponseEntity<List<StudentDTO>> readAllStudents() {
List<Student> students=studentService.readAllStudents(); List<StudentDTO> studentsDTO = studentServiceImp.readAllStudents();
if(students.size()<=0){
if (studentsDTO.size() <= 0) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
} else {
return ResponseEntity.status(HttpStatus.OK).body(studentsDTO);
}
} }
return ResponseEntity.of(Optional.of(students)); @GetMapping("students/{id}")
public ResponseEntity<StudentDTO> readStudentById(@PathVariable("id") Long id) {
try {
StudentDTO dto = studentServiceImp.readStudentById(id);
return ResponseEntity.status(HttpStatus.OK).body(dto);
} catch (NoSuchElementException e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
} }
@GetMapping("student/{id}") }
public Optional<Student> readStudentById(@PathVariable("id") Long id){
return studentService.readStudentById(id);
@PutMapping("students/{id}")
public ResponseEntity<StudentDTO> updateStudentById(@RequestBody StudentDTO studentDTO, @PathVariable("id") Long id) {
try {
StudentDTO updateStudent = studentServiceImp.updateStudentById(studentDTO, id);
return ResponseEntity.status(HttpStatus.OK).body(updateStudent);
} catch (NoSuchElementException e) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
} }
@PutMapping("student/{id}")
public Student updateStudentById(@RequestBody Student student,@PathVariable("id") Long id){
return studentService.updateStudentById(student,id);
} }
@DeleteMapping("student/{id}") @DeleteMapping("students/{id}")
public void deleteStudentById(@PathVariable("id") Long id){ public ResponseEntity deleteStudentById(@PathVariable("id") Long id) {
studentService.deleteStudentById(id); try {
studentServiceImp.deleteStudentById(id);
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
} catch (EmptyResultDataAccessException e) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
}
} }
} }
\ No newline at end of file
package com.school.project.controller; package com.school.project.controller;
import com.school.project.dto.DepartmentDTO;
import com.school.project.dto.TeacherDTO;
import com.school.project.model.Teacher; import com.school.project.model.Teacher;
import com.school.project.service.implementation.TeacherServiceImp; import com.school.project.service.implementation.TeacherServiceImp;
import com.school.project.service.interfaces.TeacherService; import com.school.project.service.interfaces.TeacherService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.http.HttpRange;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.NoSuchElementException;
import java.util.Optional; import java.util.Optional;
@RestController @RestController
...@@ -15,31 +22,60 @@ import java.util.Optional; ...@@ -15,31 +22,60 @@ import java.util.Optional;
public class TeacherController { public class TeacherController {
@Autowired(required = true) @Autowired(required = true)
public TeacherServiceImp teacherService; public TeacherServiceImp teacherServiceImp;
@PostMapping("/teacher") @PostMapping("/saveTeachers")
public Teacher saveTeacher(@RequestBody Teacher teacher){ public ResponseEntity<TeacherDTO> saveTeacher(@RequestBody TeacherDTO teacherDTO) {
return teacherService.saveTeacher(teacher); TeacherDTO dto = teacherServiceImp.saveTeacher(teacherDTO);
if (dto == null) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
} else {
return ResponseEntity.status(HttpStatus.OK).body(dto);
}
} }
@GetMapping("/teachers") @GetMapping("/teachers")
public List<Teacher> readAllTeachers(){ public ResponseEntity<List<TeacherDTO>> readAllTeachers() {
return (List<Teacher>) teacherService.readAllTeachers(); List<TeacherDTO> teacherDTOS = teacherServiceImp.readAllTeachers();
if (teacherDTOS.size() <= 0) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
} else {
return ResponseEntity.status(HttpStatus.OK).body(teacherDTOS);
} }
}
@GetMapping("teachers/{id}")
public ResponseEntity<TeacherDTO> readTeacherById(@PathVariable("id") Long id) {
@GetMapping("teacher/{id}") try {
public Optional<Teacher> readTeacherById(@PathVariable("id") Long id){ TeacherDTO teacherDTO = teacherServiceImp.readTeacherById(id);
return teacherService.readTeacherById(id); return ResponseEntity.status(HttpStatus.OK).body(teacherDTO);
} catch (NoSuchElementException e) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
} }
@PutMapping("teacher/{id}")
public Teacher updateTeacherById(@RequestBody Teacher teacher,@PathVariable("id") Long id){
return teacherService.updateTeacher(teacher,id);
} }
@DeleteMapping("teacher/{id}") @PutMapping("teachers/{id}")
public void deleteTeacherById(@PathVariable("id") Long id){ public ResponseEntity<TeacherDTO> updateTeacherById(@RequestBody TeacherDTO teacherDTO, @PathVariable("id") Long id) {
teacherService.deleteTeacherById(id); try {
TeacherDTO updateTeacher = teacherServiceImp.updateTeacher(teacherDTO, id);
return ResponseEntity.status(HttpStatus.OK).body(updateTeacher);
} catch (NoSuchElementException e) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
}
}
@DeleteMapping("teachers/{id}")
public ResponseEntity deleteTeacherById(@PathVariable("id") Long id) {
try {
teacherServiceImp.deleteTeacherById(id);
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
} catch (EmptyResultDataAccessException e) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
}
} }
} }
...@@ -19,11 +19,11 @@ public class UserController { ...@@ -19,11 +19,11 @@ public class UserController {
UserMapper userMapper; UserMapper userMapper;
@PostMapping("/saveuser") @PostMapping("/saveuser")
public String saveUser(@ModelAttribute UserDTO userDTO){ public String saveUser(@ModelAttribute UserDTO userDTO) {
Integer id = userService.saveUser(userMapper.userDtoToUser(userDTO)); Integer id = userService.saveUser(userMapper.userDtoToUser(userDTO));
String message = "User '"+id+"' saved successfully !"; String message = "User '" + id + "' saved successfully !";
return message; return message;
} }
......
...@@ -15,6 +15,6 @@ public class CourseDTO { ...@@ -15,6 +15,6 @@ public class CourseDTO {
List<Student> studentList; List<Student> studentList;
private Teacher teacher; private List<Teacher> teacherList;
} }
package com.school.project.dto; package com.school.project.dto;
import com.school.project.model.Teacher;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class DepartmentDTO { public class DepartmentDTO {
private Long id; private Long id;
private String name; private String name;
} }
...@@ -15,7 +15,7 @@ public class TeacherDTO { ...@@ -15,7 +15,7 @@ public class TeacherDTO {
private String degree; private String degree;
private Course course; private List<Course> courseList;
private Department department; private Department department;
} }
...@@ -6,11 +6,16 @@ import com.school.project.model.Course; ...@@ -6,11 +6,16 @@ import com.school.project.model.Course;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper(componentModel = "spring") @Mapper(componentModel = "spring")
public interface CourseMapper { public interface CourseMapper {
CourseMapper INSTANCE = Mappers.getMapper(CourseMapper.class); CourseMapper INSTANCE = Mappers.getMapper(CourseMapper.class);
CourseDTO courseModelToDTO(Course course); CourseDTO courseModelToDTO(Course course);
Course courseDTOToModel(CourseDTO courseDTO); Course courseDTOToModel(CourseDTO courseDTO);
List<CourseDTO> courseModelToDTO(List<Course> all);
} }
...@@ -14,7 +14,9 @@ public interface DepartmentMapper { ...@@ -14,7 +14,9 @@ public interface DepartmentMapper {
DepartmentMapper INSTANCE = Mappers.getMapper(DepartmentMapper.class); DepartmentMapper INSTANCE = Mappers.getMapper(DepartmentMapper.class);
DepartmentDTO departmentModelToDTO(Department department); DepartmentDTO departmentModelToDTO(Department department);
Department departmentDTOToModel(DepartmentDTO saveDepartment); Department departmentDTOToModel(DepartmentDTO saveDepartment);
List<DepartmentDTO> departmentListModelToDTO(List<Department> all); List<DepartmentDTO> departmentListModelToDTO(List<Department> all);
/*@Mappings({ /*@Mappings({
......
...@@ -5,10 +5,17 @@ import com.school.project.model.Student; ...@@ -5,10 +5,17 @@ import com.school.project.model.Student;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import java.util.List;
import java.util.Optional;
@Mapper(componentModel = "spring") @Mapper(componentModel = "spring")
public interface StudentMapper { public interface StudentMapper {
StudentMapper INSTANCE = Mappers.getMapper(StudentMapper.class); StudentMapper INSTANCE = Mappers.getMapper(StudentMapper.class);
StudentDTO studentModelToDTO(Student student); StudentDTO studentModelToDTO(Student student);
Student studentDTOToModel(StudentDTO studentDTO); Student studentDTOToModel(StudentDTO studentDTO);
List<StudentDTO> studentModelToDTO(List<Student> all);
} }
...@@ -5,6 +5,8 @@ import com.school.project.model.Teacher; ...@@ -5,6 +5,8 @@ import com.school.project.model.Teacher;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper(componentModel = "spring") @Mapper(componentModel = "spring")
public interface TeacherMapper { public interface TeacherMapper {
...@@ -13,4 +15,6 @@ public interface TeacherMapper { ...@@ -13,4 +15,6 @@ public interface TeacherMapper {
TeacherDTO teacherModelToDTo(Teacher teacher); TeacherDTO teacherModelToDTo(Teacher teacher);
Teacher teacherDTOToModel(TeacherDTO teacherDTO); Teacher teacherDTOToModel(TeacherDTO teacherDTO);
List<TeacherDTO> teacherModelToDTo(List<Teacher> all);
} }
package com.school.project.model; package com.school.project.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data; import lombok.Data;
import javax.persistence.*; import javax.persistence.*;
import java.util.List; import java.util.List;
...@@ -12,14 +14,16 @@ public class Course { ...@@ -12,14 +14,16 @@ public class Course {
@Id @Id
@GeneratedValue(strategy = GenerationType.AUTO) @GeneratedValue(strategy = GenerationType.AUTO)
private Long id; private Long id;
@Column(name = "title")
@Column(name = "title", unique = true)
private String title; private String title;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "courseLists") @ManyToMany(fetch = FetchType.LAZY, mappedBy = "courseLists")
List<Student> studentList; @JsonIgnore
private List<Student> studentList;
@OneToOne(mappedBy = "course",orphanRemoval = true )
private Teacher teacher;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "courseList")
@JsonIgnore
private List<Teacher> teacherList;
} }
...@@ -3,6 +3,7 @@ package com.school.project.model; ...@@ -3,6 +3,7 @@ package com.school.project.model;
import lombok.Data; import lombok.Data;
import javax.persistence.*; import javax.persistence.*;
import java.util.List;
@Data @Data
@Entity() @Entity()
...@@ -13,7 +14,7 @@ public class Department { ...@@ -13,7 +14,7 @@ public class Department {
@GeneratedValue(strategy = GenerationType.SEQUENCE) @GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id; private Long id;
@Column(name = "name",unique = true) @Column(name = "name", unique = true)
private String name; private String name;
} }
package com.school.project.model; package com.school.project.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data; import lombok.Data;
import javax.persistence.*; import javax.persistence.*;
import java.util.List; import java.util.List;
...@@ -14,17 +16,19 @@ public class Student { ...@@ -14,17 +16,19 @@ public class Student {
@GeneratedValue(strategy = GenerationType.SEQUENCE) @GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id; private Long id;
@Column(name="name") @Column(name = "name")
private String name; private String name;
@Column(name = "age") @Column(name = "age")
private Long age; private Long age;
@ManyToMany(fetch = FetchType.LAZY,cascade = { CascadeType.MERGE })
@ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE})
@JoinTable( @JoinTable(
name = "studentsCourses", name = "studentsCourses",
joinColumns = { @JoinColumn(name = "student_id") }, joinColumns = {@JoinColumn(name = "student_id")},
inverseJoinColumns = { @JoinColumn(name = "course_id") } inverseJoinColumns = {@JoinColumn(name = "course_id")}
) )
@JsonIgnore
private List<Course> courseLists; private List<Course> courseLists;
} }
package com.school.project.model; package com.school.project.model;
import lombok.Data; import lombok.Data;
import org.codehaus.jackson.annotate.JsonIgnore;
import javax.persistence.*; import javax.persistence.*;
import java.util.List; import java.util.List;
@Data @Data
@Entity @Entity
@Table(name="Teacher") @Table(name = "Teacher")
public class Teacher { public class Teacher {
@Id @Id
...@@ -19,12 +21,18 @@ public class Teacher { ...@@ -19,12 +21,18 @@ public class Teacher {
@Column(name = "degree") @Column(name = "degree")
private String degree; private String degree;
@OneToOne @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE})
@JoinColumn(name = "course_id") @JoinTable(
private Course course; name = "teachersCourses",
joinColumns = {@JoinColumn(name = "teacher_id")},
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.MERGE) inverseJoinColumns = {@JoinColumn(name = "course_id")}
@JoinColumn(name = "department_id",unique = true) )
@JsonIgnore
private List<Course> courseList;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "department_id")
@JsonIgnore
private Department department; private Department department;
} }
...@@ -26,7 +26,7 @@ public class User { ...@@ -26,7 +26,7 @@ public class User {
@Column(name = "user_email") @Column(name = "user_email")
private String email; private String email;
@ElementCollection(fetch= FetchType.EAGER) @ElementCollection(fetch = FetchType.EAGER)
@CollectionTable( @CollectionTable(
name = "roles", name = "roles",
joinColumns = @JoinColumn(name = "user_id") joinColumns = @JoinColumn(name = "user_id")
......
...@@ -5,5 +5,5 @@ import org.springframework.data.jpa.repository.JpaRepository; ...@@ -5,5 +5,5 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
public interface CourseRepository extends JpaRepository<Course,Long> { public interface CourseRepository extends JpaRepository<Course, Long> {
} }
...@@ -5,6 +5,6 @@ import org.springframework.data.jpa.repository.JpaRepository; ...@@ -5,6 +5,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
public interface DepartmentRepository extends JpaRepository<Department,Long>{ public interface DepartmentRepository extends JpaRepository<Department, Long> {
public Department findByName(String departmentName); public Department findByName(String departmentName);
} }
...@@ -5,6 +5,6 @@ import org.springframework.data.jpa.repository.JpaRepository; ...@@ -5,6 +5,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
public interface StudentRepository extends JpaRepository<Student,Long> { public interface StudentRepository extends JpaRepository<Student, Long> {
} }
...@@ -5,5 +5,5 @@ import org.springframework.data.jpa.repository.JpaRepository; ...@@ -5,5 +5,5 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
public interface TeacherRepository extends JpaRepository<Teacher,Long> { public interface TeacherRepository extends JpaRepository<Teacher, Long> {
} }
...@@ -7,7 +7,7 @@ import org.springframework.stereotype.Repository; ...@@ -7,7 +7,7 @@ import org.springframework.stereotype.Repository;
import java.util.Optional; import java.util.Optional;
@Repository @Repository
public interface UserRepository extends JpaRepository<User,Long> { public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findUserByEmail(String email); Optional<User> findUserByEmail(String email);
} }
package com.school.project.security.basic; package com.school.project.security;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -26,7 +26,7 @@ public class OAuth2ServerConfiguration { ...@@ -26,7 +26,7 @@ public class OAuth2ServerConfiguration {
private static InMemoryTokenStore tokenStore = new InMemoryTokenStore(); private static InMemoryTokenStore tokenStore = new InMemoryTokenStore();
@Bean @Bean
public PasswordEncoder passwordEncoder(){ public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(); return new BCryptPasswordEncoder();
} }
...@@ -49,6 +49,7 @@ public class OAuth2ServerConfiguration { ...@@ -49,6 +49,7 @@ public class OAuth2ServerConfiguration {
.and() .and()
.authorizeRequests() .authorizeRequests()
.antMatchers("/department").fullyAuthenticated() .antMatchers("/department").fullyAuthenticated()
.antMatchers("/saveuser").permitAll()
.antMatchers("/home").authenticated(); .antMatchers("/home").authenticated();
} }
} }
......
package com.school.project.security.basic; package com.school.project.security;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
...@@ -31,6 +31,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -31,6 +31,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
http http
.requestMatcher(new BasicRequestMatcher()) .requestMatcher(new BasicRequestMatcher())
.authorizeRequests() .authorizeRequests()
.antMatchers("/saveuser").permitAll()
.antMatchers("/oauth/token").authenticated() .antMatchers("/oauth/token").authenticated()
.and() .and()
.httpBasic() .httpBasic()
......
package com.school.project.service.implementation; package com.school.project.service.implementation;
import com.school.project.dto.CourseDTO;
import com.school.project.mapper.CourseMapper;
import com.school.project.model.Course; import com.school.project.model.Course;
import com.school.project.repository.CourseRepository; import com.school.project.repository.CourseRepository;
import com.school.project.service.interfaces.CourseService; import com.school.project.service.interfaces.CourseService;
...@@ -16,25 +18,44 @@ public class CourseServiceImp implements CourseService { ...@@ -16,25 +18,44 @@ public class CourseServiceImp implements CourseService {
@Autowired(required = true) @Autowired(required = true)
public CourseRepository courseRepository; public CourseRepository courseRepository;
@Autowired
public CourseMapper courseMapper;
@Override @Override
public Course saveCourse(Course course) { public CourseDTO saveCourse(CourseDTO courseDTO) {
return courseRepository.save(course); return courseMapper.courseModelToDTO(
courseRepository.save(
courseMapper.courseDTOToModel(courseDTO)));
} }
@Transactional @Transactional
@Override @Override
public List<Course> readAllCourse() { public List<CourseDTO> readAllCourse() {
return courseRepository.findAll(); return courseMapper.courseModelToDTO(courseRepository.findAll());
} }
@Override @Override
public Optional<Course> readCourseById(Long id) { public CourseDTO readCourseById(Long id) {
return courseRepository.findById(id); return courseMapper.courseModelToDTO(courseRepository.findById(id).get());
} }
@Override @Override
public Course updateCourseById(Course course, Long id) { public CourseDTO updateCourseById(CourseDTO courseDTO, Long id) {
return course; CourseDTO dto = readCourseById(id);
if (courseDTO.getTitle() != null) {
dto.setTitle(courseDTO.getTitle());
}
if (courseDTO.getTeacherList() != null) {
dto.setTeacherList(courseDTO.getTeacherList());
}
if (courseDTO.getStudentList() != null) {
dto.setStudentList(courseDTO.getStudentList());
}
return courseMapper.courseModelToDTO(
courseRepository.save(
courseMapper.courseDTOToModel(dto)));
} }
@Override @Override
......
...@@ -11,7 +11,7 @@ import java.util.List; ...@@ -11,7 +11,7 @@ import java.util.List;
@Service @Service
public class DepartmentServiceImp implements DepartmentService { public class DepartmentServiceImp implements DepartmentService {
@Autowired(required=true) @Autowired(required = true)
private DepartmentRepository departmentRepository; private DepartmentRepository departmentRepository;
@Autowired(required = true) @Autowired(required = true)
private DepartmentMapper departmentMapper; private DepartmentMapper departmentMapper;
...@@ -28,6 +28,7 @@ public class DepartmentServiceImp implements DepartmentService { ...@@ -28,6 +28,7 @@ public class DepartmentServiceImp implements DepartmentService {
return departmentMapper.departmentListModelToDTO(departmentRepository.findAll()); return departmentMapper.departmentListModelToDTO(departmentRepository.findAll());
} }
@Override @Override
public DepartmentDTO readDepartmentById(Long departmentId) { public DepartmentDTO readDepartmentById(Long departmentId) {
return departmentMapper.departmentModelToDTO(departmentRepository.findById(departmentId).get()); return departmentMapper.departmentModelToDTO(departmentRepository.findById(departmentId).get());
...@@ -43,10 +44,12 @@ public class DepartmentServiceImp implements DepartmentService { ...@@ -43,10 +44,12 @@ public class DepartmentServiceImp implements DepartmentService {
return departmentMapper.departmentModelToDTO(departmentRepository.findById(departmentId).get()); return departmentMapper.departmentModelToDTO(departmentRepository.findById(departmentId).get());
} }
@Override @Override
public void deleteDepartmentById(Long departmentId) { public void deleteDepartmentById(Long departmentId) {
departmentRepository.deleteById(departmentId); departmentRepository.deleteById(departmentId);
} }
@Override @Override
public DepartmentDTO findDepartmentByName(String departmentName) { public DepartmentDTO findDepartmentByName(String departmentName) {
......
package com.school.project.service.implementation; package com.school.project.service.implementation;
import com.school.project.model.Student; import com.school.project.dto.StudentDTO;
import com.school.project.mapper.StudentMapper;
import com.school.project.repository.StudentRepository; import com.school.project.repository.StudentRepository;
import com.school.project.service.interfaces.StudentService; import com.school.project.service.interfaces.StudentService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Optional;
@Service @Service
public class StudentServiceImp implements StudentService { public class StudentServiceImp implements StudentService {
@Autowired(required=true) @Autowired(required = true)
public StudentRepository studentRepository; public StudentRepository studentRepository;
@Autowired
public StudentMapper studentMapper;
@Override @Override
public Student saveStudent(Student student) { public StudentDTO saveStudent(StudentDTO studentDTO) {
return studentRepository.save(student); return studentMapper.studentModelToDTO(
studentRepository.save(
studentMapper.studentDTOToModel(studentDTO)));
} }
@Override @Override
public List<Student> readAllStudents() { public List<StudentDTO> readAllStudents() {
return studentRepository.findAll(); return studentMapper.studentModelToDTO(studentRepository.findAll());
} }
@Override @Override
public Optional<Student> readStudentById(Long id) { public StudentDTO readStudentById(Long id) {
return studentRepository.findById(id); return (studentMapper.studentModelToDTO(studentRepository.findById(id).get()));
} }
@Override @Override
public Student updateStudentById(Student student, Long id) { public StudentDTO updateStudentById(StudentDTO studentDTO, Long id) {
return student; StudentDTO dto = studentMapper.studentModelToDTO(studentRepository.findById(id).get());
if (studentDTO.getName() != null) {
dto.setName(studentDTO.getName());
}
if (studentDTO.getAge() != null) {
dto.setAge(studentDTO.getAge());
}
if (studentDTO.getCourseLists() != null) {
dto.setCourseLists(studentDTO.getCourseLists());
}
return studentMapper.studentModelToDTO(
studentRepository.save(
studentMapper.studentDTOToModel(dto)));
} }
@Override @Override
......
package com.school.project.service.implementation; package com.school.project.service.implementation;
import com.school.project.dto.TeacherDTO;
import com.school.project.mapper.TeacherMapper;
import com.school.project.model.Teacher; import com.school.project.model.Teacher;
import com.school.project.repository.TeacherRepository; import com.school.project.repository.TeacherRepository;
import com.school.project.service.interfaces.TeacherService; import com.school.project.service.interfaces.TeacherService;
...@@ -13,26 +15,46 @@ import java.util.Optional; ...@@ -13,26 +15,46 @@ import java.util.Optional;
public class TeacherServiceImp implements TeacherService { public class TeacherServiceImp implements TeacherService {
@Autowired(required = true) @Autowired(required = true)
public TeacherRepository teacherRepository; private TeacherRepository teacherRepository;
@Autowired
private TeacherMapper teacherMapper;
@Override @Override
public Teacher saveTeacher(Teacher teacher) { public TeacherDTO saveTeacher(TeacherDTO teacherDTO) {
return teacherRepository.save(teacher); return teacherMapper.teacherModelToDTo(
teacherRepository.save(
teacherMapper.teacherDTOToModel(teacherDTO)));
} }
@Override @Override
public List<Teacher> readAllTeachers() { public List<TeacherDTO> readAllTeachers() {
return teacherRepository.findAll(); return teacherMapper.teacherModelToDTo(teacherRepository.findAll());
} }
@Override @Override
public Optional<Teacher> readTeacherById(Long id) { public TeacherDTO readTeacherById(Long id) {
return teacherRepository.findById(id); return teacherMapper.teacherModelToDTo(teacherRepository.findById(id).get());
} }
@Override @Override
public Teacher updateTeacher(Teacher teacher, Long id) { public TeacherDTO updateTeacher(TeacherDTO teacherDTO, Long id) {
return null; TeacherDTO dto = readTeacherById(id);
if (teacherDTO.getName() != null) {
dto.setName(teacherDTO.getName());
}
if (teacherDTO.getDegree() != null) {
dto.setDegree(teacherDTO.getDegree());
}
if (teacherDTO.getCourseList() != null) {
dto.setCourseList(teacherDTO.getCourseList());
}
if (teacherDTO.getDepartment() != null) {
dto.setDepartment(teacherDTO.getDepartment());
}
return saveTeacher(dto);
} }
@Override @Override
......
...@@ -45,11 +45,11 @@ public class UserServiceImpl implements UserService, UserDetailsService { ...@@ -45,11 +45,11 @@ public class UserServiceImpl implements UserService, UserDetailsService {
Optional<User> userEmail = userRepository.findUserByEmail(email); Optional<User> userEmail = userRepository.findUserByEmail(email);
org.springframework.security.core.userdetails.User springUser=null; org.springframework.security.core.userdetails.User springUser = null;
if(userEmail.isEmpty()){ if (userEmail.isEmpty()) {
throw new UsernameNotFoundException("User With Email=" + email + "Not Founnd"); throw new UsernameNotFoundException("User With Email=" + email + "Not Founnd");
}else{ } else {
User user = userEmail.get(); User user = userEmail.get();
...@@ -57,14 +57,14 @@ public class UserServiceImpl implements UserService, UserDetailsService { ...@@ -57,14 +57,14 @@ public class UserServiceImpl implements UserService, UserDetailsService {
Set<GrantedAuthority> userAuthorities = new HashSet<>(); Set<GrantedAuthority> userAuthorities = new HashSet<>();
for (String userRole:userRoles){ for (String userRole : userRoles) {
userAuthorities.add(new SimpleGrantedAuthority(userRole)); userAuthorities.add(new SimpleGrantedAuthority(userRole));
} }
springUser = new org.springframework.security.core.userdetails.User( springUser = new org.springframework.security.core.userdetails.User(
email, email,
user.getPassword(), user.getPassword(),
userAuthorities ); userAuthorities);
} }
return springUser; return springUser;
......
package com.school.project.service.interfaces; package com.school.project.service.interfaces;
import com.school.project.dto.CourseDTO;
import com.school.project.model.Course; import com.school.project.model.Course;
import java.util.List; import java.util.List;
...@@ -7,13 +8,13 @@ import java.util.Optional; ...@@ -7,13 +8,13 @@ import java.util.Optional;
public interface CourseService { public interface CourseService {
public Course saveCourse(Course course); public CourseDTO saveCourse(CourseDTO courseDTO);
public List<Course> readAllCourse(); public List<CourseDTO> readAllCourse();
public Optional<Course> readCourseById(Long id); public CourseDTO readCourseById(Long id);
public Course updateCourseById(Course course,Long id); public CourseDTO updateCourseById(CourseDTO courseDTO, Long id);
public void deleteCourseById(Long id); public void deleteCourseById(Long id);
} }
...@@ -6,10 +6,15 @@ import java.util.List; ...@@ -6,10 +6,15 @@ import java.util.List;
public interface DepartmentService { public interface DepartmentService {
public DepartmentDTO saveDepartment(DepartmentDTO departmentDTO); public DepartmentDTO saveDepartment(DepartmentDTO departmentDTO);
public List<DepartmentDTO> readDepartment(); public List<DepartmentDTO> readDepartment();
public DepartmentDTO readDepartmentById(Long id); public DepartmentDTO readDepartmentById(Long id);
public DepartmentDTO updateDepartment(DepartmentDTO departmentDTO,Long id);
public DepartmentDTO updateDepartment(DepartmentDTO departmentDTO, Long id);
public void deleteDepartmentById(Long id); public void deleteDepartmentById(Long id);
public DepartmentDTO findDepartmentByName(String departmentName); public DepartmentDTO findDepartmentByName(String departmentName);
} }
package com.school.project.service.interfaces; package com.school.project.service.interfaces;
import com.school.project.dto.StudentDTO;
import com.school.project.model.Student; import com.school.project.model.Student;
import java.util.List; import java.util.List;
import java.util.Optional;
public interface StudentService { public interface StudentService {
public Student saveStudent(Student student); public StudentDTO saveStudent(StudentDTO studentDTO);
public List<Student> readAllStudents(); public List<StudentDTO> readAllStudents();
public Optional<Student> readStudentById(Long id); public StudentDTO readStudentById(Long id);
public Student updateStudentById(Student student,Long id); public StudentDTO updateStudentById(StudentDTO studentDTO, Long id);
public void deleteStudentById(Long id); public void deleteStudentById(Long id);
......
package com.school.project.service.interfaces; package com.school.project.service.interfaces;
import com.school.project.dto.TeacherDTO;
import com.school.project.model.Teacher; import com.school.project.model.Teacher;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -9,13 +10,13 @@ import java.util.Optional; ...@@ -9,13 +10,13 @@ import java.util.Optional;
@Service @Service
public interface TeacherService { public interface TeacherService {
public Teacher saveTeacher(Teacher teacher); public TeacherDTO saveTeacher(TeacherDTO teacherDTO);
public List<Teacher> readAllTeachers(); public List<TeacherDTO> readAllTeachers();
public Optional<Teacher> readTeacherById(Long id); public TeacherDTO readTeacherById(Long id);
public Teacher updateTeacher(Teacher teacher,Long id); public TeacherDTO updateTeacher(TeacherDTO teacherDTO, Long id);
public void deleteTeacherById(Long id); public void deleteTeacherById(Long id);
......
#
#spring.jpa.hibernate.ddl-auto=update
#spring.datasource.url=jdbc:mysql://localhost:3306/schoolDataBase
#spring.datasource.username=root
#spring.datasource.password=charlie123
spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/schoolDataBase spring.datasource.url=jdbc:mysql://localhost:3306/schooldataBase
spring.datasource.username=root spring.datasource.username=root
spring.datasource.password=charlie123 spring.datasource.password=root
spring.security.user.name= sulemantalpur6@gmail.com spring.security.user.name= sulemantalpur6@gmail.com
spring.security.user.password=charlie spring.security.user.password=charlie
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment