package com.voxeo.moho.presence.xmpp.impl;
import java.util.Collection;
import org.apache.log4j.Logger;
import com.voxeo.moho.presence.impl.AbstractResource;
import com.voxeo.moho.presence.impl.xmpp.XMPPPresenceStore;
import com.voxeo.moho.presence.xmpp.XMPPPresenceResource;
import com.voxeo.moho.presence.xmpp.XmppPendingNotification;
import com.voxeo.moho.spi.ExecutionContext;
import com.voxeo.servlet.xmpp.JID;
public class XMPPPresenceResourceImpl extends AbstractResource implements XMPPPresenceResource {
private static final long serialVersionUID = -5908903825072997723L;
private static final Logger LOG = Logger.getLogger(XMPPPresenceResourceImpl.class);
private boolean _interested;
private boolean _available;
private String _bareJID;
public XMPPPresenceResourceImpl(ExecutionContext context, JID fullJID) {
super(context, fullJID.toString());
_bareJID = fullJID.getBareJID().toString();
save();
}
@Override
public boolean isAvailable() {
return _available;
}
@Override
public boolean isInterested() {
return _interested;
}
public void setInterested(boolean interested) {
_interested = interested;
save();
}
public void setAvailable(boolean available) {
_available = available;
save();
Collection<XmppPendingNotification> subscriptions = getStore().getNotifyByTo(_context.getXmppFactory().createJID(getUri()).getBareJID().toString());
for (XmppPendingNotification subscription : subscriptions) {
try {
subscription.triggerSendToSubscribee();
}
catch (Exception e) {
LOG.error("Error sending pending subsciption for " + this, e);
}
}
}
protected XMPPPresenceStore getStore() {
return (XMPPPresenceStore) super.getStore();
}
private void save() {
getStore().addResource(this);
}
@Override
public String toString() {
return "XMPPPresenceResource [JID=" + getUri() + "]";
}
@Override
public String getBareJID() {
return _bareJID;
}
}