/* * 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.datatypes; import java.util.ArrayList; import java.util.Enumeration; import java.util.Hashtable; import java.util.List; import com.vodafone360.people.engine.EngineManager.EngineId; import com.vodafone360.people.engine.presence.User; import com.vodafone360.people.service.io.rpg.RpgPushMessage; /** * BaseDataType encapsulating PushAvailabilityEvent. This is a Push message * received from People server containing Availability (Presence) change * information. */ public class PushAvailabilityEvent extends PushEvent { /** * TODO: This should be Hashtable <String userid, Hashtable<String * community, String status>> */ public List<User> mChanges; public PushAvailabilityEvent() { super(); } /** * Create PushAvailablityEvent from RpgPushMessage. * * @param msg RpgPushMessage * @param engId EngineId associated with message * @return PushAvailabilityEvent created from supplied data */ public static BaseDataType createPushEvent(RpgPushMessage msg, EngineId engId) { PushAvailabilityEvent push = new PushAvailabilityEvent(); push.mMessageType = msg.mType; push.mEngineId = engId; push.mChanges = convertToList(msg.mHash); return push; } @SuppressWarnings("unchecked") private static List<User> convertToList(Hashtable<String, Object> table) { ArrayList<User> users = new ArrayList<User>(); for (Enumeration<String> en = table.keys(); en.hasMoreElements();) { String userId = en.nextElement(); users.add(new User(userId, (Hashtable<String, String>)table.get(userId))); } return users; } }