|
|
@ -1,22 +1,17 @@
|
|
|
|
package ru.ulstu.grant.service;
|
|
|
|
package ru.ulstu.grant.service;
|
|
|
|
|
|
|
|
|
|
|
|
import org.openqa.selenium.WebDriver;
|
|
|
|
import org.openqa.selenium.WebDriver;
|
|
|
|
import org.openqa.selenium.WebElement;
|
|
|
|
|
|
|
|
import org.openqa.selenium.chrome.ChromeDriver;
|
|
|
|
import org.openqa.selenium.chrome.ChromeDriver;
|
|
|
|
import org.openqa.selenium.chrome.ChromeOptions;
|
|
|
|
import org.openqa.selenium.chrome.ChromeOptions;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import ru.ulstu.deadline.model.Deadline;
|
|
|
|
|
|
|
|
import ru.ulstu.grant.model.Grant;
|
|
|
|
|
|
|
|
import ru.ulstu.grant.model.GrantDto;
|
|
|
|
import ru.ulstu.grant.model.GrantDto;
|
|
|
|
import ru.ulstu.grant.page.KiasPage;
|
|
|
|
import ru.ulstu.grant.page.KiasPage;
|
|
|
|
import ru.ulstu.user.service.UserService;
|
|
|
|
import ru.ulstu.user.service.UserService;
|
|
|
|
|
|
|
|
|
|
|
|
import java.text.ParseException;
|
|
|
|
import java.text.ParseException;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.Calendar;
|
|
|
|
import java.util.Calendar;
|
|
|
|
import java.util.Date;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
@Service
|
|
|
@ -24,7 +19,6 @@ public class KiasService {
|
|
|
|
private final static String BASE_URL = "https://www.rfbr.ru/rffi/ru/contest_search?CONTEST_STATUS_ID=%s&CONTEST_TYPE=%s&CONTEST_YEAR=%s";
|
|
|
|
private final static String BASE_URL = "https://www.rfbr.ru/rffi/ru/contest_search?CONTEST_STATUS_ID=%s&CONTEST_TYPE=%s&CONTEST_YEAR=%s";
|
|
|
|
private final static String CONTEST_STATUS_ID = "1";
|
|
|
|
private final static String CONTEST_STATUS_ID = "1";
|
|
|
|
private final static String CONTEST_TYPE = "-1";
|
|
|
|
private final static String CONTEST_TYPE = "-1";
|
|
|
|
private final static int CONTEST_YEAR = Calendar.getInstance().get(Calendar.YEAR);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final static String DRIVER_LOCATION = "drivers/%s";
|
|
|
|
private final static String DRIVER_LOCATION = "drivers/%s";
|
|
|
|
private final static String WINDOWS_DRIVER = "chromedriver.exe";
|
|
|
|
private final static String WINDOWS_DRIVER = "chromedriver.exe";
|
|
|
@ -38,33 +32,28 @@ public class KiasService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public List<GrantDto> getNewGrantsDto() throws ParseException {
|
|
|
|
public List<GrantDto> getNewGrantsDto() throws ParseException {
|
|
|
|
|
|
|
|
WebDriver webDriver = getDriver();
|
|
|
|
|
|
|
|
Integer leaderId = userService.findOneByLoginIgnoreCase("admin").getId();
|
|
|
|
|
|
|
|
List<GrantDto> grants = new ArrayList<>();
|
|
|
|
|
|
|
|
for (Integer year : generateGrantYears()) {
|
|
|
|
|
|
|
|
webDriver.get(String.format(BASE_URL, CONTEST_STATUS_ID, CONTEST_TYPE, year));
|
|
|
|
|
|
|
|
grants.addAll(new KiasPage(webDriver).getKiasGrants());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
grants.forEach(grantDto -> grantDto.setLeaderId(leaderId));
|
|
|
|
|
|
|
|
webDriver.quit();
|
|
|
|
|
|
|
|
return grants;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private List<Integer> generateGrantYears() {
|
|
|
|
|
|
|
|
return Arrays.asList(Calendar.getInstance().get(Calendar.YEAR),
|
|
|
|
|
|
|
|
Calendar.getInstance().get(Calendar.YEAR) + 1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private WebDriver getDriver() {
|
|
|
|
System.setProperty(DRIVER_TYPE, getDriverExecutablePath());
|
|
|
|
System.setProperty(DRIVER_TYPE, getDriverExecutablePath());
|
|
|
|
final ChromeOptions chromeOptions = new ChromeOptions();
|
|
|
|
final ChromeOptions chromeOptions = new ChromeOptions();
|
|
|
|
chromeOptions.addArguments("--headless");
|
|
|
|
chromeOptions.addArguments("--headless");
|
|
|
|
WebDriver webDriver = new ChromeDriver(chromeOptions);
|
|
|
|
return new ChromeDriver(chromeOptions);
|
|
|
|
webDriver.get(String.format(BASE_URL, CONTEST_STATUS_ID, CONTEST_TYPE, CONTEST_YEAR));
|
|
|
|
|
|
|
|
KiasPage kiasPage = new KiasPage(webDriver);
|
|
|
|
|
|
|
|
List<WebElement> kiasGrants = new ArrayList<>();
|
|
|
|
|
|
|
|
List<GrantDto> newGrants = new ArrayList<>();
|
|
|
|
|
|
|
|
do {
|
|
|
|
|
|
|
|
kiasGrants.addAll(kiasPage.getPageOfGrants());
|
|
|
|
|
|
|
|
for (WebElement grant : kiasGrants) {
|
|
|
|
|
|
|
|
GrantDto grantDto = new GrantDto();
|
|
|
|
|
|
|
|
grantDto.setTitle(kiasPage.getGrantTitle(grant));
|
|
|
|
|
|
|
|
String deadlineDate = kiasPage.getFirstDeadline(grant); //10.06.2019 23:59
|
|
|
|
|
|
|
|
SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy HH:mm");
|
|
|
|
|
|
|
|
Date date = formatter.parse(deadlineDate);
|
|
|
|
|
|
|
|
Deadline deadline = new Deadline(date, "Окончание приёма заявок");
|
|
|
|
|
|
|
|
grantDto.setDeadlines(Arrays.asList(deadline));
|
|
|
|
|
|
|
|
grantDto.setLeaderId(userService.findOneByLoginIgnoreCase("admin").getId());
|
|
|
|
|
|
|
|
grantDto.setStatus(Grant.GrantStatus.LOADED_FROM_KIAS);
|
|
|
|
|
|
|
|
newGrants.add(grantDto);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
kiasGrants.clear();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
while (kiasPage.checkPagination()); //проверка существования следующей страницы с грантами
|
|
|
|
|
|
|
|
webDriver.quit();
|
|
|
|
|
|
|
|
return newGrants;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private String getDriverExecutablePath() {
|
|
|
|
private String getDriverExecutablePath() {
|
|
|
|