package org.vaadin.viritin.it.issues; import com.vaadin.annotations.PropertyId; import com.vaadin.ui.Button; import com.vaadin.ui.Component; import com.vaadin.ui.Notification; import java.io.Serializable; import java.util.Collection; import java.util.Set; import java.util.logging.Logger; import javax.validation.ConstraintViolation; import javax.validation.constraints.NotNull; import org.apache.commons.collections.CollectionUtils; import org.vaadin.addonhelpers.AbstractTest; import org.vaadin.viritin.v7.MBeanFieldGroup; import org.vaadin.viritin.v7.fields.MTextField; import org.vaadin.viritin.v7.form.AbstractForm; import org.vaadin.viritin.layouts.MFormLayout; import org.vaadin.viritin.layouts.MHorizontalLayout; import org.vaadin.viritin.layouts.MMarginInfo; import org.vaadin.viritin.layouts.MVerticalLayout; /** * * @author Matti Tahvonen */ public class Issue131 extends AbstractTest { public class Member implements Serializable { private static final String MEMBER_CODE = "MEM"; private static final long serialVersionUID = -4051512128345987991L; private Long id; private String reference; @NotNull(message = "validation.initials.required") private String initials; private String firstName; private String middleName; @NotNull(message = "validation.last.name.required") private String lastName; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getReference() { return reference; } public void setReference(String reference) { this.reference = reference; } public String getInitials() { return initials; } public void setInitials(String initials) { this.initials = initials; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getMiddleName() { return middleName; } public void setMiddleName(String middleName) { this.middleName = middleName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } @Override public String toString() { return "Member{" + "id=" + id + ", reference=" + reference + ", initials=" + initials + ", firstName=" + firstName + ", middleName=" + middleName + ", lastName=" + lastName + '}'; } } Logger log = Logger.getLogger(getClass().getName()); public class MemberForm2 extends AbstractForm<Member> { private static final long serialVersionUID = 2115224810575804578L; final MBeanFieldGroup<Member> fieldGroup; @PropertyId("initials") private MTextField initials = new MTextField() .withWidth(100.0f, Unit.PIXELS) .withInputPrompt("Initials"); @PropertyId("middleName") private MTextField middleName = new MTextField() .withWidth(100.0f, Unit.PIXELS) .withInputPrompt("Middle"); @PropertyId("lastName") private MTextField lastName = new MTextField("Last") .withFullWidth() .withInputPrompt("Last"); public MemberForm2(final Member member) { fieldGroup = setEntity(member); log.info("Initials:" + member.getInitials()); log.info("Middle name:" + member.getMiddleName()); log.info("Last name: " + member.getLastName()); } private void initFields() { initials = new MTextField() .withWidth(100.0f, Unit.PIXELS) .withInputPrompt("A."); middleName = new MTextField() .withWidth(100.0f, Unit.PIXELS) .withInputPrompt("Middle"); lastName = new MTextField("Last name") .withFullWidth() .withInputPrompt("Bakker"); } @Override protected Component createContent() { return new MVerticalLayout( new MFormLayout( newButton(), new MHorizontalLayout(initials, middleName). withCaption("Name"), lastName ).withMargin(false).withFullWidth(), getToolbar() ).withMargin(new MMarginInfo(false, true)).withFullWidth(); } private Button newButton() { final Button button = new Button("Check validation"); button.addClickListener(new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent event) { log.info("Form isValid(): " + isValid()); log.info("FieldGroup isValid(): " + fieldGroup.isValid()); log.info("FieldGroup isModified(): " + fieldGroup. isModified()); final Collection<String> beanLevelValidationErrors = fieldGroup. getBeanLevelValidationErrors(); if (CollectionUtils.isNotEmpty(beanLevelValidationErrors)) { for (String beanLevelValidationError : beanLevelValidationErrors) { log.info(beanLevelValidationError); } } final Set<ConstraintViolation<Member>> constraintViolations = fieldGroup. getConstraintViolations(); if (constraintViolations != null) { log.info("getConstraintViolations() size: " + constraintViolations.size()); for (ConstraintViolation<Member> constraintViolation : constraintViolations) { log.info("Invalid value: " + constraintViolation. getInvalidValue() + " | Message: " + constraintViolation. getMessage() + " | Path: " + constraintViolation. getPropertyPath() + "\n" ); } } } }); return button; } } @Override public Component getTestComponent() { Member m = new Member(); m.initials = "MT"; m.lastName = "Tahvonen"; final MemberForm2 memberForm2 = new MemberForm2(m); memberForm2.setSavedHandler(new AbstractForm.SavedHandler<Member>() { private static final long serialVersionUID = -4100482203816246947L; @Override public void onSave(Member entity) { Notification.show(entity.toString()); } }); return memberForm2; } }