/**
*
*/
package jframe.getui.andriod;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import jframe.core.plugin.annotation.InjectPlugin;
import jframe.core.plugin.annotation.Injector;
import jframe.core.plugin.annotation.Start;
import jframe.core.plugin.annotation.Stop;
import jframe.getui.GetuiConf;
import jframe.getui.GetuiPlugin;
import jframe.getui.GetuiService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gexin.rp.sdk.base.IPushResult;
import com.gexin.rp.sdk.base.ITemplate;
import com.gexin.rp.sdk.base.impl.ListMessage;
import com.gexin.rp.sdk.base.impl.SingleMessage;
import com.gexin.rp.sdk.base.impl.Target;
import com.gexin.rp.sdk.http.IGtPush;
/**
* @author dzh
* @date Sep 29, 2014 12:01:49 PM
* @since 1.0
*/
@Injector
public class GetuiServiceImpl implements GetuiService {
static Logger LOG = LoggerFactory.getLogger(GetuiServiceImpl.class);
@InjectPlugin
static GetuiPlugin plugin;
static String FILE_CONF = "file.getui";
private IGtPush push;
@Start
void start() {
String conf = plugin.getConfig(FILE_CONF);
if (!new File(conf).exists()) {
LOG.error("Not found getui config file {}", conf);
return;
}
try {
GetuiConf.init(conf);
System.setProperty("gexin.rp.sdk.http.connection.timeout",
GetuiConf.HTTP_CONN_TIMEOUT);
System.setProperty("gexin.rp.sdk.http.connection.pool.size",
GetuiConf.HTTP_CONN_COUNT);
push = new IGtPush(GetuiConf.HOST, GetuiConf.APPKEY,
GetuiConf.MASTER_SECRET);
} catch (Exception e) {
LOG.error(e.getMessage());
return;
}
LOG.info("GetuiService start successfully!");
}
@Stop
public void stop() {
try {
push.close();
} catch (IOException e) {
LOG.error(e.getMessage());
}
plugin = null;
}
public void setPush(IGtPush push) {
this.push = push;
}
/**
*
*/
@Override
public IPushResult push2List(ITemplate data, boolean isOffline,
long offlineExpireTime, List<String> token) {
ListMessage message = new ListMessage();
message.setData(data);
message.setOffline(isOffline);
message.setOfflineExpireTime(offlineExpireTime);
List<Target> list = new ArrayList<Target>(token.size());
Target target = null;
for (String t : token) {
target = new Target();
target.setAppId(GetuiConf.APPID);
target.setClientId(t);
list.add(target);
}
return push.pushMessageToList(push.getContentId(message), list);
}
@Override
public IPushResult push2Single(ITemplate data, boolean isOffline,
long offlineExpireTime, String token) throws Exception {
SingleMessage message = new SingleMessage();
message.setOffline(isOffline);
message.setOfflineExpireTime(offlineExpireTime);
message.setData(data);
Target target = new Target();
target.setAppId(GetuiConf.APPID);
target.setClientId(token);
return push.pushMessageToSingle(message, target);
}
// public IPushResult push2App(ITemplate data, boolean isOffline,
// long offlineExpireTime) throws Exception {
//
// return null;
// }
}