package com.reucon.openfire.plugin.archive.xep0136;
import org.dom4j.Element;
import org.jivesoftware.openfire.auth.UnauthorizedException;
import org.jivesoftware.openfire.disco.ServerFeaturesProvider;
import org.xmpp.packet.IQ;
import com.reucon.openfire.plugin.archive.xep.AbstractIQHandler;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* Message Archiving Preferences Handler.
*/
public class IQPrefHandler extends AbstractIQHandler implements ServerFeaturesProvider
{
private static final String NAMESPACE = "urn:xmpp:archive";
private static final String NAMESPACE_PREF = "urn:xmpp:archive:pref";
public IQPrefHandler()
{
super("Message Archiving Preferences Handler", "pref", NAMESPACE);
}
@SuppressWarnings("unchecked")
public IQ handleIQ(IQ packet) throws UnauthorizedException
{
IQ reply = IQ.createResultIQ(packet);
Element prefRequest = packet.getChildElement();
System.err.println("Received pref message from " + packet.getFrom());
if (prefRequest.element("default") != null)
{
Element defaultItem = prefRequest.element("default");
// User requests to set default modes
defaultItem.attribute("save"); // body, false, message, stream
defaultItem.attribute("otr");
defaultItem.attribute("expire");
}
for (Element item : (List<Element>) prefRequest.elements("item"))
{
// User requests to set modes for a contact
item.attribute("jid");
item.attribute("save"); // body, false, message, stream
item.attribute("otr");
item.attribute("expire");
}
for (Element method : (List<Element>) prefRequest.elements("method"))
{
// User requests to set archiving method preferences
method.attribute("type");
method.attribute("use");
}
return reply;
}
public Iterator<String> getFeatures()
{
ArrayList<String> features = new ArrayList<String>();
features.add(NAMESPACE_PREF);
return features.iterator();
}
}