org.openlmis.pageobjects.FacilityPage.java Source code

Java tutorial

Introduction

Here is the source code for org.openlmis.pageobjects.FacilityPage.java

Source

/*
 * This program is part of the OpenLMIS logistics management information system platform software.
 * Copyright  2013 VillageReach
 *
 * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
 * You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses. For additional information contact info@OpenLMIS.org.
 */

package org.openlmis.pageobjects;

import org.apache.commons.lang.StringUtils;
import org.openlmis.UiUtils.TestWebDriver;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import static com.thoughtworks.selenium.SeleneseTestBase.assertTrue;
import static com.thoughtworks.selenium.SeleneseTestNgHelper.assertEquals;
import static org.openqa.selenium.support.How.ID;
import static org.openqa.selenium.support.How.XPATH;

public class FacilityPage extends Page {

    @FindBy(how = ID, using = "searchFacility")
    private static WebElement searchFacilityTextField = null;

    @FindBy(how = ID, using = "searchIcon")
    private static WebElement searchIcon = null;

    @FindBy(how = ID, using = "disableButton")
    private static WebElement disableButton = null;

    @FindBy(how = ID, using = "button_OK")
    private static WebElement okButton = null;

    @FindBy(how = ID, using = "dialogMessage")
    private static WebElement dialogMessageOnAlert = null;

    @FindBy(how = ID, using = "saveSuccessMsgDiv")
    private static WebElement successMessageDiv = null;

    @FindBy(how = ID, using = "saveErrorMsgDiv")
    private static WebElement saveErrorMsgDiv = null;

    @FindBy(how = XPATH, using = "//ng-switch/span")
    private static WebElement enabledFlag = null;

    @FindBy(how = ID, using = "facilityActiveFalse")
    private static WebElement isActiveRadioNoOption = null;

    @FindBy(how = ID, using = "enableButton")
    private static WebElement enableButton = null;

    @FindBy(how = ID, using = "remove0")
    private static WebElement removeSupportedProgram = null;

    @FindBy(how = ID, using = "code")
    private static WebElement facilityCode = null;

    @FindBy(how = ID, using = "name")
    private static WebElement facilityName = null;

    @FindBy(how = ID, using = "description")
    private static WebElement facilityDescription = null;

    @FindBy(how = ID, using = "gln")
    private static WebElement gln = null;

    @FindBy(how = ID, using = "main-phone")
    private static WebElement phoneNumber = null;

    @FindBy(how = ID, using = "fax-phone")
    private static WebElement faxNumber = null;

    @FindBy(how = ID, using = "address-1")
    private static WebElement address1 = null;

    @FindBy(how = ID, using = "address-2")
    private static WebElement address2 = null;

    @FindBy(how = ID, using = "geographic-zone")
    private static WebElement geographicZone = null;

    @FindBy(how = ID, using = "facility-type")
    private static WebElement facilityType = null;

    @FindBy(how = ID, using = "catchment-population")
    private static WebElement catchmentPopulation = null;

    @FindBy(how = ID, using = "latitude")
    private static WebElement latitude = null;

    @FindBy(how = ID, using = "longitude")
    private static WebElement longitude = null;

    @FindBy(how = ID, using = "altitude")
    private static WebElement altitude = null;

    @FindBy(how = ID, using = "operated-by")
    private static WebElement operatedBy = null;

    @FindBy(how = ID, using = "cold-storage-gross-capacity")
    private static WebElement coldStorageGrossCapacity = null;

    @FindBy(how = ID, using = "cold-storage-net-capacity")
    private static WebElement coldStorageNetCapacity = null;

    @FindBy(how = ID, using = "suppliesOthersYes")
    private static WebElement facilitySuppliesOthersYes = null;

    @FindBy(how = ID, using = "facilitySdpTrue")
    private static WebElement serviceDeliveryPoint = null;

    @FindBy(how = ID, using = "hasElectricityTrue")
    private static WebElement hasElectricityTrue = null;

    @FindBy(how = ID, using = "isOnlineTrue")
    private static WebElement isOnlineTrue = null;

    @FindBy(how = ID, using = "hasElectronicSccTrue")
    private static WebElement hasElectronicSccTrue = null;

    @FindBy(how = ID, using = "hasElectronicDARTrue")
    private static WebElement hasElectronicDarTrue = null;

    @FindBy(how = ID, using = "facilityActiveTrue")
    private static WebElement isActiveTrue = null;

    @FindBy(how = ID, using = "go-live-date")
    private static WebElement goLiveDate = null;

    @FindBy(how = ID, using = "go-down-date")
    private static WebElement goDownDate = null;

    @FindBy(how = ID, using = "comments")
    private static WebElement comments = null;

    @FindBy(how = ID, using = "programs-supported")
    private static WebElement programsSupported = null;

    @FindBy(how = ID, using = "supported-program-active")
    private static WebElement programsSupportedActiveFlag = null;

    @FindBy(how = XPATH, using = "//form[@id='create-facility']/div/div[3]/div/div/table/tbody/tr[1][@class='ng-scope']/td[2]/input")
    private static WebElement programsSupportedFirstActiveFlag = null;

    @FindBy(how = XPATH, using = "//form/div/div[3]/div/div/table/tbody/tr[1]/td[3]/input")
    private static WebElement programsSupportedFirstStartDate = null;

    @FindBy(how = ID, using = "supported-program-start-date")
    private static WebElement programsSupportedStartDate = null;

    @FindBy(how = XPATH, using = "//a[contains(text(),'25')]")
    private static WebElement startDateCalender = null;

    @FindBy(how = ID, using = "button_OK")
    private static WebElement okAlert = null;

    @FindBy(how = ID, using = "supported-program-add")
    private static WebElement addSupportedProgram = null;

    @FindBy(how = ID, using = "saveButton")
    public static WebElement saveButton = null;

    @FindBy(how = ID, using = "saveSuccessMsgDiv")
    private static WebElement saveSuccessMsgDiv = null;

    @FindBy(how = XPATH, using = "//a[contains(text(),'25')]")
    private static WebElement goLiveDateCalender = null;

    @FindBy(how = XPATH, using = "//a[contains(text(),'26')]")
    private static WebElement goDownDateCalender = null;

    @FindBy(how = ID, using = "addNewFacilityHeader")
    private static WebElement facilityHeader = null;

    @FindBy(how = ID, using = "edit-facility-header")
    private static WebElement editFacilityHeader = null;

    @FindBy(how = ID, using = "overrideIsaVACCINES")
    private static WebElement modifyIsaValueLink = null;

    @FindBy(how = ID, using = "overrideIsaTable")
    private static WebElement overrideIsaTable = null;

    @FindBy(how = ID, using = "override-isa0")
    private static WebElement overrideIsaTextField = null;

    @FindBy(how = ID, using = "calculated-isa0")
    private static WebElement calculatedIsaTextField = null;

    @FindBy(how = ID, using = "override-isa-values-button0")
    private static WebElement overrideISAValuesButton = null;

    @FindBy(how = ID, using = "isaDoneButton")
    private static WebElement doneIsaButton = null;

    @FindBy(how = ID, using = "isaCancelButton")
    private static WebElement cancelIsaButton = null;

    @FindBy(how = ID, using = "remove0")
    private static WebElement removeFirstProgramSupportedLink = null;

    @FindBy(how = ID, using = "noResultMessage")
    private static WebElement noResultMessage = null;

    @FindBy(how = ID, using = "nResultsMessage")
    private static WebElement nResultsMessage = null;

    @FindBy(how = ID, using = "closeButton")
    private static WebElement closeButton = null;

    @FindBy(how = ID, using = "facilitySearchLabel")
    private static WebElement searchFacilityLabel = null;

    @FindBy(how = ID, using = "searchOptionButton")
    private static WebElement searchOptionButton = null;

    @FindBy(how = ID, using = "searchOption1")
    private static WebElement searchOption2 = null;

    @FindBy(how = ID, using = "nameHeader")
    private static WebElement nameHeader = null;

    @FindBy(how = ID, using = "codeHeader")
    private static WebElement codeHeader = null;

    @FindBy(how = ID, using = "geographicZoneHeader")
    private static WebElement geographicZoneHeader = null;

    @FindBy(how = ID, using = "facilityTypeHeader")
    private static WebElement facilityTypeHeader = null;

    @FindBy(how = ID, using = "activeHeader")
    private static WebElement activeHeader = null;

    @FindBy(how = ID, using = "enabledHeader")
    private static WebElement enabledHeader = null;

    public FacilityPage(TestWebDriver driver) {
        super(driver);
        PageFactory.initElements(new AjaxElementLocatorFactory(TestWebDriver.getDriver(), 10), this);
        testWebDriver.setImplicitWait(10);
    }

    public String getNewFacilityHeader() {
        testWebDriver.waitForElementToAppear(facilityHeader);
        return facilityHeader.getText().trim();
    }

    public String getEditFacilityHeader() {
        testWebDriver.waitForElementToAppear(editFacilityHeader);
        return editFacilityHeader.getText().trim();
    }

    public String enterValuesInFacilityAndClickSave(String facilityCodePrefix, String facilityNamePrefix,
            String program, String geoZone, String facilityTypeValue, String operatedByValue, String population) {
        String date_time = enterValuesInFacility(facilityCodePrefix, facilityNamePrefix, program, geoZone,
                facilityTypeValue, operatedByValue, population, false);
        saveButton.click();
        return date_time;
    }

    public String enterValuesInFacility(String facilityCodePrefix, String facilityNamePrefix, String program,
            String geoZone, String facilityTypeValue, String operatedByValue, String population, boolean push) {

        Date dObj = new Date();
        SimpleDateFormat formatter_date_time = new SimpleDateFormat("yyyyMMdd-hhmmss");
        String date_time = formatter_date_time.format(dObj);

        String facilityCodeText = facilityCodePrefix + date_time;
        String facilityNameText = facilityNamePrefix + date_time;
        testWebDriver.waitForElementToAppear(facilityCode);
        sendKeys(facilityCode, facilityCodeText);
        sendKeys(facilityName, facilityNameText);

        testWebDriver.selectByVisibleText(operatedBy, operatedByValue);

        testWebDriver.clickForRadio(serviceDeliveryPoint);
        testWebDriver.clickForRadio(isActiveTrue);

        sendKeys(facilityDescription, "Testing description");
        sendKeys(gln, "Testing Gln");
        sendKeys(phoneNumber, "9711231305");
        sendKeys(faxNumber, "9711231305");
        sendKeys(address1, "Address1");
        sendKeys(address2, "Address2");

        testWebDriver.selectByVisibleText(facilityType, facilityTypeValue);

        testWebDriver.scrollToElement(geographicZone);
        testWebDriver.sleep(500);

        testWebDriver.selectByVisibleText(geographicZone, geoZone);
        testWebDriver.sleep(500);

        goLiveDate.click();
        testWebDriver.sleep(500);
        goLiveDateCalender.click();
        testWebDriver.sleep(500);
        goDownDate.click();
        testWebDriver.sleep(500);
        goDownDateCalender.click();

        addProgram(program, push);

        testWebDriver.scrollToElement(altitude);
        testWebDriver.sleep(500);
        sendKeys(catchmentPopulation, population);
        sendKeys(latitude, "-555.5555");
        sendKeys(longitude, "444.4444");
        sendKeys(altitude, "4545.4545");

        testWebDriver.scrollToElement(coldStorageGrossCapacity);
        testWebDriver.sleep(500);
        sendKeys(coldStorageGrossCapacity, "3434.3434");
        sendKeys(coldStorageNetCapacity, "3535.3535");
        coldStorageNetCapacity.sendKeys(Keys.TAB);

        hasElectricityTrue.click();
        isOnlineTrue.click();
        testWebDriver.handleScrollByPixels(0, 2000);
        testWebDriver.sleep(500);
        hasElectronicSccTrue.click();
        hasElectronicDarTrue.click();
        facilitySuppliesOthersYes.click();
        sendKeys(comments, "Comments");
        return date_time;
    }

    public void addProgram(String program, boolean push) {
        testWebDriver.selectByVisibleText(programsSupported, program);
        if (!push) {
            programsSupportedActiveFlag.click();
            testWebDriver.sleep(500);
            programsSupportedStartDate.click();
            startDateCalender.click();
            testWebDriver.sleep(500);
            okAlert.click();
            testWebDriver.sleep(500);
        }
        addSupportedProgram.click();
    }

    public void activeInactiveFirstProgram() {
        programsSupportedFirstActiveFlag.click();
        testWebDriver.sleep(500);
        programsSupportedStartDate.click();
        programsSupportedFirstStartDate.click();
        testWebDriver.handleScrollByPixels(0, 1000);
        startDateCalender.click();
        testWebDriver.sleep(500);
    }

    public void removeFirstProgram() {
        removeFirstProgramSupportedLink.click();
        okAlert.click();
    }

    public void verifyMessageOnFacilityScreen(String facilityName, String status) {
        testWebDriver.sleep(500);
        String message;
        testWebDriver.waitForElementsToAppear(saveSuccessMsgDiv, saveErrorMsgDiv);
        if (saveSuccessMsgDiv.isDisplayed()) {
            message = testWebDriver.getText(saveSuccessMsgDiv);
        } else {
            message = testWebDriver.getText(saveErrorMsgDiv);
        }
        assertEquals(message, String.format("Facility \"%s\" %s successfully.   View Here", facilityName, status));
    }

    public boolean isSuccessMessageDisplayed() {
        testWebDriver.waitForElementToAppear(saveSuccessMsgDiv);
        return saveSuccessMsgDiv.isDisplayed();
    }

    public void overrideIsa(String overriddenIsa, int rowNumber) {
        modifyIsaValueLink.click();
        testWebDriver.waitForElementToAppear(overrideIsaTable);
        while (!StringUtils.isEmpty(overrideIsaTable.getAttribute("value")))
            overrideIsaTable.sendKeys("\u0008"); // "\u0008" - is backspace char
        sendKeys(testWebDriver.getElementById("override-isa" + (rowNumber - 1)), overriddenIsa);
    }

    public void editPopulation(String population) {
        testWebDriver.waitForElementToAppear(catchmentPopulation);
        sendKeys(catchmentPopulation, population);
    }

    public String getCalculatedIsa() {
        testWebDriver.waitForElementToAppear(calculatedIsaTextField);
        return calculatedIsaTextField.getText();
    }

    public void clickIsaDoneButton() {
        testWebDriver.waitForElementToAppear(doneIsaButton);
        doneIsaButton.click();
    }

    public void clickIsaCancelButton() {
        testWebDriver.waitForElementToAppear(cancelIsaButton);
        cancelIsaButton.click();
    }

    public void clickUseCalculatedIsaButton() {
        testWebDriver.waitForElementToAppear(overrideISAValuesButton);
        overrideISAValuesButton.click();
    }

    public void verifyOverriddenIsa(String expectedIsa) {
        testWebDriver.handleScrollByPixels(0, 1000);
        testWebDriver.waitForElementToAppear(modifyIsaValueLink);
        modifyIsaValueLink.click();
        testWebDriver.waitForElementToAppear(overrideIsaTable);

        assertEquals(overrideIsaTextField.getAttribute("value"), expectedIsa);
        clickIsaDoneButton();
        testWebDriver.sleep(1000);
    }

    public void saveFacility() {
        testWebDriver.waitForElementToAppear(saveButton);
        saveButton.click();
    }

    public void searchFacility(String facilityCodeValue) {
        testWebDriver.waitForElementToAppear(searchFacilityTextField);
        sendKeys(searchFacilityTextField, facilityCodeValue);
        searchIcon.click();
        testWebDriver.waitForAjax();
    }

    public void clickFirstFacilityList() {
        WebElement facilityName = testWebDriver.getElementById("name0");
        testWebDriver.waitForElementToAppear(facilityName);
        facilityName.click();
    }

    public void disableFacility(String facilityCodeValue, String facilityNameValue) {
        String expectedMessageOnAlert = String.format("\"%s\" / \"%s\" will be disabled in the system.",
                facilityNameValue, facilityCodeValue);
        testWebDriver.waitForElementToAppear(editFacilityHeader);
        clickDisableButtonOnFacilityScreen();
        assertEquals(getDisableAlertMessage(), expectedMessageOnAlert);
        clickOkButtonOnAlert();
    }

    private void clickDisableButtonOnFacilityScreen() {
        testWebDriver.waitForElementToAppear(disableButton);
        disableButton.click();
    }

    private void clickOkButtonOnAlert() {
        testWebDriver.sleep(1000);
        okButton.click();
    }

    private String getDisableAlertMessage() {
        testWebDriver.sleep(1000);
        testWebDriver.waitForElementToAppear(dialogMessageOnAlert);
        return dialogMessageOnAlert.getText();
    }

    public void verifyDisabledFacility(String facilityCodeValue, String facilityNameValue) {
        String expectedMessageOnFacilityScreenAfterDisable = "\"" + facilityNameValue + "\" / \""
                + facilityCodeValue + "\" is now disabled";
        testWebDriver.waitForElementToAppear(successMessageDiv);
        testWebDriver.sleep(1000);

        String disableMessageOnFacilityScreenValue = successMessageDiv.getText();
        assertEquals(disableMessageOnFacilityScreenValue, expectedMessageOnFacilityScreenAfterDisable);
        String enableValue = enabledFlag.getText();
        assertEquals(enableValue.trim(), "No");
        assertTrue(isActiveRadioNoOption.isSelected());
    }

    public String getEnabledFacilityText() {
        testWebDriver.sleep(1000);
        return enabledFlag.getText();
    }

    public HomePage enableFacility() {
        testWebDriver.waitForElementToAppear(enableButton);
        testWebDriver.sleep(1000);
        enableButton.click();
        testWebDriver.waitForElementToAppear(dialogMessageOnAlert);
        testWebDriver.sleep(1000);
        okButton.click();
        testWebDriver.sleep(1000);
        return PageObjectFactory.getHomePage(testWebDriver);
    }

    public HomePage editFacility(String program, String catchmentPopulationValue, String latitudeValue,
            String longitudeValue, String altitudeValue) {
        testWebDriver.waitForElementToAppear(disableButton);
        testWebDriver.sleep(1500);
        testWebDriver.waitForElementToAppear(facilityCode);
        sendKeys(catchmentPopulation, catchmentPopulationValue);
        sendKeys(latitude, latitudeValue);
        sendKeys(longitude, longitudeValue);
        sendKeys(altitude, altitudeValue);

        testWebDriver.selectByVisibleText(programsSupported, program);
        programsSupportedActiveFlag.click();
        testWebDriver.sleep(500);
        programsSupportedStartDate.click();
        startDateCalender.click();
        testWebDriver.sleep(500);
        okAlert.click();
        testWebDriver.sleep(500);
        addSupportedProgram.click();
        saveButton.click();
        return PageObjectFactory.getHomePage(testWebDriver);
    }

    public void verifyEditedFacility(String catchmentPopulationValue, String latitudeValue, String longitudeValue,
            String altitudeValue) {
        assertEquals(testWebDriver.getAttribute(catchmentPopulation, "value"), catchmentPopulationValue);
        assertEquals(testWebDriver.getAttribute(latitude, "value"), latitudeValue);
        assertEquals(testWebDriver.getAttribute(longitude, "value"), longitudeValue);
        assertEquals(testWebDriver.getAttribute(altitude, "value"), altitudeValue);
        assertTrue(removeSupportedProgram.isDisplayed());
    }

    public HomePage verifyProgramSupported(List<String> programsSupported) {
        testWebDriver.waitForElementToAppear(editFacilityHeader);
        testWebDriver.sleep(1500);
        String program;
        for (int i = 0; i < programsSupported.size(); i++) {
            program = programsSupported.get(i);
            WebElement programsSupportedElement = testWebDriver.getElementByXpath(
                    "//table[@class='table table-striped table-bordered']/tbody/tr[" + (i + 1) + "]/td[1]");
            WebElement programsActiveElement = testWebDriver.getElementByXpath(
                    "//table[@class='table table-striped table-bordered']/tbody/tr[" + (i + 1) + "]/td[2]/input");
            assertEquals(programsSupportedElement.getText().trim(), program);
            assertTrue("Program " + (i + 1) + " should be active", programsActiveElement.isSelected());
        }
        assertTrue(removeSupportedProgram.isDisplayed());
        return PageObjectFactory.getHomePage(testWebDriver);
    }

    public void editFacilityType(String facilityTypeValue) {
        testWebDriver.waitForElementToAppear(facilityType);
        testWebDriver.selectByVisibleText(facilityType, facilityTypeValue);
    }

    public String getFacilityType() {
        testWebDriver.waitForElementToAppear(facilityType);
        return testWebDriver.getFirstSelectedOption(facilityType).getText();
    }

    public void editGeographicZone(String geographicZoneValue) {
        testWebDriver.waitForElementToAppear(geographicZone);
        testWebDriver.selectByVisibleText(geographicZone, geographicZoneValue);
    }

    public String getGeographicZone() {
        testWebDriver.waitForElementToAppear(geographicZone);
        return testWebDriver.getFirstSelectedOption(geographicZone).getText();
    }

    public String getProgramSupported(int serialNumber) {
        testWebDriver.waitForElementToAppear(programsSupported);
        return testWebDriver.getElementByXpath(
                "//form[@id='create-facility']/div/div[3]/div/div/table/tbody/tr[" + serialNumber + "]/td[1]")
                .getText();
    }

    public boolean getProgramSupportedActive(int serialNumber) {
        testWebDriver.waitForElementToAppear(programsSupported);
        return testWebDriver.getElementByXpath(
                "//form[@id='create-facility']/div/div[3]/div/div/table/tbody/tr[" + serialNumber + "]/td[2]/input")
                .isSelected();
    }

    public void overrideISA(String overriddenIsa, int productRowNumber, String facilityCode) {
        searchFacility(facilityCode);
        clickFirstFacilityList();
        overrideIsa(overriddenIsa, productRowNumber);
        clickIsaDoneButton();
        saveFacility();
    }

    public String getSearchFacilityLabel() {
        testWebDriver.waitForElementToAppear(searchFacilityLabel);
        return searchFacilityLabel.getText();
    }

    public String getNResultsMessage() {
        testWebDriver.waitForElementToAppear(nResultsMessage);
        return nResultsMessage.getText();
    }

    public String getNoResultMessage() {
        testWebDriver.waitForElementToAppear(noResultMessage);
        return noResultMessage.getText();
    }

    public void closeSearchResults() {
        testWebDriver.waitForElementToAppear(closeButton);
        closeButton.click();
    }

    public void clickSearchOptionButton() {
        testWebDriver.waitForElementToAppear(searchOptionButton);
        searchOptionButton.click();
    }

    public String getSelectedSearchOption() {
        testWebDriver.waitForElementToAppear(searchOptionButton);
        return searchOptionButton.getText();
    }

    public void selectGeographicZoneAsSearchOption() {
        testWebDriver.waitForElementToAppear(searchOption2);
        searchOption2.click();
    }

    public String getNameHeader() {
        testWebDriver.waitForElementToAppear(nameHeader);
        return nameHeader.getText();
    }

    public String getCodeHeader() {
        testWebDriver.waitForElementToAppear(codeHeader);
        return codeHeader.getText();
    }

    public String getGeographicZoneHeader() {
        testWebDriver.waitForElementToAppear(geographicZoneHeader);
        return geographicZoneHeader.getText();
    }

    public String getTypeHeader() {
        testWebDriver.waitForElementToAppear(facilityTypeHeader);
        return facilityTypeHeader.getText();
    }

    public String getEnabledHeader() {
        testWebDriver.waitForElementToAppear(enabledHeader);
        return enabledHeader.getText();
    }

    public String getActiveHeader() {
        testWebDriver.waitForElementToAppear(activeHeader);
        return activeHeader.getText();
    }

    public String getName(int rowNumber) {
        WebElement element = testWebDriver.getElementById("name" + (rowNumber - 1));
        testWebDriver.waitForElementToAppear(element);
        return element.getText();
    }

    public String getCode(int rowNumber) {
        WebElement element = testWebDriver.getElementById("code" + (rowNumber - 1));
        testWebDriver.waitForElementToAppear(element);
        return element.getText();
    }

    public String getGeographicZone(int rowNumber) {
        WebElement element = testWebDriver.getElementById("geographicZone" + (rowNumber - 1));
        testWebDriver.waitForElementToAppear(element);
        return element.getText();
    }

    public String getFacilityType(int rowNumber) {
        WebElement element = testWebDriver.getElementById("type" + (rowNumber - 1));
        testWebDriver.waitForElementToAppear(element);
        return element.getText();
    }

    public boolean getIsEnabled(int rowNumber) {
        WebElement element = testWebDriver.getElementById("enabledIconOk" + (rowNumber - 1));
        return element.isDisplayed();
    }

    public boolean getIsActive(int rowNumber) {
        WebElement element = testWebDriver.getElementById("activeIconOk" + (rowNumber - 1));
        return element.isDisplayed();
    }

    public boolean isNameHeaderPresent() {
        return nameHeader.isDisplayed();
    }
}