From 64b2aa1f3dffe9bfb674448f0fdbdecace79737c Mon Sep 17 00:00:00 2001 From: Jan van Mansum Date: Tue, 12 Nov 2024 17:30:21 +0100 Subject: [PATCH] Refactorings, renamed some classes and separated out code into packages. --- .../DdDataverseIngestApplication.java | 8 +- .../dvingest/core/CreateNewDatasetTask.java | 73 ------------------ .../nl/knaw/dans/dvingest/core/Deposit.java | 1 + .../nl/knaw/dans/dvingest/core/ImportJob.java | 12 ++- .../knaw/dans/dvingest/core/IngestArea.java | 12 +-- .../dans/dvingest/core/UpdateDatasetTask.java | 52 ------------- .../AbstractDatasetVersionTask.java | 77 +++++++++++++++++++ .../datasetversiontask/CreateNewDataset.java | 63 +++++++++++++++ .../DatasetVersionTaskFactory.java} | 13 ++-- .../UpdateDatasetWithNewVersion.java | 41 ++++++++++ .../core/{ => model}/UpdateInstructions.java | 5 +- .../core/{ => service}/DataverseService.java | 2 +- .../{ => service}/DataverseServiceImpl.java | 2 +- .../core/{ => service}/PathIterator.java | 2 +- .../{ => service}/PathIteratorZipper.java | 2 +- .../core/{ => service}/UtilityServices.java | 6 +- .../{ => service}/UtilityServicesImpl.java | 4 +- .../dvingest/core/PathIteratorZipperTest.java | 2 + 18 files changed, 224 insertions(+), 153 deletions(-) delete mode 100644 src/main/java/nl/knaw/dans/dvingest/core/CreateNewDatasetTask.java delete mode 100644 src/main/java/nl/knaw/dans/dvingest/core/UpdateDatasetTask.java create mode 100644 src/main/java/nl/knaw/dans/dvingest/core/datasetversiontask/AbstractDatasetVersionTask.java create mode 100644 src/main/java/nl/knaw/dans/dvingest/core/datasetversiontask/CreateNewDataset.java rename src/main/java/nl/knaw/dans/dvingest/core/{DatasetTaskFactory.java => datasetversiontask/DatasetVersionTaskFactory.java} (62%) create mode 100644 src/main/java/nl/knaw/dans/dvingest/core/datasetversiontask/UpdateDatasetWithNewVersion.java rename src/main/java/nl/knaw/dans/dvingest/core/{ => model}/UpdateInstructions.java (86%) rename src/main/java/nl/knaw/dans/dvingest/core/{ => service}/DataverseService.java (97%) rename src/main/java/nl/knaw/dans/dvingest/core/{ => service}/DataverseServiceImpl.java (99%) rename src/main/java/nl/knaw/dans/dvingest/core/{ => service}/PathIterator.java (96%) rename src/main/java/nl/knaw/dans/dvingest/core/{ => service}/PathIteratorZipper.java (98%) rename src/main/java/nl/knaw/dans/dvingest/core/{ => service}/UtilityServices.java (80%) rename src/main/java/nl/knaw/dans/dvingest/core/{ => service}/UtilityServicesImpl.java (91%) diff --git a/src/main/java/nl/knaw/dans/dvingest/DdDataverseIngestApplication.java b/src/main/java/nl/knaw/dans/dvingest/DdDataverseIngestApplication.java index 7b81707..0565b4d 100644 --- a/src/main/java/nl/knaw/dans/dvingest/DdDataverseIngestApplication.java +++ b/src/main/java/nl/knaw/dans/dvingest/DdDataverseIngestApplication.java @@ -20,10 +20,10 @@ import io.dropwizard.core.setup.Bootstrap; import io.dropwizard.core.setup.Environment; import nl.knaw.dans.dvingest.config.DdDataverseIngestConfiguration; -import nl.knaw.dans.dvingest.core.DatasetTaskFactory; -import nl.knaw.dans.dvingest.core.DataverseServiceImpl; +import nl.knaw.dans.dvingest.core.datasetversiontask.DatasetVersionTaskFactory; +import nl.knaw.dans.dvingest.core.service.DataverseServiceImpl; import nl.knaw.dans.dvingest.core.IngestArea; -import nl.knaw.dans.dvingest.core.UtilityServicesImpl; +import nl.knaw.dans.dvingest.core.service.UtilityServicesImpl; import nl.knaw.dans.dvingest.resources.DefaultApiResource; import nl.knaw.dans.dvingest.resources.IllegalArgumentExceptionMapper; import nl.knaw.dans.dvingest.resources.IngestApiResource; @@ -60,7 +60,7 @@ public void run(final DdDataverseIngestConfiguration configuration, final Enviro .executorService(environment.lifecycle().executorService("import").minThreads(1).maxThreads(1).build()) .dataverseService(dataverseService) .utilityServices(utilityServices) - .datasetTaskFactory(new DatasetTaskFactory(dataverseService, utilityServices)) + .datasetVersionTaskFactory(new DatasetVersionTaskFactory(dataverseService, utilityServices)) .inbox(configuration.getIngest().getImportConfig().getInbox()) .outbox(configuration.getIngest().getImportConfig().getOutbox()).build(); environment.jersey().register(new IngestApiResource(importArea)); diff --git a/src/main/java/nl/knaw/dans/dvingest/core/CreateNewDatasetTask.java b/src/main/java/nl/knaw/dans/dvingest/core/CreateNewDatasetTask.java deleted file mode 100644 index 5fdbcf3..0000000 --- a/src/main/java/nl/knaw/dans/dvingest/core/CreateNewDatasetTask.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (C) 2024 DANS - Data Archiving and Networked Services (info@dans.knaw.nl) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package nl.knaw.dans.dvingest.core; - -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import nl.knaw.dans.lib.dataverse.model.file.FileMeta; -import org.apache.commons.io.FileUtils; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; - -@Slf4j -@AllArgsConstructor -public class CreateNewDatasetTask implements Runnable { - private final Deposit deposit; - private final DataverseService dataverseService; - private final UtilityServices utilityServices; - private final Path outputDir; - - @Override - public void run() { - try { - var result = dataverseService.createDataset(deposit.getDatasetMetadata()); - var pid = result.getData().getPersistentId(); - log.debug(result.getEnvelopeAsString()); - var iterator = new PathIterator(FileUtils.iterateFiles(deposit.getFilesDir().toFile(), null, true)); - while (iterator.hasNext()) { - var tempZipFile = utilityServices.createTempZipFile(); - try { - var zipFile = utilityServices.createPathIteratorZipperBuilder() - .rootDir(deposit.getFilesDir()) - .sourceIterator(iterator) - .targetZipFile(tempZipFile) - .build() - .zip(); - dataverseService.addFile(pid, zipFile, new FileMeta()); - log.debug("Uploaded {} files (cumulative)", iterator.getIteratedCount()); - } - finally { - Files.deleteIfExists(tempZipFile); - } - } - dataverseService.publishDataset(pid); - dataverseService.waitForState(pid, "RELEASED"); - deposit.moveTo(outputDir.resolve("processed")); - } - catch (Exception e) { - try { - log.error("Failed to ingest deposit", e); - deposit.moveTo(outputDir.resolve("failed")); - } - catch (IOException ioException) { - log.error("Failed to move deposit to failed directory", ioException); - } - } - } - -} diff --git a/src/main/java/nl/knaw/dans/dvingest/core/Deposit.java b/src/main/java/nl/knaw/dans/dvingest/core/Deposit.java index 73cd7de..428b18b 100644 --- a/src/main/java/nl/knaw/dans/dvingest/core/Deposit.java +++ b/src/main/java/nl/knaw/dans/dvingest/core/Deposit.java @@ -23,6 +23,7 @@ import lombok.NonNull; import lombok.ToString; import lombok.extern.slf4j.Slf4j; +import nl.knaw.dans.dvingest.core.model.UpdateInstructions; import nl.knaw.dans.lib.dataverse.MetadataFieldDeserializer; import nl.knaw.dans.lib.dataverse.model.dataset.Dataset; import nl.knaw.dans.lib.dataverse.model.dataset.MetadataField; diff --git a/src/main/java/nl/knaw/dans/dvingest/core/ImportJob.java b/src/main/java/nl/knaw/dans/dvingest/core/ImportJob.java index 10eb5c6..e88e88f 100644 --- a/src/main/java/nl/knaw/dans/dvingest/core/ImportJob.java +++ b/src/main/java/nl/knaw/dans/dvingest/core/ImportJob.java @@ -22,6 +22,9 @@ import nl.knaw.dans.dvingest.api.ImportCommandDto; import nl.knaw.dans.dvingest.api.ImportJobStatusDto; import nl.knaw.dans.dvingest.api.ImportJobStatusDto.StatusEnum; +import nl.knaw.dans.dvingest.core.datasetversiontask.DatasetVersionTaskFactory; +import nl.knaw.dans.dvingest.core.service.DataverseService; +import nl.knaw.dans.dvingest.core.service.UtilityServices; import java.io.IOException; import java.nio.file.Files; @@ -42,7 +45,7 @@ public class ImportJob implements Runnable { private final UtilityServices utilityServices; @NonNull - private final DatasetTaskFactory datasetTaskFactory; + private final DatasetVersionTaskFactory datasetVersionTaskFactory; @NonNull private final CompletionHandler completionHandler; @@ -54,13 +57,13 @@ private ImportJob(@NonNull ImportCommandDto importCommand, @NonNull Path outputDir, @NonNull DataverseService dataverseService, @NonNull UtilityServices utilityServices, - @NonNull DatasetTaskFactory datasetTaskFactory, + @NonNull DatasetVersionTaskFactory datasetVersionTaskFactory, @NonNull CompletionHandler completionHandler) { this.importCommand = importCommand; this.outputDir = outputDir; this.dataverseService = dataverseService; this.utilityServices = utilityServices; - this.datasetTaskFactory = datasetTaskFactory; + this.datasetVersionTaskFactory = datasetVersionTaskFactory; this.completionHandler = completionHandler; } @@ -90,7 +93,8 @@ public void run() { // Process deposits for (Deposit deposit : deposits) { log.info("START Processing deposit: {}", deposit.getId()); - datasetTaskFactory.createIngestTask(deposit, outputDir).run(); + var task = datasetVersionTaskFactory.createDatasetVersionTask(deposit, outputDir); + task.run(); log.info("END Processing deposit: {}", deposit.getId()); // TODO: record number of processed/rejected/failed deposits in ImportJob status } diff --git a/src/main/java/nl/knaw/dans/dvingest/core/IngestArea.java b/src/main/java/nl/knaw/dans/dvingest/core/IngestArea.java index e4aafbe..d05a8b2 100644 --- a/src/main/java/nl/knaw/dans/dvingest/core/IngestArea.java +++ b/src/main/java/nl/knaw/dans/dvingest/core/IngestArea.java @@ -20,7 +20,9 @@ import lombok.extern.slf4j.Slf4j; import nl.knaw.dans.dvingest.api.ImportCommandDto; import nl.knaw.dans.dvingest.api.ImportJobStatusDto; -import nl.knaw.dans.dvingest.core.ImportJob.CompletionHandler; +import nl.knaw.dans.dvingest.core.datasetversiontask.DatasetVersionTaskFactory; +import nl.knaw.dans.dvingest.core.service.DataverseService; +import nl.knaw.dans.dvingest.core.service.UtilityServices; import java.io.IOException; import java.nio.file.Path; @@ -39,7 +41,7 @@ public class IngestArea { @NonNull private final UtilityServices utilityServices; @NonNull - private final DatasetTaskFactory datasetTaskFactory; + private final DatasetVersionTaskFactory datasetVersionTaskFactory; @NonNull private final Path inbox; @NonNull @@ -47,12 +49,12 @@ public class IngestArea { private final Map importJobs = new ConcurrentHashMap<>(); - private IngestArea(ExecutorService executorService, DataverseService dataverseService, UtilityServices utilityServices, DatasetTaskFactory datasetTaskFactory, Path inbox, Path outbox) { + private IngestArea(ExecutorService executorService, DataverseService dataverseService, UtilityServices utilityServices, DatasetVersionTaskFactory datasetVersionTaskFactory, Path inbox, Path outbox) { try { this.executorService = executorService; this.dataverseService = dataverseService; this.utilityServices = utilityServices; - this.datasetTaskFactory = datasetTaskFactory; + this.datasetVersionTaskFactory = datasetVersionTaskFactory; this.inbox = inbox.toAbsolutePath().toRealPath(); this.outbox = outbox.toAbsolutePath().toRealPath(); } @@ -100,7 +102,7 @@ private ImportJob createImportJob(ImportCommandDto importCommand) { .outputDir(outbox.resolve(relativePath)) .dataverseService(dataverseService) .utilityServices(utilityServices) - .datasetTaskFactory(datasetTaskFactory) + .datasetVersionTaskFactory(datasetVersionTaskFactory) .completionHandler(job -> importJobs.remove(job.getImportCommand().getPath())) .build(); } diff --git a/src/main/java/nl/knaw/dans/dvingest/core/UpdateDatasetTask.java b/src/main/java/nl/knaw/dans/dvingest/core/UpdateDatasetTask.java deleted file mode 100644 index 006ee08..0000000 --- a/src/main/java/nl/knaw/dans/dvingest/core/UpdateDatasetTask.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2024 DANS - Data Archiving and Networked Services (info@dans.knaw.nl) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package nl.knaw.dans.dvingest.core; - -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; - -import java.io.IOException; -import java.nio.file.Path; - -@AllArgsConstructor -@Slf4j -public class UpdateDatasetTask implements Runnable { - private final Deposit deposit; - private final DataverseService dataverseService; - private final UtilityServices utilityServices; - private final Path outputDir; - - @Override - public void run() { - try { - var targetDatasetPid = deposit.getTargetDatasetPid(); - dataverseService.updateMetadata(targetDatasetPid, deposit.getDatasetMetadata().getDatasetVersion()); - - dataverseService.publishDataset(targetDatasetPid); - dataverseService.waitForState(targetDatasetPid, "RELEASED"); - } - catch (Exception e) { - try { - log.error("Failed to ingest deposit", e); - deposit.moveTo(outputDir.resolve("failed")); - } - catch (IOException ioException) { - log.error("Failed to move deposit to failed directory", ioException); - } - } - - } -} diff --git a/src/main/java/nl/knaw/dans/dvingest/core/datasetversiontask/AbstractDatasetVersionTask.java b/src/main/java/nl/knaw/dans/dvingest/core/datasetversiontask/AbstractDatasetVersionTask.java new file mode 100644 index 0000000..72eb166 --- /dev/null +++ b/src/main/java/nl/knaw/dans/dvingest/core/datasetversiontask/AbstractDatasetVersionTask.java @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2024 DANS - Data Archiving and Networked Services (info@dans.knaw.nl) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package nl.knaw.dans.dvingest.core.datasetversiontask; + +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; +import nl.knaw.dans.dvingest.core.service.DataverseService; +import nl.knaw.dans.dvingest.core.Deposit; +import nl.knaw.dans.dvingest.core.service.UtilityServices; + +import java.io.IOException; +import java.nio.file.Path; + +/** + * Task that results in a new dataset (version) in Dataverse. + */ +@Slf4j +public abstract class AbstractDatasetVersionTask implements Runnable { + public enum Status { + TODO, + SUCCESS, + REJECTED, + FAILED + } + + protected final Deposit deposit; + protected final DataverseService dataverseService; + protected final UtilityServices utilityServices; + protected final Path outputDir; + + @Getter + protected Status status = Status.TODO; + + public AbstractDatasetVersionTask(Deposit deposit, DataverseService dataverseService, UtilityServices utilityServices, Path outputDir) { + this.deposit = deposit; + this.dataverseService = dataverseService; + this.utilityServices = utilityServices; + this.outputDir = outputDir; + } + + @Override + public void run() { + try { + var pid = performAndReturnPid(); + status = Status.SUCCESS; + dataverseService.publishDataset(pid); + dataverseService.waitForState(pid, "RELEASED"); + deposit.moveTo(outputDir.resolve("processed")); + status = Status.SUCCESS; + } + catch (Exception e) { + try { + log.error("Failed to ingest deposit", e); + deposit.moveTo(outputDir.resolve("failed")); + status = Status.FAILED; + } + catch (IOException ioException) { + log.error("Failed to move deposit to failed directory", ioException); + } + } + } + + public abstract String performAndReturnPid() throws Exception; +} diff --git a/src/main/java/nl/knaw/dans/dvingest/core/datasetversiontask/CreateNewDataset.java b/src/main/java/nl/knaw/dans/dvingest/core/datasetversiontask/CreateNewDataset.java new file mode 100644 index 0000000..b7a22da --- /dev/null +++ b/src/main/java/nl/knaw/dans/dvingest/core/datasetversiontask/CreateNewDataset.java @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2024 DANS - Data Archiving and Networked Services (info@dans.knaw.nl) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package nl.knaw.dans.dvingest.core.datasetversiontask; + +import lombok.extern.slf4j.Slf4j; +import nl.knaw.dans.dvingest.core.service.DataverseService; +import nl.knaw.dans.dvingest.core.Deposit; +import nl.knaw.dans.dvingest.core.service.PathIterator; +import nl.knaw.dans.dvingest.core.service.UtilityServices; +import nl.knaw.dans.lib.dataverse.model.file.FileMeta; +import org.apache.commons.io.FileUtils; + +import java.nio.file.Files; +import java.nio.file.Path; + +/** + * Creates the first version of a new dataset in Dataverse. + */ +@Slf4j +public class CreateNewDataset extends AbstractDatasetVersionTask { + public CreateNewDataset(Deposit deposit, DataverseService dataverseService, UtilityServices utilityServices, Path outputDir) { + super(deposit, dataverseService, utilityServices, outputDir); + } + + @Override + public String performAndReturnPid() throws Exception { + var result = dataverseService.createDataset(deposit.getDatasetMetadata()); + var pid = result.getData().getPersistentId(); + log.debug(result.getEnvelopeAsString()); + var iterator = new PathIterator(FileUtils.iterateFiles(deposit.getFilesDir().toFile(), null, true)); + while (iterator.hasNext()) { + var tempZipFile = utilityServices.createTempZipFile(); + try { + var zipFile = utilityServices.createPathIteratorZipperBuilder() + .rootDir(deposit.getFilesDir()) + .sourceIterator(iterator) + .targetZipFile(tempZipFile) + .build() + .zip(); + dataverseService.addFile(pid, zipFile, new FileMeta()); + log.debug("Uploaded {} files (cumulative)", iterator.getIteratedCount()); + } + finally { + Files.deleteIfExists(tempZipFile); + } + + } + return pid; + } +} diff --git a/src/main/java/nl/knaw/dans/dvingest/core/DatasetTaskFactory.java b/src/main/java/nl/knaw/dans/dvingest/core/datasetversiontask/DatasetVersionTaskFactory.java similarity index 62% rename from src/main/java/nl/knaw/dans/dvingest/core/DatasetTaskFactory.java rename to src/main/java/nl/knaw/dans/dvingest/core/datasetversiontask/DatasetVersionTaskFactory.java index c8f6dac..044a133 100644 --- a/src/main/java/nl/knaw/dans/dvingest/core/DatasetTaskFactory.java +++ b/src/main/java/nl/knaw/dans/dvingest/core/datasetversiontask/DatasetVersionTaskFactory.java @@ -13,23 +13,26 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package nl.knaw.dans.dvingest.core; +package nl.knaw.dans.dvingest.core.datasetversiontask; import lombok.AllArgsConstructor; +import nl.knaw.dans.dvingest.core.service.DataverseService; +import nl.knaw.dans.dvingest.core.Deposit; +import nl.knaw.dans.dvingest.core.service.UtilityServices; import java.nio.file.Path; @AllArgsConstructor -public class DatasetTaskFactory { +public class DatasetVersionTaskFactory { private final DataverseService dataverseService; private final UtilityServices utilityServices; - public Runnable createIngestTask(Deposit deposit, Path outputDir) { + public Runnable createDatasetVersionTask(Deposit deposit, Path outputDir) { if (deposit.isUpdate()) { - return new UpdateDatasetTask(deposit, dataverseService, utilityServices, outputDir); + return new UpdateDatasetWithNewVersion(deposit, dataverseService, utilityServices, outputDir); } else { - return new CreateNewDatasetTask(deposit, dataverseService, utilityServices, outputDir); + return new CreateNewDataset(deposit, dataverseService, utilityServices, outputDir); } } diff --git a/src/main/java/nl/knaw/dans/dvingest/core/datasetversiontask/UpdateDatasetWithNewVersion.java b/src/main/java/nl/knaw/dans/dvingest/core/datasetversiontask/UpdateDatasetWithNewVersion.java new file mode 100644 index 0000000..cf2357d --- /dev/null +++ b/src/main/java/nl/knaw/dans/dvingest/core/datasetversiontask/UpdateDatasetWithNewVersion.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2024 DANS - Data Archiving and Networked Services (info@dans.knaw.nl) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package nl.knaw.dans.dvingest.core.datasetversiontask; + +import lombok.extern.slf4j.Slf4j; +import nl.knaw.dans.dvingest.core.service.DataverseService; +import nl.knaw.dans.dvingest.core.Deposit; +import nl.knaw.dans.dvingest.core.service.UtilityServices; + +import java.nio.file.Path; + +/** + * Updates an existing dataset, resulting in a new version of the dataset. + */ +@Slf4j +public class UpdateDatasetWithNewVersion extends AbstractDatasetVersionTask { + + public UpdateDatasetWithNewVersion(Deposit deposit, DataverseService dataverseService, UtilityServices utilityServices, Path outputDir) { + super(deposit, dataverseService, utilityServices, outputDir); + } + + @Override + public String performAndReturnPid() throws Exception { + var targetDatasetPid = deposit.getTargetDatasetPid(); + dataverseService.updateMetadata(targetDatasetPid, deposit.getDatasetMetadata().getDatasetVersion()); + return targetDatasetPid; + } +} diff --git a/src/main/java/nl/knaw/dans/dvingest/core/UpdateInstructions.java b/src/main/java/nl/knaw/dans/dvingest/core/model/UpdateInstructions.java similarity index 86% rename from src/main/java/nl/knaw/dans/dvingest/core/UpdateInstructions.java rename to src/main/java/nl/knaw/dans/dvingest/core/model/UpdateInstructions.java index 1a9849a..081c269 100644 --- a/src/main/java/nl/knaw/dans/dvingest/core/UpdateInstructions.java +++ b/src/main/java/nl/knaw/dans/dvingest/core/model/UpdateInstructions.java @@ -13,14 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package nl.knaw.dans.dvingest.core; +package nl.knaw.dans.dvingest.core.model; import lombok.Data; -import nl.knaw.dans.lib.dataverse.model.dataset.UpdateType; @Data public class UpdateInstructions { private String targetDatasetPid; + // Implement resultOfPreviousDeposit = uuid // Of implementeren in deposit.properties? + // TODO: implement minor update //private UpdateType updateType = UpdateType.major; } diff --git a/src/main/java/nl/knaw/dans/dvingest/core/DataverseService.java b/src/main/java/nl/knaw/dans/dvingest/core/service/DataverseService.java similarity index 97% rename from src/main/java/nl/knaw/dans/dvingest/core/DataverseService.java rename to src/main/java/nl/knaw/dans/dvingest/core/service/DataverseService.java index 29c564c..941afba 100644 --- a/src/main/java/nl/knaw/dans/dvingest/core/DataverseService.java +++ b/src/main/java/nl/knaw/dans/dvingest/core/service/DataverseService.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package nl.knaw.dans.dvingest.core; +package nl.knaw.dans.dvingest.core.service; import nl.knaw.dans.lib.dataverse.DataverseException; import nl.knaw.dans.lib.dataverse.DataverseHttpResponse; diff --git a/src/main/java/nl/knaw/dans/dvingest/core/DataverseServiceImpl.java b/src/main/java/nl/knaw/dans/dvingest/core/service/DataverseServiceImpl.java similarity index 99% rename from src/main/java/nl/knaw/dans/dvingest/core/DataverseServiceImpl.java rename to src/main/java/nl/knaw/dans/dvingest/core/service/DataverseServiceImpl.java index 65e0862..4500a27 100644 --- a/src/main/java/nl/knaw/dans/dvingest/core/DataverseServiceImpl.java +++ b/src/main/java/nl/knaw/dans/dvingest/core/service/DataverseServiceImpl.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package nl.knaw.dans.dvingest.core; +package nl.knaw.dans.dvingest.core.service; import lombok.Builder; import lombok.NonNull; diff --git a/src/main/java/nl/knaw/dans/dvingest/core/PathIterator.java b/src/main/java/nl/knaw/dans/dvingest/core/service/PathIterator.java similarity index 96% rename from src/main/java/nl/knaw/dans/dvingest/core/PathIterator.java rename to src/main/java/nl/knaw/dans/dvingest/core/service/PathIterator.java index dee351e..f2e2b67 100644 --- a/src/main/java/nl/knaw/dans/dvingest/core/PathIterator.java +++ b/src/main/java/nl/knaw/dans/dvingest/core/service/PathIterator.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package nl.knaw.dans.dvingest.core; +package nl.knaw.dans.dvingest.core.service; import lombok.Getter; import lombok.NonNull; diff --git a/src/main/java/nl/knaw/dans/dvingest/core/PathIteratorZipper.java b/src/main/java/nl/knaw/dans/dvingest/core/service/PathIteratorZipper.java similarity index 98% rename from src/main/java/nl/knaw/dans/dvingest/core/PathIteratorZipper.java rename to src/main/java/nl/knaw/dans/dvingest/core/service/PathIteratorZipper.java index 9f3997a..084c5b3 100644 --- a/src/main/java/nl/knaw/dans/dvingest/core/PathIteratorZipper.java +++ b/src/main/java/nl/knaw/dans/dvingest/core/service/PathIteratorZipper.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package nl.knaw.dans.dvingest.core; +package nl.knaw.dans.dvingest.core.service; import lombok.AccessLevel; import lombok.Builder; diff --git a/src/main/java/nl/knaw/dans/dvingest/core/UtilityServices.java b/src/main/java/nl/knaw/dans/dvingest/core/service/UtilityServices.java similarity index 80% rename from src/main/java/nl/knaw/dans/dvingest/core/UtilityServices.java rename to src/main/java/nl/knaw/dans/dvingest/core/service/UtilityServices.java index 116969d..ebcadaf 100644 --- a/src/main/java/nl/knaw/dans/dvingest/core/UtilityServices.java +++ b/src/main/java/nl/knaw/dans/dvingest/core/service/UtilityServices.java @@ -13,7 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package nl.knaw.dans.dvingest.core; +package nl.knaw.dans.dvingest.core.service; + +import nl.knaw.dans.dvingest.core.service.PathIteratorZipper.PathIteratorZipperBuilder; import java.io.IOException; import java.nio.file.Path; @@ -22,6 +24,6 @@ public interface UtilityServices { Path createTempZipFile() throws IOException; - PathIteratorZipper.PathIteratorZipperBuilder createPathIteratorZipperBuilder(); + PathIteratorZipperBuilder createPathIteratorZipperBuilder(); } diff --git a/src/main/java/nl/knaw/dans/dvingest/core/UtilityServicesImpl.java b/src/main/java/nl/knaw/dans/dvingest/core/service/UtilityServicesImpl.java similarity index 91% rename from src/main/java/nl/knaw/dans/dvingest/core/UtilityServicesImpl.java rename to src/main/java/nl/knaw/dans/dvingest/core/service/UtilityServicesImpl.java index 5e02b9c..8f96129 100644 --- a/src/main/java/nl/knaw/dans/dvingest/core/UtilityServicesImpl.java +++ b/src/main/java/nl/knaw/dans/dvingest/core/service/UtilityServicesImpl.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package nl.knaw.dans.dvingest.core; +package nl.knaw.dans.dvingest.core.service; import lombok.Builder; -import nl.knaw.dans.dvingest.core.PathIteratorZipper.PathIteratorZipperBuilder; +import nl.knaw.dans.dvingest.core.service.PathIteratorZipper.PathIteratorZipperBuilder; import java.io.IOException; import java.nio.file.Files; diff --git a/src/test/java/nl/knaw/dans/dvingest/core/PathIteratorZipperTest.java b/src/test/java/nl/knaw/dans/dvingest/core/PathIteratorZipperTest.java index e9c26b3..f777a65 100644 --- a/src/test/java/nl/knaw/dans/dvingest/core/PathIteratorZipperTest.java +++ b/src/test/java/nl/knaw/dans/dvingest/core/PathIteratorZipperTest.java @@ -15,6 +15,8 @@ */ package nl.knaw.dans.dvingest.core; +import nl.knaw.dans.dvingest.core.service.PathIterator; +import nl.knaw.dans.dvingest.core.service.PathIteratorZipper; import org.apache.commons.io.FileUtils; import org.junit.jupiter.api.Test;