Skip to content

Commit 1b9fd6e

Browse files
ibrahimaltinolukibrahimaltinoluk
authored andcommitted
FieldNotFoundException throws when rule field doesnot exist in data map
1 parent 354bd3e commit 1b9fd6e

File tree

6 files changed

+59
-16
lines changed

6 files changed

+59
-16
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.jquerybuilder.exception;
2+
3+
public class FieldNotFoundException extends Exception {
4+
public FieldNotFoundException(String detail) {
5+
super(detail);
6+
}
7+
8+
public FieldNotFoundException(String detail, Throwable cause) {
9+
super(detail, cause);
10+
}
11+
}

src/main/java/com/jquerybuilder/validation/ValidationGroup.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import java.util.List;
55
import java.util.Map;
66

7+
import com.jquerybuilder.exception.FieldNotFoundException;
8+
79
public class ValidationGroup {
810

911
public enum Condition {
@@ -41,7 +43,7 @@ private void build(Map map) {
4143
}
4244
}
4345

44-
public boolean execute(Map data) {
46+
public boolean execute(Map data) throws FieldNotFoundException {
4547

4648
Boolean result = null;
4749

@@ -55,18 +57,17 @@ public boolean execute(Map data) {
5557
result |= ruleResult;
5658
}
5759
}
60+
5861
for (ValidationGroup validationGroup : validationGroups) {
5962
boolean ruleResult = validationGroup.execute(data);
6063
if (result == null) {
6164
result = ruleResult;
62-
if (Condition.AND.equals(condition)) {
65+
} else if (Condition.AND.equals(condition)) {
6366
result &= ruleResult;
6467
} else {
6568
result |= ruleResult;
6669
}
6770
}
68-
6971
return not ? !result : result;
7072
}
71-
7273
}

src/main/java/com/jquerybuilder/validation/ValidationRule.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import java.util.Map;
44

5+
import com.jquerybuilder.exception.FieldNotFoundException;
6+
57
public class ValidationRule {
68
private String id;
79
private String field;
@@ -21,9 +23,9 @@ public void build(Map<String, String> map) {
2123
setValue(map.get("value"));
2224
}
2325

24-
public boolean execute(Map data) {
26+
public boolean execute(Map data) throws FieldNotFoundException {
2527
if (!data.containsKey(field)) {
26-
return false;
28+
throw new FieldNotFoundException("(field:"+field + ") not found in map");
2729
}
2830
String rawDataValue = data.get(field).toString();
2931
return Operation.apply(operator, rawDataValue, value);
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.jquerybuilder.test;
2+
3+
import java.util.Map;
4+
5+
import com.jquerybuilder.exception.FieldNotFoundException;
6+
import com.jquerybuilder.validation.ValidationGroup;
7+
8+
public class FieldNotFoundExceptionTest extends BaseTest {
9+
10+
public FieldNotFoundExceptionTest() {
11+
data1.put("foo", "bar");
12+
}
13+
14+
public void testInOperation() {
15+
Map map = gson.fromJson(readFile("input/operation/in.json"), Map.class);
16+
ValidationGroup validationGroup = new ValidationGroup(map);
17+
18+
Exception exception = null;
19+
try {
20+
validationGroup.execute(data1);
21+
} catch (Exception e) {
22+
exception = e;
23+
}
24+
assertNotNull(exception);
25+
assertTrue(exception instanceof FieldNotFoundException);
26+
assertEquals("(field:number) not found in map", exception.getMessage());
27+
}
28+
29+
}

src/test/java/com/jquerybuilder/test/OperationTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.Map;
44

5+
import com.jquerybuilder.exception.FieldNotFoundException;
56
import com.jquerybuilder.validation.ValidationGroup;
67

78
public class OperationTest extends BaseTest {
@@ -24,7 +25,7 @@ public OperationTest() {
2425

2526
}
2627

27-
public void testInOperation() {
28+
public void testInOperation() throws FieldNotFoundException {
2829
Map map = gson.fromJson(readFile("input/operation/in.json"), Map.class);
2930
ValidationGroup validationGroup = new ValidationGroup(map);
3031

@@ -35,7 +36,7 @@ public void testInOperation() {
3536

3637
}
3738

38-
public void testLessOperation() {
39+
public void testLessOperation() throws FieldNotFoundException {
3940
Map map = gson.fromJson(readFile("input/operation/less.json"), Map.class);
4041
ValidationGroup validationGroup = new ValidationGroup(map);
4142

@@ -44,7 +45,7 @@ public void testLessOperation() {
4445

4546
}
4647

47-
public void testBetweenOperation() {
48+
public void testBetweenOperation() throws FieldNotFoundException {
4849
Map map = gson.fromJson(readFile("input/operation/between.json"), Map.class);
4950
ValidationGroup conditionGroup = new ValidationGroup(map);
5051

src/test/java/com/jquerybuilder/test/ValidationTest.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.Map;
44

5+
import com.jquerybuilder.exception.FieldNotFoundException;
56
import com.jquerybuilder.validation.ValidationGroup;
67

78
public class ValidationTest extends BaseTest {
@@ -33,7 +34,7 @@ public ValidationTest() {
3334
data10.put("username", "gürsel");
3435
}
3536

36-
public void testAgeValidation() {
37+
public void testAgeValidation() throws FieldNotFoundException {
3738
Map map = gson.fromJson(readFile("input/age_validation.json"), Map.class);
3839
ValidationGroup validationGroup = new ValidationGroup(map);
3940

@@ -42,7 +43,7 @@ public void testAgeValidation() {
4243
assertFalse(validationGroup.execute(data3));
4344
}
4445

45-
public void testAgeValidationNot() {
46+
public void testAgeValidationNot() throws FieldNotFoundException {
4647
Map map = gson.fromJson(readFile("input/age_validation_not.json"), Map.class);
4748

4849
ValidationGroup validationGroup = new ValidationGroup(map);
@@ -52,29 +53,27 @@ public void testAgeValidationNot() {
5253

5354
}
5455

55-
public void testHobbyValidation() {
56+
public void testHobbyValidation() throws FieldNotFoundException {
5657
Map map = gson.fromJson(readFile("input/hobby_validation.json"), Map.class);
5758

5859
ValidationGroup validationGroup = new ValidationGroup(map);
5960

60-
assertFalse(validationGroup.execute(data1));
6161
assertTrue(validationGroup.execute(data2));
6262
assertFalse(validationGroup.execute(data3));
6363
assertTrue(validationGroup.execute(data4));
6464
}
6565

66-
public void testHobbyValidationNot() {
66+
public void testHobbyValidationNot() throws FieldNotFoundException {
6767
Map map = gson.fromJson(readFile("input/hobby_validation_not.json"), Map.class);
6868

6969
ValidationGroup validationGroup = new ValidationGroup(map);
7070

71-
assertFalse(validationGroup.execute(data1));
7271
assertFalse(validationGroup.execute(data2));
7372
assertTrue(validationGroup.execute(data3));
7473
assertFalse(validationGroup.execute(data4));
7574
}
7675

77-
public void testNumberValidation() {
76+
public void testNumberValidation() throws FieldNotFoundException {
7877
Map map = gson.fromJson(readFile("input/validation3.json"), Map.class);
7978

8079
ValidationGroup validationGroup = new ValidationGroup(map);

0 commit comments

Comments
 (0)