Я создаю приложение Spring Boot Rest, в котором я получаю информацию об игроке как JSON в запросе POST для сохранения в базе данных. Всего у нас есть 16 полей, но в будущем будет добавлено больше полей.
{
"jerseyNumber": "1",
"firstName": "Sachin",
"lastName": "Tendulkar",
"age": "35",
"country": "India",
"playerType": "Batsmen",
"score": "101",
"ballsFaced": "110",
"strikeRate": "90",
"fours": "15",
"sixes": "1",
"oversBowled": "", '
"runsGiven": "",
"maidenOvers": "",
"wicketsTaken": "",
"economy": ""
}
если playerType = Batsmen, ниже 11 полей являются обязательными, остальные поля, указанные c для боулера, могут быть пустыми / пустыми.
{
"jerseyNumber": "1",
"firstName": "Sachin",
"lastName": "Tendulkar",
"age": "35",
"country": "India",
"playerType": "Batsmen",
"score": "101",
"ballsFaced": "110",
"strikeRate": "90",
"fours": "15",
"sixes": "1",
}
если playerType = Bowler, ниже 11 полей являются обязательными.
{
"jerseyNumber": "10",
"firstName": "Zaheer",
"lastName": "Khan",
"age": "38",
"country": "India",
"playerType": "Bowler",
"oversBowled": "10", '
"runsGiven": "39",
"maidenOvers": "1",
"wicketsTaken": "3",
"economy": "3.9"
}
Класс Pojo
public class CricketPlayer {
private String jerseyNumber;
private String firstName;
private String lastName;
private String age;
private String country;
private String playerType;
private String score;
private String ballsFaced;
private String strikeRate;
private String fours;
private String sixes;
private String oversBowled;
private String runsGiven;
private String maidenOvers;
private String wicketsTaken;
private String economy;
// Getter Methods
}
При получении запроса мне нужно выполнить проверку на основе значения playerType, 1) если в запросе json указаны все обязательные поля (не пустые или нулевые).
Также ниже необходимо проверить бизнес-валидации,
a) age => 18 and age <= 50
b) country is any value from (England, Australia, India, Srilanka, New Zealand, South Africa, Pakistan, Zimbabwe, West Indies, Bangladesh)
c) maidenOvers < oversBowled
d) wicketsTaken < 11
e) ballsfaced < =360
f) oversBowled <= 10
В дальнейшем количество обязательных полей может увеличиться до 25-30 полей. Я могу написать проверку с помощью оператора if else на основе значения типа игрока.
if(cricketPlayer.getPlayerType.equals("Batsmen")
{
// writelogic to check if all mandatory fields are not null or empty
} else if(cricketPlayer.getPlayerType.equals("Bowler")
{
}
Но несколько блоков if else не выглядят хорошо, если у нас есть более 20-25 обязательных полей для проверки. Каков оптимизированный и лучший подход, которому следует следовать в этом сценарии, чтобы его было легче читать и было легче добавлять или удалять любые проверки.