From 05732352511fb5be5a3d2d131b80affeb1710c1d Mon Sep 17 00:00:00 2001 From: bourgesl <bourges.laurent@gmail.com> Date: Mon, 26 Mar 2018 16:18:44 +0200 Subject: [PATCH] javadoc + datacite sync: show all DOIs --- src/main/java/fr/osug/DOIApplication.java | 24 ++++----- src/main/java/fr/osug/doi/DOIConfig.java | 49 ++++++++++++++++- .../fr/osug/doi/DataciteSyncPipeline.java | 52 +++++++++---------- .../java/fr/osug/doi/GeneratePipeline.java | 2 +- .../fr/osug/doi/GenerateRedirectPipeline.java | 2 +- .../java/fr/osug/doi/ProcessPipeline.java | 2 +- .../java/fr/osug/doi/ProcessUrlPipeline.java | 2 +- src/main/java/fr/osug/doi/RemovePipeline.java | 2 +- 8 files changed, 90 insertions(+), 45 deletions(-) diff --git a/src/main/java/fr/osug/DOIApplication.java b/src/main/java/fr/osug/DOIApplication.java index 4b22103..2c557d3 100644 --- a/src/main/java/fr/osug/DOIApplication.java +++ b/src/main/java/fr/osug/DOIApplication.java @@ -148,9 +148,8 @@ public class DOIApplication { final boolean saveCSV = aa.containsOption("csv"); try { - final ProjectConfig projectConfig = new ProjectConfig(doiConfig.getPathConfig(), project); - - final AbstractPipeline<?> pipeline = doiConfig.getProcessPipeline(saveCSV, projectConfig); + // Staging only + final AbstractPipeline<?> pipeline = doiConfig.getProcessPipeline(saveCSV, getProjectConfig(project)); pipeline.execute(); } catch (IOException ioe) { @@ -163,9 +162,8 @@ public class DOIApplication { final String project = getRequiredValue("project", aa); try { - final ProjectConfig projectConfig = new ProjectConfig(doiConfig.getPathConfig(), project); - - final AbstractPipeline<?> pipeline = doiConfig.getProcessUrlPipeline(projectConfig, null); + // Staging only + final AbstractPipeline<?> pipeline = doiConfig.getProcessUrlPipeline(getProjectConfig(project), null); pipeline.execute(); } catch (IOException ioe) { @@ -185,9 +183,8 @@ public class DOIApplication { final char ch = (char) in.readByte(); if (Character.toLowerCase(ch) == 'y') { - final ProjectConfig projectConfig = new ProjectConfig(doiConfig.getPathConfig(), project); - - final AbstractPipeline<?> pipeline = doiConfig.getPublishPipeline(projectConfig, doiPattern); + // Public only + final AbstractPipeline<?> pipeline = doiConfig.getPublishPipeline(getProjectConfig(project), doiPattern); pipeline.execute(); } else { logger.info("Action cancelled ({})", ch); @@ -210,9 +207,8 @@ public class DOIApplication { final char ch = (char) in.readByte(); if (Character.toLowerCase(ch) == 'y') { - final ProjectConfig projectConfig = new ProjectConfig(doiConfig.getPathConfig(), project); - - final AbstractPipeline<?> pipeline = doiConfig.getRemovePipeline(projectConfig, doiPattern); + // Staging only + final AbstractPipeline<?> pipeline = doiConfig.getRemovePipeline(getProjectConfig(project), doiPattern); pipeline.execute(); } else { logger.info("Action cancelled ({})", ch); @@ -241,6 +237,10 @@ public class DOIApplication { } } + private ProjectConfig getProjectConfig(final String project) throws IOException { + return new ProjectConfig(doiConfig.getPathConfig(), project); + } + /** Show command arguments help. */ public static void showArgumentsHelp() { System.out.println("---------------------------------- Arguments help ------------------------------"); diff --git a/src/main/java/fr/osug/doi/DOIConfig.java b/src/main/java/fr/osug/doi/DOIConfig.java index 6e14895..eff44b2 100644 --- a/src/main/java/fr/osug/doi/DOIConfig.java +++ b/src/main/java/fr/osug/doi/DOIConfig.java @@ -84,6 +84,12 @@ public class DOIConfig { logger.info("Enable Datacite Client: {}", isDataciteClientEnabled()); } + /** + * (CLI) Get the Process pipeline (Staging only) + * @param saveCSV save CSV (intermediate results) + * @param projectConfig project config to use + * @return new pipeline instance + */ @Bean @Scope(BeanDefinition.SCOPE_PROTOTYPE) public ProcessPipeline getProcessPipeline(final boolean saveCSV, @@ -96,6 +102,12 @@ public class DOIConfig { ); } + /** + * (CLI) Get the Process URL pipeline (Staging only) + * @param projectConfig project config to use + * @param pipeData optional pipeline data + * @return new pipeline instance + */ @Bean @Scope(BeanDefinition.SCOPE_PROTOTYPE) public ProcessUrlPipeline getProcessUrlPipeline(final ProjectConfig projectConfig, @@ -108,11 +120,17 @@ public class DOIConfig { ); } + /** + * (CLI) Get the Publish pipeline (Public only) + * @param projectConfig project config to use + * @param doiPattern pattern to match DOI suffix + * @return new pipeline instance + */ @Bean @Scope(BeanDefinition.SCOPE_PROTOTYPE) public PublishPipeline getPublishPipeline(final ProjectConfig projectConfig, final String doiPattern) { - final PipelineCommonData pipelineData = new PipelineCommonData(pathConfig); + final PipelineCommonData pipelineData = createPipelineData(null); pipelineData.addProjectConfig(projectConfig); pipelineData.setDoiPattern(doiPattern); @@ -121,11 +139,17 @@ public class DOIConfig { ); } + /** + * (CLI) Get the Remove pipeline (Staging only) + * @param projectConfig project config to use + * @param doiPattern pattern to match DOI suffix + * @return new pipeline instance + */ @Bean @Scope(BeanDefinition.SCOPE_PROTOTYPE) public RemovePipeline getRemovePipeline(final ProjectConfig projectConfig, final String doiPattern) { - final PipelineCommonData pipelineData = new PipelineCommonData(pathConfig); + final PipelineCommonData pipelineData = createPipelineData(null); pipelineData.addProjectConfig(projectConfig); pipelineData.setDoiPattern(doiPattern); @@ -134,6 +158,13 @@ public class DOIConfig { ); } + /** + * (CLI) Get the Generate pipeline (Public / Staging) + * @param doStaging true to process Staging: web pages & datacite sync + * @param doPublic true to process Public: web pages & datacite sync + * @param pipeData optional pipeline data + * @return new pipeline instance + */ @Bean @Scope(BeanDefinition.SCOPE_PROTOTYPE) public GeneratePipeline getGeneratePipeline(final boolean doStaging, final boolean doPublic, @@ -144,6 +175,13 @@ public class DOIConfig { ); } + /** + * Get the Generate Redirect pipeline (Public / Staging) + * @param doStaging true to process Staging: datacite sync + * @param doPublic true to process Public: datacite sync + * @param pipeData optional pipeline data + * @return new pipeline instance + */ @Bean @Scope(BeanDefinition.SCOPE_PROTOTYPE) public GenerateRedirectPipeline getGenerateRedirectPipeline(final boolean doStaging, final boolean doPublic, @@ -154,6 +192,13 @@ public class DOIConfig { ); } + /** + * Get the Datacite Sync pipeline (Public / Staging) + * @param doStaging true to process Staging: datacite sync + * @param doPublic true to process Public: datacite sync + * @param pipeData optional pipeline data + * @return new pipeline instance + */ @Bean @Scope(BeanDefinition.SCOPE_PROTOTYPE) public DataciteSyncPipeline getDataciteSyncPipeline(final boolean doStaging, final boolean doPublic, diff --git a/src/main/java/fr/osug/doi/DataciteSyncPipeline.java b/src/main/java/fr/osug/doi/DataciteSyncPipeline.java index 691edca..3192ae1 100644 --- a/src/main/java/fr/osug/doi/DataciteSyncPipeline.java +++ b/src/main/java/fr/osug/doi/DataciteSyncPipeline.java @@ -18,7 +18,7 @@ import org.slf4j.LoggerFactory; /** * */ -public class DataciteSyncPipeline extends AbstractPipeline<PipelineCommonData> { +public final class DataciteSyncPipeline extends AbstractPipeline<PipelineCommonData> { private final static Logger logger = LoggerFactory.getLogger(DataciteSyncPipeline.class.getName()); @@ -38,10 +38,6 @@ public class DataciteSyncPipeline extends AbstractPipeline<PipelineCommonData> { @Override public void doExecute() throws IOException { - if (!doiConfig.isDataciteClientEnabled()) { - logger.warn("publishDatacite: skipping - datacite client disabled."); - return; - } logger.info("doStaging: {}", doStaging); logger.info("doPublic: {}", doPublic); @@ -108,37 +104,41 @@ public class DataciteSyncPipeline extends AbstractPipeline<PipelineCommonData> { logger.warn("Ignoring {} - missing xml at {}", doiSuffix, doiFile); } } else { - // only skip staging DOI: - // TODO: consider for public once it is tested: - final boolean exist = (isStaging && publishedDois != null) ? publishedDois.contains(doi.toUpperCase()) : false; + if (!doiConfig.isDataciteClientEnabled()) { + logger.warn("skipping DOI [{}] - datacite client disabled", doi); + } else { + // only skip staging DOI: + // TODO: consider for public once it is tested: + final boolean exist = (isStaging && publishedDois != null) ? publishedDois.contains(doi.toUpperCase()) : false; - boolean push = true; + boolean push = true; - if (exist) { - // verify that URL and metadata (MD5) are equivalent: - if (url.equals(d.getDataciteUrl()) && d.getMetadataMd5().equals(d.getDataciteMetadataMd5())) { - push = false; + if (exist) { + // verify that URL and metadata (MD5) are equivalent: + if (url.equals(d.getDataciteUrl()) && d.getMetadataMd5().equals(d.getDataciteMetadataMd5())) { + push = false; + } } - } - if (push) { - logger.info("publish DOI [{}]", doi); + if (push) { + logger.info("publish DOI [{}]", doi); - // Push DOI in staging phase: - final String metadata = FileUtils.readFile(doiFile); + // Push DOI in staging phase: + final String metadata = FileUtils.readFile(doiFile); - if (dc.publishDoi(doi, url, metadata)) { - // update database: - if (isStaging) { - doiService.updateStagingDoiDatacite(doiSuffix, d.getMetadataMd5(), url, now); + if (dc.publishDoi(doi, url, metadata)) { + // update database: + if (isStaging) { + doiService.updateStagingDoiDatacite(doiSuffix, d.getMetadataMd5(), url, now); + } else { + doiService.updatePublicDoiDatacite(doiSuffix, d.getMetadataMd5(), url, now); + } } else { - doiService.updatePublicDoiDatacite(doiSuffix, d.getMetadataMd5(), url, now); + logger.error("Failed to push DOI[{}] to datacite", doi); } } else { - logger.error("Failed to push DOI[{}] to datacite", doi); + logger.info("skipping DOI [{}] - datacite is up-to-date", doi); } - } else { - logger.info("skipping DOI [{}] - datacite is up-to-date", doi); } } } diff --git a/src/main/java/fr/osug/doi/GeneratePipeline.java b/src/main/java/fr/osug/doi/GeneratePipeline.java index 8699c88..cb5ecb1 100644 --- a/src/main/java/fr/osug/doi/GeneratePipeline.java +++ b/src/main/java/fr/osug/doi/GeneratePipeline.java @@ -30,7 +30,7 @@ import java.util.Date; /** * */ -public class GeneratePipeline extends AbstractPipeline<PipelineCommonData> { +public final class GeneratePipeline extends AbstractPipeline<PipelineCommonData> { private final static Logger logger = LoggerFactory.getLogger(GeneratePipeline.class.getName()); diff --git a/src/main/java/fr/osug/doi/GenerateRedirectPipeline.java b/src/main/java/fr/osug/doi/GenerateRedirectPipeline.java index 8fe01ac..d618e21 100644 --- a/src/main/java/fr/osug/doi/GenerateRedirectPipeline.java +++ b/src/main/java/fr/osug/doi/GenerateRedirectPipeline.java @@ -23,7 +23,7 @@ import org.slf4j.LoggerFactory; /** * */ -public class GenerateRedirectPipeline extends AbstractPipeline<PipelineCommonData> { +public final class GenerateRedirectPipeline extends AbstractPipeline<PipelineCommonData> { private final static Logger logger = LoggerFactory.getLogger(GenerateRedirectPipeline.class.getName()); diff --git a/src/main/java/fr/osug/doi/ProcessPipeline.java b/src/main/java/fr/osug/doi/ProcessPipeline.java index efc13c9..18897b9 100644 --- a/src/main/java/fr/osug/doi/ProcessPipeline.java +++ b/src/main/java/fr/osug/doi/ProcessPipeline.java @@ -33,7 +33,7 @@ import org.slf4j.LoggerFactory; /** * */ -public class ProcessPipeline extends AbstractPipeline<ProcessPipelineData> { +public final class ProcessPipeline extends AbstractPipeline<ProcessPipelineData> { private final static Logger logger = LoggerFactory.getLogger(ProcessPipeline.class.getName()); diff --git a/src/main/java/fr/osug/doi/ProcessUrlPipeline.java b/src/main/java/fr/osug/doi/ProcessUrlPipeline.java index d4f634a..31051bf 100644 --- a/src/main/java/fr/osug/doi/ProcessUrlPipeline.java +++ b/src/main/java/fr/osug/doi/ProcessUrlPipeline.java @@ -19,7 +19,7 @@ import org.slf4j.LoggerFactory; /** * */ -public class ProcessUrlPipeline extends AbstractPipeline<PipelineCommonData> { +public final class ProcessUrlPipeline extends AbstractPipeline<PipelineCommonData> { private final static Logger logger = LoggerFactory.getLogger(ProcessUrlPipeline.class.getName()); diff --git a/src/main/java/fr/osug/doi/RemovePipeline.java b/src/main/java/fr/osug/doi/RemovePipeline.java index 33015c6..397bf12 100644 --- a/src/main/java/fr/osug/doi/RemovePipeline.java +++ b/src/main/java/fr/osug/doi/RemovePipeline.java @@ -20,7 +20,7 @@ import org.slf4j.LoggerFactory; /** * */ -public class RemovePipeline extends AbstractPipeline<PipelineCommonData> { +public final class RemovePipeline extends AbstractPipeline<PipelineCommonData> { private final static Logger logger = LoggerFactory.getLogger(RemovePipeline.class.getName()); -- GitLab