package org.chartsy.chatsy.chatimpl.plugin.gateways;
import org.jivesoftware.smackx.packet.PrivateData;
import org.jivesoftware.smackx.provider.PrivateDataProvider;
import org.xmlpull.v1.XmlPullParser;
import java.util.HashMap;
import java.util.Map;
public class GatewayPrivateData implements PrivateData
{
private final Map<String, String> loginSettingsMap = new HashMap<String, String>();
public static final String ELEMENT = "gateway-settings";
public static final String NAMESPACE = "http://www.jivesoftware.org/spark";
public void addService(String serviceName, boolean autoLogin)
{
loginSettingsMap.put(serviceName, Boolean.toString(autoLogin));
}
public boolean autoLogin(String serviceName)
{
String str = loginSettingsMap.get(serviceName);
if (str == null)
return true;
return Boolean.parseBoolean(str);
}
public String getElementName()
{
return ELEMENT;
}
public String getNamespace()
{
return NAMESPACE;
}
public String toXML()
{
StringBuilder buf = new StringBuilder();
buf.append("<").append(getElementName()).append(" xmlns=\"").append(getNamespace()).append("\">");
buf.append("<gateways>");
for (String serviceName : loginSettingsMap.keySet())
{
buf.append("<gateway>");
String autoLogin = loginSettingsMap.get(serviceName);
buf.append("<serviceName>").append(serviceName).append("</serviceName>");
buf.append("<autoLogin>").append(autoLogin).append("</autoLogin>");
buf.append("</gateway>");
}
buf.append("</gateways>");
buf.append("</").append(getElementName()).append(">");
return buf.toString();
}
public static class ConferencePrivateDataProvider implements PrivateDataProvider
{
public ConferencePrivateDataProvider()
{
}
public PrivateData parsePrivateData(XmlPullParser parser) throws Exception
{
GatewayPrivateData data = new GatewayPrivateData();
boolean done = false;
boolean isInstalled = false;
while (!done)
{
int eventType = parser.next();
if (eventType == XmlPullParser.START_TAG
&& parser.getName().equals("gateways"))
isInstalled = true;
if (eventType == XmlPullParser.START_TAG
&& parser.getName().equals("gateway"))
{
boolean gatewayDone = false;
String serviceName = null;
String autoLogin = null;
while (!gatewayDone)
{
int eType = parser.next();
if (eType == XmlPullParser.START_TAG
&& parser.getName().equals("serviceName"))
{
serviceName = parser.nextText();
}
else if (eType == XmlPullParser.START_TAG
&& parser.getName().equals("autoLogin"))
{
autoLogin = parser.nextText();
}
else if (eType == XmlPullParser.END_TAG
&& parser.getName().equals("gateway"))
{
data.addService(serviceName, Boolean.parseBoolean(autoLogin));
gatewayDone = true;
}
}
}
else if (eventType == XmlPullParser.END_TAG
&& parser.getName().equals("gateways"))
{
done = true;
}
else if (!isInstalled)
{
done = true;
}
}
return data;
}
}
}