This commit is contained in:
mindol1004
2024-09-25 10:32:37 +09:00
parent 9d1079fcbd
commit 4f3d7e659b
35 changed files with 549 additions and 269 deletions

View File

@@ -0,0 +1,32 @@
package com.spring.common.validation;
import java.text.ParseException;
import java.util.Date;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.quartz.CronExpression;
public class CronExpressionValidator implements ConstraintValidator<ValidCronExpression, String> {
@Override
public boolean isValid(String cronExpression, ConstraintValidatorContext context) {
if (cronExpression == null || cronExpression.isEmpty()) {
return false;
}
boolean result = false;
if(CronExpression.isValidExpression(cronExpression)){
try {
CronExpression targetExpression = new CronExpression(cronExpression);
if (targetExpression.getNextValidTimeAfter(new Date(System.currentTimeMillis())) != null) {
result = true;
}
} catch (ParseException e) {
result = false;
}
}
return result;
}
}

View File

@@ -0,0 +1,20 @@
package com.spring.common.validation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
@Documented
@Constraint(validatedBy = CronExpressionValidator.class)
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ValidCronExpression {
String message() default "Invalid cron expression";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}