com.ionic.sdk.device.profile.DeviceProfile Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ionic-sdk Show documentation
Show all versions of ionic-sdk Show documentation
The Ionic Java SDK provides an easy-to-use interface to the Ionic Platform.
package com.ionic.sdk.device.profile;
/**
* This class represents the device profile of the machine we are on.
*/
public class DeviceProfile {
/**
* The device profile name.
*/
private String deviceName = "";
/**
* The Ionic.com server associated with this device profile.
*/
private String serverName = "";
/**
* The device profile ID.
*/
private String deviceProfileId = "";
/**
* The creation time in UTC seconds.
*/
private long timestamp;
/**
* The raw AES key bytes.
*/
private byte[] aesCdIdcProfileKey;
/**
* The private AES key shared between client and EI.
*/
private byte[] aesCdEiProfileKey;
/**
* Initializes the object to be empty. Creation time in seconds is initialized
* to be zero.
*/
public DeviceProfile() {
timestamp = 0;
}
/**
* Copy constructor.
*
* @param profile the existing DeviceProfile to replicate
*/
public DeviceProfile(final DeviceProfile profile) {
this(profile.getName(), profile.getCreationTimestampSecs(), profile.getDeviceId(),
profile.getServer(), profile.getAesCdIdcProfileKey(), profile.getAesCdEiProfileKey());
}
/**
* Constructor.
*
* @param name name for device
* @param creationTimestamp timestamp at which this device was created
* @param deviceId unique identifier for device
* @param server base URL of server for this profile
* @param aesCdIdcKey session key for session between device and ionic.com
* @param aesCdEiKey session key for session between device and Ionic enterprise infrastructure
*/
public DeviceProfile(final String name, final long creationTimestamp, final String deviceId,
final String server, final byte[] aesCdIdcKey, final byte[] aesCdEiKey) {
this.deviceName = name;
this.timestamp = creationTimestamp;
this.deviceProfileId = deviceId;
this.serverName = server;
this.aesCdIdcProfileKey = aesCdIdcKey.clone();
this.aesCdEiProfileKey = aesCdEiKey.clone();
}
/**
* Determine if this profile has data.
*
* @return the status of loaded keys
*/
public final boolean isLoaded() {
return !deviceProfileId.isEmpty() && aesCdIdcProfileKey.length != 0 && aesCdEiProfileKey.length != 0;
}
/**
* Get the name associated with this device profile.
*
* @return The name associated with this device profile.
*/
public final String getName() {
return deviceName;
}
/**
* Set the name associated with this device profile.
*
* @param name The name associated with this device profile.
*/
public final void setName(final String name) {
deviceName = name;
}
/**
* Get the time at which this profile was created.
*
* @return Returns creation time in UTC seconds since January 1, 1970.
*/
public final long getCreationTimestampSecs() {
return timestamp;
}
/**
* Set the time at which this profile was created.
*
* @param timestamp Creation time must be specified in UTC seconds since January 1,
* 1970.
*/
public final void setCreationTimestampSecs(final long timestamp) {
this.timestamp = timestamp;
}
/**
* Get the Ionic.com server associated with this device profile.
*
* @return The Ionic.com server associated with this device profile.
*/
public final String getServer() {
return serverName;
}
/**
* Set the Ionic.com server associated with this device profile.
*
* @param server The Ionic.com server associated with this device profile.
*/
public final void setServer(final String server) {
serverName = server;
}
/**
* Get the device profile ID. This device ID is generated by Ionic.com during
* registration that is performed by calling ISAgent::createDevice().
*
* @return The device profile ID.
*/
public final String getDeviceId() {
return deviceProfileId;
}
/**
* Set the device profile ID. This device ID is generated by Ionic.com during
* registration that is performed bycalling Agent.createDevice(). When the
* device profile ID is set, the key space is also implicitly set by parsing it
* out of the ID.
*
* @param deviceId The device profile ID.
*/
public final void setDeviceId(final String deviceId) {
deviceProfileId = deviceId;
}
/**
* Get the private AES key shared between client and Ionic.com.
*
* @return The private AES key shared between client and Ionic.com.
*/
public final byte[] getAesCdIdcProfileKey() {
return aesCdIdcProfileKey.clone();
}
/**
* Set the private AES key shared between client and Ionic.com.
*
* @param keyBytes The raw AES key bytes.
*/
public final void setAesCdIdcProfileKey(final byte[] keyBytes) {
aesCdIdcProfileKey = keyBytes.clone();
}
/**
* Get the private AES key shared between client and EI (Enterprise
* Infrastructure).
*
* @return The private AES key shared between client and EI (Enterprise
* Infrastructure).
*/
public final byte[] getAesCdEiProfileKey() {
return aesCdEiProfileKey.clone();
}
/**
* Set the private AES key shared between client and EI (Enterprise
* Infrastructure).
*
* @param keyBytes The raw AES key bytes.
*/
public final void setAesCdEiProfileKey(final byte[] keyBytes) {
aesCdEiProfileKey = keyBytes.clone();
}
/**
* Get the Key space by parsing the Device id before the delimiter.
*
* @return the keySpace.
*/
public final String getKeySpace() {
return ((deviceProfileId == null) ? "" : deviceProfileId.split(REGEX_TOKEN_DOT, -1)[0]);
}
/**
* Regular expression token used to split device ID into its constituent parts.
*/
private static final String REGEX_TOKEN_DOT = "\\.";
}