/* * CDDL HEADER START * * The contents of this file are subject to the terms of the Common Development * and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at * src/com/vodafone360/people/VODAFONE.LICENSE.txt or * http://github.com/360/360-Engine-for-Android * See the License for the specific language governing permissions and * limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each file and * include the License file at src/com/vodafone360/people/VODAFONE.LICENSE.txt. * If applicable, add the following below this CDDL HEADER, with the fields * enclosed by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * Copyright 2010 Vodafone Sales & Services Ltd. All rights reserved. * Use is subject to license terms. */ package com.vodafone360.people.service.io.rpg; import java.util.Enumeration; import java.util.Hashtable; /** * Class representing the contents of RPG push message This will consist of: * user-id, message type and message payload */ public class RpgPushMessage { /** Definition for Push Message 'type' field. */ private static final String PUSH_MSG_TYPE = "type"; /** Definition for Push Message 'payload' field. */ private static final String PUSH_PAYLOAD = "payload"; /** Type of Push message. */ public PushMessageTypes mType = null; /** Hashtable containing decoded message payload if present. */ public Hashtable<String, Object> mHash = null; /** * Create RPG push message from hash-table generated by Hessian decoder * * @param hash Hash-table containing Push Message data * @return RPG push message populated from hash-table */ @SuppressWarnings("unchecked") public static RpgPushMessage createFromHashtable(Hashtable<String, Object> hash) { RpgPushMessage push = new RpgPushMessage(); Enumeration<String> e = hash.keys(); while (e.hasMoreElements()) { String key = e.nextElement(); Object value = hash.get(key); if (key.compareTo(PUSH_MSG_TYPE) == 0) { push.mType = findTag((String)value); } else if ((key.compareTo(PUSH_PAYLOAD) == 0) && (value instanceof Hashtable)) { push.mHash = (Hashtable<String, Object>)value; } } return push; } /** * Find push message type * * @param tag String containing message type identifier * @return tag for message type if found, null otherwise. */ private static PushMessageTypes findTag(String tag) { for (PushMessageTypes tags : PushMessageTypes.values()) { if (tag.compareTo(tags.tag()) == 0) { return tags; } } return null; } }