package org.ifsoft.openlink.commands;
import java.util.Arrays;
import java.util.List;
import java.util.Iterator;
import org.dom4j.Element;
import org.jivesoftware.util.Log;
import org.w3c.dom.NodeList;
import org.ifsoft.openlink.component.*;
public class QueryFeatures extends OpenlinkCommand {
public QueryFeatures(OpenlinkComponent traderLyncComponent) {
super(traderLyncComponent);
}
@Override protected boolean addStageInformation(SessionData data, Element newCommand, Element oldCommand)
{
return false;
}
@Override public Element execute(SessionData data, Element newCommand, Element oldCommand)
{
try {
String profileID = oldCommand.element("iodata").element("in").element("profile").getText();
Element iodata = newCommand.addElement("iodata", "urn:xmpp:tmp:io-data");
iodata.addAttribute("type","output");
Element features = iodata.addElement("out").addElement("features");
OpenlinkUser traderLyncUser = this.getOpenlinkComponent().getOpenlinkProfile(profileID);
if (traderLyncUser != null)
{
if (!validPermissions(data, traderLyncUser.getUserId(), newCommand))
{
return newCommand;
}
String hs1 = "true";
String hs2 = "false";
if ("2".equals(traderLyncUser.getHandsetNo()))
{
hs1 = "false";
hs2 = "true";
}
Element feature1 = features.addElement("feature");
feature1.addAttribute("id", "hs_1");
feature1.addAttribute("value1", hs1);
Element feature2 = features.addElement("feature");
feature2.addAttribute("id", "hs_2");
feature2.addAttribute("value1", hs2);
Element feature3 = features.addElement("feature");
feature3.addAttribute("id", "priv_1");
feature3.addAttribute("value1", traderLyncUser.getLastPrivacy());
Element feature4 = features.addElement("feature");
feature4.addAttribute("id", "fwd_1");
feature4.addAttribute("value2", traderLyncUser.getLastCallForward());
feature4.addAttribute("value1", traderLyncUser.getLastCallForwardInterest());
/*
if (traderLyncUser.getCallback() != null && this.getOpenlinkComponent().traderLyncLinkService.isCallbackAvailable())
{
Element feature7 = features.addElement("feature");
feature7.addAttribute("id", "callback_1");
feature7.addAttribute("value2", traderLyncUser.getCallback());
feature7.addAttribute("value1", traderLyncUser.getPhoneCallback() != null ? "true" : "false");
}
Element feature5 = features.addElement("feature");
feature5.addAttribute("id", "hold_1");
feature5.addAttribute("value1", traderLyncUser.autoHold() ? "true" : "false");
Element feature6 = features.addElement("feature");
feature6.addAttribute("id", "icom_1");
feature6.addAttribute("value1", traderLyncUser.intercom() ? "true" : "false");
*/
} else {
Element note = newCommand.addElement("note");
note.addAttribute("type", "error");
note.setText("QueryFeature Error - Profile Id not found");
}
} catch (Exception e) {
Log.error("[Openlink] QueryFeatures execute error " + e);
Element note = newCommand.addElement("note");
note.addAttribute("type", "error");
note.setText("Query Features Internal error");
}
return newCommand;
}
@Override protected List<Action> getActions(SessionData data)
{
return Arrays.asList(new Action[] { Action.complete });
}
@Override public String getCode()
{
return "http://xmpp.org/protocol/openlink:01:00:00#query-features";
}
@Override public String getDefaultLabel()
{
return "Query Features";
}
@Override protected Action getExecuteAction(SessionData data)
{
return Action.complete;
}
@Override public int getMaxStages(SessionData data)
{
return 0;
}
}