/******************************************************************************* * JBoss, Home of Professional Open Source * Copyright 2010-2014, Red Hat, Inc. and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. *******************************************************************************/ package org.richfaces.showcase.dataTable; import java.util.Iterator; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.richfaces.showcase.AbstractWebDriverTest; /** * @author <a href="mailto:jhuska@redhat.com">Juraj Huska</a> * @author <a href="mailto:jpapouse@redhat.com">Jan Papousek</a> * @version $Revision$ */ public class AbstractDataIterationWithCars extends AbstractWebDriverTest { // help class for saving data about car public static class Car { String vendor; String model; String price; String mileage; String vin; String stock; public Car() { } /** * Creates car with @vendor and @model fields set. Other fields are null. Equals to new Car(vendor, model, null, null, * null, null). * * @param vendor * @param model */ public Car(String vendor, String model) { this(vendor, model, null, null, null, null); } public Car(String vendor, String model, String price, String mileage, String vin, String stock) { this.vendor = vendor; this.model = model; this.price = price; this.mileage = mileage; this.vin = vin; this.stock = stock; } private void controlWhetherParameterIsNotEmptyOrNull(String parameter) { if (parameter == null || parameter.isEmpty()) { throw new IllegalArgumentException("Parameter can not be empty or null!"); } } public String getStock() { return this.stock; } public Car setStock(String stock) { controlWhetherParameterIsNotEmptyOrNull(stock); this.stock = stock; return this; } public String getVendor() { return vendor; } public Car setVendor(String vendor) { controlWhetherParameterIsNotEmptyOrNull(vendor); this.vendor = vendor; return this; } public String getModel() { return model; } public Car setModel(String model) { controlWhetherParameterIsNotEmptyOrNull(model); this.model = model; return this; } public String getPrice() { return price; } public Car setPrice(String price) { controlWhetherParameterIsNotEmptyOrNull(price); this.price = price; return this; } public String getMileage() { return mileage; } public Car setMileage(String mileage) { controlWhetherParameterIsNotEmptyOrNull(mileage); this.mileage = mileage; return this; } public String getVin() { return vin; } public Car setVin(String vin) { controlWhetherParameterIsNotEmptyOrNull(vin); this.vin = vin; return this; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result; result = prime * result + ((mileage == null) ? 0 : mileage.hashCode()); result = prime * result + ((model == null) ? 0 : model.hashCode()); result = prime * result + ((price == null) ? 0 : price.hashCode()); result = prime * result + ((vendor == null) ? 0 : vendor.hashCode()); result = prime * result + ((vin == null) ? 0 : vin.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Car other = (Car) obj; if (mileage == null) { if (other.mileage != null) return false; } else if (!mileage.equals(other.mileage)) return false; if (model == null) { if (other.model != null) return false; } else if (!model.equals(other.model)) return false; if (price == null) { if (other.price != null) return false; } else if (!price.equals(other.price)) return false; if (vendor == null) { if (other.vendor != null) return false; } else if (!vendor.equals(other.vendor)) return false; if (vin == null) { if (other.vin != null) return false; } else if (!vin.equals(other.vin)) return false; return true; } @Override public String toString() { return "Car [vendor=" + vendor + ", model=" + model + ", price=" + price + ", mileage=" + mileage + ", vin=" + vin + "]"; } } /** * retrieves info about car from the row, it starts collecting data on the row specified by startingIndexTd and ends on the * endIndexOfTd, other values from car lets uninitialized * * @param row * @param startingIndexOfTd * @param endIndexOfTd * @return car */ public Car retrieveCarFromRow(WebElement row, int startingIndexOfTd, int endIndexOfTd) { Car car = new Car(); List<WebElement> tds = row.findElements(By.tagName("td")); int j = 0; for (Iterator<WebElement> i = tds.iterator(); i.hasNext();) { if (j < startingIndexOfTd) { i.next(); } if (j == startingIndexOfTd) { car.setVendor(i.next().getText()); } else if (j == (startingIndexOfTd + 1)) { car.setModel(i.next().getText()); } else if (j == (startingIndexOfTd + 2)) { car.setPrice(i.next().getText()); } else if (j == (startingIndexOfTd + 3)) { car.setMileage(i.next().getText()); } else if (j == (startingIndexOfTd + 4)) { car.setVin(i.next().getText()); } else if (j > endIndexOfTd) { break; } j++; } return car; } public Car parseSimplifiedCarFromListItem(WebElement listItem) { String[] partsOfContent = listItem.getText().split("-"); return new Car(partsOfContent[0].trim(), partsOfContent[1].trim()); } public static enum Field { VENDOR, MODEL, PRICE, MILEAGE, VIN, STOCK; } }