From e0d937633e7f9bc5cd290079b403961ba44a893b Mon Sep 17 00:00:00 2001 From: pkarthik1901 Date: Tue, 3 Dec 2024 21:05:11 +0530 Subject: [PATCH] Add applicationId property to dataset (#81) --- .../fusion/packaging/DatasetOperationsIT.java | 3 ++- .../github/jpmorganchase/fusion/model/Dataset.java | 14 +++++++++++++- .../serializing/adapters/DatasetSerializer.java | 1 + .../fusion/model/DatasetBuilderTest.java | 3 +-- .../GsonAPIResponseParserDatasetReportTest.java | 7 ++++--- .../GsonAPIRequestSerializerDatasetTest.java | 3 ++- .../dataset-report-SR0001-create-request.json | 4 ++++ .../dataset-report-SR0001-update-request.json | 4 ++++ .../__files/dataset/multiple-dataset-response.json | 4 ++++ .../parsing/multiple-dataset-report-response.json | 12 ++++++++++++ .../parsing/single-dataset-report-response.json | 4 ++++ .../fusion/serializing/dataset-request.json | 2 +- 12 files changed, 52 insertions(+), 9 deletions(-) diff --git a/src/it/java/io/github/jpmorganchase/fusion/packaging/DatasetOperationsIT.java b/src/it/java/io/github/jpmorganchase/fusion/packaging/DatasetOperationsIT.java index 537f691..45b2e3a 100644 --- a/src/it/java/io/github/jpmorganchase/fusion/packaging/DatasetOperationsIT.java +++ b/src/it/java/io/github/jpmorganchase/fusion/packaging/DatasetOperationsIT.java @@ -1,6 +1,7 @@ package io.github.jpmorganchase.fusion.packaging; import com.github.tomakehurst.wiremock.client.WireMock; +import io.github.jpmorganchase.fusion.model.Application; import io.github.jpmorganchase.fusion.model.Dataset; import io.github.jpmorganchase.fusion.model.Report; import io.github.jpmorganchase.fusion.test.TestUtils; @@ -149,7 +150,7 @@ public void testCreateDatasetOfTypeReport() { .varArg("isRestricted", Boolean.FALSE) .varArg("isRawData", Boolean.FALSE) .varArg("hasSample", Boolean.FALSE) - .type("Report") + .applicationId(Application.builder().sealId("12345").build()) .report(Report.builder().tier("Tier 1").build()) .build(); diff --git a/src/main/java/io/github/jpmorganchase/fusion/model/Dataset.java b/src/main/java/io/github/jpmorganchase/fusion/model/Dataset.java index aa914fe..ff8c739 100644 --- a/src/main/java/io/github/jpmorganchase/fusion/model/Dataset.java +++ b/src/main/java/io/github/jpmorganchase/fusion/model/Dataset.java @@ -3,6 +3,7 @@ import com.google.gson.annotations.SerializedName; import io.github.jpmorganchase.fusion.api.APIManager; import java.util.Map; +import java.util.Optional; import lombok.Builder; import lombok.EqualsAndHashCode; import lombok.ToString; @@ -25,6 +26,7 @@ public class Dataset extends CatalogResource { String frequency; String type; Report report; + Application applicationId; @Builder(toBuilder = true) public Dataset( @@ -38,7 +40,8 @@ public Dataset( String title, String frequency, String type, - Report report) { + Report report, + Application applicationId) { super(identifier, varArgs, apiManager, rootUrl, catalogIdentifier); this.description = description; this.linkedEntity = linkedEntity; @@ -46,6 +49,7 @@ public Dataset( this.frequency = frequency; this.type = type; this.report = report; + this.applicationId = applicationId; } @Override @@ -67,5 +71,13 @@ public DatasetBuilder varArgs(Map varArgs) { this.varArgs = VarArgsHelper.copyMap(varArgs); return this; } + + public DatasetBuilder report(Report report) { + Optional.ofNullable(report).ifPresent(val -> { + this.type = "Report"; + this.report = val; + }); + return this; + } } } diff --git a/src/main/java/io/github/jpmorganchase/fusion/serializing/adapters/DatasetSerializer.java b/src/main/java/io/github/jpmorganchase/fusion/serializing/adapters/DatasetSerializer.java index 939d489..2c76f32 100644 --- a/src/main/java/io/github/jpmorganchase/fusion/serializing/adapters/DatasetSerializer.java +++ b/src/main/java/io/github/jpmorganchase/fusion/serializing/adapters/DatasetSerializer.java @@ -22,6 +22,7 @@ public JsonElement serialize(Dataset src, Type typeOfSrc, JsonSerializationConte jsonObject.add("identifier", context.serialize(src.getIdentifier())); jsonObject.add("type", context.serialize(src.getType())); jsonObject.add("report", context.serialize(src.getReport())); + jsonObject.add("applicationId", context.serialize(src.getApplicationId())); Map varArgs = src.getVarArgs(); if (varArgs != null) { diff --git a/src/test/java/io/github/jpmorganchase/fusion/model/DatasetBuilderTest.java b/src/test/java/io/github/jpmorganchase/fusion/model/DatasetBuilderTest.java index 3a49109..5791c81 100644 --- a/src/test/java/io/github/jpmorganchase/fusion/model/DatasetBuilderTest.java +++ b/src/test/java/io/github/jpmorganchase/fusion/model/DatasetBuilderTest.java @@ -25,7 +25,6 @@ void constructionWithBuilderCorrectlyPopulatesAllFields() { .linkedEntity("The entity") .title("The title") .frequency("The frequency") - .type("The type") .report(report) .rootUrl("http://foobar/api/v1/") .catalogIdentifier("foobar") @@ -38,7 +37,7 @@ void constructionWithBuilderCorrectlyPopulatesAllFields() { assertThat(d.getLinkedEntity(), is(equalTo("The entity"))); assertThat(d.getTitle(), is(equalTo("The title"))); assertThat(d.getFrequency(), is(equalTo("The frequency"))); - assertThat(d.getType(), is(equalTo("The type"))); + assertThat(d.getType(), is(equalTo("Report"))); assertThat(d.getReport(), is(equalTo(report))); assertThat(d.getRootUrl(), is(equalTo("http://foobar/api/v1/"))); assertThat(d.getCatalogIdentifier(), is(equalTo("foobar"))); diff --git a/src/test/java/io/github/jpmorganchase/fusion/parsing/GsonAPIResponseParserDatasetReportTest.java b/src/test/java/io/github/jpmorganchase/fusion/parsing/GsonAPIResponseParserDatasetReportTest.java index 89c2e3b..e19ec25 100644 --- a/src/test/java/io/github/jpmorganchase/fusion/parsing/GsonAPIResponseParserDatasetReportTest.java +++ b/src/test/java/io/github/jpmorganchase/fusion/parsing/GsonAPIResponseParserDatasetReportTest.java @@ -7,6 +7,7 @@ import io.github.jpmorganchase.fusion.api.APIManager; import io.github.jpmorganchase.fusion.api.context.APIContext; +import io.github.jpmorganchase.fusion.model.Application; import io.github.jpmorganchase.fusion.model.Dataset; import io.github.jpmorganchase.fusion.model.Report; import java.net.URL; @@ -49,7 +50,7 @@ public class GsonAPIResponseParserDatasetReportTest { .varArg("isRestricted", Boolean.FALSE) .varArg("isRawData", Boolean.FALSE) .varArg("hasSample", Boolean.FALSE) - .type("Report") + .applicationId(Application.builder().sealId("12345").build()) .report(Report.builder().tier("Tier 1").build()) .build(); @@ -79,7 +80,7 @@ public class GsonAPIResponseParserDatasetReportTest { .varArg("isRestricted", Boolean.FALSE) .varArg("isRawData", Boolean.FALSE) .varArg("hasSample", Boolean.FALSE) - .type("Report") + .applicationId(Application.builder().sealId("12345").build()) .report(Report.builder().tier("Tier 2").build()) .build(); @@ -109,7 +110,7 @@ public class GsonAPIResponseParserDatasetReportTest { .varArg("isRestricted", Boolean.FALSE) .varArg("isRawData", Boolean.FALSE) .varArg("hasSample", Boolean.FALSE) - .type("Report") + .applicationId(Application.builder().sealId("12345").build()) .report(Report.builder().tier("Tier 3").build()) .build(); diff --git a/src/test/java/io/github/jpmorganchase/fusion/serializing/GsonAPIRequestSerializerDatasetTest.java b/src/test/java/io/github/jpmorganchase/fusion/serializing/GsonAPIRequestSerializerDatasetTest.java index 48da0e4..d44546c 100644 --- a/src/test/java/io/github/jpmorganchase/fusion/serializing/GsonAPIRequestSerializerDatasetTest.java +++ b/src/test/java/io/github/jpmorganchase/fusion/serializing/GsonAPIRequestSerializerDatasetTest.java @@ -6,6 +6,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import io.github.jpmorganchase.fusion.api.APIManager; +import io.github.jpmorganchase.fusion.model.Application; import io.github.jpmorganchase.fusion.model.Dataset; import io.github.jpmorganchase.fusion.model.Report; import java.net.URL; @@ -44,7 +45,7 @@ public void testDatasetSerializesCorrectly() { .varArg("isRestricted", Boolean.FALSE) .varArg("isRawData", Boolean.FALSE) .varArg("hasSample", Boolean.FALSE) - .type("Report") + .applicationId(Application.builder().sealId("12345").build()) .report(Report.builder().tier("Tier 1").build()) .apiManager(Mockito.mock(APIManager.class)) .rootUrl("http://foo/bar") diff --git a/src/test/resources/__files/dataset/dataset-report-SR0001-create-request.json b/src/test/resources/__files/dataset/dataset-report-SR0001-create-request.json index 9ffb9e8..ca89ce1 100644 --- a/src/test/resources/__files/dataset/dataset-report-SR0001-create-request.json +++ b/src/test/resources/__files/dataset/dataset-report-SR0001-create-request.json @@ -32,6 +32,10 @@ "hasSample": false, "isRestricted": false, "type": "Report", + "applicationId": { + "id": "12345", + "idType": "SEAL" + }, "report": { "tier": "Tier 1" } diff --git a/src/test/resources/__files/dataset/dataset-report-SR0001-update-request.json b/src/test/resources/__files/dataset/dataset-report-SR0001-update-request.json index cc2a028..675a825 100644 --- a/src/test/resources/__files/dataset/dataset-report-SR0001-update-request.json +++ b/src/test/resources/__files/dataset/dataset-report-SR0001-update-request.json @@ -32,6 +32,10 @@ "hasSample": false, "@id": "SR0001/", "type": "Report", + "applicationId": { + "id": "12345", + "idType": "SEAL" + }, "report": { "tier": "Tier 1" } diff --git a/src/test/resources/__files/dataset/multiple-dataset-response.json b/src/test/resources/__files/dataset/multiple-dataset-response.json index 730348d..228d944 100644 --- a/src/test/resources/__files/dataset/multiple-dataset-response.json +++ b/src/test/resources/__files/dataset/multiple-dataset-response.json @@ -143,6 +143,10 @@ "hasSample": false, "@id": "SR0001/", "type": "Report", + "applicationId": { + "id": "12345", + "idType": "SEAL" + }, "report": { "tier": "Tier 1" } diff --git a/src/test/resources/io/github/jpmorganchase/fusion/parsing/multiple-dataset-report-response.json b/src/test/resources/io/github/jpmorganchase/fusion/parsing/multiple-dataset-report-response.json index 434405e..a53e749 100644 --- a/src/test/resources/io/github/jpmorganchase/fusion/parsing/multiple-dataset-report-response.json +++ b/src/test/resources/io/github/jpmorganchase/fusion/parsing/multiple-dataset-report-response.json @@ -41,6 +41,10 @@ "hasSample": false, "@id": "SR0001/", "type": "Report", + "applicationId": { + "id": "12345", + "idType": "SEAL" + }, "report": { "tier": "Tier 1" } @@ -79,6 +83,10 @@ "hasSample": false, "@id": "SR0002/", "type": "Report", + "applicationId": { + "id": "12345", + "idType": "SEAL" + }, "report": { "tier": "Tier 2" } @@ -117,6 +125,10 @@ "hasSample": false, "@id": "SR0003/", "type": "Report", + "applicationId": { + "id": "12345", + "idType": "SEAL" + }, "report": { "tier": "Tier 3" } diff --git a/src/test/resources/io/github/jpmorganchase/fusion/parsing/single-dataset-report-response.json b/src/test/resources/io/github/jpmorganchase/fusion/parsing/single-dataset-report-response.json index 4b16b72..2b1f577 100644 --- a/src/test/resources/io/github/jpmorganchase/fusion/parsing/single-dataset-report-response.json +++ b/src/test/resources/io/github/jpmorganchase/fusion/parsing/single-dataset-report-response.json @@ -41,6 +41,10 @@ "hasSample": false, "@id": "SR0001/", "type": "Report", + "applicationId": { + "id": "12345", + "idType": "SEAL" + }, "report": { "tier": "Tier 1" } diff --git a/src/test/resources/io/github/jpmorganchase/fusion/serializing/dataset-request.json b/src/test/resources/io/github/jpmorganchase/fusion/serializing/dataset-request.json index fce914d..3c06e29 100644 --- a/src/test/resources/io/github/jpmorganchase/fusion/serializing/dataset-request.json +++ b/src/test/resources/io/github/jpmorganchase/fusion/serializing/dataset-request.json @@ -1 +1 @@ -{"description":"Sample dataset description 1","@id":"SD0001/","title":"Sample Dataset 1 | North America","frequency":"Daily","identifier":"SD0001","type":"Report","report":{"tier":"Tier 1"},"subCategory":["Subcategory 1"],"isRawData":false,"isInternalOnlyDataset":false,"language":"English","source":["Source System 1"],"coverageEndDate":"2023-03-08","maintainer":"Maintainer 1","coverageStartDate":"2022-02-05","createdDate":"2022-02-05","isThirdPartyData":false,"modifiedDate":"2023-03-08","publisher":"Publisher 1","tag":["Tag1"],"category":["Category 1"],"region":["North America"],"hasSample":false,"isRestricted":false} \ No newline at end of file +{"description":"Sample dataset description 1","@id":"SD0001/","title":"Sample Dataset 1 | North America","frequency":"Daily","identifier":"SD0001","type":"Report","report":{"tier":"Tier 1"},"applicationId":{"id":"12345","idType":"SEAL"},"subCategory":["Subcategory 1"],"isRawData":false,"isInternalOnlyDataset":false,"language":"English","source":["Source System 1"],"coverageEndDate":"2023-03-08","maintainer":"Maintainer 1","coverageStartDate":"2022-02-05","createdDate":"2022-02-05","isThirdPartyData":false,"modifiedDate":"2023-03-08","publisher":"Publisher 1","tag":["Tag1"],"category":["Category 1"],"region":["North America"],"hasSample":false,"isRestricted":false} \ No newline at end of file