From fcc15a04842c43e5412740883ee62d9fe0c32597 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Fri, 27 Apr 2018 09:21:22 +0200 Subject: [PATCH] Cleanup MaxFieldLength for UI text fields. (#676) * Cleanup MaxFieldLength for Ui text fields. Signed-off-by: kaizimmerm * Cleanup builder usage. Signed-off-by: kaizimmerm * Code cleanup. Signed-off-by: kaizimmerm --- .../SoftwareModuleAddUpdateWindow.java | 28 ++++--- .../CreateUpdateSoftwareTypeLayout.java | 20 ++--- .../upload/UploadConfirmationWindow.java | 2 +- .../common/AbstractMetadataPopupLayout.java | 13 +--- .../ui/common/EmptyStringValidator.java | 18 +---- .../builder/AbstractTextFieldBuilder.java | 77 ++++++++++--------- .../ui/common/builder/TextAreaBuilder.java | 11 +-- .../ui/common/builder/TextFieldBuilder.java | 17 ++-- .../ui/common/grid/AbstractGridHeader.java | 3 +- .../ui/common/table/AbstractTableHeader.java | 3 +- .../CreateUpdateDistSetTypeLayout.java | 18 ++--- .../AutoCompleteTextFieldComponent.java | 7 +- .../CreateOrUpdateFilterHeader.java | 9 ++- .../filtermanagement/TargetFilterHeader.java | 3 +- .../AbstractCreateUpdateTagLayout.java | 14 ++-- .../DistributionAddUpdateWindowLayout.java | 19 ++--- .../footer/MaintenanceWindowLayout.java | 15 ++-- .../TargetAddUpdateWindowLayout.java | 17 ++-- .../TargetBulkUpdateWindowLayout.java | 12 +-- .../rollout/AddUpdateRolloutWindowLayout.java | 30 ++++---- .../rollout/rollout/DefineGroupsLayout.java | 17 ++-- ...ficateAuthenticationConfigurationItem.java | 2 +- .../ui/utils/SPUILabelDefinitions.java | 5 -- 23 files changed, 162 insertions(+), 198 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java index 5315a5c44..e418c3fb3 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java @@ -20,7 +20,6 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; import org.eclipse.hawkbit.ui.common.CommonDialogWindow; import org.eclipse.hawkbit.ui.common.CommonDialogWindow.SaveDialogCloseListener; -import org.eclipse.hawkbit.ui.common.EmptyStringValidator; import org.eclipse.hawkbit.ui.common.SoftwareModuleTypeBeanQuery; import org.eclipse.hawkbit.ui.common.builder.TextAreaBuilder; import org.eclipse.hawkbit.ui.common.builder.TextFieldBuilder; @@ -211,20 +210,19 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { private void createRequiredComponents() { - nameTextField = createTextField("textfield.name", UIComponentIdProvider.SOFT_MODULE_NAME); - nameTextField.addValidator(new EmptyStringValidator(i18n)); + nameTextField = createTextField("textfield.name", UIComponentIdProvider.SOFT_MODULE_NAME, + SoftwareModule.NAME_MAX_SIZE); - versionTextField = createTextField("textfield.version", UIComponentIdProvider.SOFT_MODULE_VERSION); - versionTextField.addValidator(new EmptyStringValidator(i18n)); + versionTextField = createTextField("textfield.version", UIComponentIdProvider.SOFT_MODULE_VERSION, + SoftwareModule.VERSION_MAX_SIZE); - vendorTextField = createTextField("textfield.vendor", UIComponentIdProvider.SOFT_MODULE_VENDOR); - vendorTextField.setRequired(false); - vendorTextField.setNullRepresentation(""); - - descTextArea = new TextAreaBuilder().caption(i18n.getMessage("textfield.description")).style("text-area-style") - .prompt(i18n.getMessage("textfield.description")).id(UIComponentIdProvider.ADD_SW_MODULE_DESCRIPTION) + vendorTextField = new TextFieldBuilder(SoftwareModule.VENDOR_MAX_SIZE) + .caption(i18n.getMessage("textfield.vendor")).id(UIComponentIdProvider.SOFT_MODULE_VENDOR) .buildTextComponent(); - descTextArea.setNullRepresentation(""); + + descTextArea = new TextAreaBuilder(SoftwareModule.DESCRIPTION_MAX_SIZE) + .caption(i18n.getMessage("textfield.description")).style("text-area-style") + .id(UIComponentIdProvider.ADD_SW_MODULE_DESCRIPTION).buildTextComponent(); typeComboBox = SPUIComponentProvider.getComboBox(i18n.getMessage("upload.swmodule.type"), "", null, null, true, null, i18n.getMessage("upload.swmodule.type")); @@ -234,9 +232,9 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { typeComboBox.setImmediate(Boolean.TRUE); } - private TextField createTextField(final String in18Key, final String id) { - return new TextFieldBuilder().caption(i18n.getMessage(in18Key)).required(true).prompt(i18n.getMessage(in18Key)) - .immediate(true).id(id).buildTextComponent(); + private TextField createTextField(final String in18Key, final String id, final int maxLength) { + return new TextFieldBuilder(maxLength).caption(i18n.getMessage(in18Key)).required(true, i18n).id(id) + .buildTextComponent(); } private void populateTypeNameCombo() { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java index 4e7bbbad1..f64eb8040 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java @@ -20,7 +20,6 @@ import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent.SoftwareModuleTypeEnum; import org.eclipse.hawkbit.ui.colorpicker.ColorPickerConstants; import org.eclipse.hawkbit.ui.colorpicker.ColorPickerHelper; -import org.eclipse.hawkbit.ui.common.EmptyStringValidator; import org.eclipse.hawkbit.ui.common.SoftwareModuleTypeBeanQuery; import org.eclipse.hawkbit.ui.common.builder.LabelBuilder; import org.eclipse.hawkbit.ui.common.builder.TextAreaBuilder; @@ -101,15 +100,16 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout + * type of the builder * @param - * the concrete text component + * the text component + * */ -public abstract class AbstractTextFieldBuilder { +public abstract class AbstractTextFieldBuilder { private String caption; private String style; private String styleName; private String prompt; private String id; - private boolean immediate; + private boolean immediate = true; private boolean required; private boolean readOnly; private boolean enabled = true; - private int maxLengthAllowed; + private final int maxLengthAllowed; private final List validators = new LinkedList<>(); + protected AbstractTextFieldBuilder(final int maxLengthAllowed) { + this.maxLengthAllowed = maxLengthAllowed; + } + /** * @param caption * the caption to set * @return the builder */ - public AbstractTextFieldBuilder caption(final String caption) { + public T caption(final String caption) { this.caption = caption; - return this; + this.prompt = caption; + return (T) this; } /** @@ -51,9 +61,9 @@ public abstract class AbstractTextFieldBuilder { * the style to set * @return the builder * @return the builder */ - public AbstractTextFieldBuilder style(final String style) { + public T style(final String style) { this.style = style; - return this; + return (T) this; } /** @@ -61,19 +71,24 @@ public abstract class AbstractTextFieldBuilder { * the styleName to set * @return the builder */ - public AbstractTextFieldBuilder styleName(final String styleName) { + public T styleName(final String styleName) { this.styleName = styleName; - return this; + return (T) this; } /** * @param required * the required to set + * @param i18n + * to translate error message * @return the builder */ - public AbstractTextFieldBuilder required(final boolean required) { + public T required(final boolean required, final VaadinMessageSource i18n) { this.required = required; - return this; + if (required) { + validators.add(new EmptyStringValidator(i18n, maxLengthAllowed)); + } + return (T) this; } /** @@ -81,9 +96,9 @@ public abstract class AbstractTextFieldBuilder { * the readOnly to set * @return the builder */ - public AbstractTextFieldBuilder readOnly(final boolean readOnly) { + public T readOnly(final boolean readOnly) { this.readOnly = readOnly; - return this; + return (T) this; } /** @@ -91,9 +106,9 @@ public abstract class AbstractTextFieldBuilder { * the enabled to set * @return the builder */ - public AbstractTextFieldBuilder enabled(final boolean enabled) { + public T enabled(final boolean enabled) { this.enabled = enabled; - return this; + return (T) this; } /** @@ -101,9 +116,9 @@ public abstract class AbstractTextFieldBuilder { * the prompt to set * @return the builder */ - public AbstractTextFieldBuilder prompt(final String prompt) { + public T prompt(final String prompt) { this.prompt = prompt; - return this; + return (T) this; } /** @@ -111,19 +126,9 @@ public abstract class AbstractTextFieldBuilder { * the immediate to set * @return the builder */ - public AbstractTextFieldBuilder immediate(final boolean immediate) { + public T immediate(final boolean immediate) { this.immediate = immediate; - return this; - } - - /** - * @param maxLengthAllowed - * the maxLengthAllowed to set - * @return the builder - */ - public AbstractTextFieldBuilder maxLengthAllowed(final int maxLengthAllowed) { - this.maxLengthAllowed = maxLengthAllowed; - return this; + return (T) this; } /** @@ -131,9 +136,9 @@ public abstract class AbstractTextFieldBuilder { * the id to set * @return the builder */ - public AbstractTextFieldBuilder id(final String id) { + public T id(final String id) { this.id = id; - return this; + return (T) this; } /** @@ -142,9 +147,9 @@ public abstract class AbstractTextFieldBuilder { * the validator to set for this field * @return the builder */ - public AbstractTextFieldBuilder validator(final Validator validator) { + public T validator(final Validator validator) { validators.add(validator); - return this; + return (T) this; } /** @@ -187,6 +192,8 @@ public abstract class AbstractTextFieldBuilder { validators.forEach(textComponent::addValidator); } + textComponent.setNullRepresentation(""); + return textComponent; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/builder/TextAreaBuilder.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/builder/TextAreaBuilder.java index 9bd2e3830..621c3268c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/builder/TextAreaBuilder.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/builder/TextAreaBuilder.java @@ -15,15 +15,16 @@ import com.vaadin.ui.themes.ValoTheme; * TextArea builder. * */ -public class TextAreaBuilder extends AbstractTextFieldBuilder