Search in sources :

Example 1 with LumeerS3Client

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());
}
Also used : FileAttachmentAdapter(io.lumeer.core.adapter.FileAttachmentAdapter) LumeerS3Client(io.lumeer.core.util.LumeerS3Client) PostConstruct(javax.annotation.PostConstruct)

Example 2 with LumeerS3Client

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);
    }
}
Also used : DataStorage(io.lumeer.engine.api.data.DataStorage) Organization(io.lumeer.api.model.Organization) FileAttachment(io.lumeer.api.model.FileAttachment) FileAttachmentAdapter(io.lumeer.core.adapter.FileAttachmentAdapter) ArrayList(java.util.ArrayList) Project(io.lumeer.api.model.Project) LumeerS3Client(io.lumeer.core.util.LumeerS3Client) AuditRecord(io.lumeer.api.model.AuditRecord) DaoContextSnapshot(io.lumeer.storage.api.dao.context.DaoContextSnapshot) Schedule(javax.ejb.Schedule)

Aggregations

FileAttachmentAdapter (io.lumeer.core.adapter.FileAttachmentAdapter)2 LumeerS3Client (io.lumeer.core.util.LumeerS3Client)2 AuditRecord (io.lumeer.api.model.AuditRecord)1 FileAttachment (io.lumeer.api.model.FileAttachment)1 Organization (io.lumeer.api.model.Organization)1 Project (io.lumeer.api.model.Project)1 DataStorage (io.lumeer.engine.api.data.DataStorage)1 DaoContextSnapshot (io.lumeer.storage.api.dao.context.DaoContextSnapshot)1 ArrayList (java.util.ArrayList)1 PostConstruct (javax.annotation.PostConstruct)1 Schedule (javax.ejb.Schedule)1