Skip to content

Commit e391ffe

Browse files
committed
Added array rule and made date rule more configurable
1 parent 4378267 commit e391ffe

File tree

5 files changed

+88
-15
lines changed

5 files changed

+88
-15
lines changed

src/main/java/org/javawebstack/validator/Validator.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.lang.reflect.Constructor;
1212
import java.lang.reflect.Field;
1313
import java.lang.reflect.InvocationTargetException;
14+
import java.sql.Date;
1415
import java.sql.Timestamp;
1516
import java.util.*;
1617

@@ -22,12 +23,16 @@ public class Validator {
2223
static {
2324
registerRuleType("string", StringRule.class);
2425
registerRuleType("boolean", BooleanRule.class);
26+
registerRuleType("bool", BooleanRule.class);
2527
registerRuleType("enum", EnumRule.class);
2628
registerRuleType("required", RequiredRule.class);
29+
registerRuleType("req", RequiredRule.class);
2730
registerRuleType("ipv4", IPv4AddressRule.class);
2831
registerRuleType("ipv6", IPv6AddressRule.class);
32+
registerRuleType("int", IntegerRule.class);
2933
registerRuleType("integer", IntegerRule.class);
30-
registerRuleType("timestamp", TimestampRule.class);
34+
registerRuleType("date", DateRule.class);
35+
registerRuleType("array", ArrayRule.class);
3136
}
3237

3338
public static void registerRuleType(String name, Class<? extends ValidationRule> type){
@@ -219,8 +224,12 @@ private static Map<String[], List<ValidationRule>> getClassRules(Class<?> type){
219224
return rules;
220225
if(type.equals(String.class))
221226
return rules;
222-
if(type.equals(Timestamp.class) || type.equals(Date.class)){
223-
rules.put(new String[0], Collections.singletonList(new TimestampRule()));
227+
if(type.equals(Timestamp.class) || type.equals(java.util.Date.class)){
228+
rules.put(new String[0], Collections.singletonList(new DateRule(new String[]{})));
229+
return rules;
230+
}
231+
if(type.equals(Date.class)){
232+
rules.put(new String[0], Collections.singletonList(new DateRule(new String[]{"date"})));
224233
return rules;
225234
}
226235
if(type.equals(Boolean.class)){
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package org.javawebstack.validator.rule;
2+
3+
import org.javawebstack.graph.GraphElement;
4+
import org.javawebstack.validator.Validator;
5+
6+
public class ArrayRule implements ValidationRule {
7+
8+
private final int min;
9+
private final int max;
10+
11+
public ArrayRule(int min, int max){
12+
this.min = min;
13+
this.max = max;
14+
}
15+
16+
public ArrayRule(String[] params){
17+
int min = 0;
18+
int max = Integer.MAX_VALUE;
19+
if(params.length > 0)
20+
min = Integer.parseInt(params[0]);
21+
if(params.length > 1)
22+
max = Integer.parseInt(params[1]);
23+
this.min = min;
24+
this.max = max;
25+
}
26+
27+
public String validate(Validator validator, GraphElement value) {
28+
if(value == null)
29+
return null;
30+
if(!value.isArray())
31+
return "Not an array";
32+
if(value.array().size() < min)
33+
return String.format("Shorter than minimum array length (%d < %d)", value.array().size(), min);
34+
if(value.array().size() > max)
35+
return String.format("Longer than maximum array length (%d > %d)", value.array().size(), max);
36+
return null;
37+
}
38+
39+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package org.javawebstack.validator.rule;
2+
3+
import org.javawebstack.graph.GraphElement;
4+
import org.javawebstack.graph.GraphMapper;
5+
import org.javawebstack.validator.Validator;
6+
7+
import java.text.DateFormat;
8+
import java.text.SimpleDateFormat;
9+
10+
public class DateRule implements ValidationRule {
11+
private DateFormat dateFormat;
12+
13+
public DateRule(DateFormat dateFormat){
14+
this.dateFormat = dateFormat;
15+
}
16+
17+
public DateRule(String[] params){
18+
switch (params.length > 0 ? params[0] : "datetime"){
19+
case "date":
20+
dateFormat = new SimpleDateFormat("yyyy-MM-dd");
21+
break;
22+
case "time":
23+
dateFormat = new SimpleDateFormat("HH:mm:ss");
24+
break;
25+
default:
26+
dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
27+
break;
28+
}
29+
}
30+
31+
public String validate(Validator validator, GraphElement value) {
32+
33+
return null;
34+
}
35+
}

src/main/java/org/javawebstack/validator/rule/StringRule.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ public String validate(Validator validator, GraphElement value) {
3030
if(!value.isPrimitive())
3131
return "Not a string value";
3232
if(value.toString().length() < min)
33-
return String.format("Shorter than minimum length (%d < %d)", value.toString().length(), min);
33+
return String.format("Shorter than minimum string length (%d < %d)", value.toString().length(), min);
3434
if(value.toString().length() > max)
35-
return String.format("Longer than maximum length (%d > %d)", value.toString().length(), max);
35+
return String.format("Longer than maximum string length (%d > %d)", value.toString().length(), max);
3636
return null;
3737
}
3838
}

src/main/java/org/javawebstack/validator/rule/TimestampRule.java

Lines changed: 0 additions & 10 deletions
This file was deleted.

0 commit comments

Comments
 (0)