Sascha's Wiki

Die SimpleValidationAPI und wie man sie anwendet

Benutzung

Zuerst erstellt man sich ein Panel mit den gewünschten Feldern und macht diese Felder Public. Wichtig beim Erzezgen des Panels ist es, dass für jedes Feld das validiert werden soll ein Componentenname eingegeben wird.

Anschließend muss das Erzeugte Panel angelegt werden und in das ValidationPanel eingehängt werden. Im nachfolgenden Beispiel werden alle Felder außer dem PLZ Feld darauf überprüft, ob sie leer sind. In diesem Fall wird ein Fehler ausgegeben. Außerdem wird ein Fehler ausgegeben, wenn das PLZ Feld nicht nur aus Zahlen besteht.

PersonalPanel inner = new PersonPanel();
ValidationPanel panel = new ValidationPanel();
panel.setInnerComponent(inner);

SwingValidationGroup group = (SwingValidationGroup) panel.getValidationGroup();
group.add(inner.name, StringValidators.REQUIRE_NON_EMPTY_STRING);
group.add(inner.surname, StringValidators.REQUIRE_NON_EMPTY_STRING);
group.add(inner.place, StringValidators.REQUIRE_NON_EMPTY_STRING);
group.add(inner.street, StringValidators.REQUIRE_NON_EMPTY_STRING);
group.add(inner.phone, StringValidators.REQUIRE_NON_EMPTY_STRING);
group.add(inner.plz, StringValidators.REQUIRE_VALID_INTEGER);

Wenn man dieses ValidationPanel verwendet, sieht das Ergebnis wiefolgt aus.

Die Validatoren

//Fehler bei leerem Feld
StringValidators.REQUIRE_NON_EMPTY_STRING

//Fehler wenn kein Int Value
StringValidators.REQUIRE_VALID_INTEGER

//Fehler wenn kein E-Mail Format
StringValidators.EMAIL_ADDRESS

//Fehler wenn das File keine Directory ist
StringValidators.FILE_MUST_BE_DIRECTORY

//Fehler wenn File kein File is
StringValidators.FILE_MUST_BE_FILE

//Fehler wenn File nicht existiert
StringValidators.FILE_MUST_EXIST

//Fehler wenn das File existiert
StringValidators.FILE_MUST_NOT_EXIST

//Fehler wenn kein Hostname
StringValidators.HOST_NAME

//Fehler wenn keine Hostname oder keine IP-Adresse
StringValidators.HOST_NAME_OR_IP_ADDRESS

//Fehler wenn keine IP-Adresse
StringValidators.IP_ADRESS

//Fehler wenn kein JAVA Paketname
StringValidators.JAVA_PACKAGE_NAME

//Fehler wenn ein String mit einem Punkt endet
StringValidators.MAY_NOT_END_WITH_PERIOD

//Fehler wenn mit Zahl anfängt
StringValidators.MAY_NOT_START_WITH_DIGIT

//Fehler wenn es Leerzeichen gibt
StringValidators.NO_WHITESPACE

//Fehler wenn String eine Javastichwort enthält
StringValidators.REQUIRE_JAVA_IDENTIFIER

//Fehler wenn Feld leer
StringValidators.REQUIRE_NON_EMPTY_STRING

//Fehler wenn Zahl negativ
StringValidators.REQUIRE_NON_NEGATIVE_NUMBER

//Fehler wenn kein gültiger Dateiname
StringValidators.REQUIRE_VALID_FILENAME

//Fehler wenn ungültige Zahl (int)
StringValidators.REQUIRE_VALID_INTEGER

//Fehler wenn ungültige Zahl (double, float)
StringValidators.REQUIRE_VALID_NUMBER

//Fehler wenn keine gültige URL
StringValidators.URL_MUST_BE_VALID

//Fehler wenn ungültige Zahl (hexadecimal)
StringValidators.VALID_HEXADECIMAL_NUMBER

Netbeans ValidationUtil Klasse

public class ValidationUtil {

    private ValidationUtil() {
    }

    /**
     * Erzeugt einen Dialog mit Validation Support der über den NetBeans
     * DialogDisplayer angezeigt werden kann.
     *
     * Bsp: JPanel panel = new JPanel(); ... //setup panel
     *
     * ValidationPanel vp = new ValidationPanel(); vp.setInnerComponent(panel);
     *
     * DialogDescriptor dd = ValidationUtil.createDialogDescriptor(vp, panel,
     * "URL"); Object ret = DialogDisplayer.getDefault().notify(dd); if
     * (DialogDescriptor.OK_OPTION.equals(ret)) { System.exit(0); } else {
     * System.exit(1); }
     *
     * @author boysetsfire
     * @param vp ValidationPanel
     * @param innerPane Inneres Panel
     * @param title Titel des Dialogs
     * @return DialogDescriptor
     */
    public static DialogDescriptor createDialogDescriptor(ValidationPanel vp, Object innerPane, String title) {
        final DialogDescriptor dd = new DialogDescriptor(innerPane, title);
        ValidationUI okButtonEnabler = new ValidationUI() {
            private NotificationLineSupport nls = dd.createNotificationLineSupport();

            @Override
            public void showProblem(Problem problem) {
                if (problem != null) {
                    Severity severity = problem.severity();
                    if (severity.equals(Severity.FATAL)) {
                        nls.setErrorMessage(problem.getMessage());
                        dd.setValid(false);
                        return;
                    }
                    if (severity.equals(Severity.WARNING)) {
                        nls.setErrorMessage(problem.getMessage());
                        dd.setValid(true);
                        return;
                    }
                    nls.setInformationMessage(problem.getMessage());
                } else {
                    nls.clearMessages();
                    dd.setValid(true);
                }
            }

            @Override
            public void clearProblem() {
                showProblem(null);
            }
        };
        vp.getValidationGroup().addUI(okButtonEnabler);
        vp.getValidationGroup().performValidation();
        return dd;
    }
}

java/netbeans/simplevalidationapi.txt · Zuletzt geändert: 2016/04/21 09:15 (Externe Bearbeitung)