com.arm.mbed.cloud.sdk.connect.adapters.ResourceAdapter Maven / Gradle / Ivy
package com.arm.mbed.cloud.sdk.connect.adapters;
import java.util.List;
import com.arm.mbed.cloud.sdk.annotations.Preamble;
import com.arm.mbed.cloud.sdk.common.GenericAdapter;
import com.arm.mbed.cloud.sdk.common.GenericAdapter.Mapper;
import com.arm.mbed.cloud.sdk.common.TranslationUtils;
import com.arm.mbed.cloud.sdk.connect.model.Resource;
import com.arm.mbed.cloud.sdk.lowlevel.pelionclouddevicemanagement.model.ResourcesData;
@Preamble(description = "Adapter for resource model")
public final class ResourceAdapter {
private ResourceAdapter() {
super();
}
/**
* Maps a resource.
*
* @param resourceData
* resource data.
* @param deviceId
* device id of the device containing the resource
* @return mapped resource
*/
public static Resource map(ResourcesData resourceData, String deviceId) {
if (resourceData == null) {
return null;
}
return new Resource(deviceId, resourceData.getPath(), resourceData.getRt(), resourceData.getCt(),
TranslationUtils.toBool(resourceData.isObs(), false), resourceData.getIf());
}
/**
* Maps a resource.
*
* @param deviceId
* device id of the device containing the resource
* @param apiResource
* resource to map
* @return mapped resource
*/
public static Resource map(String deviceId,
com.arm.mbed.cloud.sdk.lowlevel.pelionclouddevicemanagement.model.Resource apiResource) {
if (apiResource == null || deviceId == null || deviceId.isEmpty()) {
return null;
}
return new Resource(deviceId, apiResource.getUri(), apiResource.getRt(), apiResource.getType(),
TranslationUtils.toBool(apiResource.isObs(), false), null);
}
/**
* Gets a mapper.
*
* @param deviceId
* device id of the device containing the resource
* @return a mapper for this device.
*/
public static Mapper getResourceDataMapper(String deviceId) {
final String immutableDeviceId = deviceId;
return new Mapper() {
@Override
public Resource map(ResourcesData toBeMapped) {
return ResourceAdapter.map(toBeMapped, immutableDeviceId);
}
};
}
/**
* Maps a list of resources.
*
* @param deviceId
* device id of the device containing the resources
* @param list
* resource data
* @return list of resources
*/
public static List mapResourceDataList(String deviceId, List list) {
return GenericAdapter.mapList(list, getResourceDataMapper(deviceId));
}
/**
* Gets a mapper.
*
* @param deviceId
* device id of the device containing the resource
* @return a mapper for this device.
*/
public static Mapper
getMapper(String deviceId) {
final String immutableDeviceId = deviceId;
return new Mapper() {
@Override
public Resource map(com.arm.mbed.cloud.sdk.lowlevel.pelionclouddevicemanagement.model.Resource toBeMapped) {
return ResourceAdapter.map(immutableDeviceId, toBeMapped);
}
};
}
/**
* Maps a list of resources.
*
* @param deviceId
* device id of the device containing the resources
* @param list
* resource page
* @return list of resources
*/
public static List
mapList(String deviceId,
List list) {
return GenericAdapter.mapList(list, getMapper(deviceId));
}
/**
* Gets list mapper.
*
* @param deviceId
* device id of the device containing the resources
* @return a list mapper
*/
public static
Mapper, List>
getListMapper(String deviceId) {
final String immutableDeviceId = deviceId;
return new Mapper,
List>() {
@Override
public List
map(List toBeMapped) {
return ResourceAdapter.mapList(immutableDeviceId, toBeMapped);
}
};
}
}