001/* 002# Licensed Materials - Property of IBM 003# Copyright IBM Corp. 2016 004 */ 005package com.ibm.streamsx.iot; 006 007import java.io.IOException; 008import java.io.Serializable; 009import java.time.Instant; 010 011import com.ibm.json.java.JSONObject; 012import com.ibm.streamsx.topology.tuple.JSONAble; 013 014/** 015 * A device command. 016 */ 017public class DeviceCmd implements JSONAble, Serializable { 018 private static final long serialVersionUID = 1L; 019 020 private final Device device; 021 private final String cmdId; 022 private final Instant ts; 023 private final JSONObject data; 024 025 public DeviceCmd(Device device, String cmdId, Instant ts, JSONObject data) { 026 super(); 027 this.device = device; 028 this.cmdId = cmdId; 029 this.ts = ts; 030 this.data = data; 031 } 032 033 public Device getDevice() { 034 return device; 035 } 036 037 public String getCmdId() { 038 return cmdId; 039 } 040 041 public Instant getTs() { 042 return ts; 043 } 044 045 public JSONObject getData() { 046 return data; 047 } 048 049 @Override 050 public JSONObject toJSON() { 051 JSONObject json = getDevice().toJSON(); 052 json.put("cmdId", getCmdId()); //$NON-NLS-1$ 053 json.put("d", getData()); //$NON-NLS-1$ 054 if (getTs() != null) 055 json.put("ts", getTs().toString()); //$NON-NLS-1$ 056 return json; 057 } 058 059 @Override 060 public String toString() { 061 try { 062 return toJSON().serialize(); 063 } catch (IOException e) { 064 throw new RuntimeException(e); 065 } 066 } 067}