com.urbanairship.api.channel.model.attributes.audience.AttributeAudience Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of java-client Show documentation
Show all versions of java-client Show documentation
The Urban Airship Java client library
package com.urbanairship.api.channel.model.attributes.audience;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.urbanairship.api.push.model.audience.sms.SmsSelector;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class AttributeAudience {
private final ImmutableSet smsSelectors;
private final ImmutableMap> attributeDevices;
public AttributeAudience(Builder builder) {
this.smsSelectors = builder.smsSelectors;
this.attributeDevices = ImmutableMap.copyOf(builder.audienceTypeMap);
}
public static Builder newBuilder() {
return new Builder();
}
/**
* Get the sms selector objects representing the sms audience.
*
* @return Immutable set of SmsSelector smsSelectors
*/
public ImmutableSet getSmsSelectors() {
return smsSelectors;
}
/**
* Get the map of Atrribute Audience Types and the set of device id's associated with them.
*
* @return Map of AttributeAudienceType to Set of Strings attributeDevices
*/
public ImmutableMap> getAttributeDevices() {
return attributeDevices;
}
public static class Builder {
ImmutableSet.Builder smsSelectorsBuilder = ImmutableSet.builder();
ImmutableSet smsSelectors;
Map> audienceTypeMap = new HashMap<>();
/**
* Add a device identifier and the audience type to update the attributes on.
*
* @param audienceType AttributeAudienceType
* @param deviceId String
* @return Builder
*/
public Builder addDeviceId(AttributeAudienceType audienceType, String deviceId) {
if (audienceTypeMap.containsKey(audienceType)) {
audienceTypeMap.get(audienceType).add(deviceId);
} else {
Set deviceIds = new HashSet<>();
deviceIds.add(deviceId);
audienceTypeMap.put(audienceType, deviceIds);
}
return this;
}
/**
* Add a sms selector representing an sms device to update attributes on.
*
* @param smsSelector SmsSelector
* @return Builder
*/
public Builder addSmsSelector(SmsSelector smsSelector) {
smsSelectorsBuilder.add(smsSelector);
return this;
}
public AttributeAudience build() {
smsSelectors = smsSelectorsBuilder.build();
Preconditions.checkArgument(!(smsSelectors.size() == 0 && audienceTypeMap.size() == 0), "Device types or SmsSelectors must be added.");
return new AttributeAudience(this);
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy