From ab1cc8af9dbd23ad49405240b8e137cfbe58f635 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Fri, 18 Feb 2022 17:02:22 +0200 Subject: [PATCH 1/4] RED-3452 --- .../ApplicationContextHolder.java | 21 ++++++++++ .../ApplicationContextAwareChange.java | 38 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/configuration/ApplicationContextHolder.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/liquibase/ApplicationContextAwareChange.java diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/configuration/ApplicationContextHolder.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/configuration/ApplicationContextHolder.java new file mode 100644 index 000000000..22e41f969 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/configuration/ApplicationContextHolder.java @@ -0,0 +1,21 @@ +package com.iqser.red.service.peristence.v1.server.configuration; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextInitializer; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.stereotype.Component; + +@Component +public class ApplicationContextHolder implements ApplicationContextInitializer { + + private static ApplicationContext applicationContext; + + @Override + public void initialize(ConfigurableApplicationContext applicationContext) { + ApplicationContextHolder.applicationContext = applicationContext; + } + + public static ApplicationContext getContext() { + return applicationContext; + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/liquibase/ApplicationContextAwareChange.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/liquibase/ApplicationContextAwareChange.java new file mode 100644 index 000000000..d572e3deb --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/liquibase/ApplicationContextAwareChange.java @@ -0,0 +1,38 @@ +package com.iqser.red.service.peristence.v1.server.liquibase; + +import com.iqser.red.service.peristence.v1.server.configuration.ApplicationContextHolder; +import liquibase.change.custom.CustomTaskChange; +import liquibase.database.Database; +import liquibase.exception.CustomChangeException; +import liquibase.exception.SetupException; +import liquibase.exception.ValidationErrors; +import liquibase.resource.ResourceAccessor; +import org.springframework.beans.factory.config.AutowireCapableBeanFactory; + +public abstract class ApplicationContextAwareChange implements CustomTaskChange { + + + @Override + public void execute(Database database) throws CustomChangeException { + + } + + + @Override + public void setUp() throws SetupException { + var context = ApplicationContextHolder.getContext(); + context.getAutowireCapableBeanFactory().autowireBeanProperties( + this, + AutowireCapableBeanFactory.AUTOWIRE_AUTODETECT, true); + } + + @Override + public void setFileOpener(ResourceAccessor resourceAccessor) { + + } + + @Override + public ValidationErrors validate(Database database) { + return null; + } +} From 711d758cff51b21794be3cd86a4c7c020cee4040 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Thu, 24 Feb 2022 13:58:07 +0200 Subject: [PATCH 2/4] dossier stats are now in real-time again --- .../server/service/DossierStatsService.java | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierStatsService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierStatsService.java index 44a77c6e0..d7819f34f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierStatsService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierStatsService.java @@ -26,29 +26,29 @@ public class DossierStatsService { private final DossierService dossierService; private final FileStatusService fileStatusService; - private Map dossierStatsMap = new HashMap<>(); +// private Map dossierStatsMap = new HashMap<>(); - @Scheduled(fixedDelay = 10000, initialDelay = 1000) - public void computeDossierStats() { - log.info("Computing Dossier Stats ... "); - long start = System.currentTimeMillis(); - Map dossierStatsComputeMap = new HashMap<>(); - dossierService.getAllDossiers().stream() - .filter(d -> !d.getStatus().equals(DossierStatus.DELETED)) - .forEach(d -> dossierStatsComputeMap.put(d.getId(), computeDossierStats(d))); - dossierStatsMap.clear(); - dossierStatsMap = dossierStatsComputeMap; - log.info("Dossier Stats Computed in {}ms", System.currentTimeMillis() - start); - } +// @Scheduled(fixedDelay = 10000, initialDelay = 1000) +// public void computeDossierStats() { +// log.info("Computing Dossier Stats ... "); +// long start = System.currentTimeMillis(); +// Map dossierStatsComputeMap = new HashMap<>(); +// dossierService.getAllDossiers().stream() +// .filter(d -> !d.getStatus().equals(DossierStatus.DELETED)) +// .forEach(d -> dossierStatsComputeMap.put(d.getId(), computeDossierStats(d))); +// dossierStatsMap.clear(); +// dossierStatsMap = dossierStatsComputeMap; +// log.info("Dossier Stats Computed in {}ms", System.currentTimeMillis() - start); +// } public DossierStats getDossierStats(String dossierId) { - var stats = dossierStatsMap.get(dossierId); - if (stats == null) { - stats = computeDossierStats(dossierService.getDossierById(dossierId)); - dossierStatsMap.put(dossierId, stats); - } - return stats; +// var stats = dossierStatsMap.get(dossierId); +// if (stats == null) { +// stats = computeDossierStats(dossierService.getDossierById(dossierId)); +// dossierStatsMap.put(dossierId, stats); +// } + return computeDossierStats(dossierService.getDossierById(dossierId));; } private DossierStats computeDossierStats(DossierEntity dossierEntity) { From b979ca52b44c13fd22736be34491548d56ab68a2 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Thu, 24 Feb 2022 13:59:55 +0200 Subject: [PATCH 3/4] cleanup --- .../ApplicationContextHolder.java | 21 ---------- .../ApplicationContextAwareChange.java | 38 ------------------- 2 files changed, 59 deletions(-) delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/configuration/ApplicationContextHolder.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/liquibase/ApplicationContextAwareChange.java diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/configuration/ApplicationContextHolder.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/configuration/ApplicationContextHolder.java deleted file mode 100644 index 22e41f969..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/configuration/ApplicationContextHolder.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.configuration; - -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextInitializer; -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.stereotype.Component; - -@Component -public class ApplicationContextHolder implements ApplicationContextInitializer { - - private static ApplicationContext applicationContext; - - @Override - public void initialize(ConfigurableApplicationContext applicationContext) { - ApplicationContextHolder.applicationContext = applicationContext; - } - - public static ApplicationContext getContext() { - return applicationContext; - } -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/liquibase/ApplicationContextAwareChange.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/liquibase/ApplicationContextAwareChange.java deleted file mode 100644 index d572e3deb..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/liquibase/ApplicationContextAwareChange.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.liquibase; - -import com.iqser.red.service.peristence.v1.server.configuration.ApplicationContextHolder; -import liquibase.change.custom.CustomTaskChange; -import liquibase.database.Database; -import liquibase.exception.CustomChangeException; -import liquibase.exception.SetupException; -import liquibase.exception.ValidationErrors; -import liquibase.resource.ResourceAccessor; -import org.springframework.beans.factory.config.AutowireCapableBeanFactory; - -public abstract class ApplicationContextAwareChange implements CustomTaskChange { - - - @Override - public void execute(Database database) throws CustomChangeException { - - } - - - @Override - public void setUp() throws SetupException { - var context = ApplicationContextHolder.getContext(); - context.getAutowireCapableBeanFactory().autowireBeanProperties( - this, - AutowireCapableBeanFactory.AUTOWIRE_AUTODETECT, true); - } - - @Override - public void setFileOpener(ResourceAccessor resourceAccessor) { - - } - - @Override - public ValidationErrors validate(Database database) { - return null; - } -} From 5dc829665baccac130a53869a0eccaf4245615b4 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Thu, 24 Feb 2022 14:17:03 +0200 Subject: [PATCH 4/4] cleanup --- .../peristence/v1/server/service/DossierStatsService.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierStatsService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierStatsService.java index d7819f34f..7fc44223b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierStatsService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierStatsService.java @@ -1,19 +1,15 @@ package com.iqser.red.service.peristence.v1.server.service; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; -import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStats; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.stream.Collectors; import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE; @@ -48,7 +44,7 @@ public class DossierStatsService { // stats = computeDossierStats(dossierService.getDossierById(dossierId)); // dossierStatsMap.put(dossierId, stats); // } - return computeDossierStats(dossierService.getDossierById(dossierId));; + return computeDossierStats(dossierService.getDossierById(dossierId)); } private DossierStats computeDossierStats(DossierEntity dossierEntity) {