All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.arm.mbed.cloud.sdk.Update Maven / Gradle / Ivy

Go to download

The Pelion Cloud SDK (formerly known as Mbed Cloud SDK) provides a simplified interface to the Pelion Cloud APIs by exposing functionality using conventions and paradigms familiar to Java developers.

There is a newer version: 2.5.0
Show newest version
package com.arm.mbed.cloud.sdk;

import com.arm.mbed.cloud.sdk.annotations.API;
import com.arm.mbed.cloud.sdk.annotations.Internal;
import com.arm.mbed.cloud.sdk.annotations.Module;
import com.arm.mbed.cloud.sdk.annotations.NonNull;
import com.arm.mbed.cloud.sdk.annotations.Nullable;
import com.arm.mbed.cloud.sdk.annotations.Preamble;
import com.arm.mbed.cloud.sdk.common.AbstractApi;
import com.arm.mbed.cloud.sdk.common.CloudCaller;
import com.arm.mbed.cloud.sdk.common.CloudRequest.CloudCall;
import com.arm.mbed.cloud.sdk.common.ConnectionOptions;
import com.arm.mbed.cloud.sdk.common.MbedCloudException;
import com.arm.mbed.cloud.sdk.common.PageRequester;
import com.arm.mbed.cloud.sdk.common.listing.ListOptions;
import com.arm.mbed.cloud.sdk.common.listing.ListResponse;
import com.arm.mbed.cloud.sdk.common.listing.Paginator;
import com.arm.mbed.cloud.sdk.common.listing.filtering.FilterMarshaller;
import com.arm.mbed.cloud.sdk.internal.updateservice.model.CampaignDeviceMetadataPage;
import com.arm.mbed.cloud.sdk.internal.updateservice.model.FirmwareImagePage;
import com.arm.mbed.cloud.sdk.internal.updateservice.model.FirmwareManifestPage;
import com.arm.mbed.cloud.sdk.internal.updateservice.model.UpdateCampaign;
import com.arm.mbed.cloud.sdk.internal.updateservice.model.UpdateCampaignPage;
import com.arm.mbed.cloud.sdk.update.adapters.CampaignAdapter;
import com.arm.mbed.cloud.sdk.update.adapters.CampaignDeviceStateAdapter;
import com.arm.mbed.cloud.sdk.update.adapters.DataFileAdapter;
import com.arm.mbed.cloud.sdk.update.adapters.FirmwareImageAdapter;
import com.arm.mbed.cloud.sdk.update.adapters.FirmwareManifestAdapter;
import com.arm.mbed.cloud.sdk.update.model.Campaign;
import com.arm.mbed.cloud.sdk.update.model.CampaignDeviceState;
import com.arm.mbed.cloud.sdk.update.model.CampaignDevicesStatesListOptions;
import com.arm.mbed.cloud.sdk.update.model.CampaignListOptions;
import com.arm.mbed.cloud.sdk.update.model.CampaignState;
import com.arm.mbed.cloud.sdk.update.model.EndPoints;
import com.arm.mbed.cloud.sdk.update.model.FirmwareImage;
import com.arm.mbed.cloud.sdk.update.model.FirmwareImageListOptions;
import com.arm.mbed.cloud.sdk.update.model.FirmwareManifest;
import com.arm.mbed.cloud.sdk.update.model.FirmwareManifestListOptions;

import retrofit2.Call;

@Preamble(description = "Specifies Update API")
@Module
/**
 * API exposing functionality for dealing with updates
 */
public class Update extends AbstractApi {

    private static final String KEY_TABLE_PARAMETER = "key_table";
    private static final String TAG_CAMPAIGN_ID = "campaign id";
    private static final String TAG_CAMPAIGN = "campaign";
    private static final String TAG_FIRMWARE_MANIFEST_ID = "firmwareManifestId";
    private static final String TAG_FIRMWARE_MANIFEST = "manifest";
    private static final String TAG_FIRMWARE_IMAGE = "firmware image";
    private static final String TAG_FIRMWARE_IMAGE_ID = "firmwareImageId";
    private final EndPoints endpoint;

    /**
     * Update module constructor.
     *
     * @param options
     *            connection options @see {@link ConnectionOptions}.
     */
    public Update(@NonNull ConnectionOptions options) {
        super(options);
        endpoint = new EndPoints(this.client);
    }

    /**
     * Lists all firmware images according to filter options.
     * 

* Example: * *

     * {@code
     * try {
     *     FirmwareImageListOptions options = new FirmwareImageListOptions();
     *
     *     Calendar date = GregorianCalendar(2017,10,30,10,20,56);
     *     options.addCreatedAtFilter(date.getTime(), FilterOperator.GREATER_THAN);
     *
     *     options.addNameFilter("QuickstartImage", FilterOperator.EQUAL);
     *
     *     ListResponse images = updateApi.listFirmwareImages(options);
     *     for (FirmwareImage image : images) {
     *         System.out.println("Image ID: " + image.getId());
     *         URL url = image.getUrl();
     *     }
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param options * filter options. * @return The list of firmware images corresponding to filter options (One page). * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable ListResponse listFirmwareImages(@Nullable FirmwareImageListOptions options) throws MbedCloudException { final FirmwareImageListOptions finalOptions = (options == null) ? new FirmwareImageListOptions() : options; return CloudCaller.call(this, "listFirmwareImages()", FirmwareImageAdapter.getListMapper(), new CloudCall() { @Override public Call call() { return endpoint.getUpdate().firmwareImageList(finalOptions.getPageSize(), finalOptions.getOrder() .toString(), finalOptions.getAfter(), new FilterMarshaller(null).encode(finalOptions.getFilter()), finalOptions.encodeInclude()); } }); } /** * Gets an iterator over all firmware images according to filter options. *

* Example: * *

     * {@code
     * try {
     *     FirmwareImageListOptions options = new FirmwareImageListOptions();
     *
     *     Calendar date = GregorianCalendar(2017,10,30,10,20,56);
     *     options.addCreatedAtFilter(date.getTime(), FilterOperator.GREATER_THAN);
     *
     *     options.addNameFilter("QuickstartImage", FilterOperator.EQUAL);
     *
     *     Paginator images = updateApi.listAllFirmwareImages(options);
     *     while (images.hasNext()) {
     *         FirmwareImage image = images.next();
     *         System.out.println("FirmwareImage ID: " + image.getId());
     *     }
     *
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param options * filter options. * @return paginator @see {@link Paginator} for the list of firmware images corresponding to filter options. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable Paginator listAllFirmwareImages(@Nullable FirmwareImageListOptions options) throws MbedCloudException { return new Paginator<>((options == null) ? new FirmwareImageListOptions() : options, new PageRequester() { @Override public ListResponse requestNewPage(ListOptions opt) throws MbedCloudException { return listFirmwareImages((FirmwareImageListOptions) opt); } }); } /** * Gets details of a firmware image. *

* Example: * *

     * {@code
     * try {
     *     String firmwareImageId = "015f4ac587f500000000000100100249";
     *     FirmwareImage image = updateApi.getFirmwareImage(firmwareImageId);
     *     System.out.println("FirmwareImage name: " + image.getName());
     *     assert firmwareImageId == image.getId();
     *
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param firmwareImageId * the firmware image ID. * @return firmware image details. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable FirmwareImage getFirmwareImage(@NonNull String firmwareImageId) throws MbedCloudException { checkNotNull(firmwareImageId, TAG_FIRMWARE_IMAGE_ID); final String finalId = firmwareImageId; return CloudCaller.call(this, "getFirmwareImage()", FirmwareImageAdapter.getMapper(), new CloudCall() { @Override public Call call() { return endpoint.getUpdate().firmwareImageRetrieve(finalId); } }); } /** * Adds a firmware image. *

* Example: * *

     * {@code
     * try {
     *     String fileName = "C:\\Users\\mbedUser\\mbed-cloud-client-example.bin";
     *     FirmwareImage image = new FirmwareImage();
     *     image.setDatafile(fileName);
     *     image.setDescription("Quick start image");
     *     image.setName(fileName.substring(0,fileName.indexOf(".")));
     *
     *     FirmwareImage newImage = updateApi.addFirmwareImage(image);
     *     System.out.println("FirmwareImage URL: " + newImage.getUrl());
     *
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param image * The image to add. * @return added image. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable FirmwareImage addFirmwareImage(@NonNull FirmwareImage image) throws MbedCloudException { checkNotNull(image, TAG_FIRMWARE_IMAGE); checkModelValidity(image, TAG_FIRMWARE_IMAGE); final FirmwareImage finalImage = image; return CloudCaller.call(this, "addFirmwareImage()", FirmwareImageAdapter.getMapper(), new CloudCall() { @Override public Call call() { return endpoint.getUpdate().firmwareImageCreate( DataFileAdapter.reverseMap(finalImage.getDataFile()), finalImage.getName(), finalImage.getDescription()); } }); } /** * Deletes a firmware image. *

* Example: * *

     * {@code
     * try {
     *     String firmwareImageId = "015f4ac587f500000000000100100249";
     *     updateApi.deleteFirmwareImage(firmwareImageId);
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param firmwareImageId * The ID of the firmware image to delete. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public void deleteFirmwareImage(@NonNull String firmwareImageId) throws MbedCloudException { checkNotNull(firmwareImageId, TAG_FIRMWARE_IMAGE_ID); final String finalId = firmwareImageId; CloudCaller.call(this, "deleteFirmwareImage()", null, new CloudCall() { @Override public Call call() { return endpoint.getUpdate().firmwareImageDestroy(finalId); } }); } /** * Deletes a firmware image. *

* Example: * *

     * {@code
     * try {
     *     FirmwareImage firmwareImage = updateApi.getFirmwareImage("015f4ac587f500000000000100100249");
     *     updateApi.deleteFirmwareImage(firmwareImage);
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param firmwareImage * The firmware image to delete. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public void deleteFirmwareImage(@NonNull FirmwareImage firmwareImage) throws MbedCloudException { checkNotNull(firmwareImage, TAG_FIRMWARE_IMAGE); deleteFirmwareImage(firmwareImage.getId()); } /** * Lists all firmware manifests according to filter options. *

* Example: * *

     * {@code
     * try {
     *     FirmwareManifestListOptions options = new FirmwareManifestListOptions();
     *
     *     Calendar date = GregorianCalendar(2017,10,30,10,20,56);
     *     options.addCreatedAtFilter(date.getTime(), FilterOperator.GREATER_THAN);
     *
     *     options.addNameFilter("QuickstartManifest", FilterOperator.EQUAL);
     *
     *     ListResponse manifests = updateApi.listFirmwareManifests(options);
     *     for (FirmwareManifest manifest : manifests) {
     *         System.out.println("Manifest ID: " + manifest.getId());
     *         URL url = manifest.getUrl();
     *     }
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param options * filter options * @return The list of firmware manifests corresponding to filter options (One page). * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable ListResponse listFirmwareManifests(@Nullable FirmwareManifestListOptions options) throws MbedCloudException { final FirmwareManifestListOptions finalOptions = (options == null) ? new FirmwareManifestListOptions() : options; return CloudCaller.call(this, "listFirmwareManifests()", FirmwareManifestAdapter.getListMapper(), new CloudCall() { @Override public Call call() { return endpoint.getUpdate().firmwareManifestList(finalOptions.getPageSize(), finalOptions.getOrder() .toString(), finalOptions.getAfter(), new FilterMarshaller(null).encode(finalOptions.getFilter()), finalOptions.encodeInclude()); } }); } /** * Gets an iterator over all firmware manifests according to filter options. *

* Example: * *

     * {@code
     * try {
     *     FirmwareManifestListOptions options = new FirmwareManifestListOptions();
     *
     *     Calendar date = GregorianCalendar(2017,10,30,10,20,56);
     *     options.addCreatedAtFilter(date.getTime(), FilterOperator.GREATER_THAN);
     *
     *     options.addNameFilter("QuickstartManifest", FilterOperator.EQUAL);
     *
     *     Paginator manifests = updateApi.listAllFirmwareManifests(options);
     *     while (manifests.hasNext()) {
     *         FirmwareManifest image = manifests.next();
     *         System.out.println("FirmwareManifest ID: " + image.getId());
     *     }
     *
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param options * filter options. * @return paginator @see {@link Paginator} for the list of firmware manifests corresponding to filter options. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable Paginator listAllFirmwareManifests(@Nullable FirmwareManifestListOptions options) throws MbedCloudException { return new Paginator<>((options == null) ? new FirmwareManifestListOptions() : options, new PageRequester() { @Override public ListResponse requestNewPage(ListOptions opt) throws MbedCloudException { return listFirmwareManifests((FirmwareManifestListOptions) opt); } }); } /** * Get details of a firmware manifest. *

* Example: * *

     * {@code
     * try {
     *     String firmwareManifestId = "015f4ac587f500000000000100100249";
     *     FirmwareManifest manifest = updateApi.getFirmwareManifest(firmwareManifestId);
     *     System.out.println("FirmwareManifest name: " + manifest.getName());
     *     assert firmwareManifestId == manifest.getId();
     *
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param firmwareManifestId * The firmware manifest ID. * @return corresponding firmware manifest. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable FirmwareManifest getFirmwareManifest(@NonNull String firmwareManifestId) throws MbedCloudException { checkNotNull(firmwareManifestId, TAG_FIRMWARE_MANIFEST_ID); final String finalId = firmwareManifestId; return CloudCaller.call(this, "getFirmwareManifest()", FirmwareManifestAdapter.getMapper(), new CloudCall() { @Override public Call call() { return endpoint.getUpdate().firmwareManifestRetrieve(finalId); } }); } /** * Adds a firmware manifest. *

* Example: * *

     * {@code
     * try {
     *     String fileName = "C:\\Users\\mbedUser\\quickstart.manifest";
     *     FirmwareManifest manifest = new FirmwareManifest();
     *     manifest.setDatafile(fileName);
     *     manifest.setDescription("Quick start manifest");
     *     manifest.setName(manifest.getDatafile().getName());
     *
     *     FirmwareManifest newManifest = updateApi.addFirmwareManifest(manifest);
     *     System.out.println("FirmwareManifest URL: " + newManifest.getUrl());
     *
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param manifest * The manifest to add. * @return added manifest. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable FirmwareManifest addFirmwareManifest(@NonNull FirmwareManifest manifest) throws MbedCloudException { checkNotNull(manifest, TAG_FIRMWARE_MANIFEST); checkModelValidity(manifest, TAG_FIRMWARE_MANIFEST); final FirmwareManifest finalManifest = manifest; return CloudCaller.call(this, "addFirmwareManifest()", FirmwareManifestAdapter.getMapper(), new CloudCall() { @Override public Call call() { return endpoint.getUpdate() .firmwareManifestCreate(DataFileAdapter.reverseMap(finalManifest.getDataFile()), finalManifest.getName(), finalManifest.getDescription(), DataFileAdapter.reverseMap(KEY_TABLE_PARAMETER, finalManifest.getDecryptionKeysFile())); } }); } /** * Deletes a firmware manifest. *

* Example: * *

     * {@code
     * try {
     *     String firmwareManifestId = "015f4ac587f500000000000100100249";
     *     updateApi.deleteFirmwareManifest(firmwareManifestId);
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param firmwareManifestId * The ID of the firmware manifest to delete. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public void deleteFirmwareManifest(@NonNull String firmwareManifestId) throws MbedCloudException { checkNotNull(firmwareManifestId, TAG_FIRMWARE_MANIFEST_ID); final String finalId = firmwareManifestId; CloudCaller.call(this, "deleteFirmwareManifest()", null, new CloudCall() { @Override public Call call() { return endpoint.getUpdate().firmwareManifestDestroy(finalId); } }); } /** * Deletes a firmware manifest. *

* Example: * *

     * {@code
     * try {
     *     FirmwareManifest firmwareManifest = updateApi.getFirmwareManifest("015f4ac587f500000000000100100249");
     *     updateApi.deleteFirmwareManifest(firmwareManifest);
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param firmwareManifest * The firmware manifest to delete. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public void deleteFirmwareManifest(@NonNull FirmwareManifest firmwareManifest) throws MbedCloudException { checkNotNull(firmwareManifest, TAG_FIRMWARE_MANIFEST); deleteFirmwareManifest(firmwareManifest.getId()); } /** * Lists all update campaigns according to filter options. *

* Example: * *

     * {@code
     * try {
     *     CampaignListOptions options = new CampaignListOptions();
     *
     *     Calendar date = GregorianCalendar(2017,10,30,10,20,56);
     *     options.addCreatedAtFilter(date.getTime(), FilterOperator.GREATER_THAN);
     *
     *     options.addNameFilter("QuickstartCampaign", FilterOperator.EQUAL);
     *     options.addUpdatedFilter("deployed", FilterOperator.EQUAL);
     *
     *     ListResponse campaigns = updateApi.listCampaigns(options);
     *     for (Campaign campaign : campaigns) {
     *         System.out.println("Campaign ID: " + campaign.getId());
     *         System.out.println("Currently in state: " + campaign.getState());
     *     }
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param options * filter options. * @return The list of update campaigns corresponding to filter options (One page). * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable ListResponse listCampaigns(@Nullable CampaignListOptions options) throws MbedCloudException { final CampaignListOptions finalOptions = (options == null) ? new CampaignListOptions() : options; return CloudCaller.call(this, "listCampaigns()", CampaignAdapter.getListMapper(), new CloudCall() { @Override public Call call() { return endpoint.getUpdate().updateCampaignList(finalOptions.getPageSize(), finalOptions.getOrder() .toString(), finalOptions.getAfter(), CampaignAdapter.FILTERS_MARSHALLER.encode(finalOptions.getFilter()), finalOptions.encodeInclude()); } }); } /** * Gets an iterator over all update campaigns according to filter options. *

* Example: * *

     * {@code
     * try {
     *     CampaignListOptions options = new CampaignListOptions();
     *
     *     Calendar date = GregorianCalendar(2017,10,30,10,20,56);
     *     options.addCreatedAtFilter(date.getTime(), FilterOperator.GREATER_THAN);
     *
     *     options.addNameFilter("QuickstartCampaign", FilterOperator.EQUAL);
     *     options.addUpdatedFilter("deployed", FilterOperator.EQUAL);
     *
     *     Paginator campaigns = updateApi.listAllCampaigns(options);
     *     while (campaigns.hasNext()) {
     *         Campaign campaign = campaigns.next();
     *         System.out.println("Campaign ID: " + campaign.getId());
     *         System.out.println("Currently in state: " + campaign.getState());
     *     }
     *
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param options * filter options. * @return paginator @see {@link Paginator} for the list of update campaigns corresponding to filter options. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable Paginator listAllCampaigns(@Nullable CampaignListOptions options) throws MbedCloudException { return new Paginator<>((options == null) ? new CampaignListOptions() : options, new PageRequester() { @Override public ListResponse requestNewPage(ListOptions opt) throws MbedCloudException { return listCampaigns((CampaignListOptions) opt); } }); } /** * Gets details of an update campaign. *

* Example: * *

     * {@code
     * try {
     *     String campaignId = "015f4ac587f500000000000100109294";
     *     Campaign campaign = updateApi.getCampaign(campaignId);
     *     System.out.println("Campaign name: " + campaign.getName());
     *     assert campaignId == campaign.getId();
     *
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param campaignId * The update campaign ID. * @return the update campaign. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable Campaign getCampaign(@NonNull String campaignId) throws MbedCloudException { checkNotNull(campaignId, TAG_CAMPAIGN_ID); final String finalId = campaignId; return CloudCaller.call(this, "getCampaign()", CampaignAdapter.getMapper(), new CloudCall() { @Override public Call call() { return endpoint.getUpdate().updateCampaignRetrieve(finalId); } }); } /** * Adds an update campaign. *

* Example: * *

     * {@code
     * try {
     *     Campaign campaign = new Campaign();
     *     campaign.setName("QuickstartCampaign");
     *     campaign.setDescription("Quick start campaign");
     *     campaign.setState(CampaignState.DRAFT);
     *
     *     Filters deviceFilter = new Filters();
     *     deviceFilter.add(new Filter("state", FilterOperator.EQUAL, "registered"));
     *     campaign.setDeviceFilter(deviceFilter);
     *
     *     String firmwareManifestId = "015f4ac587f500000000000100100249";
     *     campaign.setManifestId(firmwareManifestId);
     *
     *     Campaign newCampaign = updateApi.addCampaign(campaign);
     *     System.out.println("Campaign state: " + newCampaign.getState());
     *     System.out.println("Campaign ID: " + newCampaign.getId());
     *
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param campaign * The campaign to add. * @return added update campaign. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable Campaign addCampaign(@NonNull Campaign campaign) throws MbedCloudException { checkNotNull(campaign, TAG_CAMPAIGN); checkModelValidity(campaign, TAG_CAMPAIGN); final Campaign finalCampaign = campaign; return CloudCaller.call(this, "addCampaign()", CampaignAdapter.getMapper(), new CloudCall() { @Override public Call call() { return endpoint.getUpdate().updateCampaignCreate(CampaignAdapter.reverseMapAdd(finalCampaign)); } }); } /** * Modifies an update campaign. * * @param campaign * campaign to modify. * @param actionName * name of the modification action. * @return modified campaign. * @throws MbedCloudException * if a problem occurred during request processing. */ @Internal private Campaign modifyCampaign(Campaign campaign, String actionName) throws MbedCloudException { checkNotNull(campaign, TAG_CAMPAIGN); checkNotNull(campaign.getId(), TAG_CAMPAIGN_ID); checkModelValidity(campaign, TAG_CAMPAIGN); final Campaign finalCampaign = campaign; return CloudCaller.call(this, actionName, CampaignAdapter.getMapper(), new CloudCall() { @Override public Call call() { return endpoint.getUpdate().updateCampaignUpdate(finalCampaign.getId(), CampaignAdapter.reverseMapUpdate(finalCampaign)); } }); } /** * Updates an update campaign. *

* Example: * *

     * {@code
     * try {
     *     CampaignListOptions options = new CampaignListOptions();
     *
     *     Calendar date = GregorianCalendar(2017,10,30,10,20,56);
     *     options.addCreatedAtFilter(date.getTime(), FilterOperator.GREATER_THAN);
     *
     *     options.addNameFilter("QuickstartCampaign", FilterOperator.EQUAL);
     *     options.addUpdatedFilter("deployed", FilterOperator.EQUAL);
     *
     *     ListResponse campaigns = updateApi.listCampaigns(options);
     *     for (Campaign campaign : campaigns) {
     *         campaign.setDescription("Changed description!");
     *         Campaign updatedCampaign = updateApi.updateCampaign(campaign);
     *         System.out.println("Updated campaign in state: " + updatedCampaign.getState());
     *     }
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param campaign * The campaign to update. * @return updated update campaign. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable Campaign updateCampaign(@NonNull Campaign campaign) throws MbedCloudException { return modifyCampaign(campaign, "updateCampaign()"); } /** * Deletes an update campaign. *

* Example: * *

     * {@code
     * try {
     *     String campaignId = "015f4ac587f500000000000100109294";
     *     updateApi.deleteCampaign(campaignId);
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param campaignId * The ID of the update campaign to delete. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public void deleteCampaign(@NonNull String campaignId) throws MbedCloudException { checkNotNull(campaignId, TAG_CAMPAIGN_ID); final String finalId = campaignId; CloudCaller.call(this, "deleteCampaign()", null, new CloudCall() { @Override public Call call() { return endpoint.getUpdate().updateCampaignDestroy(finalId); } }); } /** * Deletes an update campaign. *

* Example: * *

     * {@code
     * try {
     *     Campaign campaign = updateApi.getCampaign("015f4ac587f500000000000100109294");
     *     updateApi.deleteCampaign(campaign);
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param campaign * The update campaign to delete. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public void deleteCampaign(@NonNull Campaign campaign) throws MbedCloudException { checkNotNull(campaign, TAG_CAMPAIGN); deleteCampaign(campaign.getId()); } /** * Starts an update campaign. *

* Example: * *

     * {@code
     * try {
     *     String campaignId = "015f4ac587f500000000000100109294";
     *     Campaign campaign = updateApi.startCampaign(updateApi.getCampaign(campaignId));
     *     System.out.println("Started campaign. State: " + campaign.getState());
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param campaign * the update campaign to start. * @return the started campaign. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable Campaign startCampaign(@NonNull Campaign campaign) throws MbedCloudException { checkNotNull(campaign, TAG_CAMPAIGN); campaign.setState(CampaignState.SCHEDULED); return modifyCampaign(campaign, "startCampaign()"); } /** * Stops an update campaign. *

* Example: * *

     * {@code
     * try {
     *     String campaignId = "015f4ac587f500000000000100109294";
     *     Campaign campaign = updateApi.stopCampaign(updateApi.getCampaign(campaignId));
     *     System.out.println("Stopped campaign. State: " + campaign.getState());
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param campaign * the update campaign to stop. * @return the stopped campaign. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable Campaign stopCampaign(@NonNull Campaign campaign) throws MbedCloudException { checkNotNull(campaign, TAG_CAMPAIGN); campaign.setState(CampaignState.DRAFT); return modifyCampaign(campaign, "stopCampaign()"); } /** * Lists campaign devices states. *

* Example: * *

     * {@code
     * try {
     *     String campaignId = "015f4ac587f500000000000100109294";
     *     CampaignDevicesStatesListOptions options = new CampaignDevicesStatesListOptions();
     *     options.setLimit(10);
     *
     *     ListResponse states = updateApi.listCampaignDeviceStates(campaignId, options);
     *     for (CampaignDeviceState state : states) {
     *         System.out.println("Device ID: " + state.getId());
     *         System.out.println("Currently in state: " + state.getState());
     *     }
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param campaignId * The ID of the update campaign. * @param options * filter options. * @return The list of campaign device states corresponding to filter options (One page). * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable ListResponse listCampaignDeviceStates(@NonNull String campaignId, @Nullable CampaignDevicesStatesListOptions options) throws MbedCloudException { checkNotNull(campaignId, TAG_CAMPAIGN_ID); final String finalId = campaignId; final CampaignDevicesStatesListOptions finalOptions = (options == null) ? new CampaignDevicesStatesListOptions() : options; return CloudCaller.call(this, "listCampaignDeviceStates()", CampaignDeviceStateAdapter.getListMapper(), new CloudCall() { @Override public Call call() { return endpoint.getUpdate() .updateCampaignMetadataList(finalId, finalOptions.getPageSize(), finalOptions.getOrder().toString(), finalOptions.getAfter(), finalOptions.encodeInclude()); } }); } /** * Lists campaign devices states. *

* Example: * *

     * {@code
     * try {
     *     Campaign campaign = updateApi.getCampaign("015f4ac587f500000000000100109294");
     *     CampaignDevicesStatesListOptions options = new CampaignDevicesStatesListOptions();
     *     options.setLimit(10);
     *
     *     ListResponse states = updateApi.listCampaignDeviceStates(campaign, options);
     *     for (CampaignDeviceState state : states) {
     *         System.out.println("Device ID: " + state.getId());
     *         System.out.println("Currently in state: " + state.getState());
     *     }
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param campaign * The update campaign. * @param options * filter options. * @return The list of campaign device states corresponding to filter options (One page). * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable ListResponse listCampaignDeviceStates(@NonNull Campaign campaign, @Nullable CampaignDevicesStatesListOptions options) throws MbedCloudException { checkNotNull(campaign, TAG_CAMPAIGN); return listCampaignDeviceStates(campaign.getId(), options); } /** * Gets an iterator over all campaign device states according to filter options. *

* Example: * *

     * {@code
     * try {
     *     String campaignId = "015f4ac587f500000000000100109294";
     *     CampaignDevicesStatesListOptions options = new CampaignDevicesStatesListOptions();
     *     options.setLimit(10);
     *
     *     Paginator states = updateApi.listAllCampaignDeviceStates(campaignId, options);
     *     while (states.hasNext()) {
     *         CampaignDeviceState deviceState = states.next();
     *         System.out.println("Device ID: " + deviceState.getId());
     *         System.out.println("Currently in state: " + deviceState.getState());
     *     }
     *
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param campaignId * The ID of the update campaign. * @param options * filter options. * @return paginator @see {@link Paginator} for the list of all campaign device states corresponding to filter * options. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable Paginator listAllCampaignDeviceStates(@NonNull String campaignId, @Nullable CampaignDevicesStatesListOptions options) throws MbedCloudException { checkNotNull(campaignId, TAG_CAMPAIGN_ID); final String finalId = campaignId; return new Paginator<>((options == null) ? new CampaignDevicesStatesListOptions() : options, new PageRequester() { @Override public ListResponse requestNewPage(ListOptions opt) throws MbedCloudException { return listCampaignDeviceStates(finalId, (CampaignDevicesStatesListOptions) opt); } }); } /** * Gets an iterator over all campaign device states according to filter options. *

* Example: * *

     * {@code
     * try {
     *     Campaign campaign =  updateApi.getCampaign("015f4ac587f500000000000100109294");
     *     CampaignDevicesStatesListOptions options = new CampaignDevicesStatesListOptions();
     *     options.setLimit(10);
     *
     *     Paginator states = updateApi.listAllCampaignDeviceStates(campaign, options);
     *     for (CampaignDeviceState deviceState:states) {
     *         System.out.println("Device ID: " + deviceState.getId());
     *         System.out.println("Currently in state: " + deviceState.getState());
     *     }
     *
     * } catch (MbedCloudException e) {
     *     e.printStackTrace();
     * }
     * }
     * 
* * @param campaign * The update campaign. * @param options * filter options. * @return paginator @see {@link Paginator} for the list of all campaign device states corresponding to filter * options. * @throws MbedCloudException * if a problem occurred during request processing. */ @API public @Nullable Paginator listAllCampaignDeviceStates(@NonNull Campaign campaign, @Nullable CampaignDevicesStatesListOptions options) throws MbedCloudException { checkNotNull(campaign, TAG_CAMPAIGN); return listAllCampaignDeviceStates(campaign.getId(), options); } /** * Retrieves module name. * * @return module name. */ @Override public String getModuleName() { return "Update"; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy