diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/DNetOpenaireExporterApplication.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/DNetOpenaireExporterApplication.java index e521bed8..486f44e4 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/DNetOpenaireExporterApplication.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/DNetOpenaireExporterApplication.java @@ -9,7 +9,6 @@ import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.scheduling.annotation.EnableScheduling; -import eu.dnetlib.DnetOpenaireExporterProperties.Swagger; import eu.dnetlib.common.app.AbstractDnetApp; import eu.dnetlib.openaire.community.CommunityApiController; import eu.dnetlib.openaire.context.ContextApiController; @@ -77,7 +76,7 @@ public class DNetOpenaireExporterApplication extends AbstractDnetApp { return newGroupedOpenApi("OpenAIRE Info", InfoController.class.getPackage().getName()); } - private GroupedOpenApi newGroupedOpenApi(final String groupName, final String controllerPackage, final Swagger swag, final String version) { + private GroupedOpenApi newGroupedOpenApi(final String groupName, final String controllerPackage) { return GroupedOpenApi.builder() .group(groupName) .packagesToScan(controllerPackage) diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/funders/FundersApiController.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/funders/FundersApiController.java index 18663a9e..f4e598b3 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/funders/FundersApiController.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/funders/FundersApiController.java @@ -15,7 +15,6 @@ import org.springframework.web.bind.annotation.RestController; import eu.dnetlib.openaire.common.AbstractExporterController; import eu.dnetlib.openaire.funders.domain.ExtendedFunderDetails; import eu.dnetlib.openaire.funders.domain.FunderDetails; -import eu.dnetlib.openaire.funders.domain.db.FunderDbEntry; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; @@ -37,10 +36,10 @@ public class FundersApiController extends AbstractExporterController { @RequestMapping(value = "/funders", produces = { "application/json" }, method = RequestMethod.GET) - @Operation(value = "get basic information about funders", notes = "basic information about funders: id, name, shortname, last update date, registration date", response = FunderDetails[].class) + @Operation(summary = "get basic information about funders", description = "basic information about funders: id, name, shortname, last update date, registration date") @ApiResponses(value = { - @ApiResponse(responseCode = "200", description = "OK", response = FunderDetails[].class), - @ApiResponse(responseCode = "500", description = "unexpected error", response = ErrorMessage.class) + @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "500", description = "unexpected error") }) public List getFunders( @PathVariable final int page, @@ -52,10 +51,10 @@ public class FundersApiController extends AbstractExporterController { @RequestMapping(value = "/funder/{id}", produces = { "application/json" }, method = RequestMethod.GET) - @Operation(summary = "get the funder details", notes = "complete funder information", response = FunderDbEntry.class) + @Operation(summary = "get the funder details", description = "complete funder information") @ApiResponses(value = { - @ApiResponse(responseCode = "200", description = "OK", response = FunderDbEntry.class), - @ApiResponse(responseCode = "500", description = "unexpected error", response = ErrorMessage.class) + @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "500", description = "unexpected error") }) public ExtendedFunderDetails getFunderDetails( @PathVariable final String id) throws FundersApiException { @@ -66,10 +65,10 @@ public class FundersApiController extends AbstractExporterController { @RequestMapping(value = "/funder/ids", produces = { "application/json" }, method = RequestMethod.GET) - @Operation(summary = "get the list of funder ids", notes = "get the list of funder ids", response = String[].class) + @Operation(summary = "get the list of funder ids", description = "get the list of funder ids") @ApiResponses(value = { - @ApiResponse(responseCode = "200", description = "OK", response = String[].class), - @ApiResponse(responseCode = "500", description = "unexpected error", response = ErrorMessage.class) + @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "500", description = "unexpected error") }) public List getFunderIds( @PathVariable final int page, diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/project/ProjectsController.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/project/ProjectsController.java index 09ea9913..95115946 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/project/ProjectsController.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/project/ProjectsController.java @@ -35,8 +35,6 @@ import eu.dnetlib.openaire.common.AbstractExporterController; import eu.dnetlib.openaire.common.ExporterConstants; import eu.dnetlib.openaire.project.dao.JdbcApiDao; import eu.dnetlib.openaire.project.dao.ValueCleaner; -import eu.dnetlib.openaire.project.domain.db.ProjectDetails; -import eu.dnetlib.openaire.project.domain.db.ProjectTsv; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; @@ -64,12 +62,12 @@ public class ProjectsController extends AbstractExporterController { private ProjectQueryParamsFactory projectQueryParamsFactory; @RequestMapping(value = "/export/**/project/dspace.do", method = RequestMethod.GET) - @Operation(value = "DSpace", notes = "return project information in compatible with the OpenAIRE plugin for DSpace", tags = { + @Operation(summary = "DSpace", description = "return project information in compatible with the OpenAIRE plugin for DSpace", tags = { ExporterConstants.DSPACE - }, response = String.class) + }) @ApiResponses(value = { - @ApiResponse(responseCode = "200", description = "OK", response = String.class), - @ApiResponse(responseCode = "500", description = "unexpected error", response = ErrorMessage.class) + @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "500", description = "unexpected error") }) public void processDspace(final HttpServletRequest request, final ServletResponse response, @@ -92,12 +90,12 @@ public class ProjectsController extends AbstractExporterController { } @RequestMapping(value = "/export/**/project/eprints.do", method = RequestMethod.GET) - @Operation(value = "EPrints", notes = "return project information in compatible with the OpenAIRE plugin for Eprints", tags = { + @Operation(summary = "EPrints", description = "return project information in compatible with the OpenAIRE plugin for Eprints", tags = { ExporterConstants.EPRINT - }, response = String.class) + }) @ApiResponses(value = { - @ApiResponse(responseCode = "200", description = "OK", response = String.class), - @ApiResponse(responseCode = "500", description = "unexpected error", response = ErrorMessage.class) + @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "500", description = "unexpected error") }) public void processEprints(final HttpServletRequest request, final ServletResponse response, @@ -130,12 +128,12 @@ public class ProjectsController extends AbstractExporterController { } @RequestMapping(value = "/noads/project2tsv.do", method = RequestMethod.GET) - @Operation(value = "TSV", notes = "download project information in TSV format", tags = { + @Operation(summary = "TSV", description = "download project information in TSV format", tags = { ExporterConstants.TSV - }, response = ProjectTsv[].class) + }) @ApiResponses(value = { - @ApiResponse(responseCode = "200", description = "OK", response = ProjectTsv[].class), - @ApiResponse(responseCode = "500", description = "unexpected error", response = ErrorMessage.class) + @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "500", description = "unexpected error") }) public void processTsv(final HttpServletResponse response, @RequestParam(value = "funding", required = true) final String funding, @@ -155,12 +153,12 @@ public class ProjectsController extends AbstractExporterController { } @RequestMapping(value = "/export/streamProjectDetails.do", method = RequestMethod.GET) - @Operation(value = "Stream projects", notes = "stream project information", tags = { + @Operation(summary = "Stream projects", description = "stream project information", tags = { ExporterConstants.STREAMING - }, response = ProjectDetails[].class) + }) @ApiResponses(value = { - @ApiResponse(responseCode = "200", description = "OK", response = ProjectDetails[].class), - @ApiResponse(responseCode = "500", description = "unexpected error", response = ErrorMessage.class) + @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "500", description = "unexpected error") }) public void streamProjectDetails(final HttpServletResponse response, @RequestParam(value = "format", required = true) final String format, diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/project/domain/db/ProjectDetails.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/project/domain/db/ProjectDetails.java index 81db55b6..47517d24 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/project/domain/db/ProjectDetails.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/project/domain/db/ProjectDetails.java @@ -21,6 +21,7 @@ import org.supercsv.io.CsvBeanWriter; import org.supercsv.io.ICsvBeanReader; import org.supercsv.io.ICsvBeanWriter; import org.supercsv.prefs.CsvPreference; +import org.supercsv.util.CsvContext; import com.fasterxml.jackson.annotation.JsonIgnore; import com.google.gson.Gson; @@ -89,7 +90,16 @@ public class ProjectDetails { public static ProjectDetails fromCSV(final String csv) throws IOException { try (ICsvBeanReader beanReader = new CsvBeanReader(new StringReader(csv), CsvPreference.STANDARD_PREFERENCE)) { - return beanReader.read(ProjectDetails.class, FIELDS, getProcessors((value, context) -> new Gson().fromJson(value.toString(), List.class))); + final CellProcessor cp = new CellProcessor() { + + @SuppressWarnings("unchecked") + @Override + public T execute(final Object value, final CsvContext context) { + return (T) new Gson().fromJson(value.toString(), List.class); + } + }; + + return beanReader.read(ProjectDetails.class, FIELDS, getProcessors(cp)); } } @@ -116,7 +126,15 @@ public class ProjectDetails { public String asCSV() throws IOException { final StringWriter sb = new StringWriter(); try (ICsvBeanWriter beanWriter = new CsvBeanWriter(sb, CsvPreference.STANDARD_PREFERENCE)) { - beanWriter.write(this, FIELDS, getProcessors((value, context) -> new Gson().toJson(value))); + final CellProcessor cp = new CellProcessor() { + + @SuppressWarnings("unchecked") + @Override + public T execute(final Object value, final CsvContext context) { + return (T) new Gson().toJson(value); + } + }; + beanWriter.write(this, FIELDS, getProcessors(cp)); beanWriter.flush(); }