diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..e0f15db2 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic" +} \ No newline at end of file diff --git a/sdm/src/test/java/integration/com/sap/cds/sdm/Api.java b/sdm/src/test/java/integration/com/sap/cds/sdm/Api.java index b8f92136..a16d520d 100644 --- a/sdm/src/test/java/integration/com/sap/cds/sdm/Api.java +++ b/sdm/src/test/java/integration/com/sap/cds/sdm/Api.java @@ -1113,6 +1113,59 @@ public List> fetchEntityMetadataDraft( } } + @Override + public String downloadSelectedAttachments( + String appUrl, String entityName, String facetName, String entityID, List ids) + throws IOException { + String url = + "https://" + + appUrl + + "/odata/v4/" + + serviceName + + "/" + + entityName + + "(ID=" + + entityID + + ",IsActiveEntity=true)" + + "/" + + facetName + + "(up__ID=" + + entityID + + ",ID=" + + ids.get(0) + + ",IsActiveEntity=true)" + + "/" + + serviceName + + ".downloadSelectedAttachments"; + + String idsParam = String.join(",", ids); + String jsonPayload = "{\"ids\": \"" + idsParam + "\"}"; + + RequestBody body = RequestBody.create(MediaType.parse("application/json"), jsonPayload); + + Request request = + new Request.Builder().url(url).post(body).addHeader("Authorization", token).build(); + + try (Response response = executeWithRetry(request)) { + if (!response.isSuccessful()) { + throw new IOException( + "Could not download attachments: " + + response.code() + + " - " + + response.body().string()); + } + String responseBody = response.body().string(); + Map responseMap = objectMapper.readValue(responseBody, Map.class); + if (responseMap.containsKey("value")) { + return responseMap.get("value").toString(); + } + return responseBody; + } catch (IOException e) { + System.out.println("Error while downloading attachments: " + e.getMessage()); + throw new IOException(e); + } + } + public Map fetchChangelog( String appUrl, String entityName, String facetName, String entityID, String ID) throws IOException { diff --git a/sdm/src/test/java/integration/com/sap/cds/sdm/ApiInterface.java b/sdm/src/test/java/integration/com/sap/cds/sdm/ApiInterface.java index b41acae8..d15f1c09 100644 --- a/sdm/src/test/java/integration/com/sap/cds/sdm/ApiInterface.java +++ b/sdm/src/test/java/integration/com/sap/cds/sdm/ApiInterface.java @@ -118,6 +118,10 @@ public String openAttachment( String deleteEntityDraft(String appUrl, String entityName, String entityID); + public String downloadSelectedAttachments( + String appUrl, String entityName, String facetName, String entityID, List ids) + throws IOException; + public Map fetchChangelog( String appUrl, String entityName, String facetName, String entityID, String ID) throws IOException; diff --git a/sdm/src/test/java/integration/com/sap/cds/sdm/ApiMT.java b/sdm/src/test/java/integration/com/sap/cds/sdm/ApiMT.java index d4c380bc..99e0fa3b 100644 --- a/sdm/src/test/java/integration/com/sap/cds/sdm/ApiMT.java +++ b/sdm/src/test/java/integration/com/sap/cds/sdm/ApiMT.java @@ -1051,6 +1051,55 @@ public List> fetchEntityMetadataDraft( } } + @Override + public String downloadSelectedAttachments( + String appUrl, String entityName, String facetName, String entityID, List ids) + throws IOException { + String url = + "https://" + + appUrl + + "/api/admin/" + + entityName + + "(ID=" + + entityID + + ",IsActiveEntity=true)" + + "/" + + facetName + + "(up__ID=" + + entityID + + ",ID=" + + ids.get(0) + + ",IsActiveEntity=true)" + + "/AdminService.downloadSelectedAttachments"; + + String idsParam = String.join(",", ids); + String jsonPayload = "{\"ids\": \"" + idsParam + "\"}"; + + RequestBody body = RequestBody.create(MediaType.parse("application/json"), jsonPayload); + + Request request = + new Request.Builder().url(url).post(body).addHeader("Authorization", token).build(); + + try (Response response = executeWithRetry(request)) { + if (!response.isSuccessful()) { + throw new IOException( + "Could not download attachments: " + + response.code() + + " - " + + response.body().string()); + } + String responseBody = response.body().string(); + Map responseMap = objectMapper.readValue(responseBody, Map.class); + if (responseMap.containsKey("value")) { + return responseMap.get("value").toString(); + } + return responseBody; + } catch (IOException e) { + System.out.println("Error while downloading attachments: " + e.getMessage()); + throw new IOException(e); + } + } + public Map fetchChangelog( String appUrl, String entityName, String facetName, String entityID, String ID) throws IOException { diff --git a/sdm/src/test/java/integration/com/sap/cds/sdm/IntegrationTest_Chapters_MultipleFacet.java b/sdm/src/test/java/integration/com/sap/cds/sdm/IntegrationTest_Chapters_MultipleFacet.java index abf2b7f3..d3ad52ba 100644 --- a/sdm/src/test/java/integration/com/sap/cds/sdm/IntegrationTest_Chapters_MultipleFacet.java +++ b/sdm/src/test/java/integration/com/sap/cds/sdm/IntegrationTest_Chapters_MultipleFacet.java @@ -14,6 +14,7 @@ import java.util.stream.Collectors; import okhttp3.*; import okio.ByteString; +import org.json.JSONArray; import org.json.JSONObject; import org.junit.jupiter.api.*; diff --git a/sdm/src/test/java/integration/com/sap/cds/sdm/IntegrationTest_MultipleFacet.java b/sdm/src/test/java/integration/com/sap/cds/sdm/IntegrationTest_MultipleFacet.java index 08f04a51..80884e5d 100644 --- a/sdm/src/test/java/integration/com/sap/cds/sdm/IntegrationTest_MultipleFacet.java +++ b/sdm/src/test/java/integration/com/sap/cds/sdm/IntegrationTest_MultipleFacet.java @@ -14,6 +14,7 @@ import java.util.stream.Collectors; import okhttp3.*; import okio.ByteString; +import org.json.JSONArray; import org.json.JSONObject; import org.junit.jupiter.api.*; @@ -7118,4 +7119,5 @@ void testRenameAttachmentWithExtensionChange_BeforeSave() throws IOException { // // delete the draft entity // api.deleteEntityDraft(appUrl, entityName, testEntityID); // } + } diff --git a/sdm/src/test/java/integration/com/sap/cds/sdm/IntegrationTest_SingleFacet.java b/sdm/src/test/java/integration/com/sap/cds/sdm/IntegrationTest_SingleFacet.java index ab0dbee5..bb2f0798 100644 --- a/sdm/src/test/java/integration/com/sap/cds/sdm/IntegrationTest_SingleFacet.java +++ b/sdm/src/test/java/integration/com/sap/cds/sdm/IntegrationTest_SingleFacet.java @@ -14,6 +14,7 @@ import java.util.stream.Collectors; import okhttp3.*; import okio.ByteString; +import org.json.JSONArray; import org.json.JSONObject; import org.junit.jupiter.api.*; diff --git a/target/spotless-index b/target/spotless-index new file mode 100644 index 00000000..cf7df770 --- /dev/null +++ b/target/spotless-index @@ -0,0 +1 @@ +E1vGKgcMGeK1ECjHhzRTYcAK0E6t00+5of5G89Esy1A=