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;
}
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;
}
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));
}
}
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;
}
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");
}
}
Aggregations