use of io.lumeer.core.adapter.FileAttachmentAdapter 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.adapter.FileAttachmentAdapter in project engine by Lumeer.
the class AbstractContextualTask method initialize.
@Override
public ContextualTask initialize(final User initiator, final DaoContextSnapshot daoContextSnapshot, final PusherClient pusherClient, final LumeerS3Client lumeerS3Client, final RequestDataKeeper requestDataKeeper, final ConstraintManager constraintManager, DefaultConfigurationProducer.DeployEnvironment environment, final int recursionDepth) {
this.initiator = initiator;
this.daoContextSnapshot = daoContextSnapshot;
this.pusherClient = pusherClient;
this.lumeerS3Client = lumeerS3Client;
this.requestDataKeeper = requestDataKeeper;
this.constraintManager = constraintManager;
this.environment = environment;
this.timeZone = requestDataKeeper.getTimezone();
this.recursionDepth = recursionDepth;
collectionAdapter = new CollectionAdapter(daoContextSnapshot.getCollectionDao(), daoContextSnapshot.getFavoriteItemDao(), daoContextSnapshot.getDocumentDao());
permissionAdapter = new PermissionAdapter(daoContextSnapshot.getUserDao(), daoContextSnapshot.getGroupDao(), daoContextSnapshot.getViewDao(), daoContextSnapshot.getLinkTypeDao(), daoContextSnapshot.getCollectionDao());
resourceAdapter = new ResourceAdapter(permissionAdapter, daoContextSnapshot.getCollectionDao(), daoContextSnapshot.getLinkTypeDao(), daoContextSnapshot.getViewDao(), daoContextSnapshot.getUserDao());
viewAdapter = new ViewAdapter(resourceAdapter, daoContextSnapshot.getFavoriteItemDao());
documentAdapter = new DocumentAdapter(daoContextSnapshot.getResourceCommentDao(), daoContextSnapshot.getFavoriteItemDao());
linkTypeAdapter = new LinkTypeAdapter(daoContextSnapshot.getLinkTypeDao(), daoContextSnapshot.getLinkInstanceDao());
linkInstanceAdapter = new LinkInstanceAdapter(daoContextSnapshot.getResourceCommentDao());
pusherAdapter = new PusherAdapter(getAppId(), new FacadeAdapter(permissionAdapter), resourceAdapter, permissionAdapter, daoContextSnapshot.getViewDao(), daoContextSnapshot.getLinkTypeDao(), daoContextSnapshot.getCollectionDao());
fileAttachmentAdapter = new FileAttachmentAdapter(getLumeerS3Client(), daoContextSnapshot.getFileAttachmentDao(), environment.name());
return this;
}
use of io.lumeer.core.adapter.FileAttachmentAdapter 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