/* * 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; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.os.Handler; import android.os.Message; import com.vodafone360.people.ApplicationCache; import com.vodafone360.people.MainApplication; import com.vodafone360.people.datatypes.Identity; import com.vodafone360.people.datatypes.LoginDetails; import com.vodafone360.people.datatypes.RegistrationDetails; import com.vodafone360.people.datatypes.ContactSummary.OnlineStatus; import com.vodafone360.people.engine.EngineManager; import com.vodafone360.people.engine.IEngineEventCallback; import com.vodafone360.people.engine.presence.NetworkPresence.SocialNetwork; import com.vodafone360.people.service.PersistSettings.InternetAvail; import com.vodafone360.people.service.agent.NetworkAgent; import com.vodafone360.people.service.agent.NetworkAgentState; import com.vodafone360.people.service.agent.UiAgent; import com.vodafone360.people.service.interfaces.IPeopleService; import com.vodafone360.people.service.interfaces.IWorkerThreadControl; import com.vodafone360.people.utils.LogUtils; /*** * @see com.vodafone360.people.engine.BaseEngine.IEngineEventCallback * @see com.vodafone360.people.service.interfaces.IPeopleService */ public class PeopleServiceImpl implements IPeopleService, IEngineEventCallback { private final List<Handler> mUiEventCallbackList = new ArrayList<Handler>(); private IWorkerThreadControl mWorkerThreadControl; private RemoteService mService; private NetworkAgent mNetworkAgent; private UiAgent mHandlerAgent; private ApplicationCache mApplicationCache; /** * Initialises the object, creating the UiAgent. * * @param workerThreadControl Provides access to worker thread control * functions. * @param service Provides access to remote service functions (mainly used * to retrieve context). */ public PeopleServiceImpl(IWorkerThreadControl workerThreadControl, RemoteService service) { mWorkerThreadControl = workerThreadControl; mService = service; mHandlerAgent = new UiAgent((MainApplication)service.getApplication(), service); mApplicationCache = ((MainApplication)service.getApplication()).getCache(); } /*** * Sets the ServiceAgent, as this needs to be called after the constructor. * * @param agent Handle to ServiceAgent. */ public void setNetworkAgent(NetworkAgent agent) { mNetworkAgent = agent; } /*** * @see com.vodafone360.people.engine.BaseEngine.IEngineEventCallback#onUiEvent(UiEvent, * int, int, Object) */ @Override public void onUiEvent(ServiceUiRequest event, int arg1, int arg2, Object data) { synchronized (mUiEventCallbackList) { for (Handler handler : mUiEventCallbackList) { Message msg = handler.obtainMessage(event.ordinal(), data); msg.arg1 = arg1; msg.arg2 = arg2; if (!handler.sendMessage(msg)) { LogUtils.logE("IPeopleServiceImpl.onUiEvent() Sending msg FAILED"); } } } } /*** * @see com.vodafone360.people.engine.BaseEngine.IEngineEventCallback#kickWorkerThread() */ @Override public void kickWorkerThread() { mWorkerThreadControl.kickWorkerThread(); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#addEventCallback(Handler) */ @Override public void addEventCallback(Handler uiHandler) { synchronized (mUiEventCallbackList) { if (!mUiEventCallbackList.contains(uiHandler)) { mUiEventCallbackList.add(uiHandler); } } } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#removeEventCallback(Handler) */ @Override public void removeEventCallback(Handler uiHandler) { synchronized (mUiEventCallbackList) { mUiEventCallbackList.remove(uiHandler); } } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#checkForUpdates() */ @Override public void checkForUpdates() { EngineManager.getInstance().getUpgradeEngine().checkForUpdates(); } /** * @see com.vodafone360.people.service.interfaces.IPeopleService#getMyThirdPartyIdentities() */ public ArrayList<Identity> getMyThirdPartyIdentities() { return EngineManager.getInstance().getIdentityEngine().getMyThirdPartyIdentities(); } /** * @see com.vodafone360.people.service.interfaces.IPeopleService#getMy360AndThirdPartyIdentities() */ public ArrayList<Identity> getAvailableThirdPartyIdentities() { return EngineManager.getInstance().getIdentityEngine().getAvailableThirdPartyIdentities(); } /** * @see com.vodafone360.people.service.interfaces.IPeopleService#getMy360AndThirdPartyChattableIdentities() */ public ArrayList<Identity> getMy360AndThirdPartyChattableIdentities() { return EngineManager.getInstance().getIdentityEngine().getMyChattableIdentities(); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#fetchPrivacyStatement() */ @Override public void fetchPrivacyStatement() { EngineManager.getInstance().getLoginEngine().addUiFetchPrivacyStatementRequest(); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#fetchTermsOfService() */ @Override public void fetchTermsOfService() { EngineManager.getInstance().getLoginEngine().addUiFetchTermsOfServiceRequest(); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#fetchUsernameState(String) */ @Override public void fetchUsernameState(String userName) { EngineManager.getInstance().getLoginEngine().addUiGetUsernameStateRequest(userName); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#getLoginRequired() */ @Override public boolean getLoginRequired() { EngineManager manager = EngineManager.getInstance(); return manager.getLoginEngine().getLoginRequired(); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#getRoamingNotificationType() */ @Override public int getRoamingNotificationType() { return mService.getNetworkAgent().getRoamingNotificationType(); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#getRoamingDeviceSetting() */ @Override public boolean getRoamingDeviceSetting() { return mService.getNetworkAgent().getRoamingDeviceSetting(); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#notifyDataSettingChanged(InternetAvail) */ @Override public void notifyDataSettingChanged(InternetAvail val) { mService.getNetworkAgent().notifyDataSettingChanged(val); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#logon(LoginDetails) */ @Override public void logon(LoginDetails loginDetails) { EngineManager manager = EngineManager.getInstance(); manager.getLoginEngine().addUiLoginRequest(loginDetails); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#register(RegistrationDetails) */ @Override public void register(RegistrationDetails details) { EngineManager.getInstance().getLoginEngine().addUiRegistrationRequest(details); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#setNewUpdateFrequency() */ @Override public void setNewUpdateFrequency() { EngineManager.getInstance().getUpgradeEngine().setNewUpdateFrequency(); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#setShowRoamingNotificationAgain(boolean) */ @Override public void setShowRoamingNotificationAgain(boolean showAgain) { mService.getNetworkAgent().setShowRoamingNotificationAgain(showAgain); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#startContactSync() */ @Override public void startContactSync() { EngineManager.getInstance().getGroupsEngine().addUiGetGroupsRequest(); EngineManager.getInstance().getContactSyncEngine().addUiStartFullSync(); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#pingUserActivity() */ @Override public void pingUserActivity() { EngineManager.getInstance().getContactSyncEngine().pingUserActivity(); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#validateIdentityCredentials(boolean, * String, String, String, Bundle) */ @Override public void validateIdentityCredentials(boolean dryRun, String network, String username, String password, Bundle identityCapabilityStatus) { EngineManager.getInstance().getIdentityEngine().addUiValidateIdentityCredentials(dryRun, network, username, password, identityCapabilityStatus); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#startStatusesSync() */ @Override public void startStatusesSync() { EngineManager.getInstance().getActivitiesEngine().addStatusesSyncRequest(); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#getNetworkAgentState() */ @Override public NetworkAgentState getNetworkAgentState() { return mNetworkAgent.getNetworkAgentState(); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#setNetowrkAgentState(NetworkAgentState) */ @Override public void setNetworkAgentState(NetworkAgentState state) { mNetworkAgent.setNetworkAgentState(state); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#getPresenceList(long) */ @Override public void getPresenceList(long contactId) { EngineManager.getInstance().getPresenceEngine().getPresenceList(); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#setAvailability(OnlineStatus) */ @Override public void setAvailability(OnlineStatus status) { EngineManager.getInstance().getPresenceEngine().setMyAvailability(status); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#setAvailability(SocialNetwork, OnlineStatus) */ @Override public void setAvailability(SocialNetwork network, OnlineStatus status) { EngineManager.getInstance().getPresenceEngine().setMyAvailability(network, status); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#subscribe(Handler, * long, boolean) */ @Override public void subscribe(Handler handler, Long contactId, boolean chat) { mHandlerAgent.subscribe(handler, contactId, chat); } /*** * @see com.vodafone360.people.service.interfaces.IPeopleService#unsubscribe(Handler) */ @Override public void unsubscribe(Handler handler) { mHandlerAgent.unsubscribe(handler); } /** * @see com.vodafone360.people.engine.BaseEngine.IEngineEventCallback#getUiAgent() */ @Override public UiAgent getUiAgent() { return mHandlerAgent; } /** * @see com.vodafone360.people.engine.BaseEngine.IEngineEventCallback#getApplicationCache() */ @Override public ApplicationCache getApplicationCache() { return mApplicationCache; } /** * @see com.vodafone360.people.service.interfaces.IPeopleService#sendMessage(long, * String, int) */ @Override public void sendMessage(long localContactId, String body, int networkId) { EngineManager.getInstance().getPresenceEngine() .sendMessage(localContactId, body, networkId); } @Override public void setIdentityStatus(String network, String identityId, boolean identityStatus) { EngineManager.getInstance().getIdentityEngine().addUiSetIdentityStatus(network, identityId, identityStatus); } @Override public void getStatuses() { EngineManager.getInstance().getActivitiesEngine().addStatusesSyncRequest(); } @Override public void getMoreTimelines() { EngineManager.getInstance().getActivitiesEngine().addOlderTimelinesRequest(); } @Override public void getOlderStatuses() { EngineManager.getInstance().getActivitiesEngine().addGetOlderStatusesRequest(); } @Override public void uploadMeProfile() { EngineManager.getInstance().getSyncMeEngine().addUpdateMeProfileContactRequest(); } @Override public void uploadMyStatus(String statusText) { EngineManager.getInstance().getSyncMeEngine().addUpdateMyStatusRequest(statusText); } @Override public void downloadMeProfileFirstTime() { EngineManager.getInstance().getSyncMeEngine().addGetMeProfileContactFirstTimeRequest(); } @Override public void updateChatNotification(long localContactId) { mHandlerAgent.updateChat(localContactId, false, SocialNetwork.INVALID.ordinal()); } /** * @see com.vodafone360.people.service.interfaces.IPeopleService#deleteIdentity(String,String) */ @Override public void deleteIdentity(final String network, final String identityId) { EngineManager.getInstance().getIdentityEngine() .addUiDeleteIdentityRequest(network, identityId); } /** * @see com.vodafone360.people.service.interfaces.IPeopleService#isSettingStatusOnNetworkInProgress(String network) */ @Override public boolean isSettingStatusOnNetworkInProgress(String network) { return EngineManager.getInstance().getPresenceEngine().isSetStatusInProgress(network); } }