package com.openims.service.notificationPacket; import org.jivesoftware.smack.PacketListener; import org.jivesoftware.smack.packet.Packet; import android.util.Log; import com.openims.model.pushService.PushInfoManager; import com.openims.service.IMService; import com.openims.service.XmppManager; import com.openims.utility.LogUtil; import com.openims.utility.PushServiceUtil; public class RegPushPacketListener implements PacketListener { private static final String LOGTAG = LogUtil .makeLogTag(NotificationPacketListener.class); private static final String TAG = LogUtil.makeTag(RegPushPacketListener.class); private final XmppManager xmppManager; public RegPushPacketListener(XmppManager xmppManager) { this.xmppManager = xmppManager; } @Override public void processPacket(Packet packet) { Log.d(LOGTAG, TAG+"processPacket()..."); Log.d(LOGTAG, TAG+"packet.toXML()=" + packet.toXML()); if (packet instanceof RegPushIQ) { RegPushIQ regPushIQ = (RegPushIQ) packet; String pushName = regPushIQ.getPushServiceName(); String pushID = regPushIQ.getPushRegID(); String type = PushServiceUtil.PUSH_TYPE_REG; PushInfoManager pushInfo = new PushInfoManager(xmppManager.getContext()); StringBuilder packageNameBuilder = new StringBuilder(); StringBuilder classNameBuilder = new StringBuilder(); if(regPushIQ.getRegOrUnreg() == false){ type = PushServiceUtil.PUSH_TYPE_UNREG; pushInfo.getPushInfo(pushID, packageNameBuilder, classNameBuilder); pushInfo.deletePushInfoInDb(pushName,xmppManager.getUserNameWithHostName()); // TODO-ANDREW it's not good enough. Unsafty }else{ if( pushInfo.updatePushID(pushName,xmppManager.getUserNameWithHostName(), pushID)== false) return; // have timeout pushInfo.getPushInfo(pushID, packageNameBuilder, classNameBuilder); } IMService.sendRegisterBroadcast(classNameBuilder.toString(), pushID, PushServiceUtil.PUSH_STATUS_SUC,type,xmppManager.getContext()); pushInfo.close(); } } }