Click here to Skip to main content
15,798,111 members
Home / Discussions / Java
   

Java

 
QuestionHow to found a file by utilizing a variable for 'Startswith' in JAVA? Pin
MOHAMMAD ZAINUL ABIDEEN3-Jan-23 1:32
MOHAMMAD ZAINUL ABIDEEN3-Jan-23 1:32 
I'm trying to find a file based on the starting eight digits extracted from an excel sheet for every iteration. I am receiving the error notice "Local variable CaseID declared in an enclosing scope must be final or effectively final" so i am using the code below and still appears to be fresh, so I don't know how to correct this, Even after it happen to be a straightforward repair.

Java
package Chrome;
//CHROME
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;


public class ValidateInput {

public static void main(String[] args) throws Throwable {
// TODO Auto-generated method stub

// String filePath=System.getProperty("user.dir")+"\\UP.xlsx";
//File src = new File(filePath);    
//System.out.println(filePath);
File src = new File("C:\\Users\\Z246379\\Documents\\TestDataFolder\\ValidateInput.xlsx");          
FileInputStream fis = new FileInputStream(src);        



XSSFWorkbook wb = new XSSFWorkbook(fis);        
XSSFSheet Sheet1 = wb.getSheetAt(0);
int i1 = 2;
//Username
String data0 = Sheet1.getRow(2).getCell(0).getStringCellValue();
//Password    
String data01 = Sheet1.getRow(2).getCell(1).getStringCellValue();
//Case ID
String caseID = Sheet1.getRow(i1).getCell(2).getStringCellValue();
// Description
String Desc = Sheet1.getRow(2).getCell(3).getStringCellValue();
//Internal Claim File
String ICF = Sheet1.getRow(1).getCell(4).getStringCellValue();
String CRPT = Sheet1.getRow(1).getCell(5).getStringCellValue();

// final String caseID1 = caseID1;




//Chrome driver code

 System.out.println("Called openBrowser");
 String exePath = System.getProperty("user.dir")+"\\chromedriver.exe";
 System.setProperty("webdriver.chrome.driver", exePath);
 ChromeOptions options = new ChromeOptions();
 options.setExperimentalOption("useAutomationExtension", false);
 options.addArguments("start-maximized");
 options.addArguments("--no-sandbox");
 options.addArguments("--disable-extensions-except");
 options.addArguments("disable-extensions");
 //options.setExperimentalOption("useAutomationExtension", false); 
 WebDriver driver = new ChromeDriver(options);
 driver.get("https://client.abc.com");


 //Logging in       
 driver.findElement(By.xpath("//input[@id='userid']")).sendKeys(data0);
 driver.findElement(By.xpath("//body[@class='no-nav']/div[@id='wrapper']/header[@class='header']/div[@class='container']/div[@class='menu']/div[@class='drop']/div[@class='login-form']/form[@method='POST']/div[2]/input[1]")).sendKeys(data01);
 driver.findElement(By.xpath("//input[@value='Sign In']")).click();
 Thread.sleep(2000);
 //Navigate to Validate Input
 driver.findElement(By.xpath("//span[@class='wpsNavLevel2'][contains(text(),'EZ-Test')]")).click();
 Thread.sleep(3000);
 driver.get("https://ezt.abc.com/Test/inputFiles/selectValidateInput/selectValidateInput.xhtml");

 while (caseID != null)
      {

  caseID = Sheet1.getRow(i1).getCell(2).getStringCellValue();
  //Input Validate Input stuff

  driver.findElement(By.xpath("//input[@id='mainForm:caseId']")).sendKeys(caseID);
driver.findElement(By.xpath("//input[@id='mainForm:testBedDesc']")).sendKeys(Desc);
  driver.findElement(By.xpath("//select[@id='mainForm:customRptOptions']")).sendKeys(ICF);
 driver.findElement(By.xpath("//span[@id='mainForm:customReportLabel']")).click();




  File dir = new File("C:\\Users\\Z333379\\Documents\\Test beds");
  FilenameFilter filter = new FilenameFilter() {
  public boolean accept (File dir, String name) { 
   return name.startsWith(caseID); //this is where i get the error. its not letting me make case ID a variable. but i really need the starts with stuff
   } 
 }; 
 String[] children = dir.list(filter);
 if (children == null) {
    System.out.println("Either dir does not exist or is not a directory"); 
 } else { 
   for (int i=0; i< children.length; i++) {
   String filename = children[i];
   System.out.println(filename);
        driver.findElement(By.xpath("//input[@id='mainForm:comprehensive']")).sendKeys("C:\\Users\\Z246379\\Documents\\Test beds\\" + filename);
    } 
 } 

 driver.findElement(By.xpath("//button[@id='mainForm:reset']")).click();


 i1=i1+1;
      }

  }
}



This is from the source I read, I don't know how to define an inner local class with a mutable variable. Is that correct? This problem appears to be at the bottom of the code, at the caseID variable.

modified 3-Jan-23 7:15am.

AnswerRe: How to found a file by utilizing a variable for 'Startswith' in JAVA? Pin
Richard MacCutchan3-Jan-23 2:22
mveRichard MacCutchan3-Jan-23 2:22 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.