use of io.lumeer.core.util.LumeerS3Client in project engine by Lumeer.
the class FileAttachmentFacade method init.
@PostConstruct
public void init() {
lumeerS3Client = new LumeerS3Client(configurationProducer);
adapter = new FileAttachmentAdapter(lumeerS3Client, fileAttachmentDao, configurationProducer.getEnvironment().name());
}
use of io.lumeer.core.util.LumeerS3Client in project engine by Lumeer.
the class DailyTaskProcessor method process.
// every day at 4:03 am
@Schedule(hour = "4", minute = "3")
public void process() {
final List<Organization> organizations = organizationDao.getAllOrganizations();
final LumeerS3Client lumeerS3Client = new LumeerS3Client(configurationProducer);
final FileAttachmentAdapter fileAttachmentAdapter = new FileAttachmentAdapter(lumeerS3Client, fileAttachmentDao, configurationProducer.getEnvironment().name());
final List<FileAttachment> attachmentsToDelete = new ArrayList<>();
log.info(String.format("Running for %d organizations.", organizations.size()));
organizations.forEach(organization -> {
final DataStorage userDataStorage = getDataStorage(organization.getId());
var limits = paymentFacade.getCurrentServiceLimits(organization);
var cleanOlderThan = ZonedDateTime.now().minusDays(limits.getAuditDays());
final DaoContextSnapshot orgDao = getDaoContextSnapshot(userDataStorage, new Workspace(organization, null));
final List<Project> projects = orgDao.getProjectDao().getAllProjects();
projects.forEach(project -> {
final DaoContextSnapshot projDao = getDaoContextSnapshot(userDataStorage, new Workspace(organization, project));
List<AuditRecord> deletedAuditRecords = projDao.getAuditDao().findAuditRecords(cleanOlderThan, AuditType.Deleted);
final List<FileAttachment> projectAttachmentsToDelete = new ArrayList<>();
Set<String> documentIds = deletedAuditRecords.stream().filter(record -> ResourceType.DOCUMENT.equals(record.getResourceType())).map(AuditRecord::getResourceId).collect(Collectors.toSet());
projectAttachmentsToDelete.addAll(fileAttachmentAdapter.getAllFileAttachments(organization, project, documentIds, FileAttachment.AttachmentType.DOCUMENT));
Set<String> linkIds = deletedAuditRecords.stream().filter(record -> ResourceType.LINK.equals(record.getResourceType())).map(AuditRecord::getResourceId).collect(Collectors.toSet());
projectAttachmentsToDelete.addAll(fileAttachmentAdapter.getAllFileAttachments(organization, project, linkIds, FileAttachment.AttachmentType.LINK));
if (projectAttachmentsToDelete.size() > 0) {
log.info(String.format("Will remove %d attachments on %s/%s.", projectAttachmentsToDelete.size(), organization.getCode(), organization.getCode()));
}
attachmentsToDelete.addAll(projectAttachmentsToDelete);
projDao.getAuditDao().cleanAuditRecords(cleanOlderThan);
});
});
if (attachmentsToDelete.size() > 0) {
log.info(String.format("Removing %d attachments.", attachmentsToDelete.size()));
fileAttachmentAdapter.removeFileAttachments(attachmentsToDelete);
}
}
Aggregations