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.jivesoftware.openfire.admin.AdminManager; import org.w3c.dom.NodeList; import org.ifsoft.openlink.component.*; public class GetProfile extends OpenlinkCommand { public GetProfile(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 profile = iodata.addElement("out").addElement("profile"); Element keypages = profile.addElement("keypages"); OpenlinkUser traderLyncUser = this.getOpenlinkComponent().getOpenlinkProfile(profileID); if (traderLyncUser != null) { String userAgent = data.getOwner().getNode(); if(!AdminManager.getInstance().isUserAdmin(userAgent, false) && !userAgent.equals(traderLyncUser.getUserId()) && !userAgent.equals(traderLyncUser.getUserNo())) { // only access request from profile device user or openlink api user return newCommand; } profile.addAttribute("online", "0.0.0.0".equals(traderLyncUser.getDeviceNo()) ? "false" : "true"); this.getOpenlinkComponent().loadProfile(profileID); } else { Element note = newCommand.addElement("note"); note.addAttribute("type", "error"); note.setText("Profile Id not found"); } } catch (Exception e) { Log.error("[Openlink] GetProfile execute error " + e.getMessage()); Element note = newCommand.addElement("note"); note.addAttribute("type", "error"); note.setText("Get Profile 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#get-profile"; } @Override public String getDefaultLabel() { return "Get Profile"; } @Override protected Action getExecuteAction(SessionData data) { return Action.complete; } @Override public int getMaxStages(SessionData data) { return 0; } }