quartzPro/.svn/pristine/c1/c1adf8303c9b905a6e1d405929c...

129 lines
4.1 KiB
Plaintext

package com.ifish.jpush.push.model;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import com.ifish.jpush.common.ServiceHelper;
import com.ifish.jpush.utils.Preconditions;
public class Options implements PushModel {
private static final String SENDNO = "sendno";
private static final String OVERRIDE_MSG_ID = "override_msg_id";
private static final String TIME_TO_LIVE = "time_to_live";
private static final String APNS_PRODUCTION = "apns_production";
private static final String BIG_PUSH_DURATION = "big_push_duration";
private static final long NONE_TIME_TO_LIVE = -1;
private final int sendno;
private final long overrideMsgId;
private long timeToLive;
private boolean apnsProduction;
private int bigPushDuration; // minutes
private Options(int sendno, long overrideMsgId, long timeToLive, boolean apnsProduction,
int bigPushDuration) {
this.sendno = sendno;
this.overrideMsgId = overrideMsgId;
this.timeToLive = timeToLive;
this.apnsProduction = apnsProduction;
this.bigPushDuration = bigPushDuration;
}
public static Builder newBuilder() {
return new Builder();
}
public static Options sendno() {
return newBuilder().setSendno(ServiceHelper.generateSendno()).build();
}
public static Options sendno(int sendno) {
return newBuilder().setSendno(sendno).build();
}
public void setApnsProduction(boolean apnsProduction) {
this.apnsProduction = apnsProduction;
}
public void setTimeToLive(long timeToLive) {
this.timeToLive = timeToLive;
}
public void setBigPushDuration(int bigPushDuration) {
this.bigPushDuration = bigPushDuration;
}
public int getSendno() {
return this.sendno;
}
@Override
public JsonElement toJSON() {
JsonObject json = new JsonObject();
if (sendno > 0) {
json.add(SENDNO, new JsonPrimitive(sendno));
}
if (overrideMsgId > 0) {
json.add(OVERRIDE_MSG_ID, new JsonPrimitive(overrideMsgId));
}
if (timeToLive >= 0) {
json.add(TIME_TO_LIVE, new JsonPrimitive(timeToLive));
}
json.add(APNS_PRODUCTION, new JsonPrimitive(apnsProduction));
if (bigPushDuration > 0) {
json.add(BIG_PUSH_DURATION, new JsonPrimitive(bigPushDuration));
}
return json;
}
public static class Builder {
private int sendno = 0;
private long overrideMsgId = 0;
private long timeToLive = NONE_TIME_TO_LIVE;
private boolean apnsProduction = false;
private int bigPushDuration = 0;
public Builder setSendno(int sendno) {
this.sendno = sendno;
return this;
}
public Builder setOverrideMsgId(long overrideMsgId) {
this.overrideMsgId = overrideMsgId;
return this;
}
public Builder setTimeToLive(long timeToLive) {
this.timeToLive = timeToLive;
return this;
}
public Builder setApnsProduction(boolean apnsProduction) {
this.apnsProduction = apnsProduction;
return this;
}
public Builder setBigPushDuration(int bigPushDuration) {
this.bigPushDuration = bigPushDuration;
return this;
}
public Options build() {
Preconditions.checkArgument(sendno >= 0, "sendno should be greater than 0.");
Preconditions.checkArgument(overrideMsgId >= 0, "override_msg_id should be greater than 0.");
Preconditions.checkArgument(timeToLive >= NONE_TIME_TO_LIVE, "time_to_live should be greater than 0.");
Preconditions.checkArgument(bigPushDuration >= 0, "bigPushDuration should be greater than 0.");
if (sendno <= 0) {
sendno = ServiceHelper.generateSendno();
}
return new Options(sendno, overrideMsgId, timeToLive, apnsProduction, bigPushDuration);
}
}
}