diff --git a/src/main/java/fr/osug/doi/DataciteSyncPipeline.java b/src/main/java/fr/osug/doi/DataciteSyncPipeline.java index 3192ae149e2b6cc77016a4937569064746e2b6f1..a80000fe6b81777723247dc29adce6ed547e7819 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 cb5ecb1a3b6a6855e5e7baeee2e7b6a04333a496..8695b2eb79ba6434eac4d655020122ed51cb02d2 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 d618e21759a5cf64fcb94066357fb5982d47fbdb..15b7a1fad254b663c452ca319b18693eb6fbfbf2 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 8a244dc85972c0b0b552124446ac1805249fd5e5..032ccbfa66b1daeb6a8e0f4f772f788b78c5253d 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 1093922fff2d45fd4cd9c78018c9d1a444c476c9..b75b0d955614305945a34121cd781a633455ddf3 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 397bf124e73315fe491b81abbb5aa57c2086b2d1..4a709055a18a2e6e01b489bda5ebed08b3ceeef0 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 + "%"; - } }