У меня есть поле даты рождения, и поле MBG, MBG и дата рождения должны совпадать (например: если дата рождения 08/10/1990, они должны начинаться с 0810990 ...)
, сейчас у меня есть проверки для одного поля:
- Валидатор MBG:
public class MBGValidator implements IValidator {
@Override
public IStatus validate(Object value) {
if (value instanceof String) {
String MBG = (String) value;
//rest of the code for validate MBG, check there are 13 characters and all numbers
}
}
Валидатор даты рождения:
public class BirthdateValidator implements IValidator {
@Override
public IStatus validate(Object value) {
if (value instanceof Date) {
LocalDateTime today = LocalDateTime.now();
Date birthday = (Date) value;
//rest of the code, check birthdate cant be in future
}
}
Валидатор звонков:
DataBindingContext ctx = new DataBindingContext();
//Validation for MBG:
IObservableValue MBGWidget = WidgetProperties.text(SWT.Modify).observe(MBG);
IObservableValue MBGModel = BeanProperties.value(Employee.class,"MBG").observe(employee);
UpdateValueStrategy strategy = new UpdateValueStrategy();
strategy.setBeforeSetValidator(new MBGValidator());
//Validation for birthdate:
IObservableValue birthDateWidget = WidgetProperties.selection().observe(birthDate);
IObservableValue birthDateModel =
BeanProperties.value(Employee.class,"birthDate").observe(employee);
strategy = new UpdateValueStrategy();
strategy.setBeforeSetValidator(new BirthdateValidator());
ctx.bindValue(birthDateWidget, birthDateModel, strategy, null);
, что пока все нормально, но теперь мне нужно проверить, что два поля в одном классе
Я пытался сделать это:
public class BirthdateMBGValidator extends MultiValidator {
private final IObservableValue MBG;
private final IObservableValue birthdate;
public BirthdateMBGValidator(final IObservableValue MBG, final IObservableValue birthdate) {
this.MBG = MBG;
this.birthdate = birthdate;
}
@Override
protected IStatus validate() {
Date birthDate = (Date) this.birthdate.getValue();
String jmbg = (String) this.MBG.getValue();
//rest of the code, comparing birthdate and jmbg
}
}
, но я не знаю, как я могу правильно вызвать валидатор, пробовал что-то вроде это (одно из решений, которое я пробовал):
BirthdateMBGValidator validator = new BirthdateMBGValidator(MBGWidget,birthDateWidget);
ctx.addValidationStatusProvider(validator); //ctx = new DataBindingContext();
ctx.bindValue(MBGWidget,MBGModel,null,null);
ctx.bindValue(birthDateWidget, birthDateModel, null, null);
Может кто-нибудь сказать мне, как я могу исправить эту последнюю часть кода?