From 9a540965e7aa3b442c26e50e6d100c31cf3dfeac Mon Sep 17 00:00:00 2001 From: bourgesl <bourges.laurent@gmail.com> Date: Mon, 26 Mar 2018 17:29:03 +0200 Subject: [PATCH] refactored ProjectConfig cache to only synchronize datacite on the working project --- .../fr/osug/doi/DataciteSyncPipeline.java | 17 ++++++++++++----- .../java/fr/osug/doi/GeneratePipeline.java | 4 ++-- .../fr/osug/doi/GenerateRedirectPipeline.java | 2 +- .../java/fr/osug/doi/PipelineCommonData.java | 19 +++++++++++++++---- .../java/fr/osug/doi/PublishPipeline.java | 12 +----------- src/main/java/fr/osug/doi/RemovePipeline.java | 13 +------------ 6 files changed, 32 insertions(+), 35 deletions(-) diff --git a/src/main/java/fr/osug/doi/DataciteSyncPipeline.java b/src/main/java/fr/osug/doi/DataciteSyncPipeline.java index 3192ae1..a80000f 100644 --- a/src/main/java/fr/osug/doi/DataciteSyncPipeline.java +++ b/src/main/java/fr/osug/doi/DataciteSyncPipeline.java @@ -10,6 +10,7 @@ import fr.osug.doi.service.DoiService; import fr.osug.util.FileUtils; import java.io.File; import java.io.IOException; +import java.util.Collection; import java.util.Date; import java.util.List; import org.slf4j.Logger; @@ -38,13 +39,19 @@ public final class DataciteSyncPipeline extends AbstractPipeline<PipelineCommonD @Override public void doExecute() throws IOException { - logger.info("doStaging: {}", doStaging); - logger.info("doPublic: {}", doPublic); + final Collection<ProjectConfig> projectConfigs = pipeData.getProjectConfigs(); - prepare(); + if (projectConfigs.isEmpty()) { + logger.info("publishDatacite: skipping (no project defined)"); + } else { + logger.info("doStaging: {}", doStaging); + logger.info("doPublic: {}", doPublic); - for (ProjectConfig projectConfig : pipeData.getProjectConfigs()) { - publishDatacite(projectConfig); + prepare(); + + for (ProjectConfig projectConfig : projectConfigs) { + publishDatacite(projectConfig); + } } } diff --git a/src/main/java/fr/osug/doi/GeneratePipeline.java b/src/main/java/fr/osug/doi/GeneratePipeline.java index cb5ecb1..8695b2e 100644 --- a/src/main/java/fr/osug/doi/GeneratePipeline.java +++ b/src/main/java/fr/osug/doi/GeneratePipeline.java @@ -99,7 +99,7 @@ public final class GeneratePipeline extends AbstractPipeline<PipelineCommonData> if (p == null) { logger.warn("Unknown Project [{}]", projectName); } else { - pipeData.getProjectConfig(p.getName()); + pipeData.getProjectConfigAll(p.getName()); } } @@ -109,7 +109,7 @@ public final class GeneratePipeline extends AbstractPipeline<PipelineCommonData> @Override public void doExecute() throws IOException { // 1 - Landing pages for selected project(s): - for (ProjectConfig projectConfig : pipeData.getProjectConfigs()) { + for (ProjectConfig projectConfig : pipeData.getProjectConfigsAll()) { generateLandingPages(projectConfig); } // 2 - Update index pages: diff --git a/src/main/java/fr/osug/doi/GenerateRedirectPipeline.java b/src/main/java/fr/osug/doi/GenerateRedirectPipeline.java index d618e21..15b7a1f 100644 --- a/src/main/java/fr/osug/doi/GenerateRedirectPipeline.java +++ b/src/main/java/fr/osug/doi/GenerateRedirectPipeline.java @@ -152,7 +152,7 @@ public final class GenerateRedirectPipeline extends AbstractPipeline<PipelineCom for (Project p : projects) { final String projectName = p.getName(); - final ProjectConfig projectConfig = pipeData.getProjectConfig(projectName); + final ProjectConfig projectConfig = pipeData.getProjectConfigAll(projectName); if (projectConfig.getPropertyBoolean(ProjectConfig.CONF_KEY_GENERATE_EMBEDDED)) { // // [public/staging]/PROJECT/embed/DOI_SUFFIX[.html] diff --git a/src/main/java/fr/osug/doi/PipelineCommonData.java b/src/main/java/fr/osug/doi/PipelineCommonData.java index 8a244dc..032ccbf 100644 --- a/src/main/java/fr/osug/doi/PipelineCommonData.java +++ b/src/main/java/fr/osug/doi/PipelineCommonData.java @@ -25,6 +25,8 @@ public class PipelineCommonData { final StringBuilder buffer = new StringBuilder(BUFFER_SIZE); /** project config instances keyed by project name */ private final Map<String, ProjectConfig> projectConfigs = new LinkedHashMap<String, ProjectConfig>(); + /** all project config instances keyed by project name (dynamically filled) */ + private final Map<String, ProjectConfig> projectConfigsAll = new LinkedHashMap<String, ProjectConfig>(); /** optional doi pattern */ private String doiPattern = null; @@ -34,17 +36,26 @@ public class PipelineCommonData { public void addProjectConfig(final ProjectConfig projectConfig) { projectConfigs.put(projectConfig.getProjectName(), projectConfig); + addProjectConfigAll(projectConfig); } - + public Collection<ProjectConfig> getProjectConfigs() { return projectConfigs.values(); } - public ProjectConfig getProjectConfig(final String projectName) throws IOException { - ProjectConfig projectConfig = projectConfigs.get(projectName); + public void addProjectConfigAll(final ProjectConfig projectConfig) { + projectConfigsAll.put(projectConfig.getProjectName(), projectConfig); + } + + public Collection<ProjectConfig> getProjectConfigsAll() { + return projectConfigsAll.values(); + } + + public ProjectConfig getProjectConfigAll(final String projectName) throws IOException { + ProjectConfig projectConfig = projectConfigsAll.get(projectName); if (projectConfig == null) { projectConfig = new ProjectConfig(pathConfig, projectName); - addProjectConfig(projectConfig); + addProjectConfigAll(projectConfig); } return projectConfig; } diff --git a/src/main/java/fr/osug/doi/PublishPipeline.java b/src/main/java/fr/osug/doi/PublishPipeline.java index 1093922..b75b0d9 100644 --- a/src/main/java/fr/osug/doi/PublishPipeline.java +++ b/src/main/java/fr/osug/doi/PublishPipeline.java @@ -46,7 +46,7 @@ public class PublishPipeline extends AbstractPipeline<PipelineCommonData> { private void publish(final ProjectConfig projectConfig, final String doiPattern) throws IOException { logger.info("publish ..."); - final String pattern = convertPattern(doiPattern); + final String pattern = DoiService.convertPattern(doiPattern); logger.debug("pattern: {}", pattern); final String projectName = projectConfig.getProjectName(); @@ -122,16 +122,6 @@ public class PublishPipeline extends AbstractPipeline<PipelineCommonData> { return changed; } - private static String convertPattern(final String doiPattern) { - String pattern; - // escape '%' and '_' - pattern = doiPattern.replaceAll("_", "\\_"); - pattern = pattern.replaceAll("%", "\\%"); - - // '<pattern>%' - return pattern + "%"; - } - private static String replacePrefix(final String metadata, final String prefix) { return metadata.replaceAll(Const.DOI_PREFIX_TEST, prefix); } diff --git a/src/main/java/fr/osug/doi/RemovePipeline.java b/src/main/java/fr/osug/doi/RemovePipeline.java index 397bf12..4a70905 100644 --- a/src/main/java/fr/osug/doi/RemovePipeline.java +++ b/src/main/java/fr/osug/doi/RemovePipeline.java @@ -40,7 +40,7 @@ public final class RemovePipeline extends AbstractPipeline<PipelineCommonData> { private void remove(final ProjectConfig projectConfig, final String doiPattern) throws IOException { logger.info("remove ..."); - final String pattern = convertPattern(doiPattern); + final String pattern = DoiService.convertPattern(doiPattern); logger.debug("pattern: {}", pattern); final String projectName = projectConfig.getProjectName(); @@ -142,15 +142,4 @@ public final class RemovePipeline extends AbstractPipeline<PipelineCommonData> { file.delete(); } } - -// TODO: refactor - private static String convertPattern(final String doiPattern) { - String pattern; - // escape '%' and '_' - pattern = doiPattern.replaceAll("_", "\\_"); - pattern = pattern.replaceAll("%", "\\%"); - - // '<pattern>%' - return pattern + "%"; - } } -- GitLab