Я пишу свинг-приложение для управления настройками Gmail для пользователей в моем домене Gsuite, но мой метод проверки изменений не работает должным образом с длинными значениями. Он принимает аргумент с новыми настройками (в данном случае настройки отпуска) и сравнивает его с ранее найденными настройками.
Я извлекаю свои настройки и нажимаю кнопку сохранения, не внося никаких изменений, и мой метод регистрирует изменения. Он видит изменение атрибутов startTime и endTime (оба long) там, где их нет. Я знаю, что это эти атрибуты, потому что, когда я комментирую эти атрибуты, он работает как ожидалось.
private void updateVacation(VacationSettings settings) {
boolean isModified = false;
if(!vacationSettings.isEmpty()) {
if(!Objects.equals(vacationSettings.getEnableAutoReply(), settings.getEnableAutoReply()) ||
!Objects.equals(vacationSettings.getStartTime(), settings.getStartTime()) ||
!Objects.equals(vacationSettings.getEndTime(), settings.getEndTime()) ||
!Objects.equals(vacationSettings.getResponseSubject(), settings.getResponseSubject()) ||
!Objects.equals(vacationSettings.getResponseBodyPlainText(), settings.getResponseBodyPlainText()) ||
!Objects.equals(vacationSettings.getRestrictToContacts(), settings.getRestrictToContacts()) ||
!Objects.equals(vacationSettings.getRestrictToDomain(), settings.getRestrictToDomain())) {
isModified = true;
}
}
if(isModified) {
// TODO:Update vacation settings
Logger.getLogger(MainFrame.class.getName()).log(Level.INFO, settings.toString());
}
}