Skip to content

Commit

Permalink
Merge pull request #2 from abes-esr/develop
Browse files Browse the repository at this point in the history
mise en prod
  • Loading branch information
julg authored Feb 27, 2024
2 parents c29d2f5 + 0adb072 commit b65de5c
Show file tree
Hide file tree
Showing 5 changed files with 504 additions and 25 deletions.
13 changes: 13 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,19 @@
<version>8.7</version>
</dependency>

<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1.2</version>
</dependency>

<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.2.0</version>
</dependency>


</dependencies>
<build>
<plugins>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package fr.abes.theses.export.controller;


import fr.abes.theses.export.service.BibRis;
import fr.abes.theses.export.service.DbRequest;
import fr.abes.theses.export.service.XslTransfo;
import io.swagger.v3.oas.annotations.Operation;
Expand All @@ -10,55 +11,80 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
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 javax.servlet.http.HttpServletResponse;

@Slf4j
@RestController
@RequestMapping("/api/v1/theses/")
@RequestMapping("/")
public class ExportController {

@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
DbRequest dbRequest;

@Autowired
XslTransfo xslTransfo;

@Autowired
BibRis bibRis;

@Operation(
summary = "Retourne les métadonnées de la thèse sous format RDF.",
description = "Retourne les métadonnées de la thèse sous format RDF.")
@ApiResponse(responseCode = "400", description = "Le format du numéro national de thèse fourni est incorrect")
@ApiResponse(responseCode = "200", description = "Opération terminée avec succès")
@ApiResponse(responseCode = "500", description = "DbRequest indisponible")
@GetMapping(value = "export/rdf/{nnt}", produces = "application/xml")
public ResponseEntity exportRDF(@PathVariable @Parameter(name = "nnt", description = "Numéro National de Thèse", example = "2013MON30092") String nnt) {
return new ResponseEntity<>(xslTransfo.transformXsl(dbRequest.findTefByNntOrNumsujet(nnt), "tef2rdf.xsl"), HttpStatus.OK);
@ApiResponse(responseCode = "500", description = "Service indisponible")
@GetMapping(value = "export/rdf/{nntOuNumsujet}", produces = "application/xml")
public ResponseEntity exportRDF(@PathVariable @Parameter(name = "nntOuNumsujet", description = "Numéro National de Thèse ou numéro de sujet", example = "2013MON30092") String nntOuNumsujet) {
return new ResponseEntity<>(xslTransfo.transformXsl(dbRequest.findTefByNntOrNumsujet(nntOuNumsujet), "tef2rdf.xsl"), HttpStatus.OK);
}

@Operation(
summary = "Retourne les métadonnées de la thèse sous format RDF.",
description = "Retourne les métadonnées de la thèse sous format RDF.")
@ApiResponse(responseCode = "400", description = "Le format du numéro national de thèse fourni est incorrect")
@ApiResponse(responseCode = "200", description = "Opération terminée avec succès")
@ApiResponse(responseCode = "500", description = "DbRequest indisponible")
@GetMapping(value = "export/xml/{nnt}", produces = "application/xml")
public ResponseEntity exportXML(@PathVariable @Parameter(name = "nnt", description = "Numéro National de Thèse", example = "2013MON30092") String nnt) {
return new ResponseEntity<>(xslTransfo.transformXsl(dbRequest.findTefByNntOrNumsujet(nnt), "tef2rdf.xsl"), HttpStatus.OK);
@ApiResponse(responseCode = "500", description = "Service indisponible")
@GetMapping(value = "export/xml/{nntOuNumsujet}", produces = "application/xml")
public ResponseEntity exportXML(@PathVariable @Parameter(name = "nntOuNumsujet", description = "Numéro National de Thèse ou numéro de sujet", example = "2013MON30092") String nntOuNumsujet) {
return new ResponseEntity<>(xslTransfo.transformXsl(dbRequest.findTefByNntOrNumsujet(nntOuNumsujet), "tef2rdf.xsl"), HttpStatus.OK);
}

@Operation(
summary = "Retourne les métadonnées de la thèse sous format tefudoc.",
description = "Retourne les métadonnées de la thèse sous format tefudoc.")
@ApiResponse(responseCode = "400", description = "Le format du numéro national de thèse fourni est incorrect")
@ApiResponse(responseCode = "200", description = "Opération terminée avec succès")
@ApiResponse(responseCode = "500", description = "DbRequest indisponible")
@GetMapping(value = "export/tefudoc/{nnt}", produces = "application/xml")
public ResponseEntity exportTefudoc(@PathVariable @Parameter(name = "nnt", description = "Numéro National de Thèse", example = "2013MON30092") String nnt) {
return new ResponseEntity<>(xslTransfo.transformXsl(dbRequest.findTefByNntOrNumsujet(nnt), "tef2tefSansGestion.xsl"), HttpStatus.OK);
@ApiResponse(responseCode = "500", description = "Service indisponible")
@GetMapping(value = "export/tefudoc/{nntOuNumsujet}", produces = "application/xml")
public ResponseEntity exportTefudoc(@PathVariable @Parameter(name = "nntOuNumsujet", description = "Numéro National de Thèse ou numéro de sujet", example = "2013MON30092") String nntOuNumsujet) {
return new ResponseEntity<>(xslTransfo.transformXsl(dbRequest.findTefByNntOrNumsujet(nntOuNumsujet), "tef2tefSansGestion.xsl"), HttpStatus.OK);
}

@Operation(
summary = "Retourne les métadonnées de la thèse dans un fichier bibtex.",
description = "Retourne les métadonnées de la thèse dans un fichier bibtex.")
@ApiResponse(responseCode = "400", description = "Le format du numéro national de thèse fourni est incorrect")
@ApiResponse(responseCode = "200", description = "Opération terminée avec succès")
@ApiResponse(responseCode = "500", description = "Service indisponible")
@GetMapping(value = "export/bib/{nntOuNumsujet}")
public ResponseEntity exportBib(@PathVariable @Parameter(name = "nntOuNumsujet", description = "Numéro National de Thèse ou numéro de sujet", example = "2013MON30092") String nntOuNumsujet, HttpServletResponse response) {
return new ResponseEntity<>(bibRis.renvoyerFichier(bibRis.generateBibData(dbRequest.findTefByNntOrNumsujet(nntOuNumsujet), nntOuNumsujet), response, "resultat.bib"), HttpStatus.OK);
}

@Operation(
summary = "Retourne les métadonnées de la thèse dans un fichier ris.",
description = "Retourne les métadonnées de la thèse dans un fichier ris.")
@ApiResponse(responseCode = "400", description = "Le format du numéro national de thèse fourni est incorrect")
@ApiResponse(responseCode = "200", description = "Opération terminée avec succès")
@ApiResponse(responseCode = "500", description = "Service indisponible")
@GetMapping(value = "export/ris/{nntOuNumsujet}")
public ResponseEntity exportRis(@PathVariable @Parameter(name = "nntOuNumsujet", description = "Numéro National de Thèse ou numéro de sujet", example = "2013MON30092") String nntOuNumsujet, HttpServletResponse response) {
return new ResponseEntity<>(bibRis.renvoyerFichier(bibRis.generateRisData(dbRequest.findTefByNntOrNumsujet(nntOuNumsujet), nntOuNumsujet), response, "resultat.ris"), HttpStatus.OK);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,33 @@ public class RedirectionController {
@Value("${racine}")
String racine;

@GetMapping(value = "{nnt}.xml")
public ResponseEntity<Void> redirectXML(@PathVariable String nnt){
@GetMapping(value = "{nntOuNumsujet}.xml")
public ResponseEntity<Void> redirectXML(@PathVariable String nntOuNumsujet){

return ResponseEntity.status(HttpStatus.MOVED_PERMANENTLY).location(URI.create(racine + "/api/v1/theses/export/xml/" + nnt)).build();
return ResponseEntity.status(HttpStatus.MOVED_PERMANENTLY).location(URI.create(racine + "/api/v1/export/xml/" + nntOuNumsujet)).build();
}

@GetMapping(value = "{nnt}.rdf")
public ResponseEntity<Void> redirectRDF(@PathVariable String nnt){
@GetMapping(value = "{nntOuNumsujet}.rdf")
public ResponseEntity<Void> redirectRDF(@PathVariable String nntOuNumsujet){

return ResponseEntity.status(HttpStatus.MOVED_PERMANENTLY).location(URI.create(racine + "/api/v1/theses/export/rdf/" + nnt)).build();
return ResponseEntity.status(HttpStatus.MOVED_PERMANENTLY).location(URI.create(racine + "/api/v1/export/rdf/" + nntOuNumsujet)).build();
}

@GetMapping(value = "{nnt}.tefudoc")
public ResponseEntity<Void> redirectTefudoc(@PathVariable String nnt){
@GetMapping(value = "{nntOuNumsujet}.tefudoc")
public ResponseEntity<Void> redirectTefudoc(@PathVariable String nntOuNumsujet){

return ResponseEntity.status(HttpStatus.MOVED_PERMANENTLY).location(URI.create(racine + "/api/v1/theses/export/tefudoc/" + nnt)).build();
return ResponseEntity.status(HttpStatus.MOVED_PERMANENTLY).location(URI.create(racine + "/api/v1/export/tefudoc/" + nntOuNumsujet)).build();
}

@GetMapping(value = "{nntOuNumsujet}.ris")
public ResponseEntity<Void> redirectRis(@PathVariable String nntOuNumsujet){

return ResponseEntity.status(HttpStatus.MOVED_PERMANENTLY).location(URI.create(racine + "/api/v1/export/ris/" + nntOuNumsujet)).build();
}

@GetMapping(value = "{nntOuNumsujet}.bib")
public ResponseEntity<Void> redirectBib(@PathVariable String nntOuNumsujet){

return ResponseEntity.status(HttpStatus.MOVED_PERMANENTLY).location(URI.create(racine + "/api/v1/export/bib/" + nntOuNumsujet)).build();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package fr.abes.theses.export.exception;

import lombok.extern.slf4j.Slf4j;
import org.jdom.JDOMException;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.dao.EmptyResultDataAccessException;
Expand All @@ -13,6 +14,7 @@

import javax.xml.transform.TransformerException;
import java.io.FileNotFoundException;
import java.io.IOException;

@ControllerAdvice
@Order(Ordered.HIGHEST_PRECEDENCE)
Expand Down Expand Up @@ -57,4 +59,18 @@ protected ResponseEntity<Object> handleTransformerException(TransformerException
log.debug(error + " " + ex.getLocalizedMessage());
return buildResponseEntity(new ApiReturnError(HttpStatus.INTERNAL_SERVER_ERROR, error, ex));
}

@ExceptionHandler(JDOMException.class)
protected ResponseEntity<Object> handleJDOMException(JDOMException ex) {
String error = "JDOMException (bibtex, ris)...";
log.debug(error + " " + ex.getLocalizedMessage());
return buildResponseEntity(new ApiReturnError(HttpStatus.INTERNAL_SERVER_ERROR, error, ex));
}

@ExceptionHandler(IOException.class)
protected ResponseEntity<Object> handleIOException(IOException ex) {
String error = "IOException (bibtex, ris)...";
log.debug(error + " " + ex.getLocalizedMessage());
return buildResponseEntity(new ApiReturnError(HttpStatus.INTERNAL_SERVER_ERROR, error, ex));
}
}
Loading

0 comments on commit b65de5c

Please sign in to comment.