diff --git a/client/src/main/java/dev/fitko/fitconnect/client/sender/model/SubmissionPayload.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/submission/SubmissionPayload.java similarity index 94% rename from client/src/main/java/dev/fitko/fitconnect/client/sender/model/SubmissionPayload.java rename to api/src/main/java/dev/fitko/fitconnect/api/domain/model/submission/SubmissionPayload.java index fc7956049bd99f805db90ea84834cf161cf16337..f276501e0bf62ef7701597c29323d932915f53da 100644 --- a/client/src/main/java/dev/fitko/fitconnect/client/sender/model/SubmissionPayload.java +++ b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/submission/SubmissionPayload.java @@ -1,4 +1,4 @@ -package dev.fitko.fitconnect.client.sender.model; +package dev.fitko.fitconnect.api.domain.model.submission; import dev.fitko.fitconnect.api.domain.model.metadata.data.MimeType; import dev.fitko.fitconnect.api.domain.model.submission.ServiceType; diff --git a/api/src/main/java/dev/fitko/fitconnect/api/services/Sender.java b/api/src/main/java/dev/fitko/fitconnect/api/services/Sender.java index 1078da6fa66a0a20d17b8cf2bc76fd07999fbb96..ecee117fa17047f292f00b3e1fb7920b3eda226d 100644 --- a/api/src/main/java/dev/fitko/fitconnect/api/services/Sender.java +++ b/api/src/main/java/dev/fitko/fitconnect/api/services/Sender.java @@ -8,10 +8,7 @@ import dev.fitko.fitconnect.api.domain.model.event.authtags.AuthenticationTags; import dev.fitko.fitconnect.api.domain.model.metadata.Metadata; import dev.fitko.fitconnect.api.domain.model.metadata.attachment.Attachment; import dev.fitko.fitconnect.api.domain.model.metadata.data.Data; -import dev.fitko.fitconnect.api.domain.model.submission.CreateSubmission; -import dev.fitko.fitconnect.api.domain.model.submission.Submission; -import dev.fitko.fitconnect.api.domain.model.submission.SubmissionForPickup; -import dev.fitko.fitconnect.api.domain.model.submission.SubmitSubmission; +import dev.fitko.fitconnect.api.domain.model.submission.*; import dev.fitko.fitconnect.api.domain.validation.ValidationResult; import dev.fitko.fitconnect.api.exceptions.*; @@ -146,7 +143,7 @@ public interface Sender { * * @return a {@link ValidationResult} with an optional error */ - ValidationResult validateJsonFormat(String json); + ValidationResult validateJsonFormat(SubmissionPayload json); /** * Tests if a given string is well-formed XML syntax. diff --git a/api/src/main/java/dev/fitko/fitconnect/api/services/schema/SchemaProvider.java b/api/src/main/java/dev/fitko/fitconnect/api/services/schema/SchemaProvider.java index 95bf3bedc5aef606bc12b404d3d83e031949ccc3..af69d63c2ee5263af2f30835720158d25cef30cf 100644 --- a/api/src/main/java/dev/fitko/fitconnect/api/services/schema/SchemaProvider.java +++ b/api/src/main/java/dev/fitko/fitconnect/api/services/schema/SchemaProvider.java @@ -60,4 +60,14 @@ public interface SchemaProvider { * @throws SchemaNotFoundException if the schema is not existing */ String loadDestinationSchema(URI schemaUri) throws SchemaNotFoundException; + + /** + * Load the schema for the submission data. + * + * @param schemaUri uri of the submission data schema that should be loaded + * @return the schema as string + * + * @throws SchemaNotFoundException if the schema is not existing + */ + String loadSubmissionDataSchema(final URI schemaUri) throws SchemaNotFoundException; } \ No newline at end of file diff --git a/client/src/main/java/dev/fitko/fitconnect/client/SenderClient.java b/client/src/main/java/dev/fitko/fitconnect/client/SenderClient.java index 523193e4379bd075df2c4a7e5dd5a517df80fe79..4970c09efeaadfca5460fc50842b53ec26feed76 100644 --- a/client/src/main/java/dev/fitko/fitconnect/client/SenderClient.java +++ b/client/src/main/java/dev/fitko/fitconnect/client/SenderClient.java @@ -11,7 +11,7 @@ import dev.fitko.fitconnect.api.domain.model.submission.SubmitSubmission; import dev.fitko.fitconnect.api.domain.validation.ValidationResult; import dev.fitko.fitconnect.api.services.Sender; import dev.fitko.fitconnect.client.sender.model.EncryptedSubmissionPayload; -import dev.fitko.fitconnect.client.sender.model.SubmissionPayload; +import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload; import dev.fitko.fitconnect.client.sender.strategies.SendEncryptedSubmissionStrategy; import dev.fitko.fitconnect.client.sender.strategies.SendNewSubmissionStrategy; import dev.fitko.fitconnect.client.util.ValidDataGuard; diff --git a/client/src/main/java/dev/fitko/fitconnect/client/cli/CommandExecutor.java b/client/src/main/java/dev/fitko/fitconnect/client/cli/CommandExecutor.java index 7410ce89e10fa6bf8d10e83ffdd5bf56e590eea4..c3f6b15ce439c9f7ef7960bc035cb002be5f8ca7 100644 --- a/client/src/main/java/dev/fitko/fitconnect/client/cli/CommandExecutor.java +++ b/client/src/main/java/dev/fitko/fitconnect/client/cli/CommandExecutor.java @@ -10,7 +10,7 @@ import dev.fitko.fitconnect.client.cli.batch.ImportRecord; import dev.fitko.fitconnect.client.cli.commands.*; import dev.fitko.fitconnect.client.cli.util.AttachmentDataType; import dev.fitko.fitconnect.client.sender.SubmissionBuilder; -import dev.fitko.fitconnect.client.sender.model.SubmissionPayload; +import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload; import dev.fitko.fitconnect.client.subscriber.ReceivedSubmission; import dev.fitko.fitconnect.client.subscriber.model.ReceivedAttachment; import dev.fitko.fitconnect.core.util.StopWatch; diff --git a/client/src/main/java/dev/fitko/fitconnect/client/sender/SubmissionBuilder.java b/client/src/main/java/dev/fitko/fitconnect/client/sender/SubmissionBuilder.java index 89a55fd239a0adeacc5dfba66fa45a9ee5b4fa20..4298f643133ce5c5c7be0c50fa2c432e4b2710e3 100644 --- a/client/src/main/java/dev/fitko/fitconnect/client/sender/SubmissionBuilder.java +++ b/client/src/main/java/dev/fitko/fitconnect/client/sender/SubmissionBuilder.java @@ -2,7 +2,7 @@ package dev.fitko.fitconnect.client.sender; import dev.fitko.fitconnect.api.domain.model.metadata.data.MimeType; import dev.fitko.fitconnect.api.domain.model.submission.ServiceType; -import dev.fitko.fitconnect.client.sender.model.SubmissionPayload; +import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload; import dev.fitko.fitconnect.client.sender.steps.*; import lombok.Getter; import org.slf4j.Logger; diff --git a/client/src/main/java/dev/fitko/fitconnect/client/sender/steps/BuildStep.java b/client/src/main/java/dev/fitko/fitconnect/client/sender/steps/BuildStep.java index 2ecd116d6e5616c808a692fbddb98fd894ea178b..a5e1defc933ba7038bdb38f17c4b84c094ce9d7d 100644 --- a/client/src/main/java/dev/fitko/fitconnect/client/sender/steps/BuildStep.java +++ b/client/src/main/java/dev/fitko/fitconnect/client/sender/steps/BuildStep.java @@ -1,6 +1,6 @@ package dev.fitko.fitconnect.client.sender.steps; -import dev.fitko.fitconnect.client.sender.model.SubmissionPayload; +import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload; public interface BuildStep { diff --git a/client/src/main/java/dev/fitko/fitconnect/client/sender/strategies/SendNewSubmissionStrategy.java b/client/src/main/java/dev/fitko/fitconnect/client/sender/strategies/SendNewSubmissionStrategy.java index 664109153eb409b19e28c53657b6bb46f6cad3e0..fbe3e33e1628ff8d888c0da90a72749e3f0bcc6f 100644 --- a/client/src/main/java/dev/fitko/fitconnect/client/sender/strategies/SendNewSubmissionStrategy.java +++ b/client/src/main/java/dev/fitko/fitconnect/client/sender/strategies/SendNewSubmissionStrategy.java @@ -2,7 +2,6 @@ package dev.fitko.fitconnect.client.sender.strategies; import com.nimbusds.jose.jwk.RSAKey; import dev.fitko.fitconnect.api.domain.model.destination.Destination; -import dev.fitko.fitconnect.api.domain.model.destination.DestinationService; import dev.fitko.fitconnect.api.domain.model.metadata.ContentStructure; import dev.fitko.fitconnect.api.domain.model.metadata.Hash; import dev.fitko.fitconnect.api.domain.model.metadata.Metadata; @@ -28,7 +27,7 @@ import dev.fitko.fitconnect.api.exceptions.SchemaNotFoundException; import dev.fitko.fitconnect.api.exceptions.SubmissionNotCreatedException; import dev.fitko.fitconnect.api.services.Sender; import dev.fitko.fitconnect.client.sender.model.AttachmentPayload; -import dev.fitko.fitconnect.client.sender.model.SubmissionPayload; +import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload; import dev.fitko.fitconnect.core.util.StopWatch; import org.apache.tika.Tika; import org.slf4j.Logger; @@ -41,7 +40,6 @@ import java.net.URLConnection; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.UUID; diff --git a/client/src/main/java/dev/fitko/fitconnect/client/util/ValidDataGuard.java b/client/src/main/java/dev/fitko/fitconnect/client/util/ValidDataGuard.java index 3fc9bc6334f5f53f7e8968d94e7dba19f4b2fa8c..0e15340daa25242c9d25b35e215f21aa0f8a2d79 100644 --- a/client/src/main/java/dev/fitko/fitconnect/client/util/ValidDataGuard.java +++ b/client/src/main/java/dev/fitko/fitconnect/client/util/ValidDataGuard.java @@ -7,7 +7,7 @@ import dev.fitko.fitconnect.api.domain.model.submission.ServiceType; import dev.fitko.fitconnect.api.domain.validation.ValidationResult; import dev.fitko.fitconnect.api.services.Sender; import dev.fitko.fitconnect.client.sender.model.EncryptedSubmissionPayload; -import dev.fitko.fitconnect.client.sender.model.SubmissionPayload; +import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload; import java.net.URI; import java.util.Objects; diff --git a/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java b/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java index 723b1e2603662cff41d6b311c25026dae29f5d9d..3ae0ca490f445fb370a766d18700b1be36be78e6 100644 --- a/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java +++ b/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java @@ -23,7 +23,7 @@ import dev.fitko.fitconnect.api.services.Sender; import dev.fitko.fitconnect.client.sender.EncryptedSubmissionBuilder; import dev.fitko.fitconnect.client.sender.SubmissionBuilder; import dev.fitko.fitconnect.client.sender.model.EncryptedSubmissionPayload; -import dev.fitko.fitconnect.client.sender.model.SubmissionPayload; +import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload; import dev.fitko.fitconnect.client.testutil.LogCaptor; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; diff --git a/client/src/test/java/dev/fitko/fitconnect/client/cli/CommandLineClientTest.java b/client/src/test/java/dev/fitko/fitconnect/client/cli/CommandLineClientTest.java index 61e54c21aca6754a05348568d776afe5dc1b1802..ae4a9f465b0ad7f942f6b3bb2d7f825ae00456f1 100644 --- a/client/src/test/java/dev/fitko/fitconnect/client/cli/CommandLineClientTest.java +++ b/client/src/test/java/dev/fitko/fitconnect/client/cli/CommandLineClientTest.java @@ -11,7 +11,7 @@ import dev.fitko.fitconnect.client.SubscriberClient; import dev.fitko.fitconnect.client.cli.batch.CsvImporter; import dev.fitko.fitconnect.client.cli.batch.ImportRecord; import dev.fitko.fitconnect.client.sender.model.EncryptedSubmissionPayload; -import dev.fitko.fitconnect.client.sender.model.SubmissionPayload; +import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload; import dev.fitko.fitconnect.client.subscriber.ReceivedSubmission; import dev.fitko.fitconnect.client.subscriber.model.ReceivedAttachment; import dev.fitko.fitconnect.client.subscriber.model.ReceivedData; diff --git a/client/src/test/java/dev/fitko/fitconnect/client/util/ValidDataGuardTest.java b/client/src/test/java/dev/fitko/fitconnect/client/util/ValidDataGuardTest.java index 6dc3c86998232b50665f09785a5620966551a137..a3e1453fe975257bd64cef25767de302dc07f170 100644 --- a/client/src/test/java/dev/fitko/fitconnect/client/util/ValidDataGuardTest.java +++ b/client/src/test/java/dev/fitko/fitconnect/client/util/ValidDataGuardTest.java @@ -9,7 +9,7 @@ import dev.fitko.fitconnect.api.services.Sender; import dev.fitko.fitconnect.client.sender.EncryptedSubmissionBuilder; import dev.fitko.fitconnect.client.sender.SubmissionBuilder; import dev.fitko.fitconnect.client.sender.model.EncryptedSubmissionPayload; -import dev.fitko.fitconnect.client.sender.model.SubmissionPayload; +import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; diff --git a/core/src/main/java/dev/fitko/fitconnect/core/SubmissionSender.java b/core/src/main/java/dev/fitko/fitconnect/core/SubmissionSender.java index f66087eabaf1bc8d1f01c07c79039eefdd130b96..eb5cc289f429871403de518cefccfca60b5cd1b2 100644 --- a/core/src/main/java/dev/fitko/fitconnect/core/SubmissionSender.java +++ b/core/src/main/java/dev/fitko/fitconnect/core/SubmissionSender.java @@ -6,10 +6,7 @@ import dev.fitko.fitconnect.api.domain.model.event.EventLogEntry; import dev.fitko.fitconnect.api.domain.model.event.EventStatus; import dev.fitko.fitconnect.api.domain.model.event.authtags.AuthenticationTags; import dev.fitko.fitconnect.api.domain.model.metadata.Metadata; -import dev.fitko.fitconnect.api.domain.model.submission.CreateSubmission; -import dev.fitko.fitconnect.api.domain.model.submission.Submission; -import dev.fitko.fitconnect.api.domain.model.submission.SubmissionForPickup; -import dev.fitko.fitconnect.api.domain.model.submission.SubmitSubmission; +import dev.fitko.fitconnect.api.domain.model.submission.*; import dev.fitko.fitconnect.api.domain.validation.ValidationResult; import dev.fitko.fitconnect.api.services.Sender; import dev.fitko.fitconnect.api.services.crypto.CryptoService; @@ -108,7 +105,6 @@ public class SubmissionSender implements Sender { return keyService.getPublicEncryptionKey(destinationId); } - @Override public Submission sendSubmission(final SubmitSubmission submission) { LOGGER.info("Sending submission {}", submission.getSubmissionId()); @@ -116,7 +112,7 @@ public class SubmissionSender implements Sender { } @Override - public ValidationResult validateJsonFormat(final String json) { + public ValidationResult validateJsonFormat(final SubmissionPayload json) { LOGGER.info("Validating data json format"); return validationService.validateJsonFormat(json); } diff --git a/core/src/main/java/dev/fitko/fitconnect/core/schema/SchemaResourceProvider.java b/core/src/main/java/dev/fitko/fitconnect/core/schema/SchemaResourceProvider.java index 88433e047792bb8e919a386d33a4ba6b1b53ee3c..cb5cfef450e902b2db6af39322660c5d56e21acd 100644 --- a/core/src/main/java/dev/fitko/fitconnect/core/schema/SchemaResourceProvider.java +++ b/core/src/main/java/dev/fitko/fitconnect/core/schema/SchemaResourceProvider.java @@ -96,6 +96,20 @@ public class SchemaResourceProvider implements SchemaProvider { return schema; } + @Override + public String loadSubmissionDataSchema(final URI schemaUri) throws SchemaNotFoundException { + + String schema; + if(schemaUri.toString().matches("http.+")) { + schema = "load schema from remote"; + } + schema = destinationSchemas.get(schemaUri); + if (schema == null) { + throw new SchemaNotFoundException("Destination schema " + schemaUri.toString() + " is not available."); + } + return schema; + } + private void addSetSchema(final String schema) { setSchemas.put(readIdFromSchema(schema), schema); }