/* * 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.api; import java.util.List; import java.util.Vector; import com.vodafone360.people.Settings; import com.vodafone360.people.datatypes.Contact; import com.vodafone360.people.datatypes.ContactDetail; import com.vodafone360.people.engine.BaseEngine; import com.vodafone360.people.engine.login.LoginEngine; import com.vodafone360.people.service.io.QueueManager; import com.vodafone360.people.service.io.Request; import com.vodafone360.people.utils.LogUtils; /** * Implementation of People server APIs associated with handling of Contacts */ public class Contacts { private final static String FUNCTION_BULK_UPDATE_CONTACTS = "contacts/bulkupdatecontacts"; private final static String FUNCTION_DELETE_CONTACT_DETAILS = "contacts/deletecontactdetails"; private final static String FUNCTION_DELETE_CONTACTS = "contacts/deletecontacts"; private final static String FUNCTION_GET_CONTACT_CHANGES = "contacts/getcontactschanges"; private final static String FUNCTION_GET_ME = "contacts/getme"; private final static String FUNCTION_GET_MY_CHANGES = "contacts/getmychanges"; private final static String FUNCTION_SET_ME = "contacts/setme"; /** * Implementation of contacts/deletecontactdetails API. Parameters are; * [auth], Long contactid, List<ContactDetail> detaillist * * @param engine Handle to ContactSync engine * @param contactid * @param detaillist * @return request id generated for this request. */ public static int deleteContactDetails(BaseEngine engine, Long contactid, List<ContactDetail> detaillist) { if (LoginEngine.getSession() == null) { LogUtils.logE("Contacts.deleteContactDetails() Invalid session, return -1"); return -1; } if (contactid == null) { LogUtils.logE("Contacts.deleteContactDetails() contactidlist cannot be NULL"); return -1; } if (detaillist == null) { LogUtils.logE("Contacts.deleteContactDetails() detaillist cannot be NULL"); return -1; } Request request = new Request(FUNCTION_DELETE_CONTACT_DETAILS, Request.Type.CONTACT_DETAIL_DELETE, engine.engineId(), false, Settings.API_REQUESTS_TIMEOUT_CONTACTS); request.addData("contactid", contactid); request.addData("detaillist", ApiUtils.createVectorOfContactDetail(detaillist)); QueueManager queue = QueueManager.getInstance(); int requestId = queue.addRequest(request); queue.fireQueueStateChanged(); return requestId; } /** * Implementation of contacts/deletecontacts API. Parameters are; [auth], * List<Long> contactidlist * * @param engine Handle to ContactSync engine * @param contactidlist List of contact ids to be deleted. * @return request id generated for this request. */ public static int deleteContacts(BaseEngine engine, List<Long> contactidlist) { if (LoginEngine.getSession() == null) { LogUtils.logE("Contacts.deleteContacts() Invalid session, return -1"); return -1; } if (contactidlist == null) { LogUtils.logE("Contacts.deleteContacts() contactidlist cannot be NULL"); return -1; } Request request = new Request(FUNCTION_DELETE_CONTACTS, Request.Type.CONTACT_DELETE, engine .engineId(), false, Settings.API_REQUESTS_TIMEOUT_CONTACTS); request.addData("contactidlist", new Vector<Object>(contactidlist)); QueueManager queue = QueueManager.getInstance(); int requestId = queue.addRequest(request); queue.fireQueueStateChanged(); return requestId; } /** * Implementation of contacts/bulkupdatecontacts API. Parameters are; * [auth], List<Contact> contactlist * * @param engine Handle to ContactSync engine * @param contactlist List containing the contacts to be updated on server. * @return request id generated for this request. */ public static int bulkUpdateContacts(BaseEngine engine, List<Contact> contactlist) { if (LoginEngine.getSession() == null) { LogUtils.logE("Contacts.bulkUpdateContacts() Invalid session, return -1"); return -1; } if (contactlist == null) { LogUtils.logE("Contacts.bulkUpdateContacts() contactidlist cannot be NULL"); return -1; } Request request = new Request(FUNCTION_BULK_UPDATE_CONTACTS, Request.Type.CONTACT_CHANGES_OR_UPDATES, engine.engineId(), false, Settings.API_REQUESTS_TIMEOUT_CONTACTS); request.addData("contactlist", ApiUtils.createVectorOfContact(contactlist)); QueueManager queue = QueueManager.getInstance(); int requestId = queue.addRequest(request); queue.fireQueueStateChanged(); return requestId; } /** * Implementation of contacts/getcontactschanges API. Parameters are; * [auth], Integer pagenumber, Integer maxpagesize, Long fromrevision, Long * torevision * * @param engine Handle to ContactSync engine * @param pagenumber Page number to request contact changes for. * @param maxpagesize Maximum number of contacts retrieved per page. * @param fromrevision Starting revision number. * @param torevision Final revision number. * @param batchRequest If true, this API call will not send the request * until the connection thread is kicked. This allows batching of * requests. * @return request id generated for this request. */ public static int getContactsChanges(BaseEngine engine, Integer pagenumber, Integer maxpagesize, Long fromrevision, Long torevision, boolean batchRequest) { if (LoginEngine.getSession() == null) { LogUtils.logE("Contacts.getContactsChanges() Invalid session, return -1"); return -1; } if (pagenumber == null) { LogUtils.logE("Contacts.getContactsChanges() pagenumber cannot be NULL"); return -1; } if (maxpagesize == null) { LogUtils.logE("Contacts.getContactsChanges() maxpagesize cannot be NULL"); return -1; } if (fromrevision == null) { LogUtils.logE("Contacts.getContactsChanges() fromrevision cannot be NULL"); return -1; } if (torevision == null) { LogUtils.logE("Contacts.getContactsChanges() torevision cannot be NULL"); return -1; } Request request = new Request(FUNCTION_GET_CONTACT_CHANGES, Request.Type.CONTACT_CHANGES_OR_UPDATES, engine.engineId(), false, Settings.API_REQUESTS_TIMEOUT_CONTACTS); request.addData("pagenumber", pagenumber); request.addData("maxpagesize", maxpagesize); request.addData("fromrevision", fromrevision); request.addData("torevision", torevision); // XXX check if this has any implications // request.setKickConnectionThread(!batchRequest); QueueManager queue = QueueManager.getInstance(); int requestId = queue.addRequest(request); queue.fireQueueStateChanged(); return requestId; } /** * Implementation of contacts/getme API. Parameters are; [auth] * * @param engine Handle to ContactSync engine * @return Request ID generated for this request. */ public static int getMe(BaseEngine engine) { if (LoginEngine.getSession() == null) { LogUtils.logE("Contacts.GetMe() Invalid session, return -1"); return -1; } Request request = new Request(FUNCTION_GET_ME, Request.Type.COMMON, engine.engineId(), false, Settings.API_REQUESTS_TIMEOUT_CONTACTS); QueueManager queue = QueueManager.getInstance(); int requestId = queue.addRequest(request); queue.fireQueueStateChanged(); return requestId; } /** * Implementation of contacts/getmychanges. Parameters are; [auth], Long * fromrevision * * @param engine Handle to ContactSync engine * @param fromrevision Start revision. * @return request id generated for this request. */ public static int getMyChanges(BaseEngine engine, Long fromrevision) { if (LoginEngine.getSession() == null) { LogUtils.logE("Contacts.getMyChanges() Invalid session, return -1"); return -1; } Request request = new Request(FUNCTION_GET_MY_CHANGES, Request.Type.CONTACT_CHANGES_OR_UPDATES, engine.engineId(), false, Settings.API_REQUESTS_TIMEOUT_CONTACTS); request.addData("fromrevision", fromrevision.toString()); QueueManager queue = QueueManager.getInstance(); int requestId = queue.addRequest(request); queue.fireQueueStateChanged(); return requestId; } /** * Implementation of contacts/setme API. Parameters are; [auth], * List<ContactDetail> detaillist, String aboutme [opt] * * @param engine Handle to ContactSync engine * @param detaillist List of ContactDetails for the Me profile. * @param aboutme AboutMe string. * @param gender - gender. * @return request id generated for this request. */ public static int setMe(BaseEngine engine, List<ContactDetail> detaillist, String aboutme, Integer gender) { if (LoginEngine.getSession() == null) { LogUtils.logE("Contacts.SetMe() Invalid session, return -1"); return -1; } Request request = new Request(FUNCTION_SET_ME, Request.Type.CONTACT_CHANGES_OR_UPDATES, engine.engineId(), false, Settings.API_REQUESTS_TIMEOUT_CONTACTS); if (aboutme != null) { request.addData("aboutme", aboutme); } if (detaillist != null) { request.addData("detaillist", ApiUtils.createVectorOfContactDetail(detaillist)); } if (gender != null) { request.addData("gender", gender); } QueueManager queue = QueueManager.getInstance(); int requestId = queue.addRequest(request); queue.fireQueueStateChanged(); return requestId; } }