package com.sissi.pipeline.in;
import java.util.Set;
import com.sissi.addressing.Addressing;
import com.sissi.broadcast.BroadcastPresence;
import com.sissi.broadcast.BroadcastProtocol;
import com.sissi.context.JID;
import com.sissi.context.JIDBuilder;
import com.sissi.context.JIDContext;
import com.sissi.context.JIDs;
import com.sissi.context.Status;
import com.sissi.pipeline.Input;
import com.sissi.protocol.Protocol;
import com.sissi.ucenter.relation.Relation;
import com.sissi.ucenter.relation.RelationContext;
/**
* @author kim 2013-11-16
*/
abstract public class ProxyProcessor implements Input {
protected JIDBuilder jidBuilder;
protected Addressing addressing;
protected BroadcastPresence presenceQueue;
protected BroadcastProtocol protocolQueue;
protected RelationContext relationContext;
public void setAddressing(Addressing addressing) {
this.addressing = addressing;
}
public void setJidBuilder(JIDBuilder jidBuilder) {
this.jidBuilder = jidBuilder;
}
public void setRelationContext(RelationContext relationContext) {
this.relationContext = relationContext;
}
public void setPresenceQueue(BroadcastPresence presenceQueue) {
this.presenceQueue = presenceQueue;
}
public void setProtocolQueue(BroadcastProtocol protocolQueue) {
this.protocolQueue = protocolQueue;
}
protected JID build(String jid) {
return this.jidBuilder.build(jid);
}
protected JID build(String username, String resource) {
return this.jidBuilder.build(username, resource);
}
protected ProxyProcessor join(JIDContext context) {
this.addressing.join(context);
return this;
}
protected JIDContext find(JID jid) {
return this.addressing.find(jid);
}
protected JIDContext findOne(JID jid) {
return this.addressing.findOne(jid);
}
protected JIDContext findOne(JID jid, boolean usingResource) {
return this.addressing.findOne(jid, usingResource);
}
protected JIDContext findOne(JID jid, boolean usingResource, boolean offline) {
return this.addressing.findOne(jid, usingResource, offline);
}
public ProxyProcessor priority(JIDContext context) {
this.addressing.priority(context);
return this;
}
public JIDs resources(JID jid) {
return this.addressing.resources(jid);
}
public JIDs resources(JID jid, boolean usingResource) {
return this.addressing.resources(jid, usingResource);
}
protected ProxyProcessor broadcast(JID jid, JID from, Status status) {
this.presenceQueue.broadcast(jid, from, status);
return this;
}
protected ProxyProcessor broadcast(JID jid, Protocol protocol) {
this.protocolQueue.broadcast(jid, protocol);
return this;
}
protected ProxyProcessor establish(JID from, Relation relation) {
this.relationContext.establish(from, relation);
return this;
}
protected ProxyProcessor update(JID from, JID to, String state) {
this.relationContext.update(from, to, state);
return this;
}
protected ProxyProcessor remove(JID from, JID to) {
this.relationContext.remove(from, to);
return this;
}
protected Relation ourRelation(JID from, JID to) {
return this.relationContext.ourRelation(from, to);
}
protected Set<Relation> myRelations(JID from) {
return this.relationContext.myRelations(from);
}
protected Set<JID> whoSubscribedMe(JID from) {
return this.relationContext.whoSubscribedMe(from);
}
protected Set<JID> iSubscribedWho(JID from) {
return this.relationContext.iSubscribedWho(from);
}
}