new api to add ds and apis
This commit is contained in:
parent
ec666bf88e
commit
fe3a9f7b4e
|
@ -34,6 +34,7 @@ import eu.dnetlib.openaire.dsm.domain.ApiDetailsResponse;
|
|||
import eu.dnetlib.openaire.dsm.domain.DatasourceDetailResponse;
|
||||
import eu.dnetlib.openaire.dsm.domain.DatasourceDetails;
|
||||
import eu.dnetlib.openaire.dsm.domain.DatasourceDetailsUpdate;
|
||||
import eu.dnetlib.openaire.dsm.domain.DatasourceDetailsWithApis;
|
||||
import eu.dnetlib.openaire.dsm.domain.DatasourceResponse;
|
||||
import eu.dnetlib.openaire.dsm.domain.DatasourceSnippetResponse;
|
||||
import eu.dnetlib.openaire.dsm.domain.RequestFilter;
|
||||
|
@ -279,6 +280,23 @@ public class DsmApiController extends AbstractExporterController {
|
|||
dsmCore.save(datasource);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/ds/addWithApis", method = RequestMethod.POST)
|
||||
@ApiOperation(value = "add a new Datasource and its apis", notes = "add a new Datasource and its apis", tags = {
|
||||
DS, W
|
||||
})
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "OK"),
|
||||
@ApiResponse(code = 400, message = "Malformed request", response = ErrorMessage[].class),
|
||||
@ApiResponse(code = 500, message = "Unexpected error", response = ErrorMessage.class)
|
||||
})
|
||||
public void saveDsWithApis(@Valid @RequestBody final DatasourceDetailsWithApis d) throws DsmException {
|
||||
if (d.getDatasource() == null) { throw new DsmException(HttpStatus.SC_BAD_REQUEST, "Datasource field is null"); }
|
||||
if (dsmCore.exist(d.getDatasource())) { // TODO further check that the DS doesn't have any API
|
||||
throw new DsmException(HttpStatus.SC_CONFLICT, String.format("cannot register, datasource already defined '%s'", d.getDatasource().getId()));
|
||||
}
|
||||
dsmCore.save(d);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/ds/update", method = RequestMethod.POST)
|
||||
@ApiOperation(value = "update Datasource details", notes = "update Datasource details", tags = {
|
||||
DS, W
|
||||
|
|
|
@ -14,6 +14,8 @@ import java.util.function.Function;
|
|||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||
|
@ -43,6 +45,7 @@ import eu.dnetlib.openaire.dsm.domain.ApiDetailsResponse;
|
|||
import eu.dnetlib.openaire.dsm.domain.DatasourceDetailResponse;
|
||||
import eu.dnetlib.openaire.dsm.domain.DatasourceDetails;
|
||||
import eu.dnetlib.openaire.dsm.domain.DatasourceDetailsUpdate;
|
||||
import eu.dnetlib.openaire.dsm.domain.DatasourceDetailsWithApis;
|
||||
import eu.dnetlib.openaire.dsm.domain.DatasourceSnippetResponse;
|
||||
import eu.dnetlib.openaire.dsm.domain.RegisteredDatasourceInfo;
|
||||
import eu.dnetlib.openaire.dsm.domain.RequestFilter;
|
||||
|
@ -174,12 +177,32 @@ public class DsmCore {
|
|||
public void save(final DatasourceDetails d) throws DsmException {
|
||||
try {
|
||||
dsDao.saveDs(asDbEntry(d));
|
||||
log.info("DS saved, " + d.getId());
|
||||
} catch (final Throwable e) {
|
||||
log.error(ExceptionUtils.getStackTrace(e));
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void save(final DatasourceDetailsWithApis d) throws DsmException {
|
||||
try {
|
||||
dsDao.saveDs(asDbEntry(d.getDatasource()));
|
||||
final List<ApiDetails> apis = d.getApis();
|
||||
if (apis != null) {
|
||||
for (final ApiDetails api : apis) {
|
||||
api.setDatasource(d.getDatasource().getId());
|
||||
addApi(api);
|
||||
}
|
||||
}
|
||||
} catch (
|
||||
|
||||
final Throwable e) {
|
||||
log.error(ExceptionUtils.getStackTrace(e));
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
public void updateDatasource(final DatasourceDetailsUpdate d) throws DsmException, DsmNotFoundException {
|
||||
try {
|
||||
// initialize with current values from DB
|
||||
|
@ -235,6 +258,7 @@ public class DsmCore {
|
|||
log.info(String.format("missing api id, created '%s'", api.getId()));
|
||||
}
|
||||
dsDao.addApi(asDbEntry(api));
|
||||
log.info("API saved, id: " + api.getId());
|
||||
}
|
||||
|
||||
public void deleteApi(final String apiId) throws DsmForbiddenException, DsmNotFoundException {
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
package eu.dnetlib.openaire.dsm.domain;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
/**
|
||||
* Created by claudio on 12/09/16.
|
||||
*/
|
||||
@JsonAutoDetect
|
||||
@ApiModel(value = "Datasource model with apis", description = "provides information about the datasource and its apis")
|
||||
public class DatasourceDetailsWithApis {
|
||||
|
||||
@ApiModelProperty(position = 1)
|
||||
private DatasourceDetails datasource;
|
||||
|
||||
public DatasourceDetails getDatasource() {
|
||||
return datasource;
|
||||
}
|
||||
|
||||
public void setDatasource(final DatasourceDetails datasource) {
|
||||
this.datasource = datasource;
|
||||
}
|
||||
|
||||
@ApiModelProperty(position = 2)
|
||||
private List<ApiDetails> apis = new ArrayList<>();
|
||||
|
||||
public List<ApiDetails> getApis() {
|
||||
return apis;
|
||||
}
|
||||
|
||||
public void setApis(final List<ApiDetails> apis) {
|
||||
this.apis = apis;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue