diff options
author | Artur Signell <artur@vaadin.com> | 2014-12-10 09:48:40 +0200 |
---|---|---|
committer | Artur Signell <artur@vaadin.com> | 2015-01-29 14:25:39 +0200 |
commit | 51acaa67dbe2683137416810c3ca4e4e5fb4b359 (patch) | |
tree | 60d7cfbc8d18db55499abff76fc906d1b1b7f224 | |
parent | a66eeb58e8c1144c8d01cc37f727638139db711d (diff) | |
download | vaadin-framework-51acaa67dbe2683137416810c3ca4e4e5fb4b359.tar.gz vaadin-framework-51acaa67dbe2683137416810c3ca4e4e5fb4b359.zip |
Basic CRUD test
Change-Id: I4aa0c6e0051731849cd960fb7376b3e01d0005b5
-rw-r--r-- | uitest/src/com/vaadin/tests/fieldgroup/AbstractBasicCrud.java | 191 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/fieldgroup/BasicCrud.java | 110 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGrid.java | 60 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGridEditorRow.java | 61 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/fieldgroup/BasicCrudTable.java | 59 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/fieldgroup/BasicCrudTableTest.java (renamed from uitest/src/com/vaadin/tests/fieldgroup/BasicCrudTest.java) | 17 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/fieldgroup/ComplexAddress.java | 70 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/fieldgroup/ComplexPerson.java | 110 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/fieldgroup/Country.java | 22 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/fieldgroup/Gender.java | 20 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/util/PersonContainer.java | 72 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/util/TestDataGenerator.java | 110 |
12 files changed, 727 insertions, 175 deletions
diff --git a/uitest/src/com/vaadin/tests/fieldgroup/AbstractBasicCrud.java b/uitest/src/com/vaadin/tests/fieldgroup/AbstractBasicCrud.java new file mode 100644 index 0000000000..30cc5676bb --- /dev/null +++ b/uitest/src/com/vaadin/tests/fieldgroup/AbstractBasicCrud.java @@ -0,0 +1,191 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.fieldgroup; + +import java.util.Iterator; + +import com.vaadin.annotations.Theme; +import com.vaadin.data.Property.ValueChangeEvent; +import com.vaadin.data.Property.ValueChangeListener; +import com.vaadin.data.fieldgroup.BeanFieldGroup; +import com.vaadin.data.fieldgroup.FieldGroup.CommitException; +import com.vaadin.data.fieldgroup.PropertyId; +import com.vaadin.data.util.BeanItem; +import com.vaadin.data.util.BeanItemContainer; +import com.vaadin.server.VaadinRequest; +import com.vaadin.shared.util.SharedUtil; +import com.vaadin.tests.components.AbstractTestUIWithLog; +import com.vaadin.ui.Alignment; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Button.ClickListener; +import com.vaadin.ui.CheckBox; +import com.vaadin.ui.ComboBox; +import com.vaadin.ui.Field; +import com.vaadin.ui.GridLayout; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.TextField; + +@Theme("valo") +public abstract class AbstractBasicCrud extends AbstractTestUIWithLog { + + protected AbstractForm form; + protected static String[] columns = new String[] { "firstName", "lastName", + "gender", "birthDate", "age", "alive", "address.streetAddress", + "address.postalCode", "address.city", "address.country" }; + protected BeanItemContainer<ComplexPerson> container = ComplexPerson + .createContainer(100);; + { + container.addNestedContainerBean("address"); + } + protected ComboBox formType; + + /* + * (non-Javadoc) + * + * @see com.vaadin.tests.components.AbstractTestUI#setup(com.vaadin.server. + * VaadinRequest) + */ + @Override + protected void setup(VaadinRequest request) { + getLayout().setSizeFull(); + getLayout().setSpacing(true); + getContent().setSizeFull(); + form = new CustomForm(); + + formType = new ComboBox(); + formType.setNullSelectionAllowed(false); + formType.setWidth("300px"); + formType.addItem(form); + formType.setValue(form); + formType.addItem(new AutoGeneratedForm(TextField.class)); + formType.addItem(new AutoGeneratedForm(Field.class)); + Iterator<?> iterator = formType.getItemIds().iterator(); + formType.setItemCaption(iterator.next(), "TextField based form"); + formType.setItemCaption(iterator.next(), + "Auto generated form (TextFields)"); + formType.setItemCaption(iterator.next(), + "Auto generated form (Any fields)"); + formType.addValueChangeListener(new ValueChangeListener() { + @Override + public void valueChange(ValueChangeEvent event) { + AbstractForm oldForm = form; + form = (AbstractForm) formType.getValue(); + replaceComponent(oldForm, form); + } + }); + + addComponent(formType); + + } + + public class CustomForm extends AbstractForm { + + private TextField firstName = new TextField("First name"); + private TextField lastName = new TextField("Last name"); + private TextField gender = new TextField("Gender"); + private TextField birthDate = new TextField("Birth date"); + private TextField age = new TextField("Age"); + private CheckBox alive = new CheckBox("Alive"); + + @PropertyId("address.streetAddress") + private TextField address_streetAddress = new TextField( + "Street address"); + @PropertyId("address.postalCode") + private TextField address_postalCode = new TextField("Postal code"); + @PropertyId("address.city") + private TextField address_city = new TextField("City"); + @PropertyId("address.country") + private TextField address_country = new TextField("Country"); + + public CustomForm() { + fieldGroup.bindMemberFields(this); + + address_postalCode.setNullRepresentation(""); + gender.setNullRepresentation(""); + age.setNullRepresentation(""); + address_country.setNullRepresentation(""); + birthDate.setNullRepresentation(""); + + setDefaultComponentAlignment(Alignment.MIDDLE_LEFT); + addComponents(firstName, lastName, gender, birthDate, age, alive, + address_streetAddress, address_postalCode, address_city, + address_country); + + HorizontalLayout hl = new HorizontalLayout(save, cancel); + hl.setSpacing(true); + addComponent(hl); + + } + + } + + protected abstract void deselectAll(); + + public class AbstractForm extends GridLayout { + protected Button save = new Button("Save"); + protected Button cancel = new Button("Cancel"); + + protected BeanFieldGroup<ComplexPerson> fieldGroup = new BeanFieldGroup<ComplexPerson>( + ComplexPerson.class); + + public AbstractForm() { + super(5, 1); + setSpacing(true); + setId("form"); + save.addClickListener(new ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + try { + fieldGroup.commit(); + log("Saved " + fieldGroup.getItemDataSource()); + } catch (CommitException e) { + log("Commit failed: " + e.getMessage()); + } + } + }); + cancel.addClickListener(new ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + log("Discarded " + fieldGroup.getItemDataSource()); + deselectAll(); + } + }); + } + + public void edit(BeanItem<ComplexPerson> item) { + fieldGroup.setItemDataSource(item); + } + } + + public class AutoGeneratedForm extends AbstractForm { + + public AutoGeneratedForm(Class<? extends Field> class1) { + for (String p : columns) { + Field f = fieldGroup.getFieldFactory().createField( + container.getType(p), class1); + f.setCaption(SharedUtil.propertyIdToHumanFriendly(p)); + fieldGroup.bind(f, p); + addComponent(f); + } + + HorizontalLayout hl = new HorizontalLayout(save, cancel); + hl.setSpacing(true); + addComponent(hl); + } + + } +} diff --git a/uitest/src/com/vaadin/tests/fieldgroup/BasicCrud.java b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrud.java deleted file mode 100644 index be0368f4ae..0000000000 --- a/uitest/src/com/vaadin/tests/fieldgroup/BasicCrud.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2000-2014 Vaadin Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.vaadin.tests.fieldgroup; - -import com.vaadin.annotations.Theme; -import com.vaadin.data.Property.ValueChangeEvent; -import com.vaadin.data.Property.ValueChangeListener; -import com.vaadin.data.fieldgroup.BeanFieldGroup; -import com.vaadin.data.fieldgroup.PropertyId; -import com.vaadin.server.VaadinRequest; -import com.vaadin.tests.util.Person; -import com.vaadin.tests.util.PersonContainer; -import com.vaadin.ui.HorizontalLayout; -import com.vaadin.ui.Table; -import com.vaadin.ui.TextField; -import com.vaadin.ui.UI; -import com.vaadin.ui.VerticalLayout; - -@Theme("valo") -public class BasicCrud extends UI { - - private Form form; - - @Override - protected void init(VaadinRequest request) { - VerticalLayout main = new VerticalLayout(); - main.setMargin(true); - main.setSpacing(true); - final Table t = new Table(); - // t.setSelectionMode(SelectionMode.SINGLE); - t.setSelectable(true); - - PersonContainer c = PersonContainer.createWithTestData(); - - c.addBean(new Person("first", "Last", "email", "phone", "street", - 12332, "Turku")); - c.addBean(new Person("Foo", "Bar", "me@some.where", "123", - "homestreet 12", 10000, "Glasgow")); - t.setContainerDataSource(c); - // t.removeColumn("address"); - // t.setColumnOrder("firstName", "lastName", "email", "phoneNumber", - // "address.streetAddress", "address.postalCode", "address.city"); - t.setVisibleColumns("firstName", "lastName", "email", "phoneNumber", - "address.streetAddress", "address.postalCode", "address.city"); - - // t.addSelectionChangeListener(new SelectionChangeListener() { - // @Override - // public void selectionChange(SelectionChangeEvent event) { - // form.edit((Person) t.getSelectedRow()); - // } - // }); - t.addValueChangeListener(new ValueChangeListener() { - - @Override - public void valueChange(ValueChangeEvent event) { - form.edit((Person) t.getValue()); - } - }); - - form = new Form(); - - t.setSizeFull(); - - main.setSizeFull(); - main.addComponent(t); - main.addComponent(form); - main.setExpandRatio(t, 1); - setContent(main); - } - - public static class Form extends HorizontalLayout { - private TextField firstName = new TextField("First name"); - private TextField lastName = new TextField("Last name"); - private TextField email = new TextField("E-mail"); - @PropertyId("address.streetAddress") - private TextField streetAddress = new TextField("Street address"); - @PropertyId("address.postalCode") - private TextField postalCode = new TextField("Postal code"); - - BeanFieldGroup<Person> fieldGroup = new BeanFieldGroup<Person>( - Person.class); - - public Form() { - setSpacing(true); - setId("form"); - fieldGroup.bindMemberFields(this); - - // Stupid integer binding - postalCode.setNullRepresentation(""); - addComponents(firstName, lastName, email, streetAddress, postalCode); - } - - public void edit(Person p) { - fieldGroup.setItemDataSource(p); - } - } -} diff --git a/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGrid.java b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGrid.java new file mode 100644 index 0000000000..d7f66b0cd9 --- /dev/null +++ b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGrid.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.fieldgroup; + +import com.vaadin.data.Item; +import com.vaadin.data.util.BeanItem; +import com.vaadin.event.SelectionEvent; +import com.vaadin.event.SelectionEvent.SelectionListener; +import com.vaadin.server.VaadinRequest; +import com.vaadin.ui.Grid; + +public class BasicCrudGrid extends AbstractBasicCrud { + + private Grid grid; + + @Override + protected void setup(VaadinRequest request) { + super.setup(request); + grid = new Grid(); + + grid.setContainerDataSource(container); + + grid.setColumnOrder((Object[]) columns); + grid.removeColumn("salary"); + grid.addSelectionListener(new SelectionListener() { + + @Override + public void select(SelectionEvent event) { + Item item = grid.getContainerDataSource().getItem( + grid.getSelectedRow()); + form.edit((BeanItem<ComplexPerson>) item); + } + }); + + grid.setSizeFull(); + + addComponent(grid); + addComponent(form); + getLayout().setExpandRatio(grid, 1); + } + + @Override + protected void deselectAll() { + grid.select(null); + } + +} diff --git a/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGridEditorRow.java b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGridEditorRow.java new file mode 100644 index 0000000000..63ba2986e1 --- /dev/null +++ b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGridEditorRow.java @@ -0,0 +1,61 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.fieldgroup; + +import com.vaadin.data.Item; +import com.vaadin.data.util.BeanItem; +import com.vaadin.data.validator.IntegerRangeValidator; +import com.vaadin.event.SelectionEvent; +import com.vaadin.event.SelectionEvent.SelectionListener; +import com.vaadin.server.VaadinRequest; +import com.vaadin.ui.Grid; + +public class BasicCrudGridEditorRow extends AbstractBasicCrud { + + private Grid grid; + + @Override + protected void setup(VaadinRequest request) { + super.setup(request); + formType.setVisible(false); + grid = new Grid(); + + grid.setContainerDataSource(container); + + grid.setColumnOrder((Object[]) columns); + grid.removeColumn("salary"); + grid.addSelectionListener(new SelectionListener() { + @Override + public void select(SelectionEvent event) { + Item item = grid.getContainerDataSource().getItem( + grid.getSelectedRow()); + form.edit((BeanItem<ComplexPerson>) item); + } + }); + grid.setEditorEnabled(true); + grid.setSizeFull(); + grid.getEditorField("age").addValidator( + new IntegerRangeValidator("Must be between 0 and 100", 0, 100)); + addComponent(grid); + getLayout().setExpandRatio(grid, 1); + } + + @Override + protected void deselectAll() { + grid.select(null); + } + +} diff --git a/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudTable.java b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudTable.java new file mode 100644 index 0000000000..ad54cd55ba --- /dev/null +++ b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudTable.java @@ -0,0 +1,59 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.fieldgroup; + +import com.vaadin.data.Property.ValueChangeEvent; +import com.vaadin.data.Property.ValueChangeListener; +import com.vaadin.data.util.BeanItem; +import com.vaadin.server.VaadinRequest; +import com.vaadin.ui.Table; + +public class BasicCrudTable extends AbstractBasicCrud { + + private Table table; + + @Override + protected void setup(VaadinRequest request) { + super.setup(request); + + table = new Table(); + table.setSelectable(true); + + table.setContainerDataSource(container); + + table.setVisibleColumns((Object[]) columns); + table.addValueChangeListener(new ValueChangeListener() { + @Override + public void valueChange(ValueChangeEvent event) { + form.edit((BeanItem<ComplexPerson>) table.getItem(table + .getValue())); + } + }); + + table.setSizeFull(); + + addComponent(table); + addComponent(form); + getLayout().setExpandRatio(table, 1); + } + + @Override + protected void deselectAll() { + table.setValue(null); + + } + +} diff --git a/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudTest.java b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudTableTest.java index a41725dbc9..86441b09f9 100644 --- a/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudTest.java +++ b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudTableTest.java @@ -20,19 +20,18 @@ import java.util.List; import org.junit.Assert; import org.junit.Test; -import com.vaadin.testbench.elements.AbstractOrderedLayoutElement; +import com.vaadin.testbench.AbstractHasTestBenchCommandExecutor; +import com.vaadin.testbench.elements.AbstractComponentElement; import com.vaadin.testbench.elements.TableElement; import com.vaadin.testbench.elements.TextFieldElement; import com.vaadin.tests.tb3.SingleBrowserTest; -public class BasicCrudTest extends SingleBrowserTest { +public class BasicCrudTableTest extends SingleBrowserTest { @Test public void fieldsInitiallyEmpty() { openTestURL(); - AbstractOrderedLayoutElement fieldsLayout = $( - AbstractOrderedLayoutElement.class).id("form"); - List<TextFieldElement> textFields = fieldsLayout.$( + List<TextFieldElement> textFields = getFieldsLayout().$( TextFieldElement.class).all(); for (TextFieldElement e : textFields) { @@ -40,16 +39,18 @@ public class BasicCrudTest extends SingleBrowserTest { } } + private AbstractHasTestBenchCommandExecutor getFieldsLayout() { + return $(AbstractComponentElement.class).id("form"); + } + @Test public void fieldsClearedOnDeselect() { openTestURL(); - AbstractOrderedLayoutElement fieldsLayout = $( - AbstractOrderedLayoutElement.class).id("form"); // Select row $(TableElement.class).first().getCell(2, 2).click(); - List<TextFieldElement> textFields = fieldsLayout.$( + List<TextFieldElement> textFields = getFieldsLayout().$( TextFieldElement.class).all(); for (TextFieldElement e : textFields) { diff --git a/uitest/src/com/vaadin/tests/fieldgroup/ComplexAddress.java b/uitest/src/com/vaadin/tests/fieldgroup/ComplexAddress.java new file mode 100644 index 0000000000..d6d657379a --- /dev/null +++ b/uitest/src/com/vaadin/tests/fieldgroup/ComplexAddress.java @@ -0,0 +1,70 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.fieldgroup; + +import java.util.Random; + +import com.vaadin.tests.util.TestDataGenerator; + +public class ComplexAddress { + + private String streetAddress = ""; + private String postalCode = ""; + private String city = ""; + private Country country = null; + + public String getStreetAddress() { + return streetAddress; + } + + public void setStreetAddress(String streetAddress) { + this.streetAddress = streetAddress; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public Country getCountry() { + return country; + } + + public void setCountry(Country country) { + this.country = country; + } + + public static ComplexAddress create(Random r) { + ComplexAddress ca = new ComplexAddress(); + ca.setCity(TestDataGenerator.getCity(r)); + ca.setCountry(TestDataGenerator.getEnum(Country.class, r)); + ca.setPostalCode(TestDataGenerator.getPostalCode(r) + ""); + ca.setStreetAddress(TestDataGenerator.getStreetAddress(r)); + return ca; + } + +} diff --git a/uitest/src/com/vaadin/tests/fieldgroup/ComplexPerson.java b/uitest/src/com/vaadin/tests/fieldgroup/ComplexPerson.java new file mode 100644 index 0000000000..2fb7c2ac04 --- /dev/null +++ b/uitest/src/com/vaadin/tests/fieldgroup/ComplexPerson.java @@ -0,0 +1,110 @@ +package com.vaadin.tests.fieldgroup; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.Random; + +import com.vaadin.data.util.BeanItemContainer; +import com.vaadin.tests.util.TestDataGenerator; + +public class ComplexPerson { + + private String firstName, lastName; + private Integer age; + private Date birthDate; + private BigDecimal salary; + private boolean alive; + private Gender gender; + private ComplexAddress address; + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public Date getBirthDate() { + return birthDate; + } + + public void setBirthDate(Date birthDate) { + this.birthDate = birthDate; + } + + public BigDecimal getSalary() { + return salary; + } + + public void setSalary(BigDecimal salary) { + this.salary = salary; + } + + public boolean isAlive() { + return alive; + } + + public void setAlive(boolean alive) { + this.alive = alive; + } + + public Gender getGender() { + return gender; + } + + public void setGender(Gender gender) { + this.gender = gender; + } + + public ComplexAddress getAddress() { + return address; + } + + public void setAddress(ComplexAddress address) { + this.address = address; + } + + public static BeanItemContainer<ComplexPerson> createContainer(int size) { + BeanItemContainer<ComplexPerson> bic = new BeanItemContainer<ComplexPerson>( + ComplexPerson.class); + Random r = new Random(size); + + for (int i = 0; i < size; i++) { + ComplexPerson cp = ComplexPerson.create(r); + bic.addBean(cp); + } + + return bic; + } + + public static ComplexPerson create(Random r) { + ComplexPerson cp = new ComplexPerson(); + cp.setFirstName(TestDataGenerator.getFirstName(r)); + cp.setLastName(TestDataGenerator.getLastName(r)); + cp.setAlive(r.nextBoolean()); + cp.setBirthDate(TestDataGenerator.getBirthDate(r)); + cp.setAge((int) ((new Date(2014 - 1900, 1, 1).getTime() - cp + .getBirthDate().getTime()) / 1000 / 3600 / 24 / 365)); + cp.setSalary(TestDataGenerator.getSalary(r)); + cp.setAddress(ComplexAddress.create(r)); + cp.setGender(TestDataGenerator.getEnum(Gender.class, r)); + return cp; + } +} diff --git a/uitest/src/com/vaadin/tests/fieldgroup/Country.java b/uitest/src/com/vaadin/tests/fieldgroup/Country.java new file mode 100644 index 0000000000..4956f0a085 --- /dev/null +++ b/uitest/src/com/vaadin/tests/fieldgroup/Country.java @@ -0,0 +1,22 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.fieldgroup; + + +public enum Country { + FINLAND, SWEDEN, NORWAY, DENMARK, ICELAND, USA, RUSSIA, ESTONIA; + +} diff --git a/uitest/src/com/vaadin/tests/fieldgroup/Gender.java b/uitest/src/com/vaadin/tests/fieldgroup/Gender.java new file mode 100644 index 0000000000..dcc6687c17 --- /dev/null +++ b/uitest/src/com/vaadin/tests/fieldgroup/Gender.java @@ -0,0 +1,20 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.fieldgroup; + +public enum Gender { + MALE, FEMALE, UNDISCLOSED; +} diff --git a/uitest/src/com/vaadin/tests/util/PersonContainer.java b/uitest/src/com/vaadin/tests/util/PersonContainer.java index a3cf28b083..611e5d3adb 100644 --- a/uitest/src/com/vaadin/tests/util/PersonContainer.java +++ b/uitest/src/com/vaadin/tests/util/PersonContainer.java @@ -24,8 +24,7 @@ public class PersonContainer extends BeanItemContainer<Person> implements "First name", "Last name", "Email", "Phone number", "Street Address", "Postal Code", "City" }; - public PersonContainer() throws InstantiationException, - IllegalAccessException { + public PersonContainer() { super(Person.class); addNestedContainerProperty("address.streetAddress"); addNestedContainerProperty("address.postalCode"); @@ -33,63 +32,22 @@ public class PersonContainer extends BeanItemContainer<Person> implements } public static PersonContainer createWithTestData() { - final String[] fnames = { "Peter", "Alice", "Joshua", "Mike", "Olivia", - "Nina", "Alex", "Rita", "Dan", "Umberto", "Henrik", "Rene", - "Lisa", "Marge" }; - final String[] lnames = { "Smith", "Gordon", "Simpson", "Brown", - "Clavel", "Simons", "Verne", "Scott", "Allison", "Gates", - "Rowling", "Barks", "Ross", "Schneider", "Tate" }; - final String cities[] = { "Amsterdam", "Berlin", "Helsinki", - "Hong Kong", "London", "Luxemburg", "New York", "Oslo", - "Paris", "Rome", "Stockholm", "Tokyo", "Turku" }; - final String streets[] = { "4215 Blandit Av.", "452-8121 Sem Ave", - "279-4475 Tellus Road", "4062 Libero. Av.", "7081 Pede. Ave", - "6800 Aliquet St.", "P.O. Box 298, 9401 Mauris St.", - "161-7279 Augue Ave", "P.O. Box 496, 1390 Sagittis. Rd.", - "448-8295 Mi Avenue", "6419 Non Av.", - "659-2538 Elementum Street", "2205 Quis St.", - "252-5213 Tincidunt St.", "P.O. Box 175, 4049 Adipiscing Rd.", - "3217 Nam Ave", "P.O. Box 859, 7661 Auctor St.", - "2873 Nonummy Av.", "7342 Mi, Avenue", - "539-3914 Dignissim. Rd.", "539-3675 Magna Avenue", - "Ap #357-5640 Pharetra Avenue", "416-2983 Posuere Rd.", - "141-1287 Adipiscing Avenue", "Ap #781-3145 Gravida St.", - "6897 Suscipit Rd.", "8336 Purus Avenue", "2603 Bibendum. Av.", - "2870 Vestibulum St.", "Ap #722 Aenean Avenue", - "446-968 Augue Ave", "1141 Ultricies Street", - "Ap #992-5769 Nunc Street", "6690 Porttitor Avenue", - "Ap #105-1700 Risus Street", - "P.O. Box 532, 3225 Lacus. Avenue", "736 Metus Street", - "414-1417 Fringilla Street", "Ap #183-928 Scelerisque Road", - "561-9262 Iaculis Avenue" }; PersonContainer c = null; Random r = new Random(0); - try { - c = new PersonContainer(); - for (int i = 0; i < 100; i++) { - Person p = new Person(); - p.setFirstName(fnames[r.nextInt(fnames.length)]); - p.setLastName(lnames[r.nextInt(lnames.length)]); - p.getAddress().setCity(cities[r.nextInt(cities.length)]); - p.setEmail(p.getFirstName().toLowerCase() + "." - + p.getLastName().toLowerCase() + "@vaadin.com"); - p.setPhoneNumber("+358 02 555 " + r.nextInt(10) + r.nextInt(10) - + r.nextInt(10) + r.nextInt(10)); - int n = r.nextInt(100000); - if (n < 10000) { - n += 10000; - } - p.getAddress().setPostalCode(n); - p.getAddress().setStreetAddress( - streets[r.nextInt(streets.length)]); - c.addItem(p); - } - } catch (InstantiationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IllegalAccessException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + c = new PersonContainer(); + for (int i = 0; i < 100; i++) { + Person p = new Person(); + p.setFirstName(TestDataGenerator.getFirstName(r)); + p.setLastName(TestDataGenerator.getLastName(r)); + p.getAddress().setCity(TestDataGenerator.getCity(r)); + p.setEmail(p.getFirstName().toLowerCase() + "." + + p.getLastName().toLowerCase() + "@vaadin.com"); + p.setPhoneNumber(TestDataGenerator.getPhoneNumber(r)); + + p.getAddress().setPostalCode(TestDataGenerator.getPostalCode(r)); + p.getAddress().setStreetAddress( + TestDataGenerator.getStreetAddress(r)); + c.addItem(p); } return c; diff --git a/uitest/src/com/vaadin/tests/util/TestDataGenerator.java b/uitest/src/com/vaadin/tests/util/TestDataGenerator.java new file mode 100644 index 0000000000..8becb709f0 --- /dev/null +++ b/uitest/src/com/vaadin/tests/util/TestDataGenerator.java @@ -0,0 +1,110 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.util; + +import java.math.BigDecimal; +import java.util.Calendar; +import java.util.Date; +import java.util.EnumSet; +import java.util.Locale; +import java.util.Random; +import java.util.TimeZone; + +public class TestDataGenerator { + + final static String[] fnames = { "Peter", "Alice", "Joshua", "Mike", + "Olivia", "Nina", "Alex", "Rita", "Dan", "Umberto", "Henrik", + "Rene", "Lisa", "Marge" }; + final static String[] lnames = { "Smith", "Gordon", "Simpson", "Brown", + "Clavel", "Simons", "Verne", "Scott", "Allison", "Gates", + "Rowling", "Barks", "Ross", "Schneider", "Tate" }; + final static String cities[] = { "Amsterdam", "Berlin", "Helsinki", + "Hong Kong", "London", "Luxemburg", "New York", "Oslo", "Paris", + "Rome", "Stockholm", "Tokyo", "Turku" }; + final static String streets[] = { "4215 Blandit Av.", "452-8121 Sem Ave", + "279-4475 Tellus Road", "4062 Libero. Av.", "7081 Pede. Ave", + "6800 Aliquet St.", "P.O. Box 298, 9401 Mauris St.", + "161-7279 Augue Ave", "P.O. Box 496, 1390 Sagittis. Rd.", + "448-8295 Mi Avenue", "6419 Non Av.", "659-2538 Elementum Street", + "2205 Quis St.", "252-5213 Tincidunt St.", + "P.O. Box 175, 4049 Adipiscing Rd.", "3217 Nam Ave", + "P.O. Box 859, 7661 Auctor St.", "2873 Nonummy Av.", + "7342 Mi, Avenue", "539-3914 Dignissim. Rd.", + "539-3675 Magna Avenue", "Ap #357-5640 Pharetra Avenue", + "416-2983 Posuere Rd.", "141-1287 Adipiscing Avenue", + "Ap #781-3145 Gravida St.", "6897 Suscipit Rd.", + "8336 Purus Avenue", "2603 Bibendum. Av.", "2870 Vestibulum St.", + "Ap #722 Aenean Avenue", "446-968 Augue Ave", + "1141 Ultricies Street", "Ap #992-5769 Nunc Street", + "6690 Porttitor Avenue", "Ap #105-1700 Risus Street", + "P.O. Box 532, 3225 Lacus. Avenue", "736 Metus Street", + "414-1417 Fringilla Street", "Ap #183-928 Scelerisque Road", + "561-9262 Iaculis Avenue" }; + + public static String getStreetAddress(Random r) { + return streets[r.nextInt(streets.length)]; + } + + public static Integer getPostalCode(Random r) { + int n = r.nextInt(100000); + if (n < 10000) { + n += 10000; + } + return n; + } + + public static String getPhoneNumber(Random r) { + return "+358 02 555 " + r.nextInt(10) + r.nextInt(10) + r.nextInt(10) + + r.nextInt(10); + } + + public static String getCity(Random r) { + return cities[r.nextInt(cities.length)]; + } + + public static String getLastName(Random r) { + return lnames[r.nextInt(lnames.length)]; + } + + public static String getFirstName(Random r) { + return fnames[r.nextInt(fnames.length)]; + } + + public static int getAge(Random r) { + return r.nextInt(100) + 10; + } + + public static Date getBirthDate(Random r) { + Calendar c = Calendar.getInstance(TimeZone.getTimeZone("EET"), + new Locale("FI", "fi")); + c.setLenient(true); + c.setTimeInMillis(0); + c.set(Calendar.YEAR, r.nextInt(100) + 1900); + c.set(Calendar.MONTH, r.nextInt(12)); + c.set(Calendar.DAY_OF_MONTH, r.nextInt(31)); + + return c.getTime(); + } + + public static BigDecimal getSalary(Random r) { + return new BigDecimal(r.nextInt(80000)); + } + + public static <T extends Enum<T>> T getEnum(Class<T> class1, Random r) { + EnumSet<T> foo = EnumSet.allOf(class1); + return (T) foo.toArray()[r.nextInt(foo.size() - 1)]; + } +} |