Search in sources :

Example 1 with PresenceList

use of com.vodafone360.people.datatypes.PresenceList in project 360-Engine-for-Android by 360.

the class User method createPayload.

/**
 * @param payload
 * @return
 */
private ArrayList<NetworkPresence> createPayload(String userId, Hashtable<String, String> payload) {
    ArrayList<NetworkPresence> presenceList = new ArrayList<NetworkPresence>(payload.size());
    String parsedUserId = parseUserName(userId);
    String key = null;
    SocialNetwork network = null;
    String value = null;
    OnlineStatus status = null;
    for (Enumeration<String> en = payload.keys(); en.hasMoreElements(); ) {
        key = en.nextElement();
        network = SocialNetwork.getValue(key);
        if (network != null) {
            int keyIdx = network.ordinal();
            value = payload.get(key);
            if (value != null) {
                status = OnlineStatus.getValue(value);
                if (status != null) {
                    int valueIdx = status.ordinal();
                    presenceList.add(new NetworkPresence(parsedUserId, keyIdx, valueIdx));
                }
            }
        }
    }
    return presenceList;
}
Also used : ArrayList(java.util.ArrayList) SocialNetwork(com.vodafone360.people.engine.presence.NetworkPresence.SocialNetwork) OnlineStatus(com.vodafone360.people.datatypes.ContactSummary.OnlineStatus)

Example 2 with PresenceList

use of com.vodafone360.people.datatypes.PresenceList in project 360-Engine-for-Android by 360.

the class HessianDecoder method decodeResponseByRequestType.

/**
 * Parses the hashtables retrieved from the hessian payload that came from the server and
 * returns a type for it.
 *
 * @param clist The list that will be populated with the data types.
 * @param hash The hash table that contains the parsed date returned by the backend.
 * @param type The type of the request that was sent, e.g. get contacts changes.
 *
 * @return The type of the response that was parsed (to be found in DecodedResponse.ResponseType).
 */
private int decodeResponseByRequestType(List<BaseDataType> clist, Hashtable<String, Object> hash, Request.Type type) {
    int responseType = DecodedResponse.ResponseType.UNKNOWN.ordinal();
    switch(type) {
        case CONTACT_CHANGES_OR_UPDATES:
            responseType = DecodedResponse.ResponseType.GET_CONTACTCHANGES_RESPONSE.ordinal();
            // create ContactChanges
            ContactChanges contChanges = new ContactChanges();
            contChanges = contChanges.createFromHashtable(hash);
            clist.add(contChanges);
            break;
        case ADD_CONTACT:
            clist.add(Contact.createFromHashtable(hash));
            responseType = DecodedResponse.ResponseType.ADD_CONTACT_RESPONSE.ordinal();
            break;
        case SIGN_UP:
            clist.add(Contact.createFromHashtable(hash));
            responseType = DecodedResponse.ResponseType.SIGNUP_RESPONSE.ordinal();
            break;
        case RETRIEVE_PUBLIC_KEY:
            // AA define new object type
            clist.add(PublicKeyDetails.createFromHashtable(hash));
            responseType = DecodedResponse.ResponseType.RETRIEVE_PUBLIC_KEY_RESPONSE.ordinal();
            break;
        case CONTACT_DELETE:
            ContactListResponse cresp = new ContactListResponse();
            cresp.createFromHashTable(hash);
            // add ids
            @SuppressWarnings("unchecked") Vector<Long> contactIds = (Vector<Long>) hash.get(KEY_CONTACT_ID_LIST);
            if (contactIds != null) {
                for (Long cid : contactIds) {
                    cresp.mContactIdList.add((cid).intValue());
                }
            }
            clist.add(cresp);
            responseType = DecodedResponse.ResponseType.DELETE_CONTACT_RESPONSE.ordinal();
            break;
        case CONTACT_DETAIL_DELETE:
            ContactDetailDeletion cdel = new ContactDetailDeletion();
            clist.add(cdel.createFromHashtable(hash));
            responseType = DecodedResponse.ResponseType.DELETE_CONTACT_DETAIL_RESPONSE.ordinal();
            break;
        case CONTACT_GROUP_RELATION_LIST:
            ItemList groupRelationList = new ItemList(ItemList.Type.contact_group_relation);
            groupRelationList.populateFromHashtable(hash);
            clist.add(groupRelationList);
            responseType = DecodedResponse.ResponseType.GET_CONTACT_GROUP_RELATIONS_RESPONSE.ordinal();
            break;
        case CONTACT_GROUP_RELATIONS:
            ItemList groupRelationsList = new ItemList(ItemList.Type.contact_group_relations);
            groupRelationsList.populateFromHashtable(hash);
            clist.add(groupRelationsList);
            responseType = DecodedResponse.ResponseType.GET_CONTACT_GROUP_RELATIONS_RESPONSE.ordinal();
            break;
        case DELETE_CONTACT_GROUP_RELATIONS:
            // The hessian data sent by the backend is of the form
            // r{1}{0}Mt{0}{0}zz. The MicroHessianInput always skips the 2 bytes
            // after the type. This doesn't seem to be handling the case where
            // the type is of length zero. Due to this, after decoding, the hash
            // doesn't contain any elements/keys. Due to this, we are hardcoding
            // the status to true here.
            StatusMsg statusMsg = new StatusMsg();
            statusMsg.mStatus = true;
            clist.add(statusMsg);
            responseType = DecodedResponse.ResponseType.UNKNOWN.ordinal();
            break;
        case GROUP_LIST:
            ItemList zyblist = new ItemList(ItemList.Type.group_privacy);
            zyblist.populateFromHashtable(hash);
            clist.add(zyblist);
            responseType = DecodedResponse.ResponseType.GET_GROUPS_RESPONSE.ordinal();
            break;
        case ITEM_LIST_OF_LONGS:
            ItemList listOfLongs = new ItemList(ItemList.Type.long_value);
            listOfLongs.populateFromHashtable(hash);
            clist.add(listOfLongs);
            // TODO
            responseType = DecodedResponse.ResponseType.UNKNOWN.ordinal();
            break;
        case // TODO status and status list are used by many requests as a type. each request should have its own type however!
        STATUS_LIST:
            ItemList zybstatlist = new ItemList(ItemList.Type.status_msg);
            zybstatlist.populateFromHashtable(hash);
            clist.add(zybstatlist);
            // TODO
            responseType = DecodedResponse.ResponseType.UNKNOWN.ordinal();
            break;
        case STATUS:
            StatusMsg s = new StatusMsg();
            s.mStatus = true;
            clist.add(s);
            // TODO
            responseType = DecodedResponse.ResponseType.UNKNOWN.ordinal();
            break;
        case TEXT_RESPONSE_ONLY:
            Object val = hash.get("result");
            if (val != null && val instanceof String) {
                SimpleText txt = new SimpleText();
                txt.addText((String) val);
                clist.add(txt);
            }
            // TODO
            responseType = DecodedResponse.ResponseType.UNKNOWN.ordinal();
            break;
        case EXPECTING_STATUS_ONLY:
            StatusMsg statMsg = new StatusMsg();
            clist.add(statMsg.createFromHashtable(hash));
            // TODO
            responseType = DecodedResponse.ResponseType.UNKNOWN.ordinal();
            break;
        case PRESENCE_LIST:
            PresenceList mPresenceList = new PresenceList();
            mPresenceList.createFromHashtable(hash);
            clist.add(mPresenceList);
            responseType = DecodedResponse.ResponseType.GET_PRESENCE_RESPONSE.ordinal();
            break;
        case PUSH_MSG:
            // parse content of RPG Push msg
            parsePushMessage(clist, hash);
            responseType = DecodedResponse.ResponseType.PUSH_MESSAGE.ordinal();
            break;
        case CREATE_CONVERSATION:
            Conversation mConversation = new Conversation();
            mConversation.createFromHashtable(hash);
            clist.add(mConversation);
            responseType = DecodedResponse.ResponseType.CREATE_CONVERSATION_RESPONSE.ordinal();
            break;
        case DELETE_IDENTITY:
            IdentityDeletion mIdenitityDeletion = new IdentityDeletion();
            clist.add(mIdenitityDeletion.createFromHashtable(hash));
            responseType = DecodedResponse.ResponseType.DELETE_IDENTITY_RESPONSE.ordinal();
            break;
        default:
            LogUtils.logE("HessianDecoder.decodeResponseByRequestType() Unhandled type[" + type.name() + "]");
    }
    return responseType;
}
Also used : StatusMsg(com.vodafone360.people.datatypes.StatusMsg) SimpleText(com.vodafone360.people.datatypes.SimpleText) PresenceList(com.vodafone360.people.datatypes.PresenceList) Conversation(com.vodafone360.people.datatypes.Conversation) ContactChanges(com.vodafone360.people.datatypes.ContactChanges) ContactListResponse(com.vodafone360.people.datatypes.ContactListResponse) IdentityDeletion(com.vodafone360.people.datatypes.IdentityDeletion) ContactDetailDeletion(com.vodafone360.people.datatypes.ContactDetailDeletion) ItemList(com.vodafone360.people.datatypes.ItemList) ExternalResponseObject(com.vodafone360.people.datatypes.ExternalResponseObject) Vector(java.util.Vector)

Example 3 with PresenceList

use of com.vodafone360.people.datatypes.PresenceList in project 360-Engine-for-Android by 360.

the class MePresenceCacheTableTest method testGetUpdateCache.

public void testGetUpdateCache() {
    final String userId = "1234";
    assertTrue(createTable());
    final ArrayList<NetworkPresence> presenceList = new ArrayList<NetworkPresence>();
    int onlineStatus = OnlineStatus.ONLINE.ordinal();
    for (int i = SocialNetwork.FACEBOOK_COM.ordinal(); i < SocialNetwork.MICROSOFT.ordinal(); i++) {
        NetworkPresence networkPresence = new NetworkPresence(userId, i, onlineStatus);
        presenceList.add(networkPresence);
        MePresenceCacheTable.updateCache(networkPresence, mTestDatabase.getWritableDatabase());
        assertTrue(checkCacheEquals(presenceList));
    }
    onlineStatus = OnlineStatus.OFFLINE.ordinal();
    for (int i = SocialNetwork.FACEBOOK_COM.ordinal(); i < SocialNetwork.MICROSOFT.ordinal(); i++) {
        NetworkPresence networkPresence = new NetworkPresence(userId, i, onlineStatus);
        presenceList.set(i, networkPresence);
        MePresenceCacheTable.updateCache(networkPresence, mTestDatabase.getWritableDatabase());
        assertTrue(checkCacheEquals(presenceList));
    }
}
Also used : NetworkPresence(com.vodafone360.people.engine.presence.NetworkPresence) ArrayList(java.util.ArrayList)

Example 4 with PresenceList

use of com.vodafone360.people.datatypes.PresenceList in project 360-Engine-for-Android by 360.

the class MePresenceCacheTableTest method checkCacheEquals.

private boolean checkCacheEquals(ArrayList<NetworkPresence> presenceList) {
    final ArrayList<NetworkPresence> cache = MePresenceCacheTable.getCache(mTestDatabase.getReadableDatabase());
    if (presenceList == null && cache == null) {
        return true;
    } else if (presenceList == null || cache == null) {
        return false;
    }
    final int cacheSize = cache.size();
    if (presenceList.size() != cacheSize) {
        return false;
    }
    for (int i = 0; i < cacheSize; i++) {
        NetworkPresence cacheValue = cache.get(i);
        NetworkPresence listValue = presenceList.get(i);
        if (cacheValue.getNetworkId() != listValue.getNetworkId()) {
            return false;
        }
        if (!(cacheValue.getUserId().equals(listValue.getUserId()))) {
            return false;
        }
        if (cacheValue.getOnlineStatusId() != listValue.getOnlineStatusId()) {
            return false;
        }
    }
    return true;
}
Also used : NetworkPresence(com.vodafone360.people.engine.presence.NetworkPresence)

Example 5 with PresenceList

use of com.vodafone360.people.datatypes.PresenceList in project 360-Engine-for-Android by 360.

the class PresenceList method createFromHashtable.

/**
 * //////////////////////////////ServiceMethods/////////////////////////////
 */
/**
 * Create PresenceList from Hashtable generated by Hessian-decoder
 *
 * @param hash Hashtable containing PresenceList parameters
 */
public void createFromHashtable(Hashtable<String, Object> hash) {
    LogUtils.logI("HessianDecoder.createFromHashtable() hash[" + hash.toString() + "]");
    Enumeration<String> e = hash.keys();
    while (e.hasMoreElements()) {
        String key = e.nextElement();
        LogUtils.logI("HessianDecoder.createFromHashtable() key[" + key + "] value[" + hash.get(key) + "]");
        Tags tag = Tags.findTag(key);
        if (tag != null) {
            setValue(tag, hash.get(key));
        }
    }
    LogUtils.logI("HessianDecoder.createFromHashtable() mUserId[" + mUserId + "] mType[" + mType + "] users[" + users + "]");
    if (users != null) {
        for (User mUser : users) {
            LogUtils.logI("HessianDecoder.createFromHashtable() getPayload[" + mUser.getPayload() + "]");
        }
    } else {
        LogUtils.logW("HessianDecoder.createFromHashtable() users is NULL");
    }
}
Also used : User(com.vodafone360.people.engine.presence.User)

Aggregations

NetworkPresence (com.vodafone360.people.engine.presence.NetworkPresence)2 User (com.vodafone360.people.engine.presence.User)2 ArrayList (java.util.ArrayList)2 ContactChanges (com.vodafone360.people.datatypes.ContactChanges)1 ContactDetailDeletion (com.vodafone360.people.datatypes.ContactDetailDeletion)1 ContactListResponse (com.vodafone360.people.datatypes.ContactListResponse)1 OnlineStatus (com.vodafone360.people.datatypes.ContactSummary.OnlineStatus)1 Conversation (com.vodafone360.people.datatypes.Conversation)1 ExternalResponseObject (com.vodafone360.people.datatypes.ExternalResponseObject)1 IdentityDeletion (com.vodafone360.people.datatypes.IdentityDeletion)1 ItemList (com.vodafone360.people.datatypes.ItemList)1 PresenceList (com.vodafone360.people.datatypes.PresenceList)1 RegistrationDetails (com.vodafone360.people.datatypes.RegistrationDetails)1 SimpleText (com.vodafone360.people.datatypes.SimpleText)1 StatusMsg (com.vodafone360.people.datatypes.StatusMsg)1 SocialNetwork (com.vodafone360.people.engine.presence.NetworkPresence.SocialNetwork)1 ServiceStatus (com.vodafone360.people.service.ServiceStatus)1 Vector (java.util.Vector)1