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

com.memority.toolkit.inwebo.api.DeviceStatus Maven / Gradle / Ivy

/*
 * Copyright (c) 2016-2023 Memority. All Rights Reserved.
 *
 * This file is part of Memority Toolkit API , a Memority project.
 *
 * This file is released under the Memority Public Artifacts End-User License Agreement,
 * see 
 * Unauthorized copying of this file, via any medium is strictly prohibited.
 */
package com.memority.toolkit.inwebo.api;

import java.util.Arrays;

/**
 * InWebo device status.
 * Value in InWebo API is a number.
 */
public enum DeviceStatus {
    ACTIVE(0),
    LOCKED(1),
    PIN_LOCKED(2);

    private long apiValue;

    DeviceStatus(long apiValue) {
        this.apiValue = apiValue;
    }

    public static DeviceStatus getFromApiValue(long apiValue) {
        if (apiValue > PIN_LOCKED.getApiValue()) {
            // InWebo introduced "3" as a possible value with an obscure bit of documentation:
            // "For some state properties, the value may be 3. It is a mask, meaning that it is a 1 + 2 → 3 = (1) device locked + (2)pin locked)"
            // If it means "the device is locked and the user is pin locked" we can probably reduce the status to a pin lock as before.
            // See https://docs.inwebo.com/documentation/user-management-with-soap-api
            return PIN_LOCKED;
        }
        return Arrays.stream(DeviceStatus.values())
                .filter(v -> v.apiValue == apiValue)
                .findFirst()
                .orElseThrow(() -> new IllegalArgumentException(String.format("Cannot match inwebo device status from unknown API value '%s'", apiValue)));
    }

    public long getApiValue() {
        return apiValue;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy