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;
6   
7   import java.util.ArrayList;
8   import java.util.HashMap;
9   import java.util.List;
10  import java.util.Map;
11  
12  import pt.digitalis.dif.dem.interfaces.IStageInstance;
13  import pt.digitalis.dif.dem.objects.parameters.constraints.AbstractParameterConstraint;
14  
15  /**
16   * Max parameter constraint implementation
17   * 
18   * @author Pedro Viegas <a href="mailto:pviegas@digitalis.pt">pviegas@digitalis.pt</a>
19   * @created Nov 16, 2007
20   */
21  public class ParameterConstraintMaxSizeImpl extends AbstractParameterConstraint {
22  
23      /** Supported classes by numeric constraints */
24      @SuppressWarnings("serial")
25      final static private List<String> supportedClasses = new ArrayList<String>() {
26  
27          {
28              add(String.class.getCanonicalName());
29          }
30      };
31  
32      /** Last tested value */
33      String lastTestedValue;
34  
35      /** Max size to validate */
36      Integer maxSize;
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  
44          String value = configurationString.substring(configurationString.indexOf("=") + 1);
45  
46          maxSize = new Integer(value.trim());
47      }
48  
49      /**
50       * @see pt.digitalis.dif.dem.objects.parameters.constraints.AbstractParameterConstraint#getErrorMessageValues(boolean)
51       */
52      @Override
53      protected Map<String, String> getErrorMessageValues(boolean parseValues)
54      {
55          Map<String, String> substitutions = new HashMap<String, String>();
56  
57          if (parseValues)
58          {
59              substitutions.put("value", lastTestedValue);
60          }
61          substitutions.put("max", maxSize.toString());
62  
63          return substitutions;
64      }
65  
66      /**
67       * @see pt.digitalis.dif.dem.objects.parameters.constraints.IParameterConstraint#getJavaScriptValidationCondition()
68       */
69      public String getJavaScriptValidationCondition()
70      {
71          return "(new String(value).length <= " + maxSize + ")";
72      }
73  
74      /**
75       * @see pt.digitalis.dif.dem.objects.parameters.constraints.IParameterConstraint#isSupportedClass(java.lang.Class)
76       */
77      public boolean isSupportedClass(Class<?> clazz)
78      {
79          return supportedClasses.contains(clazz.getCanonicalName());
80      }
81  
82      /**
83       * @see pt.digitalis.dif.dem.objects.parameters.constraints.IParameterConstraint#validateConstraint(java.lang.String,
84       *      pt.digitalis.dif.dem.interfaces.IStageInstance)
85       */
86      public boolean validateConstraint(String value, IStageInstance stageInstance)
87      {
88          lastTestedValue = value;
89  
90          return (value == null || value.length() <= maxSize);
91      }
92  }