Bugfix with time precision in windows by adding '.truncatedTo(ChronoUnit.MILLIS)' to 'OffsetDateTime.now()'

This commit is contained in:
Philipp Schramm 2021-10-07 16:54:00 +02:00
parent f7e8bee7cd
commit f76ec712c9
11 changed files with 50 additions and 39 deletions

View File

@ -14,6 +14,7 @@ import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@ -32,7 +33,7 @@ public class AddRedactionPersistenceService {
ManualRedactionEntryEntity manualRedactionEntry = new ManualRedactionEntryEntity();
manualRedactionEntry.setId(new AnnotationEntityId(annotationId, fileId));
BeanUtils.copyProperties(addRedactionRequest, manualRedactionEntry);
manualRedactionEntry.setRequestDate(OffsetDateTime.now());
manualRedactionEntry.setRequestDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
manualRedactionEntry.setPositions(convert(addRedactionRequest.getPositions()));
manualRedactionEntry.setTypeId(addRedactionRequest.getTypeId());
@ -89,7 +90,7 @@ public class AddRedactionPersistenceService {
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) {
manualRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> {
mre.setProcessedDate(OffsetDateTime.now());
mre.setProcessedDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
mre.setStatus(annotationStatus);
});
@ -100,7 +101,7 @@ public class AddRedactionPersistenceService {
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus, boolean isAddOrRemoveFromDictionary) {
manualRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> {
mre.setProcessedDate(OffsetDateTime.now());
mre.setProcessedDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
mre.setStatus(annotationStatus);
mre.setAddToDictionary(isAddOrRemoveFromDictionary);
});

View File

@ -14,6 +14,7 @@ import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit;
import java.util.List;
import static com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.AuditRepository.*;
@ -32,7 +33,7 @@ public class AuditPersistenceService {
var auditModel = new AuditEntity();
BeanUtils.copyProperties(auditRequest, auditModel);
auditModel.setRecordDate(OffsetDateTime.now());
auditModel.setRecordDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
auditRepository.save(auditModel);
@ -50,10 +51,10 @@ public class AuditPersistenceService {
}
if (auditRequest.getFrom() == null) {
auditRequest.setFrom(OffsetDateTime.now().minusYears(30));
auditRequest.setFrom(OffsetDateTime.now().minusYears(30).truncatedTo(ChronoUnit.MILLIS));
}
if (auditRequest.getTo() == null) {
auditRequest.setTo(OffsetDateTime.now());
auditRequest.setTo(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
}
var spec = Specification.where(dateBetween(auditRequest.getFrom(), auditRequest.getTo()));

View File

@ -14,6 +14,7 @@ import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.Set;
import java.util.UUID;
@ -36,7 +37,7 @@ public class DossierPersistenceService {
BeanUtils.copyProperties(createOrUpdateDossierRequest, dossier);
dossier.setId(UUID.randomUUID().toString());
dossier.setStatus(DossierStatus.ACTIVE);
dossier.setDate(OffsetDateTime.now());
dossier.setDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
dossier.setDossierTemplate(dossierTemplateRepository.getOne(createOrUpdateDossierRequest.getDossierTemplateId()));
dossier.setReportTemplates(reportTemplateRepository.findAllById(createOrUpdateDossierRequest.getReportTemplateIds()));
@ -100,9 +101,9 @@ public class DossierPersistenceService {
@Transactional
public void hardDelete(String dossierId) {
dossierRepository.findById(dossierId).ifPresent(dossier -> {
dossier.setHardDeletedTime(OffsetDateTime.now());
dossier.setHardDeletedTime(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
dossier.setStatus(DossierStatus.DELETED);
dossier.setSoftDeletedTime(dossier.getSoftDeletedTime() == null ? OffsetDateTime.now() : dossier.getSoftDeletedTime());
dossier.setSoftDeletedTime(dossier.getSoftDeletedTime() == null ? OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS) : dossier.getSoftDeletedTime());
});
}

View File

@ -11,6 +11,7 @@ import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
@ -30,7 +31,7 @@ public class DossierTemplatePersistenceService {
if (createOrUpdateDossierRequest.getDossierTemplateId() != null) {
Optional<DossierTemplateEntity> dossierTemplate = dossierTemplateRepository.findById(createOrUpdateDossierRequest.getDossierTemplateId());
if (dossierTemplate.isPresent()) {
dossierTemplate.get().setDateModified(OffsetDateTime.now());
dossierTemplate.get().setDateModified(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
dossierTemplate.get().setModifiedBy(createOrUpdateDossierRequest.getRequestingUser());
BeanUtils.copyProperties(createOrUpdateDossierRequest, dossierTemplate.get());
return dossierTemplate.get();
@ -40,7 +41,7 @@ public class DossierTemplatePersistenceService {
} else {
DossierTemplateEntity dossierTemplate = new DossierTemplateEntity();
dossierTemplate.setId(UUID.randomUUID().toString());
dossierTemplate.setDateAdded(OffsetDateTime.now());
dossierTemplate.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
dossierTemplate.setCreatedBy(createOrUpdateDossierRequest.getRequestingUser());
BeanUtils.copyProperties(createOrUpdateDossierRequest, dossierTemplate);
return dossierTemplateRepository.save(dossierTemplate);
@ -64,7 +65,7 @@ public class DossierTemplatePersistenceService {
if (dossierTemplate.getDossiers().isEmpty()) {
dossierTemplate.setModifiedBy(deletingUserId);
dossierTemplate.setDateModified(OffsetDateTime.now());
dossierTemplate.setDateModified(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
dossierTemplate.setDeleted(true);
} else {
throw new BadRequestException("Cannot delete dossier template with active dossiers!");

View File

@ -12,6 +12,7 @@ import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@ -33,7 +34,7 @@ public class DownloadStatusPersistenceService {
downloadStatus.setFilename(filename);
downloadStatus.setMimeType(mimeType);
downloadStatus.setDossier(dossier);
downloadStatus.setCreationDate(OffsetDateTime.now());
downloadStatus.setCreationDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
downloadStatus.setFiles(fileRepository.findAllById(fileIds));
downloadStatus.setDownloadFileTypes(new ArrayList<>(downloadFileTypes));
@ -61,7 +62,7 @@ public class DownloadStatusPersistenceService {
public void updateLastDownload(String storageId) {
downloadStatusRepository.findById(storageId).ifPresent(downloadStatus -> {
downloadStatus.setLastDownload(OffsetDateTime.now());
downloadStatus.setLastDownload(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
});
}

View File

@ -12,6 +12,7 @@ import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.Set;
@ -32,9 +33,9 @@ public class FileStatusPersistenceService {
file.setFilename(filename);
file.setStatus(FileStatus.UNPROCESSED);
file.setNumberOfPages(0);
file.setAdded(OffsetDateTime.now());
file.setAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
file.setUploader(uploader);
file.setLastUploaded(OffsetDateTime.now());
file.setLastUploaded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
fileRepository.save(file);
}
@ -55,8 +56,8 @@ public class FileStatusPersistenceService {
file.setAnalysisDuration(duration);
file.setDossierDictionaryVersion(dossierDictionaryVersion);
file.setAnalysisVersion(analysisVersion);
file.setLastUpdated(OffsetDateTime.now());
file.setLastProcessed(OffsetDateTime.now());
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
file.setLastProcessed(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
}, () -> {
throw new NotFoundException("Unknown file=" + fileId);
});
@ -85,8 +86,8 @@ public class FileStatusPersistenceService {
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
file.setStatus(status);
file.setLastSuccessfulStatus(status);
file.setLastUpdated(OffsetDateTime.now());
file.setApprovalDate(approval ? OffsetDateTime.now() : null);
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
file.setApprovalDate(approval ? OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS) : null);
}, () -> {
throw new NotFoundException("Unknown file=" + fileId);
});
@ -105,8 +106,8 @@ public class FileStatusPersistenceService {
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
file.setStatus(status);
file.setUploader(uploader);
file.setLastUploaded(OffsetDateTime.now());
file.setLastUpdated(OffsetDateTime.now());
file.setLastUploaded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
}, () -> {
throw new NotFoundException("Unknown file=" + fileId);
});
@ -117,7 +118,7 @@ public class FileStatusPersistenceService {
public void updateStatus(String fileId, FileStatus status) {
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
file.setStatus(status);
file.setLastUpdated(OffsetDateTime.now());
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
}, () -> {
throw new NotFoundException("Unknown file=" + fileId);
});
@ -128,7 +129,7 @@ public class FileStatusPersistenceService {
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
file.setStatus(status);
file.setLastIndexed(OffsetDateTime.now());
file.setLastIndexed(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
}, () -> {
throw new NotFoundException("Unknown file=" + fileId);
});
@ -183,7 +184,7 @@ public class FileStatusPersistenceService {
public void setFileAttributes(String fileId, List<FileAttributeEntity> fileAttributes) {
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
file.setLastFileAttributeChange(OffsetDateTime.now());
file.setLastFileAttributeChange(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
file.setFileAttributes(fileAttributes);
}, () -> {
throw new NotFoundException("Unknown file=" + fileId);
@ -194,7 +195,7 @@ public class FileStatusPersistenceService {
public void setExcludedPages(String fileId, Set<Integer> excludedPages) {
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
file.setLastManualRedaction(OffsetDateTime.now());
file.setLastManualRedaction(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
file.setExcludedPages(excludedPages);
}, () -> {
throw new NotFoundException("Unknown file=" + fileId);
@ -237,8 +238,8 @@ public class FileStatusPersistenceService {
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
file.setStatus(FileStatus.DELETED);
file.setDeleted(file.getDeleted() == null ? OffsetDateTime.now() : file.getDeleted());
file.setHardDeletedTime(OffsetDateTime.now());
file.setDeleted(file.getDeleted() == null ? OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS) : file.getDeleted());
file.setHardDeletedTime(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
}, () -> {
throw new NotFoundException("Unknown file=" + fileId);
});
@ -304,8 +305,8 @@ public class FileStatusPersistenceService {
file.setUploader(uploader);
file.setStatus(FileStatus.FULLREPROCESS);
file.setLastSuccessfulStatus(null);
file.setLastUploaded(OffsetDateTime.now());
file.setLastUpdated(OffsetDateTime.now());
file.setLastUploaded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
file.setLastOCRTime(null);
file.setExcluded(false);
file.setLastProcessed(null);

View File

@ -18,6 +18,7 @@ import org.springframework.stereotype.Service;
import java.nio.charset.StandardCharsets;
import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.Optional;
@ -537,7 +538,7 @@ public class ManualRedactionService {
.fileId(fileId)
.annotationId(annotationId)
.user(user)
.date(OffsetDateTime.now())
.date(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS))
.build());
fileStatusPersistenceService.updateHasComments(fileId, true);

View File

@ -12,6 +12,7 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit;
import java.util.List;
@Slf4j
@ -27,7 +28,7 @@ public class DownloadCleanupService {
@Scheduled(fixedDelay = 300000, initialDelay = 300000)
public void processDocuments() {
var now = OffsetDateTime.now();
var now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS);
log.info("Checking for downloads to delete at {}", now);
List<DownloadStatusEntity> downloadStatusList = downloadStatusPersistenceService.getStatus();
downloadStatusList.forEach(downloadStatus -> {

View File

@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
@ -21,14 +22,14 @@ public class DossierTemplateTesterAndProvider {
public DossierTemplate provideTestTemplate() {
CreateOrUpdateDossierTemplateRequest cru = new CreateOrUpdateDossierTemplateRequest();
cru.setCreatedBy("1");
cru.setDateAdded(OffsetDateTime.now());
cru.setDateModified(OffsetDateTime.now());
cru.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
cru.setDateModified(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
cru.setDownloadFileTypes(Sets.newHashSet(DownloadFileType.ORIGINAL));
cru.setName("Template 1");
cru.setDescription("Template 1");
cru.setRequestingUser("1");
cru.setValidFrom(OffsetDateTime.now());
cru.setValidTo(OffsetDateTime.now());
cru.setValidFrom(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
cru.setValidTo(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
DossierTemplate result = dossierTemplateClient.createOrUpdateDossierTemplate(cru);

View File

@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
@ -33,7 +34,7 @@ public class DossierTesterAndProvider {
cru.setOwnerId("1");
cru.setApproverIds(Sets.newHashSet("1"));
cru.setRequestingUser("1");
cru.setDueDate(OffsetDateTime.now());
cru.setDueDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
cru.setDossierTemplateId(testTemplate.getId());
Dossier result = dossierClient.addDossier(cru);

View File

@ -11,6 +11,7 @@ import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit;
import static org.assertj.core.api.Assertions.assertThat;
@ -37,8 +38,8 @@ public class LicenseReportTest extends AbstractPersistenceServerServiceTest {
LicenseReportRequest request = new LicenseReportRequest();
request.setDossierIds(Lists.newArrayList(dossier.getId()));
request.setStartDate(OffsetDateTime.now().minusHours(10).toInstant());
request.setEndDate(OffsetDateTime.now().plusHours(10).toInstant());
request.setStartDate(OffsetDateTime.now().minusHours(10).toInstant().truncatedTo(ChronoUnit.MILLIS));
request.setEndDate(OffsetDateTime.now().plusHours(10).toInstant().truncatedTo(ChronoUnit.MILLIS));
request.setRequestId("123");
assertThat(licenseReportClient.getLicenseReport(request, 0, 20)).isNotNull();
}