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

com.jdroid.javaweb.push.Device Maven / Gradle / Ivy

package com.jdroid.javaweb.push;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.jdroid.java.collections.Maps;
import com.jdroid.java.date.DateUtils;
import com.jdroid.java.domain.Entity;
import com.jdroid.java.exception.UnexpectedException;

import java.util.Map;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Device extends Entity {
	
	private String instanceId;
	private DeviceType deviceType;

	private String deviceGroupId;
	private String registrationToken;

	private String deviceBrandName;
	private String deviceModelName;
	private String deviceOsVersion;
	private String appVersionCode;

	private String acceptLanguage;
	private Long creationTimestamp;
	private Long lastActiveTimestamp;

	private Map extras;

	private Map transientExtras;

	/**
	 * Default constructor.
	 */
	@SuppressWarnings("unused")
	private Device() {
		// Do nothing, is required by hibernate
	}
	
	public Device(String instanceId, DeviceType deviceType, String registrationToken, String deviceGroupId,
				  String deviceBrandName, String deviceModelName, String deviceOsVersion, String appVersionCode, String acceptLanguage) {
		
		if (instanceId == null) {
			throw new UnexpectedException("The instanceId is required");
		}

		if (deviceType == null) {
			throw new UnexpectedException("The device type is required");
		}

		this.instanceId = instanceId;
		this.deviceType = deviceType;

		this.deviceGroupId = deviceGroupId;
		this.registrationToken = registrationToken;

		this.deviceBrandName = deviceBrandName;
		this.deviceModelName = deviceModelName;
		this.deviceOsVersion = deviceOsVersion;
		this.appVersionCode = appVersionCode;

		this.acceptLanguage = acceptLanguage;
	}

	public String getInstanceId() {
		return instanceId;
	}
	
	/**
	 * @return the registrationToken
	 */
	public String getRegistrationToken() {
		return registrationToken;
	}
	
	/**
	 * @return the deviceType
	 */
	public DeviceType getDeviceType() {
		return deviceType;
	}
	
	public String getDeviceGroupId() {
		return deviceGroupId;
	}

	public String getDeviceBrandName() {
		return deviceBrandName;
	}

	public String getDeviceModelName() {
		return deviceModelName;
	}

	public String getDeviceOsVersion() {
		return deviceOsVersion;
	}

	public String getAppVersionCode() {
		return appVersionCode;
	}

	public Long getLastActiveTimestamp() {
		return lastActiveTimestamp;
	}

	public void setLastActiveTimestamp(Long lastActiveTimestamp) {
		this.lastActiveTimestamp = lastActiveTimestamp;
	}

	public void setRegistrationToken(String registrationToken) {
		this.registrationToken = registrationToken;
	}

	public void setDeviceOsVersion(String deviceOsVersion) {
		this.deviceOsVersion = deviceOsVersion;
	}

	public void setAppVersionCode(String appVersionCode) {
		this.appVersionCode = appVersionCode;
	}

	public void setDeviceGroupId(String deviceGroupId) {
		this.deviceGroupId = deviceGroupId;
	}

	public String getAcceptLanguage() {
		return acceptLanguage;
	}

	public void setAcceptLanguage(String acceptLanguage) {
		this.acceptLanguage = acceptLanguage;
	}

	public Long getCreationTimestamp() {
		return creationTimestamp;
	}

	public void setCreationTimestamp(Long creationTimestamp) {
		this.creationTimestamp = creationTimestamp;
	}

	@JsonIgnore
	public Map getTransientExtras() {
		return transientExtras;
	}

	public void setTransientExtras(Map transientExtras) {
		this.transientExtras = transientExtras;
	}

	@Override
	public String toString() {
		final StringBuffer sb = new StringBuffer("Device{");
		sb.append("instanceId='").append(instanceId).append('\'');
		sb.append(", deviceType=").append(deviceType);
		sb.append(", deviceGroupId='").append(deviceGroupId).append('\'');
		sb.append(", registrationToken='").append(registrationToken).append('\'');
		sb.append(", deviceBrandName='").append(deviceBrandName).append('\'');
		sb.append(", deviceModelName='").append(deviceModelName).append('\'');
		sb.append(", deviceOsVersion='").append(deviceOsVersion).append('\'');
		sb.append(", appVersionCode='").append(appVersionCode).append('\'');
		sb.append(", acceptLanguage='").append(acceptLanguage).append('\'');
		sb.append(", creationTimestamp='").append(DateUtils.getDate(creationTimestamp)).append('\'');
		if (lastActiveTimestamp != null) {
			sb.append(", lastActiveTimestamp=").append(DateUtils.getDate(lastActiveTimestamp));
		}
		sb.append(", extras='").append(extras).append('\'');
		sb.append(", transientExtras='").append(transientExtras).append('\'');
		sb.append("} ");
		sb.append(super.toString());
		return sb.toString();
	}

	@Override
	public boolean equals(Object o) {
		if (this == o) return true;
		if (o == null || getClass() != o.getClass()) return false;
		if (!super.equals(o)) return false;

		Device device = (Device)o;

		if (instanceId != null ? !instanceId.equals(device.instanceId) : device.instanceId != null) return false;
		if (deviceType != device.deviceType) return false;
		if (deviceGroupId != null ? !deviceGroupId.equals(device.deviceGroupId) : device.deviceGroupId != null)
			return false;
		if (registrationToken != null ? !registrationToken.equals(device.registrationToken) : device.registrationToken != null)
			return false;
		if (deviceBrandName != null ? !deviceBrandName.equals(device.deviceBrandName) : device.deviceBrandName != null)
			return false;
		if (deviceModelName != null ? !deviceModelName.equals(device.deviceModelName) : device.deviceModelName != null)
			return false;
		if (deviceOsVersion != null ? !deviceOsVersion.equals(device.deviceOsVersion) : device.deviceOsVersion != null)
			return false;
		if (appVersionCode != null ? !appVersionCode.equals(device.appVersionCode) : device.appVersionCode != null)
			return false;
		if (acceptLanguage != null ? !acceptLanguage.equals(device.acceptLanguage) : device.acceptLanguage != null)
			return false;
		if (extras != null ? !extras.equals(device.extras) : device.extras != null)
			return false;
		return !(lastActiveTimestamp != null ? !lastActiveTimestamp.equals(device.lastActiveTimestamp) : device.lastActiveTimestamp != null);

	}

	public Map getExtras() {
		return extras;
	}

	public Object getExtra(String key) {
		return extras != null ? extras.get(key) : null;
	}

	public void addExtra(String key, Object value) {
		if (extras == null) {
			this.extras = Maps.newHashMap();
		}
		extras.put(key, value);
	}

	public void setExtras(Map extras) {
		this.extras = extras;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy