added EndPoints and Mock
This commit is contained in:
parent
5e9eccc4f6
commit
4720669c2c
@ -0,0 +1,44 @@
|
||||
package ovh.herisson.Clyde.DTO.ScientificPublications;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
import ovh.herisson.Clyde.Tables.ScientificPublications.Access;
|
||||
import ovh.herisson.Clyde.Tables.ScientificPublications.PaperType;
|
||||
import ovh.herisson.Clyde.Tables.ScientificPublications.Research;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class ResearchDTO {
|
||||
|
||||
private long id;
|
||||
private String title;
|
||||
private ResearcherDTO researcher;
|
||||
private Date releaseDate;
|
||||
private PaperType paperType;
|
||||
private String pdfLocation;
|
||||
private String language;
|
||||
private Access access;
|
||||
private String domain;
|
||||
private String summary;
|
||||
|
||||
private ResearchDTO(String title, ResearcherDTO researcherDTO, Date releaseDate, PaperType paperType, String pdfLocation, String language, Access access, String domain, String summary, long id) {
|
||||
this.title = title;
|
||||
this.researcher = researcherDTO;
|
||||
this.releaseDate = releaseDate;
|
||||
this.paperType = paperType;
|
||||
this.pdfLocation = pdfLocation;
|
||||
this.language = language;
|
||||
this.access = access;
|
||||
this.domain = domain;
|
||||
this.summary = summary;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
|
||||
public static ResearchDTO construct(Research research){
|
||||
return new ResearchDTO(research.getTitle(), ResearcherDTO.construct(research.getAuthor()), research.getReleaseDate(),
|
||||
research.getPaperType(),research.getPdfLocation(),research.getLanguage(),research.getAccess(),
|
||||
research.getDomain(), research.getSummary(), research.getId());
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package ovh.herisson.Clyde.DTO.ScientificPublications;
|
||||
|
||||
import lombok.Data;
|
||||
import ovh.herisson.Clyde.Services.ProtectionService;
|
||||
import ovh.herisson.Clyde.Tables.ScientificPublications.Researcher;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class ResearcherDTO {
|
||||
|
||||
private long id;
|
||||
private Map<String,Object> user;
|
||||
private String site;
|
||||
private String domain;
|
||||
private String orcidId;
|
||||
|
||||
|
||||
private ResearcherDTO(long id, Map<String ,Object> user, String site,String domain,String orcidId){
|
||||
this.domain = domain;
|
||||
this.orcidId = orcidId;
|
||||
this.site = site;
|
||||
this.user = user;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public static ResearcherDTO construct(Researcher researcher){
|
||||
return new ResearcherDTO(researcher.getId(), ProtectionService.userWithoutPassword(researcher.getUser()),researcher.getSite(),
|
||||
researcher.getDomain(),researcher.getOrcidId());
|
||||
}
|
||||
}
|
@ -5,7 +5,13 @@ import org.springframework.web.bind.annotation.*;
|
||||
import ovh.herisson.Clyde.Repositories.TokenRepository;
|
||||
import ovh.herisson.Clyde.Repositories.UserRepository;
|
||||
import ovh.herisson.Clyde.Services.*;
|
||||
import ovh.herisson.Clyde.Services.ScientificPublications.ResearchesService;
|
||||
import ovh.herisson.Clyde.Tables.*;
|
||||
import ovh.herisson.Clyde.Tables.ScientificPublications.Access;
|
||||
import ovh.herisson.Clyde.Tables.ScientificPublications.PaperType;
|
||||
import ovh.herisson.Clyde.Tables.ScientificPublications.Research;
|
||||
import ovh.herisson.Clyde.Tables.ScientificPublications.Researcher;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
@ -24,10 +30,12 @@ public class MockController {
|
||||
public final CourseService courseService;
|
||||
|
||||
public final InscriptionService inscriptionService;
|
||||
|
||||
public final ResearchesService researchesService;
|
||||
ArrayList<User> mockUsers;
|
||||
|
||||
|
||||
public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, InscriptionService inscriptionService){
|
||||
public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, InscriptionService inscriptionService, ResearchesService researchesService){
|
||||
this.tokenRepo = tokenRepo;
|
||||
this.userRepo = userRepo;
|
||||
this.tokenService = tokenService;
|
||||
@ -35,6 +43,7 @@ public class MockController {
|
||||
this.curriculumService = curriculumService;
|
||||
this.courseService = courseService;
|
||||
this.inscriptionService = inscriptionService;
|
||||
this.researchesService = researchesService;
|
||||
}
|
||||
|
||||
/** Saves an example of each user type by :
|
||||
@ -96,6 +105,18 @@ public class MockController {
|
||||
|
||||
inscriptionService.save(inscriptionRequest);
|
||||
|
||||
|
||||
///////////////////////////
|
||||
// extension Publications Scientifiques
|
||||
Researcher jojoResearcherAccount = new Researcher(jojo,"3363-22555-AB33-T",null,"IT");
|
||||
|
||||
Researcher output = researchesService.saveResearcher(jojoResearcherAccount);
|
||||
|
||||
Research jojoResearch = new Research("Graphs : Advanced Search Algorithms",output,new Date(),
|
||||
PaperType.Article,null,null,"english",
|
||||
Access.OpenSource,"IT","This Article's title speak for itself\n We'll discuss about advanced Graph search Algorithms");
|
||||
|
||||
researchesService.saveResearch(jojoResearch);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import ovh.herisson.Clyde.DTO.ScientificPublications.ResearchDTO;
|
||||
import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
|
||||
import ovh.herisson.Clyde.Services.AuthenticatorService;
|
||||
import ovh.herisson.Clyde.Services.ScientificPublications.ResearchesService;
|
||||
@ -11,6 +12,7 @@ import ovh.herisson.Clyde.Tables.Role;
|
||||
import ovh.herisson.Clyde.Tables.ScientificPublications.Research;
|
||||
import ovh.herisson.Clyde.Tables.ScientificPublications.Researcher;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@ -29,7 +31,7 @@ public class ResearchController {
|
||||
* the return Research Download URL will be null
|
||||
*/
|
||||
@GetMapping("/research/{id}")
|
||||
public ResponseEntity<Research> getResearch(@RequestHeader("Authorization") String token, @PathVariable long id){
|
||||
public ResponseEntity<ResearchDTO> getResearch(@RequestHeader(value = "Authorization", required = false) String token, @PathVariable long id){
|
||||
|
||||
Research research = researchesServ.getResearchById(id);
|
||||
|
||||
@ -40,7 +42,22 @@ public class ResearchController {
|
||||
research.setPdfLocation(null);
|
||||
}// If the user doesn't have access to the document he can't download the pdf
|
||||
|
||||
return new ResponseEntity<>(research, HttpStatus.OK);
|
||||
return new ResponseEntity<>(ResearchDTO.construct(research), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@GetMapping("/researches")
|
||||
public ResponseEntity<Iterable<ResearchDTO>> getResearches(@RequestHeader(value = "Authorization",required = false) String token){
|
||||
Iterable<Research> researches = researchesServ.getAllResearches();
|
||||
|
||||
ArrayList<ResearchDTO> toReturnResearches = new ArrayList<>();
|
||||
|
||||
for (Research research: researches){
|
||||
if (researchesServ.hasNoAccessTo(research,authServ.getUserFromToken(token))){
|
||||
research.setPdfLocation(null);
|
||||
}
|
||||
toReturnResearches.add(ResearchDTO.construct(research));
|
||||
}
|
||||
return new ResponseEntity<>(toReturnResearches,HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/research")
|
||||
|
@ -0,0 +1,65 @@
|
||||
package ovh.herisson.Clyde.EndPoints.ScientificPublications;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import ovh.herisson.Clyde.DTO.ScientificPublications.ResearcherDTO;
|
||||
import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
|
||||
import ovh.herisson.Clyde.Services.AuthenticatorService;
|
||||
import ovh.herisson.Clyde.Services.ScientificPublications.ResearchesService;
|
||||
import ovh.herisson.Clyde.Tables.Role;
|
||||
import ovh.herisson.Clyde.Tables.ScientificPublications.Researcher;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@RestController
|
||||
@CrossOrigin(originPatterns = "*", allowCredentials = "true")
|
||||
@AllArgsConstructor
|
||||
public class ResearcherController {
|
||||
|
||||
ResearchesService researchesServ;
|
||||
AuthenticatorService authServ;
|
||||
|
||||
|
||||
@GetMapping("/researcher/{id}")
|
||||
public ResponseEntity<ResearcherDTO> getResearcher(@PathVariable long id){
|
||||
Researcher researcher = researchesServ.getResearcherById(id);
|
||||
return new ResponseEntity<>(ResearcherDTO.construct(researcher),HttpStatus.OK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Everyone can access every researcher Account
|
||||
* @return all the researchers accounts
|
||||
*/
|
||||
@GetMapping("/researchers")
|
||||
public ResponseEntity<Iterable<ResearcherDTO>> getAllResearchers(){
|
||||
Iterable<Researcher> researchers = researchesServ.getAllResearchers();
|
||||
ArrayList<ResearcherDTO> toReturnResearchersDTO = new ArrayList<>();
|
||||
for (Researcher researcher: researchers){
|
||||
toReturnResearchersDTO.add(ResearcherDTO.construct(researcher));
|
||||
}
|
||||
return new ResponseEntity<>(toReturnResearchersDTO, HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/researcher")
|
||||
public ResponseEntity<ResearcherDTO> postResearcher(@RequestHeader("Authorization") String token, @RequestBody Researcher researcher){
|
||||
if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary}, token)){
|
||||
return new UnauthorizedResponse<>(null);
|
||||
}
|
||||
|
||||
Researcher posted = researchesServ.saveResearcher(researcher);
|
||||
|
||||
return new ResponseEntity<>(ResearcherDTO.construct(posted), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@DeleteMapping("/researcher/{id}")
|
||||
public ResponseEntity<String> deleteResearcher(@RequestHeader ("Authorization") String token, @PathVariable long id){
|
||||
if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary},token))
|
||||
return new UnauthorizedResponse<>(null);
|
||||
|
||||
researchesServ.deleteResearcher(researchesServ.getResearcherById(id));
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
@ -5,5 +5,5 @@ import ovh.herisson.Clyde.Tables.ScientificPublications.Research;
|
||||
|
||||
public interface ResearchRepository extends CrudRepository<Research,Long> {
|
||||
|
||||
public Research findById(long id);
|
||||
Research findById(long id);
|
||||
}
|
||||
|
@ -5,5 +5,7 @@ import ovh.herisson.Clyde.Tables.ScientificPublications.Researcher;
|
||||
import ovh.herisson.Clyde.Tables.User;
|
||||
|
||||
public interface ResearcherRepository extends CrudRepository<Researcher,Long> {
|
||||
public Researcher findByUser(User user);
|
||||
Researcher findByUser(User user);
|
||||
|
||||
Researcher findById(long id);
|
||||
}
|
||||
|
@ -100,7 +100,27 @@ public class ResearchesService {
|
||||
articleRepo.save(research);
|
||||
}
|
||||
|
||||
public void delete(Research research) {
|
||||
public void deleteResearch(Research research) {
|
||||
articleRepo.delete(research);
|
||||
}
|
||||
|
||||
public Iterable<Research> getAllResearches() {
|
||||
return articleRepo.findAll();
|
||||
}
|
||||
|
||||
public Researcher saveResearcher(Researcher researcher) {
|
||||
return researcherRepo.save(researcher);
|
||||
}
|
||||
|
||||
public Iterable<Researcher> getAllResearchers() {
|
||||
return researcherRepo.findAll();
|
||||
}
|
||||
|
||||
public Researcher getResearcherById(long id) {
|
||||
return researcherRepo.findById(id);
|
||||
}
|
||||
|
||||
public void deleteResearcher(Researcher researcher) {
|
||||
researcherRepo.delete(researcher);
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package ovh.herisson.Clyde.Tables.ScientificPublications;
|
||||
|
||||
/******************************************************
|
||||
* @file Article.java
|
||||
* @file Research.java
|
||||
* @author Maxime Bartha
|
||||
* @scope Extension Publications scientifiques
|
||||
*
|
||||
|
@ -1,17 +1,14 @@
|
||||
package ovh.herisson.Clyde.Tables.ScientificPublications;
|
||||
|
||||
/******************************************************
|
||||
* @file ArticleCoAuthors
|
||||
* @file ResearchCoAuthors
|
||||
* @author Maxime Bartha
|
||||
* @scope Extension Publications scientifiques
|
||||
*
|
||||
* Co-Authors List entity (will be accessed by Articles)
|
||||
*
|
||||
******************************************************/
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.FetchType;
|
||||
import jakarta.persistence.JoinColumn;
|
||||
import jakarta.persistence.ManyToOne;
|
||||
import jakarta.persistence.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -26,6 +23,10 @@ import org.hibernate.annotations.OnDeleteAction;
|
||||
@Entity
|
||||
public class ResearchCoAuthors {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
Long id;
|
||||
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "Researcher")
|
||||
private Researcher coAuthor;
|
||||
|
@ -19,15 +19,21 @@ import ovh.herisson.Clyde.Tables.User;
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity
|
||||
public class Researcher {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private long id;
|
||||
@OneToOne
|
||||
@OneToOne(cascade=CascadeType.REMOVE, optional=true)
|
||||
private User user;
|
||||
private String orcidId;
|
||||
private String site;
|
||||
private String Domain;
|
||||
private String domain;
|
||||
|
||||
public Researcher(User user, String orcidId, String site, String domain){
|
||||
this.user = user;
|
||||
this.orcidId = orcidId;
|
||||
this.site = site;
|
||||
this.domain = domain;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user