dnet-applications/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/project/ProjectQueryParamsFactory.java

48 lines
1.5 KiB
Java

package eu.dnetlib.openaire.project;
import javax.servlet.http.HttpServletRequest;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
@Component
@ConditionalOnProperty(value = "openaire.exporter.enable.project", havingValue = "true")
public class ProjectQueryParamsFactory {
private static final String BASE_PATH = "/export/";
private static final String NO_FILTER = "ALL";
public ProjectQueryParams generateParams(final HttpServletRequest request,
final String startFrom,
final String startUntil,
final String endFrom,
final String endUntil) {
ProjectQueryParams params = new ProjectQueryParams();
String[] arr = request.getServletPath().replace(BASE_PATH, "").split("\\/");
if (arr.length != 5) throw new IllegalArgumentException("Invalid url");
params.setFundingProgramme(arr[0]);
String stream = NO_FILTER.equals(arr[1]) ? null : arr[1];
String substream = NO_FILTER.equals(arr[2]) ? null : arr[2];
if (substream == null) {
params.setFundingPath(stream);
} else {
if (stream == null) {
stream = "%";
}
params.setFundingPath(stream + "::" + substream);
}
// params.setSpecificProgramme(NO_FILTER.equals(arr[1]) ? null : arr[1]);
// params.setSubdivision(NO_FILTER.equals(arr[2]) ? null : arr[2]);
// NB: arr[3] should be 'projects'
// NB: arr[4] should be '[file].do'
params.setStartFrom(startFrom);
params.setStartUntil(startUntil);
params.setEndFrom(endFrom);
params.setEndUntil(endUntil);
return params;
}
}