package com.kth.baasio.entity.push; import static org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion.NON_NULL; import com.kth.baasio.entity.BaasioConnectableEntity; import com.kth.baasio.utils.JsonUtils; import com.kth.baasio.utils.ObjectUtils; import org.codehaus.jackson.annotate.JsonIgnore; import org.codehaus.jackson.map.annotate.JsonSerialize; import java.util.List; public class BaasioDevice extends BaasioConnectableEntity { public final static String ENTITY_TYPE = "device"; public final static String PROPERTY_TOKEN = "token"; public final static String PROPERTY_PLATFORM = "platform"; public final static String PLATFORM_TYPE_GCM = "G"; public final static String PLATFORM_TYPE_IOS = "I"; private List<String> tags; public BaasioDevice() { super(); setType(ENTITY_TYPE); setPlatform(PLATFORM_TYPE_GCM); } public BaasioDevice(BaasioConnectableEntity entity) { super(entity); } /** * Get predefined property names. * * @return List of predefined property names */ @Override @JsonIgnore public List<String> getPropertyNames() { List<String> properties = super.getPropertyNames(); properties.add(PROPERTY_TOKEN); properties.add(PROPERTY_PLATFORM); return properties; } /** * Get device token(regId). * * @return Device token(regId) */ @JsonSerialize(include = NON_NULL) public String getToken() { return JsonUtils.getStringProperty(properties, PROPERTY_TOKEN); } /** * Set device token(regId). * * @param token Device token(regId) */ public void setToken(String token) { JsonUtils.setStringProperty(properties, PROPERTY_TOKEN, token); } /** * Get platform type. * * @return Platform type. 'G' is android GCM. 'I' is iOS APNS. */ @JsonSerialize(include = NON_NULL) public String getPlatform() { return JsonUtils.getStringProperty(properties, PROPERTY_PLATFORM); } /** * Set platform type. 'G' is android GCM. 'I' is iOS APNS. */ public void setPlatform(String platform) { JsonUtils.setStringProperty(properties, PROPERTY_PLATFORM, platform); } /** * Get tags. * * @return List of tags. */ @JsonSerialize(include = NON_NULL) public List<String> getTags() { if (ObjectUtils.isEmpty(tags)) { return null; } return tags; } /** * Set tags. * * @param tags List of tags. */ public void setTags(List<String> tags) { this.tags = tags; } }