package org.fluentlenium.core.search;
import org.fluentlenium.core.proxy.LocatorProxies;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.pagefactory.ElementLocator;
import java.util.List;
import java.util.function.Supplier;
/**
* Abstract supplier providing toString() representation from elements proxy and search filters.
*/
public abstract class AbstractSearchSupplier implements Supplier<List<WebElement>> {
private final List<SearchFilter> searchFilters;
private final Object proxy;
/**
* Creates a new search supplier.
*
* @param searchFilters filters to display in toString()
* @param proxy proxy to use for toString()
*/
public AbstractSearchSupplier(List<SearchFilter> searchFilters, Object proxy) {
this.searchFilters = searchFilters;
this.proxy = proxy;
}
@Override
public String toString() {
ElementLocator locator = LocatorProxies.getLocatorHandler(proxy).getLocator();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(locator);
for (int i = 0; i < searchFilters.size(); i++) {
if (i > 0) {
stringBuilder.append(" and");
}
stringBuilder.append(' ').append(searchFilters.get(i));
}
return stringBuilder.toString();
}
}