argos/dmp-backend/core/src/main/java/eu/eudat/model/persist/externalfetcher/ExternalFetcherApiSourceCon...

194 lines
7.8 KiB
Java
Raw Normal View History

package eu.eudat.model.persist.externalfetcher;
2023-11-07 12:15:25 +01:00
import eu.eudat.commons.enums.ExternalFetcherApiHTTPMethodType;
import eu.eudat.convention.ConventionService;
import eu.eudat.errorcode.ErrorThesaurusProperties;
2024-01-17 10:20:02 +01:00
import gr.cite.tools.validation.ValidatorFactory;
import gr.cite.tools.validation.specification.Specification;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Scope;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Component;
2023-11-07 12:15:25 +01:00
import java.util.Arrays;
2023-11-07 12:15:25 +01:00
import java.util.List;
public class ExternalFetcherApiSourceConfigurationPersist extends ExternalFetcherBaseSourceConfigurationPersist {
2023-11-07 12:15:25 +01:00
2023-11-15 15:09:24 +01:00
private String url;
2023-11-07 12:15:25 +01:00
public static final String _url = "url";
private ResultsConfigurationPersist results;
2023-11-07 12:15:25 +01:00
public static final String _results = "results";
2023-11-15 15:09:24 +01:00
private String paginationPath;
2023-11-07 12:15:25 +01:00
public static final String _paginationPath = "paginationPath";
2023-11-15 15:09:24 +01:00
private String contentType;
2023-11-07 12:15:25 +01:00
public static final String _contentType = "contentType";
2023-11-15 15:09:24 +01:00
private String firstPage;
2023-11-07 12:15:25 +01:00
public static final String _firstPage = "firstPage";
private ExternalFetcherApiHTTPMethodType httpMethod;
public static final String _httpMethod = "httpMethod";
private String requestBody;
private String filterType;
2023-11-07 12:15:25 +01:00
private AuthenticationConfigurationPersist auth;
public static final String _auth = "auth";
2023-11-07 12:15:25 +01:00
private List<QueryConfigPersist> queries;
public static final String _queries = "queries";
2023-11-07 12:15:25 +01:00
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public ResultsConfigurationPersist getResults() {
return results;
2023-11-07 12:15:25 +01:00
}
public void setResults(ResultsConfigurationPersist results) {
this.results = results;
2023-11-07 12:15:25 +01:00
}
public String getPaginationPath() {
return paginationPath;
}
public void setPaginationPath(String paginationPath) {
this.paginationPath = paginationPath;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public String getFirstPage() {
return firstPage;
2023-11-07 12:15:25 +01:00
}
public void setFirstPage(String firstPage) {
this.firstPage = firstPage;
2023-11-07 12:15:25 +01:00
}
public ExternalFetcherApiHTTPMethodType getHttpMethod() {
2023-11-15 15:09:24 +01:00
return httpMethod;
2023-11-07 12:15:25 +01:00
}
public void setHttpMethod(ExternalFetcherApiHTTPMethodType httpMethod) {
2023-11-15 15:09:24 +01:00
this.httpMethod = httpMethod;
2023-11-07 12:15:25 +01:00
}
public String getRequestBody() {
return requestBody;
}
public void setRequestBody(String requestBody) {
this.requestBody = requestBody;
}
public String getFilterType() {
return filterType;
}
public void setFilterType(String filterType) {
this.filterType = filterType;
}
public AuthenticationConfigurationPersist getAuth() {
return auth;
}
public void setAuth(AuthenticationConfigurationPersist auth) {
this.auth = auth;
}
public List<QueryConfigPersist> getQueries() {
return queries;
}
public void setQueries(List<QueryConfigPersist> queries) {
this.queries = queries;
}
@Component(ExternalFetcherApiSourceConfigurationPersistValidator.ValidatorName)
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public static class ExternalFetcherApiSourceConfigurationPersistValidator extends ExternalFetcherBaseSourceConfigurationPersistValidator<ExternalFetcherApiSourceConfigurationPersist> {
public static final String ValidatorName = "ExternalFetcherApiSourceConfigurationPersistValidator";
protected ExternalFetcherApiSourceConfigurationPersistValidator(ConventionService conventionService, ErrorThesaurusProperties errors, MessageSource messageSource, ValidatorFactory validatorFactory) {
super(conventionService, errors, messageSource, validatorFactory);
}
@Override
protected Class<ExternalFetcherApiSourceConfigurationPersist> modelClass() {
return ExternalFetcherApiSourceConfigurationPersist.class;
}
@Override
protected List<Specification> specifications(ExternalFetcherApiSourceConfigurationPersist item) {
List<Specification> specifications = getBaseSpecifications(item);
specifications.addAll(Arrays.asList(
this.spec()
.must(() -> !this.isEmpty(item.getUrl()))
.failOn(ExternalFetcherApiSourceConfigurationPersist._url).failWith(messageSource.getMessage("Validation_Required", new Object[]{ExternalFetcherApiSourceConfigurationPersist._url}, LocaleContextHolder.getLocale())),
this.spec()
.must(() -> !this.isEmpty(item.getPaginationPath()))
.failOn(ExternalFetcherApiSourceConfigurationPersist._paginationPath).failWith(messageSource.getMessage("Validation_Required", new Object[]{ExternalFetcherApiSourceConfigurationPersist._paginationPath}, LocaleContextHolder.getLocale())),
this.spec()
.must(() -> !this.isEmpty(item.getContentType()))
.failOn(ExternalFetcherApiSourceConfigurationPersist._contentType).failWith(messageSource.getMessage("Validation_Required", new Object[]{ExternalFetcherApiSourceConfigurationPersist._contentType}, LocaleContextHolder.getLocale())),
this.spec()
.must(() -> !this.isNull(item.getHttpMethod()))
.failOn(ExternalFetcherApiSourceConfigurationPersist._httpMethod).failWith(messageSource.getMessage("Validation_Required", new Object[]{ExternalFetcherApiSourceConfigurationPersist._httpMethod}, LocaleContextHolder.getLocale())),
this.spec()
.must(() -> !this.isNull(item.getResults()))
.failOn(ExternalFetcherApiSourceConfigurationPersist._results).failWith(messageSource.getMessage("Validation_Required", new Object[]{ExternalFetcherApiSourceConfigurationPersist._results}, LocaleContextHolder.getLocale())),
this.refSpec()
.iff(() -> !this.isNull(item.getResults()))
.on(ExternalFetcherApiSourceConfigurationPersist._results)
.over(item.getResults())
.using(() -> this.validatorFactory.validator(ResultsConfigurationPersist.ResultsConfigurationPersistValidator.class)),
this.spec()
.must(() -> !this.isNull(item.getAuth()))
.failOn(ExternalFetcherApiSourceConfigurationPersist._auth).failWith(messageSource.getMessage("Validation_Required", new Object[]{ExternalFetcherApiSourceConfigurationPersist._auth}, LocaleContextHolder.getLocale())),
this.refSpec()
.iff(() -> !this.isNull(item.getAuth()))
.on(ExternalFetcherApiSourceConfigurationPersist._auth)
.over(item.getAuth())
.using(() -> this.validatorFactory.validator(AuthenticationConfigurationPersist.AuthenticationConfigurationPersistValidator.class)),
this.navSpec()
2024-01-17 17:20:39 +01:00
.iff(() -> !this.isListNullOrEmpty(item.getQueries()))
.on(ExternalFetcherApiSourceConfigurationPersist._queries)
.over(item.getQueries())
2024-01-19 13:52:39 +01:00
.using((itm) -> this.validatorFactory.validator(QueryConfigPersist.QueryConfigPersistValidator.class))
));
return specifications;
}
}
2023-11-07 12:15:25 +01:00
}