package org.societies.android.platform.cssmanager; import java.util.Arrays; import java.util.List; import org.jivesoftware.smack.packet.IQ; import org.societies.android.api.internal.cssmanager.AndroidCSSNode; import org.societies.android.api.internal.cssmanager.AndroidCSSRecord; import org.societies.api.comm.xmpp.datatypes.Stanza; import org.societies.api.comm.xmpp.datatypes.XMPPInfo; import org.societies.api.comm.xmpp.exceptions.XMPPError; import org.societies.api.comm.xmpp.interfaces.ICommCallback; import org.societies.api.identity.IIdentity; import org.societies.api.identity.InvalidFormatException; import org.societies.api.internal.css.management.CSSManagerEnums; import org.societies.api.schema.cssmanagement.CssInterfaceResult; import org.societies.api.schema.cssmanagement.CssManagerMessageBean; import org.societies.api.schema.cssmanagement.CssManagerResultBean; import org.societies.api.schema.cssmanagement.CssNode; import org.societies.api.schema.cssmanagement.CssRecord; import org.societies.api.schema.cssmanagement.MethodType; import org.societies.comm.xmpp.client.impl.ClientCommunicationMgr; import org.societies.identity.IdentityManagerImpl; import android.app.Activity; import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; public class AndroidCSSManagerActivity extends Activity { private static final String LOG_TAG = AndroidCSSManagerActivity.class.getName(); private static final List<String> ELEMENT_NAMES = Arrays.asList("cssManagerMessageBean", "cssManagerResultBean"); private static final List<String> NAME_SPACES = Arrays.asList( "http://societies.org/api/schema/cssmanagement"); private static final List<String> PACKAGES = Arrays.asList( "org.societies.api.schema.cssmanagement"); public static final String TEST_IDENTITY_1 = "node11"; public static final String TEST_IDENTITY_2 = "node22"; public static final String TEST_IDENTITY = "android"; public static final String TEST_INACTIVE_DATE = "20121029"; public static final String TEST_REGISTERED_DATE = "20120229"; public static final int TEST_UPTIME = 7799; public static final String TEST_EMAIL = "somebody@tssg.org"; public static final String TEST_FORENAME = "4Name"; public static final String TEST_HOME_LOCATION = "The Hearth"; public static final String TEST_IDENTITY_NAME = "Id Name"; public static final String TEST_IM_ID = "somebody.tssg.org"; public static final String TEST_NAME = "The CSS"; public static final String TEST_PASSWORD = "androidpass"; public static final String TEST_SOCIAL_URI = "sombody@fb.com"; private static final String DESTINATION = "xcmanager.societies.local"; private final IIdentity toXCManager; private final ICommCallback callback = createCallback(); private ClientCommunicationMgr ccm; public AndroidCSSManagerActivity() { try { toXCManager = IdentityManagerImpl.staticfromJid(DESTINATION); } catch (InvalidFormatException e) { Log.e(LOG_TAG, e.getMessage(), e); throw new RuntimeException(e); } } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(LOG_TAG, "Activity created"); setContentView(R.layout.main); ExampleTask task = new ExampleTask(this); task.execute(); } @Override public void onDestroy() { super.onDestroy(); Log.d(LOG_TAG, "Activity destroyed"); ccm.unregister(ELEMENT_NAMES, callback); } private class ExampleTask extends AsyncTask<Void, Void, Void> { private Context context; public ExampleTask(Context context) { this.context = context; } protected Void doInBackground(Void... args) { ccm = new ClientCommunicationMgr(context); CssManagerMessageBean messageBean = new CssManagerMessageBean(); messageBean.setProfile(AndroidCSSManagerActivity.this.createAndroidRecord()); messageBean.setMethod(MethodType.LOGIN_CSS); Stanza stanza = new Stanza(toXCManager); try { ccm.register(ELEMENT_NAMES, callback); ccm.sendIQ(stanza, IQ.Type.GET, messageBean, callback); Log.d(LOG_TAG, "Send stanza"); } catch (Exception e) { Log.e(this.getClass().getName(), e.getMessage()); } return null; } } private AndroidCSSRecord createAndroidRecord() { AndroidCSSNode aCSSNode_1, aCSSNode_2; AndroidCSSNode aCSSNodes []; AndroidCSSNode aCSSArchivedNodes []; aCSSNode_1 = new AndroidCSSNode(); aCSSNode_1.setIdentity(TEST_IDENTITY_1); aCSSNode_1.setStatus(CSSManagerEnums.nodeStatus.Available.ordinal()); aCSSNode_1.setType(CSSManagerEnums.nodeType.Rich.ordinal()); aCSSNode_2 = new AndroidCSSNode(); aCSSNode_2.setIdentity(TEST_IDENTITY_2); aCSSNode_2.setStatus(CSSManagerEnums.nodeStatus.Hibernating.ordinal()); aCSSNode_2.setType(CSSManagerEnums.nodeType.Android.ordinal()); aCSSNodes = new AndroidCSSNode[2]; aCSSNodes[0] = aCSSNode_1; aCSSNodes[1] = aCSSNode_2; aCSSArchivedNodes = new AndroidCSSNode[2]; aCSSArchivedNodes[0] = aCSSNode_1; aCSSArchivedNodes[1] = aCSSNode_1; AndroidCSSRecord cssProfile = new AndroidCSSRecord(); cssProfile.setCSSNodes(aCSSNodes); cssProfile.setArchiveCSSNodes(aCSSArchivedNodes); cssProfile.setCssIdentity(TEST_IDENTITY); cssProfile.setCssInactivation(TEST_INACTIVE_DATE); cssProfile.setCssRegistration(TEST_REGISTERED_DATE); cssProfile.setStatus(CSSManagerEnums.cssStatus.Active.ordinal()); cssProfile.setCssUpTime(TEST_UPTIME); cssProfile.setEmailID(TEST_EMAIL); cssProfile.setEntity(CSSManagerEnums.entityType.Organisation.ordinal()); cssProfile.setForeName(TEST_FORENAME); cssProfile.setHomeLocation(TEST_HOME_LOCATION); cssProfile.setIdentityName(TEST_IDENTITY_NAME); cssProfile.setImID(TEST_IM_ID); cssProfile.setName(TEST_NAME); cssProfile.setPassword(TEST_PASSWORD); cssProfile.setPresence(CSSManagerEnums.presenceType.Available.ordinal()); cssProfile.setSex(CSSManagerEnums.genderType.Unspecified.ordinal()); cssProfile.setSocialURI(TEST_SOCIAL_URI); return cssProfile; } private CssRecord createRecord() { CssNode cssNode_1, cssNode_2; cssNode_1 = new CssNode(); cssNode_1.setIdentity(TEST_IDENTITY_1); cssNode_1.setStatus(CSSManagerEnums.nodeStatus.Available.ordinal()); cssNode_1.setType(CSSManagerEnums.nodeType.Rich.ordinal()); cssNode_2 = new CssNode(); cssNode_2.setIdentity(TEST_IDENTITY_2); cssNode_2.setStatus(CSSManagerEnums.nodeStatus.Hibernating.ordinal()); cssNode_2.setType(CSSManagerEnums.nodeType.Android.ordinal()); CssRecord cssProfile = new CssRecord(); cssProfile.getCssNodes().add(cssNode_1); cssProfile.getCssNodes().add(cssNode_2); cssProfile.getArchiveCSSNodes().add(cssNode_1); cssProfile.getArchiveCSSNodes().add(cssNode_2); cssProfile.setCssIdentity(TEST_IDENTITY); cssProfile.setCssInactivation(TEST_INACTIVE_DATE); cssProfile.setCssRegistration(TEST_REGISTERED_DATE); cssProfile.setStatus(CSSManagerEnums.cssStatus.Active.ordinal()); cssProfile.setCssUpTime(TEST_UPTIME); cssProfile.setEmailID(TEST_EMAIL); cssProfile.setEntity(CSSManagerEnums.entityType.Organisation.ordinal()); cssProfile.setForeName(TEST_FORENAME); cssProfile.setHomeLocation(TEST_HOME_LOCATION); cssProfile.setIdentityName(TEST_IDENTITY_NAME); cssProfile.setImID(TEST_IM_ID); cssProfile.setName(TEST_NAME); cssProfile.setPassword(TEST_PASSWORD); cssProfile.setPresence(CSSManagerEnums.presenceType.Available.ordinal()); cssProfile.setSex(CSSManagerEnums.genderType.Unspecified.ordinal()); cssProfile.setSocialURI(TEST_SOCIAL_URI); return cssProfile; } private ICommCallback createCallback() { return new ICommCallback() { public List<String> getXMLNamespaces() { return NAME_SPACES; } public List<String> getJavaPackages() { return PACKAGES; } public void receiveResult(Stanza stanza, Object payload) { Log.d(LOG_TAG, "receiveResult"); Log.d(LOG_TAG, "Payload class of type: " + payload.getClass().getName()); if (payload instanceof CssManagerResultBean) { CssManagerResultBean resultBean = (CssManagerResultBean) payload; CssInterfaceResult cssResult = (CssInterfaceResult) resultBean.getResult(); Log.d(LOG_TAG, "bean result: " + cssResult.isResultStatus()); Log.d(LOG_TAG, "bean CssRecord: " + cssResult.getProfile().getCssIdentity()); } debugStanza(stanza); } public void receiveError(Stanza stanza, XMPPError error) { Log.d(LOG_TAG, "receiveError"); } public void receiveInfo(Stanza stanza, String node, XMPPInfo info) { Log.d(LOG_TAG, "receiveInfo"); } public void receiveMessage(Stanza stanza, Object payload) { Log.d(LOG_TAG, "receiveMessage"); debugStanza(stanza); } private void debugStanza(Stanza stanza) { Log.d(LOG_TAG, "id="+stanza.getId()); Log.d(LOG_TAG, "from="+stanza.getFrom()); Log.d(LOG_TAG, "to="+stanza.getTo()); } public void receiveItems(Stanza stanza, String node, List<String> items) { Log.d(LOG_TAG, "receiveItems"); debugStanza(stanza); Log.d(LOG_TAG, "node: "+node); Log.d(LOG_TAG, "items:"); for(String item:items) Log.d(LOG_TAG, item); } }; } }