View Javadoc
1   package fr.ifremer.dali.ui.swing.util.validator;
2   
3   /*
4    * #%L
5    * Dali :: UI
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2014 - 2015 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU Affero General Public License as published by
13   * the Free Software Foundation, either version 3 of the License, or
14   * (at your option) any later version.
15   * 
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   * 
21   * You should have received a copy of the GNU Affero General Public License
22   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23   * #L%
24   */
25  
26  import com.opensymphony.xwork2.validator.ValidationException;
27  import fr.ifremer.dali.dto.DaliBeans;
28  import fr.ifremer.dali.dto.ErrorAware;
29  import fr.ifremer.dali.dto.ErrorDTO;
30  import fr.ifremer.quadrige3.ui.core.dto.QuadrigeBean;
31  import fr.ifremer.dali.ui.swing.util.table.AbstractDaliRowUIModel;
32  import fr.ifremer.dali.ui.swing.util.table.AbstractDaliTableUIModel;
33  import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
34  
35  import static org.nuiton.i18n.I18n.t;
36  
37  /**
38   * A customized FieldValidatorSupport that shows control messages from a AbstractDaliTableUIModel with ErrorAware row model
39   * <p/>
40   * Created by Ludovic on 01/07/2015.
41   */
42  public class ControlTableExpressionValidator extends AbstractControlExpressionValidator {
43  
44      /** {@inheritDoc} */
45      @Override
46      public void validate(Object object) throws ValidationException {
47  
48          Object objectValue = getFieldValue(getFieldName(), object);
49  
50          if (!(objectValue instanceof AbstractDaliTableUIModel)) {
51              return;
52          }
53  
54          AbstractDaliTableUIModel<? extends QuadrigeBean, ? extends AbstractDaliRowUIModel, ?> model =
55                  (AbstractDaliTableUIModel<? extends QuadrigeBean, ? extends AbstractDaliRowUIModel, ?>) objectValue;
56  
57          for (AbstractDaliRowUIModel row : model.getRows()) {
58              if (row instanceof ErrorAware) {
59  
60                  if (isErrorActive()) {
61                      for (ErrorDTO error : DaliBeans.getErrors((ErrorAware) row, false)) {
62                          addFieldErrorMessage(ApplicationUIUtil.removeHtmlTags(t("dali.validator.error", error.getMessage())));
63                      }
64                  }
65  
66                  if (isControlErrorActive()) {
67                      for (ErrorDTO error : DaliBeans.getErrors((ErrorAware) row, true)) {
68                          addFieldErrorMessage(ApplicationUIUtil.removeHtmlTags(t("dali.validator.error.control", error.getMessage())));
69                      }
70                  }
71  
72                  if (isWarningActive()) {
73                      for (ErrorDTO warning : DaliBeans.getWarnings((ErrorAware) row, false)) {
74                          addFieldErrorMessage(ApplicationUIUtil.removeHtmlTags(t("dali.validator.warning", warning.getMessage())));
75                      }
76                  }
77  
78                  if (isControlWarningActive()) {
79                      for (ErrorDTO warning : DaliBeans.getWarnings((ErrorAware) row, true)) {
80                          addFieldErrorMessage(ApplicationUIUtil.removeHtmlTags(t("dali.validator.warning.control", warning.getMessage())));
81                      }
82                  }
83              }
84          }
85      }
86  
87  }
88