Skip to content

Commit

Permalink
fix/63-ArrayMerge
Browse files Browse the repository at this point in the history
  • Loading branch information
Martin0815bla committed Nov 29, 2023
1 parent 84e946b commit 38e0a05
Show file tree
Hide file tree
Showing 5 changed files with 246 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -878,8 +878,8 @@ private static void mergeArrays(ArrayNode target, ArrayNode source) {

for (int i = 0; i < sourceLength; i++) {
// target shorter than source?
if (targetLength < i) {
target.add(source);
if (targetLength < i + 1) {
target.add(source.get(i));
return;
}
JsonNode targetElement = target.get(i);
Expand All @@ -891,7 +891,7 @@ private static void mergeArrays(ArrayNode target, ArrayNode source) {
// Recursively merge arrays
mergeArrays((ArrayNode) targetElement, (ArrayNode) sourceElement);
} else {
target.add(source);
target.set(i, source.get(i));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package org.eclipse.tractusx.agents.remoting;

import static org.junit.jupiter.api.Assertions.assertEquals;

import java.io.IOException;
import java.io.InputStream;

import org.junit.jupiter.api.Test;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;

public class MergeObjectNodesTest {

private final ObjectMapper objectMapper = new ObjectMapper();

@Test
public void testMerge() throws Exception {

// Load input resources
JsonNode input1 = loadJsonResource("MergeObjectNodesIn1.json");
JsonNode input2 = loadJsonResource("MergeObjectNodesIn2.json");

// Load expected result resource
JsonNode expectedResult = loadJsonResource("MergeObjectNodesResult.json");

// Invoke merge method with the input resources
input1 = Invocation.mergeObjectNodes((ObjectNode)input1, (ObjectNode)input2);

// Assert the result against the expected result
assertEquals(expectedResult, input1);
}

private JsonNode loadJsonResource(String resourceName) throws IOException {
// Use the class loader to load the resource
ClassLoader classLoader = getClass().getClassLoader();
try (InputStream inputStream = classLoader.getResourceAsStream(resourceName)) {

// Parse JSON content into ObjectNode
return objectMapper.readTree(inputStream);
}
}

}
83 changes: 83 additions & 0 deletions remoting/src/test/resources/MergeObjectNodesIn1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
{
"Koepfchen in das Wasser":"Schwänzchen in die Höh",
"content":{
"endurancePredictorInputs":[
{
"alle":"meine Entchen",
"classifiedLoadSpectrumGearSet":{
"schwimmen":"auf dem See",
"metadata":{
"projectDescription":"pnr_76543",
"routeDescription":"logged",
"status":{
"mileage":865432,
"operatingHours":32137.9,
"date":"2023-02-28T01:27:20.020Z"
},
"componentDescription":"GearSet"
},
"bammId":"urn:bamm:io.openmanufacturing.digitaltwin:1.0.0#ClassifiedLoadSpectrum",
"targetComponentId":"urn:uuid:2",
"header":{
"countingMethod":"TimeAtLevel",
"countingValue":"Time",
"channels":[
{
"channelName":"TC_SU",
"unit":"unit:degreeCelsius",
"lowerLimit":0,
"upperLimit":640,
"numberOfBins":128
}
],
"countingUnit":"unit:secondUnitOfTime"
},
"body":{
"counts":{
"countsName":"Time",
"countsList":[
34968.93,
739782.51,
4013185.15,
4.675505556E7,
2.526895835E7,
8649735.95,
9383635.35,
1.918926077E7,
1353867.54
]
},
"classes":[
{
"className":"TC_SU-class",
"classList":[
14,
15,
16,
17,
18,
19,
20,
21,
22
]
}
]
}
},
"componentId":"urn:uuid:2"
}
]
},
"header":{
"classification":"RemainingUsefulLifePredictor",
"targetDate":"2042-04-06T05:53:40.040Z",
"timeStamp":"2022-12-03T02:09:20.020Z",
"senderBPN":"bpn:legal:BPNLOEM",
"severity":"MINOR",
"recipientBPN":"bpn:legal:BPNLSUPPLIER",
"senderAddress":"edc://sender",
"status":"SENT",
"recipientAddress":"edc://recipient"
}
}
31 changes: 31 additions & 0 deletions remoting/src/test/resources/MergeObjectNodesIn2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"Koepfchen in das Wasser":"Schwänzchen in die Höh",
"content":{
"endurancePredictorInputs":[
{
"alle":"meine Entchen",
"classifiedLoadSpectrumGearSet":{
"schwimmen":"auf dem See",
"body":{
"counts":{
"countsName":"Time",
"countsList": [
4711.0815,
739782.51,
4013185.15,
4.675505556E7,
2.526895835E7,
8649735.95,
9383635.35,
1.918926077E7,
1353867.54,
123.456
]
}
}
}

}
]
}
}
84 changes: 84 additions & 0 deletions remoting/src/test/resources/MergeObjectNodesResult.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
{
"Koepfchen in das Wasser":"Schwänzchen in die Höh",
"content":{
"endurancePredictorInputs":[
{
"alle":"meine Entchen",
"classifiedLoadSpectrumGearSet":{
"schwimmen":"auf dem See",
"metadata":{
"projectDescription":"pnr_76543",
"routeDescription":"logged",
"status":{
"mileage":865432,
"operatingHours":32137.9,
"date":"2023-02-28T01:27:20.020Z"
},
"componentDescription":"GearSet"
},
"bammId":"urn:bamm:io.openmanufacturing.digitaltwin:1.0.0#ClassifiedLoadSpectrum",
"targetComponentId":"urn:uuid:2",
"header":{
"countingMethod":"TimeAtLevel",
"countingValue":"Time",
"channels":[
{
"channelName":"TC_SU",
"unit":"unit:degreeCelsius",
"lowerLimit":0,
"upperLimit":640,
"numberOfBins":128
}
],
"countingUnit":"unit:secondUnitOfTime"
},
"body":{
"counts":{
"countsName":"Time",
"countsList":[
4711.0815,
739782.51,
4013185.15,
4.675505556E7,
2.526895835E7,
8649735.95,
9383635.35,
1.918926077E7,
1353867.54,
123.456
]
},
"classes":[
{
"className":"TC_SU-class",
"classList":[
14,
15,
16,
17,
18,
19,
20,
21,
22
]
}
]
}
},
"componentId":"urn:uuid:2"
}
]
},
"header":{
"classification":"RemainingUsefulLifePredictor",
"targetDate":"2042-04-06T05:53:40.040Z",
"timeStamp":"2022-12-03T02:09:20.020Z",
"senderBPN":"bpn:legal:BPNLOEM",
"severity":"MINOR",
"recipientBPN":"bpn:legal:BPNLSUPPLIER",
"senderAddress":"edc://sender",
"status":"SENT",
"recipientAddress":"edc://recipient"
}
}

0 comments on commit 38e0a05

Please sign in to comment.