1
2
3
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
20
21
22
23
24 public class ParameterConstraintDateImpl extends AbstractParameterConstraint {
25
26
27 @SuppressWarnings("serial")
28 final static private List<String> suportedClasses = new ArrayList<String>() {
29
30 {
31 add(Date.class.getCanonicalName());
32 }
33 };
34
35
36 String lastTestedValue;
37
38
39
40
41 public void configureConstraint(String configurationString)
42 {
43
44 }
45
46
47
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
64
65 public String getJavaScriptValidationCondition()
66 {
67 return "Ext.Date.parse(value,'d/m/Y', true) != undefined";
68 }
69
70
71
72
73 public boolean isSupportedClass(Class<?> clazz)
74 {
75 return suportedClasses.contains(clazz.getCanonicalName());
76 }
77
78
79
80
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
98
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 }