Skip to content

Package: TranslatorAppAssetKapuaKura

TranslatorAppAssetKapuaKura

nameinstructionbranchcomplexitylinemethod
TranslatorAppAssetKapuaKura()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
getClassFrom()
M: 2 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
getClassTo()
M: 2 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
lambda$null$0(KuraAsset, DeviceAssetChannel)
M: 34 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 8 C: 0
0%
M: 1 C: 0
0%
lambda$translatePayload$1(KuraAssets, DeviceAsset)
M: 19 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 5 C: 0
0%
M: 1 C: 0
0%
translateChannel(AssetRequestChannel)
M: 41 C: 0
0%
M: 4 C: 0
0%
M: 3 C: 0
0%
M: 11 C: 0
0%
M: 1 C: 0
0%
translatePayload(AssetRequestPayload)
M: 77 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 22 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2016, 2022 Eurotech and/or its affiliates and others
3: *
4: * This program and the accompanying materials are made
5: * available under the terms of the Eclipse Public License 2.0
6: * which is available at https://www.eclipse.org/legal/epl-2.0/
7: *
8: * SPDX-License-Identifier: EPL-2.0
9: *
10: * Contributors:
11: * Eurotech - initial API and implementation
12: *******************************************************************************/
13: package org.eclipse.kapua.translator.kapua.kura;
14:
15: import com.fasterxml.jackson.core.JsonGenerator;
16: import com.fasterxml.jackson.databind.ObjectMapper;
17: import org.eclipse.kapua.service.device.call.kura.model.asset.AssetMetrics;
18: import org.eclipse.kapua.service.device.call.kura.model.asset.KuraAsset;
19: import org.eclipse.kapua.service.device.call.kura.model.asset.KuraAssetChannel;
20: import org.eclipse.kapua.service.device.call.kura.model.asset.KuraAssets;
21: import org.eclipse.kapua.service.device.call.message.kura.app.request.KuraRequestChannel;
22: import org.eclipse.kapua.service.device.call.message.kura.app.request.KuraRequestMessage;
23: import org.eclipse.kapua.service.device.call.message.kura.app.request.KuraRequestPayload;
24: import org.eclipse.kapua.service.device.management.asset.DeviceAssets;
25: import org.eclipse.kapua.service.device.management.asset.message.internal.AssetRequestChannel;
26: import org.eclipse.kapua.service.device.management.asset.message.internal.AssetRequestMessage;
27: import org.eclipse.kapua.service.device.management.asset.message.internal.AssetRequestPayload;
28: import org.eclipse.kapua.translator.exception.InvalidChannelException;
29: import org.eclipse.kapua.translator.exception.InvalidPayloadException;
30: import org.xml.sax.SAXException;
31:
32: import javax.xml.bind.JAXBException;
33: import java.io.IOException;
34: import java.io.StringWriter;
35: import java.io.UnsupportedEncodingException;
36: import java.util.Date;
37:
38: /**
39: * {@link org.eclipse.kapua.translator.Translator} implementation from {@link AssetRequestMessage} to {@link KuraRequestMessage}
40: *
41: * @since 1.0.0
42: */
43: public class TranslatorAppAssetKapuaKura extends AbstractTranslatorKapuaKura<AssetRequestChannel, AssetRequestPayload, AssetRequestMessage> {
44:
45: @Override
46: protected KuraRequestChannel translateChannel(AssetRequestChannel kapuaChannel) throws InvalidChannelException {
47: try {
48: KuraRequestChannel kuraRequestChannel = TranslatorKapuaKuraUtils.buildBaseRequestChannel(AssetMetrics.APP_ID, AssetMetrics.APP_VERSION, kapuaChannel.getMethod());
49:
50: // Build resources
51: String[] resources = new String[1];
52:• if (kapuaChannel.isRead()) {
53: resources[0] = "read";
54:• } else if (kapuaChannel.isWrite()) {
55: resources[0] = "write";
56: } else {
57: resources[0] = "assets";
58: }
59: kuraRequestChannel.setResources(resources);
60:
61: // Return Kura Channel
62: return kuraRequestChannel;
63: } catch (Exception e) {
64: throw new InvalidChannelException(e, kapuaChannel);
65: }
66: }
67:
68: @Override
69: protected KuraRequestPayload translatePayload(AssetRequestPayload kapuaPayload) throws InvalidPayloadException {
70: try {
71: DeviceAssets deviceAssets;
72: try {
73: deviceAssets = kapuaPayload.getDeviceAssets();
74: } catch (UnsupportedEncodingException | JAXBException | SAXException e) {
75: throw new InvalidPayloadException(e, kapuaPayload);
76: }
77:
78:• if (deviceAssets.getAssets().isEmpty()) {
79: return new KuraRequestPayload();
80: }
81:
82: KuraAssets kuraAssets = new KuraAssets();
83: deviceAssets.getAssets().forEach(deviceAsset -> {
84: KuraAsset kuraAsset = new KuraAsset();
85: kuraAsset.setName(deviceAsset.getName());
86: deviceAsset.getChannels().forEach(deviceAssetChannel -> {
87: KuraAssetChannel kuraAssetChannel = new KuraAssetChannel();
88: kuraAssetChannel.setName(deviceAssetChannel.getName());
89: kuraAssetChannel.setType(deviceAssetChannel.getType());
90: kuraAssetChannel.setValue(deviceAssetChannel.getValue());
91:
92: Date timestamp = deviceAssetChannel.getTimestamp();
93:• kuraAssetChannel.setTimestamp(timestamp != null ? timestamp.getTime() : null);
94:
95: kuraAsset.getChannels().add(kuraAssetChannel);
96: });
97: kuraAssets.getAssets().add(kuraAsset);
98: });
99:
100: KuraRequestPayload kuraRequestPayload = new KuraRequestPayload();
101: try (StringWriter sw = new StringWriter()) {
102: ObjectMapper mapper = new ObjectMapper();
103:
104: try (JsonGenerator jsonGenerator = mapper.getFactory().createGenerator(sw)) {
105: kuraAssets.writeJsonNode(jsonGenerator);
106: }
107:
108: kuraRequestPayload.setBody(sw.toString().getBytes());
109: } catch (IOException e) {
110: throw new InvalidPayloadException(e, kapuaPayload);
111: }
112:
113: return kuraRequestPayload;
114: } catch (InvalidPayloadException ipe) {
115: throw ipe;
116: } catch (Exception e) {
117: throw new InvalidPayloadException(e, kapuaPayload);
118: }
119: }
120:
121: @Override
122: public Class<AssetRequestMessage> getClassFrom() {
123: return AssetRequestMessage.class;
124: }
125:
126: @Override
127: public Class<KuraRequestMessage> getClassTo() {
128: return KuraRequestMessage.class;
129: }
130: }