การแสดงข้อความแจ้งผลการตรวจสอบ
ได้ตั้งค่า annotation ไว้เพื่อควบคุมคุณภาพข้อมูลการขายวิดีโอเกมแล้ว ลองรันการตรวจสอบบนข้อมูลที่มีข้อผิดพลาดเพื่อดูว่ามีข้อความใดถูกแสดงออกมา ข้อมูลที่มีปัญหานี้ขาด platform มี year ก่อนปี 1960 และมี sales เป็นค่าลบ ซึ่งละเมิด constraint ที่กำหนดไว้ใน annotation ตรวจสอบข้อมูลการขายวิดีโอเกมและแสดงข้อความแจ้งการละเมิดที่พบ
ได้ import แพ็กเกจ jakarta ไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การทำความสะอาดข้อมูลใน Java
คำแนะนำการฝึกหัด
- แสดงข้อความแจ้งการละเมิดเมื่อข้อมูลไม่ผ่าน constraint
- ตรวจสอบข้อมูลการขายวิดีโอเกมโดยใช้
validator
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
public class VideoGameSale {
@NotNull(message = "Name cannot be empty")
private String name;
@NotNull(message = "Platform cannot be empty")
private String platform;
@Min(value = 1960, message = "Year must be greater than 1960")
private Integer year;
@Min(value = 0, message = "Sales amount must be positive")
private Double sales;
public VideoGameSale(String name, String platform, Integer year, Double sales) {
this.name = name;
this.platform = platform;
this.year = year;
this.sales = sales;
}
public static void main(String[] args) {
VideoGameSale sale = new VideoGameSale(
"Super Mario Bros.", null, 1950,
-29.08);
Set> violations =
SalesValidator.validateSale(sale);
// Print the violation message
violations.forEach(violation ->
System.out.println(____.____()));
if (!violations.isEmpty()) throw new ConstraintViolationException(violations);
}
}
class SalesValidator {
private static final ValidatorFactory factory =
Validation.buildDefaultValidatorFactory();
private static final Validator validator = factory.getValidator();
public static Set> validateSale(VideoGameSale sale) {
// Validate the video game sale
return ____.____(sale);
}
}