48 lines
1.5 KiB
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;
|
|
}
|
|
}
|