All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.swm.gwt.client.AbstractForm Maven / Gradle / Ivy

There is a newer version: 3.1
Show newest version
package de.swm.gwt.client;

import java.util.ArrayList;
import java.util.List;

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;

import com.google.gwt.editor.client.EditorError;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.UIObject;

import de.swm.gwt.client.authorization.IAccessRight;
import de.swm.gwt.client.authorization.IRightsDependentUIUpdater;
import de.swm.gwt.client.utils.ConstraintViolationEditorErrorAdapter;

/**
 * Abstrakte Basisklasse fuer Formulare.
 *
 * @param  Das DTO, das in diesem Formular gepflegt wird
 * @author Florian Rodler, Daniel Wiese
 * @copyright SWM Service GmbH, 2013-2014
 */
public abstract class AbstractForm extends AbstractBaseForm implements IForm {

	/**
	 * Der default style fuer ein FehlerFeld (message). *
	 */
	private static final String ERROR_FIELD_STYLE = "errorField";

	private IRightsDependentUIUpdater rightsDependentUIUpdater;

	private Validator validator = null;

	
	/**
	 * Erzeugt ein abstraktes Form.
	 */
	public AbstractForm() {
		this(null);
	}

	/**
	 * Erzeugt ein abstraktes Form.
	 *
	 * @param rightsDependentUiUpdater der in das konkrete Form injizierte rightsDependentUiUpdater
	 */
	public AbstractForm(IRightsDependentUIUpdater rightsDependentUiUpdater) {
		this.rightsDependentUIUpdater = rightsDependentUiUpdater;
	}


	/**
	 * Liefert den Validator aus dem konkreten Formular.
	 *
	 * @return der Validator.
	 */
	public Validator getValidator() {
		// Initialisierung nur wenn tatsächlich benötigt
		if (validator == null) {
			validator = Validation.buildDefaultValidatorFactory().getValidator();
		}
		
		return validator;
	}

	/**
	 * Registriert ein UI-Objekt mit den Ausfuehrungsrechten.
	 * 

* Registrierte UI-Objekte werden entsprechend den Ausfuehrungsrechten aktiviert oder deaktiviert. * * @param uiObject das UI-Objekt * @param executionRight die Ausfuehrungsrechte. */ protected void registerAccessRight(UIObject uiObject, IAccessRight executionRight) { if (rightsDependentUIUpdater == null) { throw new IllegalArgumentException("Aufruf registerAccessRights ohne gesetzten accessRightsChecker."); } rightsDependentUIUpdater.register(uiObject, executionRight); } @Override protected void onLoad() { if (rightsDependentUIUpdater != null) { rightsDependentUIUpdater.updateComponents(); } } /** * Diese Methode kann ueberscheiben wenn men einen eigenen CC Stil fuer Fehler-Meldungen bebötigt. * * @return der Stil fuer Fehlermeldungen. */ protected String getErrorFieldStyle() { return (SWMGwt.getTheme() != null) ? SWMGwt.getTheme().getCssBundle().getErrorCss().errorField() : ERROR_FIELD_STYLE; } /** * Validiert das Formular und zeigt Fehlermeldungen ggf. direkt an. * * @return true wenn das Formular valide ist. */ public boolean validateWithErrorContentArea(Panel errorArea) { final List> violationsToDisplay = getConstraintViolations(); if (errorArea != null) { errorArea.clear(); for (ConstraintViolation constraintViolation : violationsToDisplay) { //zz.B. final HTML error = new HTML(constraintViolation.getMessage()); error.setStyleName(getErrorFieldStyle()); errorArea.add(error); } } //und am Schluss Violations anzeigen. if (!violationsToDisplay.isEmpty()) { this.dtoEditor.setConstraintViolations(violationsToDisplay); return false; } return true; } /** * Validiert das Formular und zeigt Fehlermeldungen ggf. direkt an. * * @return true wenn das Formular valide ist. */ public boolean validate() { List> violationsToDisplay = getConstraintViolations(); //und am Schluss Violations anzeigen. if (!violationsToDisplay.isEmpty()) { this.dtoEditor.setConstraintViolations(violationsToDisplay); return false; } return true; } /** * Liefert die Liste der der Validierungsfehler. * * @return die Liste der Validierungsfehler. */ public List> getConstraintViolations() { DTO entity = this.getDisplayedDTO(); if (entity != null && this.dtoEditor != null) { List> violationsToDisplay = new ArrayList>(); //Zuerst Violations des Validators sammeln violationsToDisplay.addAll(getValidator().validate(entity)); //Dann die Errors vom Editor sammeln (falsche Eingabewerte) if (this.dtoEditor.hasErrors()) { for (EditorError ee : this.dtoEditor.getErrors()) { violationsToDisplay.add(new ConstraintViolationEditorErrorAdapter(ee, entity)); } } return violationsToDisplay; } return new ArrayList>(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy