quartzPro/.svn/pristine/fc/fc8385fe2a56ae21b12d5e6b068...

122 lines
4.0 KiB
Plaintext

package com.ifish.jpush.push.model.audience;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.ifish.jpush.push.model.PushModel;
import com.ifish.jpush.utils.Preconditions;
public class AudienceTarget implements PushModel {
private final AudienceType audienceType;
private final Set<String> values;
private AudienceTarget(AudienceType audienceType, Set<String> values) {
this.audienceType = audienceType;
this.values = values;
}
public static Builder newBuilder() {
return new Builder();
}
public static AudienceTarget tag(String... tag) {
return newBuilder().setAudienceType(AudienceType.TAG).addAudienceTargetValues(tag).build();
}
public static AudienceTarget tag(Collection<String> tags) {
return newBuilder().setAudienceType(AudienceType.TAG).addAudienceTargetValues(tags).build();
}
public static AudienceTarget tag_and(String... tag) {
return newBuilder().setAudienceType(AudienceType.TAG_AND).addAudienceTargetValues(tag).build();
}
public static AudienceTarget tag_and(Collection<String> tags) {
return newBuilder().setAudienceType(AudienceType.TAG_AND).addAudienceTargetValues(tags).build();
}
public static AudienceTarget alias(String... alias) {
return newBuilder().setAudienceType(AudienceType.ALIAS).addAudienceTargetValues(alias).build();
}
public static AudienceTarget alias(Collection<String> aliases) {
return newBuilder().setAudienceType(AudienceType.ALIAS).addAudienceTargetValues(aliases).build();
}
public static AudienceTarget registrationId(String... registrationId) {
return newBuilder().setAudienceType(AudienceType.REGISTRATION_ID).addAudienceTargetValues(registrationId).build();
}
public static AudienceTarget registrationId(Collection<String> registrationIds) {
return newBuilder().setAudienceType(AudienceType.REGISTRATION_ID).addAudienceTargetValues(registrationIds).build();
}
public AudienceType getAudienceType() {
return this.audienceType;
}
public String getAudienceTypeValue() {
return this.audienceType.value();
}
public JsonElement toJSON() {
JsonArray array = new JsonArray();
if (null != values) {
for (String value : values) {
array.add(new JsonPrimitive(value));
}
}
return array;
}
public static class Builder {
private AudienceType audienceType = null;
private Set<String> valueBuilder = null;
public Builder setAudienceType(AudienceType audienceType) {
this.audienceType = audienceType;
return this;
}
public Builder addAudienceTargetValue(String value) {
if (null == valueBuilder) {
valueBuilder = new HashSet<String>();
}
valueBuilder.add(value);
return this;
}
public Builder addAudienceTargetValues(Collection<String> values) {
if (null == valueBuilder) {
valueBuilder = new HashSet<String>();
}
for (String value : values) {
valueBuilder.add(value);
}
return this;
}
public Builder addAudienceTargetValues(String... values) {
if (null == valueBuilder) {
valueBuilder = new HashSet<String>();
}
for (String value : values) {
valueBuilder.add(value);
}
return this;
}
public AudienceTarget build() {
Preconditions.checkArgument(null != audienceType, "AudienceType should be set.");
Preconditions.checkArgument(null != valueBuilder, "Target values should be set one at least.");
return new AudienceTarget(audienceType, valueBuilder);
}
}
}