diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/scraper/IKOrganizationScraper.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/scraper/IKOrganizationScraper.java deleted file mode 100644 index 672b7d6..0000000 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/scraper/IKOrganizationScraper.java +++ /dev/null @@ -1,124 +0,0 @@ -package ntnu.sytemutvikling.team6.scraper; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.time.Duration; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import com.opencsv.CSVWriter; -import ntnu.sytemutvikling.team6.models.Organization; -import org.openqa.selenium.By; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.chrome.ChromeDriver; -import org.openqa.selenium.chrome.ChromeOptions; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.WebDriverWait; - -public class IKOrganizationScraper { - - private final List organizationData; - private final String filename = "charities.csv"; - - public IKOrganizationScraper() { - this.organizationData = new ArrayList<>(); - } - - public boolean updateData() { - // Configure headless Chrome browser - ChromeOptions options = new ChromeOptions(); - options.addArguments("--headless=new"); - options.addArguments("--window-size=1920,1080"); - options.addArguments("--disable-gpu"); - options.addArguments("--no-sandbox"); - options.addArguments("--disable-dev-shm-usage"); - - WebDriver driver = new ChromeDriver(options); - - try { - //URL for scraping approved organizations - driver.get("https://www.innsamlingskontrollen.no/organisasjoner/"); - - WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30)); - wait.until(ExpectedConditions.numberOfElementsToBeMoreThan(By.cssSelector( - "table tbody tr"), 0)); - List rows = driver.findElements(By.cssSelector("table tbody tr")); - - if (!rows.isEmpty()) { - wait.until(ExpectedConditions.visibilityOf(rows.getLast())); - } - - // Clear old data - this.organizationData.clear(); - - // Add CSV header - this.organizationData.add(new Organization( - "Name", "Telephone", "Location", "Status")); - - // Loop through table rows - for (WebElement row : rows) { - List columns = row.findElements(By.tagName("td")); - if (columns.size() < 4) continue; - - String name = columns.get(0).getText(); - String telephone = columns.get(1).getText(); - String location = columns.get(2).getText(); - - WebElement statusColumn = columns.get(3); - - String status; - if (!statusColumn.findElements(By.cssSelector(".status-pre-approved")).isEmpty()) { - status = "Monitored"; - } else if (!statusColumn.findElements(By.cssSelector(".status-approved")).isEmpty()) { - status = "Approved"; - } else { - status = "Unknown"; - } - this.organizationData.add(new Organization(name, telephone, location, status)); - } - } finally { - driver.quit(); - } - return true; - } - - public boolean writeToCSV() throws IOException { - if (this.organizationData.isEmpty()) { - throw new IllegalArgumentException("There is no data in the " + - "organizationData list. Run .updateData before proceeding."); - } - - if (!this.deleteCSV()) { - throw new IOException("Failed to delete the CSV file."); - } - - try (CSVWriter writer = new CSVWriter(new FileWriter(filename))) { - for (Organization o : this.organizationData) { - writer.writeNext(new String[]{ - o.getName(), - o.getTelephone(), - o.getLocation(), - o.getStatus() - }); - } - } - return true; - } - - public boolean deleteCSV() { - var file = new File(filename); - - // Returns true if file is deleted (or if file doesn't exist - // Returns false if file couldn't be deleted - if (file.exists()) { - return file.delete(); - } - return true; - } - - public List getData() { - return Collections.unmodifiableList(this.organizationData); - } -} \ No newline at end of file