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

com.envision.energy.eos.sdk.data.AssetChangeResponse Maven / Gradle / Ivy

package com.envision.energy.eos.sdk.data;

import com.envision.energy.connective.protobuf.generated.Sdk;
import com.google.common.base.Function;
import com.google.common.collect.FluentIterable;

import java.io.Serializable;
import java.util.List;

/**
 * @author zhensheng.cai
 */
public class AssetChangeResponse implements Serializable {
    private static final long serialVersionUID = 6481723604025943145L;

    private String event;
    private List data;

    public AssetChangeResponse(String event, List data) {
        this.event = event;
        this.data = data;
    }


    public String getEvent() {
        return event;
    }

    public void setEvent(String event) {
        this.event = event;
    }

    public List getData() {
        return data;
    }

    public void setData(List data) {
        this.data = data;
    }

    public static AssetChangeResponse create(Sdk.AssetChangeRsp msg){
        String event;
        switch (msg.getEvent()){
            case 0b001:
                event = "Insert";
                break;
            case 0b010 :
                event = "Update";
                break;
            case 0b100:
                event = "Delete";
                break;
            default:
                event = "Unknown";
                break;
        }
        List details = FluentIterable.from(msg.getDataList()).transform(new Function() {
            @Override
            public AssetChangeDetail apply(Sdk.AssetChangeDetail input) {
                return AssetChangeDetail.create(input);
            }
        }).toList();


        AssetChangeResponse response = new AssetChangeResponse(event, details);
        return response;
    }

    @Override
    public String toString() {
        return "AssetChangeReponse{" + "event='" + event + '\'' + ", data=" + data + '}';
    }
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy