Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package br.com.viktor.javawebpoc.controller;

import javax.inject.Inject;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import br.com.viktor.javawebpoc.controller.base.AbstractCrudController;
import br.com.viktor.javawebpoc.entity.Grade;
import br.com.viktor.javawebpoc.facade.GradeFacade;

@Controller
@RequestMapping("/grade")
public class GradeController extends AbstractCrudController<Grade> {

@Inject
public GradeController(GradeFacade gradeFacade) {
super(gradeFacade);
}

}
Original file line number Diff line number Diff line change
@@ -1,21 +1,37 @@
package br.com.viktor.javawebpoc.controller;

import java.util.List;

import javax.inject.Inject;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import br.com.viktor.javawebpoc.controller.base.AbstractCrudController;
import br.com.viktor.javawebpoc.entity.Grade;
import br.com.viktor.javawebpoc.entity.Student;
import br.com.viktor.javawebpoc.exception.invalidArgument.NullArgumentException;
import br.com.viktor.javawebpoc.exception.notFound.NotFoundException;
import br.com.viktor.javawebpoc.facade.StudentFacade;

@Controller
@RequestMapping("/student")
public class StudentController extends AbstractCrudController<Student> {

private StudentFacade studentFacade;

@Inject
public StudentController(StudentFacade facade) {
super(facade);
public StudentController(StudentFacade studentFacade) {
super(studentFacade);
this.studentFacade = studentFacade;
}

@RequestMapping(value = "/{studentId}/grade", method = RequestMethod.GET)
@ResponseBody
public List<Grade> findAllGradeByStudentId(@PathVariable Long studentId) throws NotFoundException, NullArgumentException{
return studentFacade.findAllByStudentId(studentId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package br.com.viktor.javawebpoc.entity;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import br.com.viktor.javawebpoc.entity.base.AbstractEntity;

@Entity
@Table(name = "TB_GRADE")
public class Grade extends AbstractEntity {

@ManyToOne(fetch = FetchType.EAGER)
private Student student;

private Float score;

public Float getScore() {
return score;
}

public void setScore(Float score) {
this.score = score;
}

public Student getStudent() {
return student;
}

public void setStudent(Student student) {
this.student = student;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package br.com.viktor.javawebpoc.facade;

import javax.inject.Inject;

import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import br.com.viktor.javawebpoc.entity.Grade;
import br.com.viktor.javawebpoc.facade.base.AbstractCrudFacade;
import br.com.viktor.javawebpoc.service.contract.GradeServiceContract;

@Component
@Transactional
public class GradeFacade extends AbstractCrudFacade<Grade>{

public GradeFacade(){
super(null);
}

@Inject
public GradeFacade(GradeServiceContract gradeService) {
super(gradeService);

}

}
Original file line number Diff line number Diff line change
@@ -1,20 +1,40 @@
package br.com.viktor.javawebpoc.facade;

import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;

import javax.inject.Inject;

import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import br.com.viktor.javawebpoc.entity.Grade;
import br.com.viktor.javawebpoc.entity.Student;
import br.com.viktor.javawebpoc.exception.invalidArgument.NullArgumentException;
import br.com.viktor.javawebpoc.exception.notFound.NotFoundException;
import br.com.viktor.javawebpoc.facade.base.AbstractCrudFacade;
import br.com.viktor.javawebpoc.service.contract.base.AbstractCrudContract;
import br.com.viktor.javawebpoc.service.contract.GradeServiceContract;
import br.com.viktor.javawebpoc.service.contract.StudentServiceContract;

@Component
@Transactional
public class StudentFacade extends AbstractCrudFacade<Student> {

@Autowired
public StudentFacade(AbstractCrudContract<Student> abstractCrud) {
super(abstractCrud);
private StudentServiceContract studentService;
private GradeServiceContract gradeService;

public StudentFacade(){
super(null);
}

@Inject
public StudentFacade(StudentServiceContract studentService, GradeServiceContract gradeService) {
super(studentService);
this.studentService = studentService;
this.gradeService = gradeService;
}

public List<Grade> findAllByStudentId(Long studentId) throws NotFoundException, NullArgumentException{
return this.gradeService.findAllByStudent(this.studentService.find(studentId));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package br.com.viktor.javawebpoc.repository;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import br.com.viktor.javawebpoc.entity.Grade;
import br.com.viktor.javawebpoc.entity.Student;

@Repository
public interface GradeRepositoryContract extends JpaRepository<Grade, Long> {
public List<Grade> findAllByStudent(Student student);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package br.com.viktor.javawebpoc.service.contract;

import java.util.List;

import br.com.viktor.javawebpoc.entity.Grade;
import br.com.viktor.javawebpoc.entity.Student;
import br.com.viktor.javawebpoc.service.contract.base.AbstractCrudContract;

public interface GradeServiceContract extends AbstractCrudContract<Grade> {
public List<Grade> findAllByStudent(Student student);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package br.com.viktor.javawebpoc.service.impl;

import java.util.List;

import javax.inject.Inject;
import javax.persistence.EntityExistsException;

import org.springframework.stereotype.Service;

import br.com.viktor.javawebpoc.entity.Grade;
import br.com.viktor.javawebpoc.entity.Student;
import br.com.viktor.javawebpoc.exception.alreadyExists.AlreadyExistsException;
import br.com.viktor.javawebpoc.exception.invalidArgument.InvalidArgumentException;
import br.com.viktor.javawebpoc.exception.notFound.NotFoundException;
import br.com.viktor.javawebpoc.repository.GradeRepositoryContract;
import br.com.viktor.javawebpoc.service.contract.GradeServiceContract;
import br.com.viktor.javawebpoc.service.impl.base.AbstractCrudService;

@Service
public class GradeService extends AbstractCrudService<Grade> implements GradeServiceContract {

private GradeRepositoryContract gradeRepository;

@Inject
public GradeService(GradeRepositoryContract gradeRepository) {
super(gradeRepository);
this.gradeRepository = gradeRepository;
}

@Override
protected void checkIfValid(Grade entity) throws InvalidArgumentException {
if(entity.getScore() > 10 || entity.getScore() < 0){
throw new InvalidArgumentException();
}

}

@Override
protected void checkBussinessKey(Grade entity)
throws AlreadyExistsException {
try {
if(this.find(entity.getId()) != null)
throw new EntityExistsException();
} catch (NotFoundException e) {}

}

@Override
public List<Grade> findAllByStudent(Student student) {
return gradeRepository.findAllByStudent(student);
}

}