1 17 18 package com.finalist.jaggenerator.validation; 19 20 import java.util.ArrayList ; 21 import java.util.Iterator ; 22 import java.util.List ; 23 import java.util.StringTokenizer ; 24 25 35 public class StrutsValidation { 36 37 private String dependsList = ""; 38 private String xml = ""; 39 40 41 44 public StrutsValidation() { 45 } 46 47 53 public StrutsValidation(String sqlType, String jdbcType, boolean required) { 54 ArrayList validationsList = new ArrayList (3); 55 StringBuffer validations = new StringBuffer (); 56 List parameters = getParams(sqlType); 57 58 if (required) { 59 validationsList.add("required"); 60 } 61 if (sqlType.startsWith("NUMBER") || sqlType.equals("MEDIUMINT")) { 62 if ("INTEGER".equals(jdbcType)) { 63 validationsList.add("integer"); 64 } else { 65 validationsList.add("float"); 66 67 if (parameters.size() == 2) { 68 validationsList.add("decimal"); 69 generateDecimalMaskXML(Integer.parseInt((String ) parameters.get(0)), 70 Integer.parseInt((String ) parameters.get(1))); 71 } 72 else if (!parameters.isEmpty()) { 73 validationsList.add("maxlength"); 74 generateMaxlengthXML(Integer.parseInt((String ) parameters.get(0))); 75 } 76 } 77 } 78 if (sqlType.startsWith("INT")) { 79 validationsList.add("integer"); 80 if (!parameters.isEmpty()) { 81 validationsList.add("maxlength"); 82 generateMaxlengthXML(Integer.parseInt((String ) parameters.get(0))); 83 } 84 } 85 if (sqlType.indexOf("CHAR") != -1 && !parameters.isEmpty()) { 86 validationsList.add("maxlength"); 87 generateMaxlengthXML(Integer.parseInt((String ) parameters.get(0))); 88 } 89 if (sqlType.indexOf("DATE") != -1 ) { 90 validationsList.add("date"); 91 generateDateXML(); 92 } 93 if (sqlType.indexOf("BIGINT") != -1) { 94 validationsList.add("long"); 95 if (!parameters.isEmpty()) { 96 validationsList.add("maxlength"); 97 generateMaxlengthXML(Integer.parseInt((String ) parameters.get(0))); 98 } 99 } 100 if (sqlType.indexOf("SMALLINT") != -1) { 101 validationsList.add("short"); 102 if (!parameters.isEmpty()) { 103 validationsList.add("maxlength"); 104 generateMaxlengthXML(Integer.parseInt((String ) parameters.get(0))); 105 } 106 } 107 if (sqlType.indexOf("TINYINT") != -1) { 108 validationsList.add("byte"); 109 if (!parameters.isEmpty()) { 110 validationsList.add("maxlength"); 111 generateMaxlengthXML(Integer.parseInt((String ) parameters.get(0))); 112 } 113 } 114 if (sqlType.indexOf("FLOAT") != -1) { 115 validationsList.add("float"); 116 } 117 118 Iterator v = validationsList.iterator(); 119 while (v.hasNext()) { 120 String item = (String ) v.next(); 121 validations.append(item); 122 if (v.hasNext()) { 123 validations.append(", "); 124 } 125 } 126 dependsList = validations.toString(); 127 128 } 129 130 131 132 public void setDependsList(String dependsList) { 133 this.dependsList = dependsList; 134 } 135 136 137 public void setXml(String xml) { 138 this.xml = xml; 139 } 140 141 145 public String getDependsList() { 146 return dependsList; 147 } 148 149 153 public String getXml() { 154 return xml; 155 } 156 157 158 private void generateDateXML() { 159 StringBuffer temp = new StringBuffer (xml); 160 temp.append("<var>\n"); 161 temp.append(" <var-name>datePattern</var-name>\n"); 162 temp.append(" <var-value>${date_format}</var-value>\n"); 163 temp.append("</var>"); 164 setXml(temp.toString()); 165 } 166 167 private void generateTimestampXML() { 168 StringBuffer temp = new StringBuffer (xml); 169 temp.append("<var>\n"); 170 temp.append(" <var-name>datePattern</var-name>\n"); 171 temp.append(" <var-value>${timestamp_format}</var-value>\n"); 172 temp.append("</var>"); 173 setXml(temp.toString()); } 174 175 private void generateMaxlengthXML(int maxLength) { 176 StringBuffer temp = new StringBuffer (xml); 177 temp.append("<arg1 key=\"${var:maxlength}\" name=\"maxlength\" resource=\"false\"/>\n"); 178 temp.append("<var>\n"); 179 temp.append(" <var-name>maxlength</var-name>\n"); 180 temp.append(" <var-value>").append(maxLength).append("</var-value>\n"); 181 temp.append("</var>"); 182 setXml(temp.toString()); 183 } 184 185 private void generateDecimalMaskXML(int length, int precision) { 186 StringBuffer temp = new StringBuffer (xml); 187 temp.append("<arg1 key=\"${var:decimalPrecision}\" name=\"decimal\" resource=\"false\"/>"); 188 temp.append("<arg2 key=\"${var:decimalLength}\" name=\"decimal\" resource=\"false\"/>"); 189 temp.append("<var>\n"); 190 temp.append(" <var-name>decimalLength</var-name>\n"); 191 temp.append(" <var-value>").append(length).append("</var-value>\n"); 192 temp.append("</var>"); 193 temp.append("<var>\n"); 194 temp.append(" <var-name>decimalPrecision</var-name>\n"); 195 temp.append(" <var-value>").append(precision).append("</var-value>\n"); 196 temp.append("</var>"); 197 setXml(temp.toString()); 198 } 199 200 public static List getParams(String sqlType) { 201 String trimmed = sqlType.trim(); 202 ArrayList params = new ArrayList (); 203 int openBracketPos = trimmed.indexOf('('); 204 int closeBracketPos = trimmed.indexOf(')'); 205 if (openBracketPos != -1 && closeBracketPos == (trimmed.length() - 1)) { 206 StringTokenizer tokie = new StringTokenizer (trimmed.substring(openBracketPos + 1, closeBracketPos), ","); 207 while (tokie.hasMoreTokens()) { 208 params.add(tokie.nextToken().trim()); 209 } 210 } 211 212 return params; 213 } 214 215 } 216 | Popular Tags |