From 477a9fd6ffbff5d4128d31f298cc1212a4f0cc0b Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sat, 25 May 2019 15:48:32 +0400 Subject: [PATCH] #120 move to service --- .../java/ru/ulstu/grant/page/KiasPage.java | 29 +++---------------- .../ru/ulstu/grant/service/KiasService.java | 23 ++++++++++++++- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/main/java/ru/ulstu/grant/page/KiasPage.java b/src/main/java/ru/ulstu/grant/page/KiasPage.java index 8a6e444..ea9bdb4 100644 --- a/src/main/java/ru/ulstu/grant/page/KiasPage.java +++ b/src/main/java/ru/ulstu/grant/page/KiasPage.java @@ -3,11 +3,9 @@ package ru.ulstu.grant.page; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; -import ru.ulstu.grant.model.GrantDto; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.NoSuchElementException; @@ -19,15 +17,7 @@ public class KiasPage { this.driver = webDriver; } - public List getKiasGrants() throws ParseException { - List newGrants = new ArrayList<>(); - do { - newGrants.addAll(getGrantsFromPage()); - } while (goToNextPage()); //проверка существования следующей страницы с грантами - return newGrants; - } - - private boolean goToNextPage() { + public boolean goToNextPage() { try { if (driver.findElements(By.id("js-ctrlNext")).size() > 0) { driver.findElement(By.id("js-ctrlNext")).click(); @@ -39,28 +29,17 @@ public class KiasPage { return false; } - private List getPageOfGrants() { + public List getPageOfGrants() { WebElement listContest = driver.findElement(By.tagName("tBody")); List grants = listContest.findElements(By.cssSelector("tr.tr")); return grants; } - private String getGrantTitle(WebElement grant) { + public String getGrantTitle(WebElement grant) { return grant.findElement(By.cssSelector("td.tertiary")).findElement(By.tagName("a")).getText(); } - private List getGrantsFromPage() throws ParseException { - List grants = new ArrayList<>(); - for (WebElement grantElement : getPageOfGrants()) { - GrantDto grantDto = new GrantDto( - getGrantTitle(grantElement), - parseDeadLineDate(grantElement)); - grants.add(grantDto); - } - return grants; - } - - private Date parseDeadLineDate(WebElement grantElement) throws ParseException { + public Date parseDeadLineDate(WebElement grantElement) throws ParseException { String deadlineDate = getFirstDeadline(grantElement); //10.06.2019 23:59 SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy HH:mm"); return formatter.parse(deadlineDate); diff --git a/src/main/java/ru/ulstu/grant/service/KiasService.java b/src/main/java/ru/ulstu/grant/service/KiasService.java index 6881292..618e83c 100644 --- a/src/main/java/ru/ulstu/grant/service/KiasService.java +++ b/src/main/java/ru/ulstu/grant/service/KiasService.java @@ -1,6 +1,7 @@ package ru.ulstu.grant.service; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.springframework.stereotype.Service; @@ -37,13 +38,33 @@ public class KiasService { List 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.addAll(getKiasGrants(webDriver)); } grants.forEach(grantDto -> grantDto.setLeaderId(leaderId)); webDriver.quit(); return grants; } + public List getKiasGrants(WebDriver webDriver) throws ParseException { + List newGrants = new ArrayList<>(); + KiasPage kiasPage = new KiasPage(webDriver); + do { + newGrants.addAll(getGrantsFromPage(kiasPage)); + } while (kiasPage.goToNextPage()); //проверка существования следующей страницы с грантами + return newGrants; + } + + private List getGrantsFromPage(KiasPage kiasPage) throws ParseException { + List grants = new ArrayList<>(); + for (WebElement grantElement : kiasPage.getPageOfGrants()) { + GrantDto grantDto = new GrantDto( + kiasPage.getGrantTitle(grantElement), + kiasPage.parseDeadLineDate(grantElement)); + grants.add(grantDto); + } + return grants; + } + private List generateGrantYears() { return Arrays.asList(Calendar.getInstance().get(Calendar.YEAR), Calendar.getInstance().get(Calendar.YEAR) + 1);