View Javadoc

1   /**
2    * 2007, Digitalis Informatica. All rights reserved. Distribuicao e Gestao de Informatica, Lda. Estrada de Paco de Arcos
3    * num.9 - Piso -1 2780-666 Paco de Arcos Telefone: (351) 21 4408990 Fax: (351) 21 4408999 http://www.digitalis.pt
4    */
5   package pt.digitalis.dif.dem.objects.parameters.constraints.impl.date;
6   
7   import java.text.ParseException;
8   import java.util.ArrayList;
9   import java.util.Date;
10  import java.util.HashMap;
11  import java.util.List;
12  import java.util.Map;
13  
14  import pt.digitalis.dif.dem.interfaces.IStageInstance;
15  import pt.digitalis.dif.dem.objects.parameters.constraints.AbstractParameterConstraint;
16  import pt.digitalis.utils.common.DateUtils;
17  
18  /**
19   * Date parameter constraint implementation
20   * 
21   * @author Pedro Viegas <a href="mailto:pviegas@digitalis.pt">pviegas@digitalis.pt</a>
22   * @created Nov 19, 2007
23   */
24  public class ParameterConstraintDateImpl extends AbstractParameterConstraint {
25  
26      /** Supported classes by numeric constraints */
27      @SuppressWarnings("serial")
28      final static private List<String> suportedClasses = new ArrayList<String>() {
29  
30          {
31              add(Date.class.getCanonicalName());
32          }
33      };
34  
35      /** Last tested value */
36      String lastTestedValue;
37  
38      /**
39       * @see pt.digitalis.dif.dem.objects.parameters.constraints.IParameterConstraint#configureConstraint(java.lang.String)
40       */
41      public void configureConstraint(String configurationString)
42      {
43          // Nothing to do. No parameters to parse.
44      }
45  
46      /**
47       * @see pt.digitalis.dif.dem.objects.parameters.constraints.AbstractParameterConstraint#getErrorMessageValues(boolean)
48       */
49      @Override
50      protected Map<String, String> getErrorMessageValues(boolean parseValues)
51      {
52          Map<String, String> substitutions = new HashMap<String, String>();
53  
54          if (parseValues)
55          {
56              substitutions.put("value", lastTestedValue);
57          }
58  
59          return substitutions;
60      }
61  
62      /**
63       * @see pt.digitalis.dif.dem.objects.parameters.constraints.IParameterConstraint#getJavaScriptValidationCondition()
64       */
65      public String getJavaScriptValidationCondition()
66      {
67          return "Ext.Date.parse(value,'d/m/Y', true) != undefined";
68      }
69  
70      /**
71       * @see pt.digitalis.dif.dem.objects.parameters.constraints.IParameterConstraint#isSupportedClass(java.lang.Class)
72       */
73      public boolean isSupportedClass(Class<?> clazz)
74      {
75          return suportedClasses.contains(clazz.getCanonicalName());
76      }
77  
78      /**
79       * @see pt.digitalis.dif.dem.objects.parameters.constraints.AbstractParameterConstraint#validateConstraint(java.lang.Object,
80       *      pt.digitalis.dif.dem.interfaces.IStageInstance)
81       */
82      @Override
83      public boolean validateConstraint(Object value, IStageInstance stageInstance)
84      {
85  
86          if (value == null)
87              return this.validateConstraint((String) null, stageInstance);
88          else if (value instanceof Date)
89              return true;
90          else if (value instanceof String)
91              return this.validateConstraint(value.toString(), stageInstance);
92          else
93              return false;
94      }
95  
96      /**
97       * @see pt.digitalis.dif.dem.objects.parameters.constraints.IParameterConstraint#validateConstraint(java.lang.String,
98       *      pt.digitalis.dif.dem.interfaces.IStageInstance)
99       */
100     public boolean validateConstraint(String value, IStageInstance stageInstance)
101     {
102         lastTestedValue = value;
103 
104         if (value == null)
105             return true;
106         else
107             try
108             {
109                 DateUtils.stringToSimpleDate(value);
110                 return true;
111 
112             }
113             catch (ParseException e)
114             {
115                 return false;
116             }
117             catch (NumberFormatException e)
118             {
119                 return false;
120             }
121     }
122 }