diff --git a/pom.xml b/pom.xml
index 26aea4c..436ad64 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,6 +45,9 @@
37.0.0
powsybl/java-dynawo:2.2.0
org.gridsuite.dynamicsecurityanalysis.server
+
+
+ 1.23.0-SNAPSHOT
@@ -84,7 +87,12 @@
-
+
+
+ com.powsybl
+ powsybl-ws-commons
+ ${powsybl-ws-commons.version}
+
org.gridsuite
diff --git a/src/main/java/org/gridsuite/dynamicsecurityanalysis/server/service/ParametersService.java b/src/main/java/org/gridsuite/dynamicsecurityanalysis/server/service/ParametersService.java
index 50ad261..cfa73a0 100644
--- a/src/main/java/org/gridsuite/dynamicsecurityanalysis/server/service/ParametersService.java
+++ b/src/main/java/org/gridsuite/dynamicsecurityanalysis/server/service/ParametersService.java
@@ -16,6 +16,7 @@
import com.powsybl.dynawo.suppliers.dynamicmodels.DynamicModelConfig;
import com.powsybl.security.dynamic.DynamicSecurityAnalysisParameters;
import com.powsybl.ws.commons.computation.dto.ReportInfos;
+import com.powsybl.ws.commons.utils.GZipUtils;
import jakarta.transaction.Transactional;
import org.gridsuite.dynamicsecurityanalysis.server.DynamicSecurityAnalysisException;
import org.gridsuite.dynamicsecurityanalysis.server.dto.parameters.DynamicSecurityAnalysisParametersInfos;
@@ -104,7 +105,7 @@ private Path unZipDumpFile(Path dumpDir, byte[] zippedOutputState) {
Path dumpFile = dumpDir.resolve("outputState.dmp");
try {
// UNZIP output state
- Utils.unzip(zippedOutputState, dumpFile);
+ GZipUtils.unzip(zippedOutputState, dumpFile);
} catch (IOException e) {
throw new DynamicSecurityAnalysisException(DUMP_FILE_ERROR, String.format("Error occurred while unzip the output state into a dump file in the directory %s",
dumpDir.toAbsolutePath()));
@@ -115,7 +116,7 @@ private Path unZipDumpFile(Path dumpDir, byte[] zippedOutputState) {
public List unZipDynamicModel(byte[] dynamicSimulationZippedDynamicModel, ObjectMapper objectMapper) {
try {
// unzip dynamic model
- List dynamicModel = Utils.unzip(dynamicSimulationZippedDynamicModel, objectMapper, new TypeReference<>() { });
+ List dynamicModel = GZipUtils.unzip(dynamicSimulationZippedDynamicModel, objectMapper, new TypeReference<>() { });
Utils.postDeserializerDynamicModel(dynamicModel);
return dynamicModel;
} catch (IOException e) {
@@ -126,7 +127,7 @@ public List unZipDynamicModel(byte[] dynamicSimulationZipped
public DynamicSimulationParameters unZipDynamicSimulationParameters(byte[] dynamicSimulationZippedParameters, ObjectMapper objectMapper) {
try {
// unzip dynamic model
- return Utils.unzip(dynamicSimulationZippedParameters, objectMapper, DynamicSimulationParameters.class);
+ return GZipUtils.unzip(dynamicSimulationZippedParameters, objectMapper, DynamicSimulationParameters.class);
} catch (IOException e) {
throw new DynamicSecurityAnalysisException(DYNAMIC_SIMULATION_PARAMETERS_ERROR, "Error occurred while unzip the dynamic simulation parameters");
}
diff --git a/src/main/java/org/gridsuite/dynamicsecurityanalysis/server/utils/Utils.java b/src/main/java/org/gridsuite/dynamicsecurityanalysis/server/utils/Utils.java
index 2927748..3cf5e2b 100644
--- a/src/main/java/org/gridsuite/dynamicsecurityanalysis/server/utils/Utils.java
+++ b/src/main/java/org/gridsuite/dynamicsecurityanalysis/server/utils/Utils.java
@@ -7,8 +7,6 @@
package org.gridsuite.dynamicsecurityanalysis.server.utils;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
import com.powsybl.commons.report.ReportNode;
import com.powsybl.dynawo.suppliers.Property;
import com.powsybl.dynawo.suppliers.dynamicmodels.DynamicModelConfig;
@@ -16,13 +14,9 @@
import jakarta.annotation.Nullable;
import jakarta.validation.constraints.NotNull;
-import java.io.*;
-import java.nio.file.Path;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.List;
-import java.util.zip.GZIPInputStream;
-import java.util.zip.GZIPOutputStream;
/**
* @author Thang PHAM
@@ -56,51 +50,6 @@ public static void postDeserializerDynamicModel(List dynamic
}));
}
- public static byte[] zip(InputStream is) throws IOException {
- try (ByteArrayOutputStream os = new ByteArrayOutputStream();
- GZIPOutputStream zipOs = new GZIPOutputStream(os)) {
- byte[] buffer = new byte[1024];
- int length;
- while ((length = is.read(buffer)) > 0) {
- zipOs.write(buffer, 0, length);
- }
- zipOs.finish();
- return os.toByteArray();
- }
- }
-
- private static void unzipToStream(byte[] zippedBytes, OutputStream outputStream) throws IOException {
- try (ByteArrayInputStream is = new ByteArrayInputStream(zippedBytes);
- GZIPInputStream zipIs = new GZIPInputStream(is);
- BufferedOutputStream bufferedOut = new BufferedOutputStream(outputStream)) {
- byte[] buffer = new byte[1024];
- int length;
- while ((length = zipIs.read(buffer)) > 0) {
- bufferedOut.write(buffer, 0, length);
- }
- }
- }
-
- public static void unzip(byte[] zippedBytes, Path filePath) throws IOException {
- try (FileOutputStream fos = new FileOutputStream(new File(filePath.toUri()))) {
- unzipToStream(zippedBytes, fos);
- }
- }
-
- public static T unzip(byte[] zippedBytes, ObjectMapper objectMapper, TypeReference valueTypeRef) throws IOException {
- try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
- unzipToStream(zippedBytes, bos);
- return objectMapper.readValue(bos.toByteArray(), valueTypeRef);
- }
- }
-
- public static T unzip(byte[] zippedBytes, ObjectMapper objectMapper, Class valueType) throws IOException {
- try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
- unzipToStream(zippedBytes, bos);
- return objectMapper.readValue(bos.toByteArray(), valueType);
- }
- }
-
/**
* lookup the first report node in the report hierarchy which is matched a given key and a given message
* @param rootNode a given node at whatever level
diff --git a/src/test/java/org/gridsuite/dynamicsecurityanalysis/server/controller/DynamicSecurityAnalysisControllerIEEE14Test.java b/src/test/java/org/gridsuite/dynamicsecurityanalysis/server/controller/DynamicSecurityAnalysisControllerIEEE14Test.java
index e73a025..bac50a0 100644
--- a/src/test/java/org/gridsuite/dynamicsecurityanalysis/server/controller/DynamicSecurityAnalysisControllerIEEE14Test.java
+++ b/src/test/java/org/gridsuite/dynamicsecurityanalysis/server/controller/DynamicSecurityAnalysisControllerIEEE14Test.java
@@ -15,6 +15,7 @@
import com.powsybl.iidm.network.Network;
import com.powsybl.iidm.network.VariantManagerConstants;
import com.powsybl.network.store.client.PreloadingStrategy;
+import com.powsybl.ws.commons.utils.GZipUtils;
import org.gridsuite.dynamicsecurityanalysis.server.dto.DynamicSecurityAnalysisStatus;
import org.gridsuite.dynamicsecurityanalysis.server.dto.contingency.ContingencyInfos;
import org.gridsuite.dynamicsecurityanalysis.server.dto.parameters.DynamicSecurityAnalysisParametersInfos;
@@ -37,7 +38,6 @@
import static com.powsybl.ws.commons.computation.service.NotificationService.HEADER_USER_ID;
import static org.assertj.core.api.Assertions.assertThat;
import static org.gridsuite.dynamicsecurityanalysis.server.utils.Utils.RESOURCE_PATH_DELIMITER;
-import static org.gridsuite.dynamicsecurityanalysis.server.utils.Utils.zip;
import static org.mockito.ArgumentMatchers.anyList;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.BDDMockito.given;
@@ -106,7 +106,7 @@ protected void initDynamicSimulationClientMock() {
String dynamicModelFilePath = inputDir + RESOURCE_PATH_DELIMITER + DYNAMIC_MODEL_DUMP_FILE;
InputStream dynamicModelIS = getClass().getResourceAsStream(dynamicModelFilePath);
assert dynamicModelIS != null;
- byte[] zippedDynamicModel = zip(dynamicModelIS);
+ byte[] zippedDynamicModel = GZipUtils.zip(dynamicModelIS);
given(dynamicSimulationClient.getDynamicModel(DYNAMIC_SIMULATION_RESULT_UUID)).willReturn(zippedDynamicModel);
@@ -114,7 +114,7 @@ protected void initDynamicSimulationClientMock() {
String dynamicSimulationParametersFilePath = inputDir + RESOURCE_PATH_DELIMITER + DYNAMIC_SIMULATION_PARAMETERS_DUMP_FILE;
InputStream dynamicSimulationParametersIS = getClass().getResourceAsStream(dynamicSimulationParametersFilePath);
assert dynamicSimulationParametersIS != null;
- byte[] zippedDynamicSimulationParameters = zip(dynamicSimulationParametersIS);
+ byte[] zippedDynamicSimulationParameters = GZipUtils.zip(dynamicSimulationParametersIS);
given(dynamicSimulationClient.getDynamicSimulationParameters(DYNAMIC_SIMULATION_RESULT_UUID)).willReturn(zippedDynamicSimulationParameters);
diff --git a/src/test/java/org/gridsuite/dynamicsecurityanalysis/server/controller/DynamicSecurityAnalysisControllerTest.java b/src/test/java/org/gridsuite/dynamicsecurityanalysis/server/controller/DynamicSecurityAnalysisControllerTest.java
index cda3c5e..e378b94 100644
--- a/src/test/java/org/gridsuite/dynamicsecurityanalysis/server/controller/DynamicSecurityAnalysisControllerTest.java
+++ b/src/test/java/org/gridsuite/dynamicsecurityanalysis/server/controller/DynamicSecurityAnalysisControllerTest.java
@@ -20,6 +20,7 @@
import com.powsybl.security.results.PostContingencyResult;
import com.powsybl.security.results.PreContingencyResult;
import com.powsybl.ws.commons.computation.service.NotificationService;
+import com.powsybl.ws.commons.utils.GZipUtils;
import org.gridsuite.dynamicsecurityanalysis.server.dto.DynamicSecurityAnalysisStatus;
import org.gridsuite.dynamicsecurityanalysis.server.dto.contingency.ContingencyInfos;
import org.gridsuite.dynamicsecurityanalysis.server.dto.parameters.DynamicSecurityAnalysisParametersInfos;
@@ -47,10 +48,10 @@
import static com.powsybl.network.store.model.NetworkStoreApi.VERSION;
import static com.powsybl.ws.commons.computation.service.AbstractResultContext.VARIANT_ID_HEADER;
import static com.powsybl.ws.commons.computation.service.NotificationService.*;
+import static com.powsybl.ws.commons.utils.GZipUtils.zip;
import static org.assertj.core.api.Assertions.assertThat;
import static org.gridsuite.dynamicsecurityanalysis.server.service.DynamicSecurityAnalysisService.COMPUTATION_TYPE;
import static org.gridsuite.dynamicsecurityanalysis.server.utils.Utils.RESOURCE_PATH_DELIMITER;
-import static org.gridsuite.dynamicsecurityanalysis.server.utils.Utils.zip;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.*;
@@ -112,7 +113,7 @@ protected void initDynamicSimulationClientMock() {
String outputStateFilePath = inputDir + RESOURCE_PATH_DELIMITER + OUTPUT_STATE_DUMP_GZIP_FILE;
InputStream outputStateIS = getClass().getResourceAsStream(outputStateFilePath);
assert outputStateIS != null;
- byte[] zippedOutputState = zip(outputStateIS);
+ byte[] zippedOutputState = GZipUtils.zip(outputStateIS);
given(dynamicSimulationClient.getOutputState(DYNAMIC_SIMULATION_RESULT_UUID)).willReturn(zippedOutputState);