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

197 lines
8.1 KiB
Java

package eu.eudat.model.persist.externalfetcher;
import eu.eudat.commons.enums.ExternalFetcherApiHTTPMethodType;
import eu.eudat.convention.ConventionService;
import eu.eudat.errorcode.ErrorThesaurusProperties;
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;
import java.util.Arrays;
import java.util.List;
public class ExternalFetcherApiSourceConfigurationPersist extends ExternalFetcherBaseSourceConfigurationPersist {
private String url;
public static final String _url = "url";
private ResultsConfigurationPersist results;
public static final String _results = "results";
private String paginationPath;
public static final String _paginationPath = "paginationPath";
private String contentType;
public static final String _contentType = "contentType";
private String firstPage;
public static final String _firstPage = "firstPage";
private ExternalFetcherApiHTTPMethodType httpMethod;
public static final String _httpMethod = "httpMethod";
private String requestBody;
private String filterType;
private AuthenticationConfigurationPersist auth;
public static final String _auth = "auth";
private List<QueryConfigPersist> queries;
public static final String _queries = "queries";
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public ResultsConfigurationPersist getResults() {
return results;
}
public void setResults(ResultsConfigurationPersist results) {
this.results = results;
}
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;
}
public void setFirstPage(String firstPage) {
this.firstPage = firstPage;
}
public ExternalFetcherApiHTTPMethodType getHttpMethod() {
return httpMethod;
}
public void setHttpMethod(ExternalFetcherApiHTTPMethodType httpMethod) {
this.httpMethod = httpMethod;
}
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.isEmpty(item.getFirstPage()))
.failOn(ExternalFetcherApiSourceConfigurationPersist._firstPage).failWith(messageSource.getMessage("Validation_Required", new Object[]{ExternalFetcherApiSourceConfigurationPersist._firstPage}, 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()
.iff(() -> !this.isListNullOrEmpty(item.getQueries()))
.on(ExternalFetcherApiSourceConfigurationPersist._queries)
.over(item.getQueries())
.using((itm) -> this.validatorFactory.validator(QueryConfigPersist.QueryConfigPersistValidator.class))
));
return specifications;
}
}
}