diff -r 7cee158cb8cd -r 26b2b12093af javaextensions/pim/javasrc/com/nokia/mj/impl/pim/PIMManager.java --- a/javaextensions/pim/javasrc/com/nokia/mj/impl/pim/PIMManager.java Wed Sep 15 12:05:25 2010 +0300 +++ b/javaextensions/pim/javasrc/com/nokia/mj/impl/pim/PIMManager.java Wed Oct 13 14:23:59 2010 +0300 @@ -20,13 +20,12 @@ package com.nokia.mj.impl.pim; // IMPORTS + import javax.microedition.pim.PIM; import javax.microedition.pim.PIMException; import javax.microedition.pim.PIMItem; import javax.microedition.pim.PIMList; import java.io.UnsupportedEncodingException; -import java.util.Enumeration; -import java.util.Vector; import com.nokia.mj.impl.pim.ErrorString; import com.nokia.mj.impl.pim.GenericException; import com.nokia.mj.impl.rt.support.ApplicationUtils; @@ -34,8 +33,7 @@ import com.nokia.mj.impl.rt.support.ShutdownListener; import com.nokia.mj.impl.security.utils.SecurityPromptMessage; import com.nokia.mj.impl.pim.utils.NativeError; -import com.nokia.mj.impl.utils.Tokenizer; -import com.nokia.mj.impl.pim.Calendar; + // CLASS DEFINITION /** @@ -74,7 +72,6 @@ /** Serializer. */ private Serializer iSerializer; - private Vector iCalInfo; // Methods @@ -101,7 +98,7 @@ * Creates PIMManager. * Direct creation of a PIMManager is prohibited. */ - public PIMManager() + private PIMManager() { super(); setShutdownListener(); @@ -114,7 +111,6 @@ } iSerializer = new Serializer(iManagerHandle); - iCalInfo = new Vector(); } /** @@ -168,6 +164,7 @@ iManagerHandle = 0; } } + }); } @@ -181,18 +178,13 @@ } // Methods from PIM + public synchronized PIMList openPIMList(int aPimListType, int aMode) throws PIMException { - return doOpenPIMList(aPimListType, aMode, null, null); + return doOpenPIMList(aPimListType, aMode, null); } - - /** - * this method is used to open existsing calendar, create new calendar and delete existsing calendar by passing string as name. - * function will parse the string and do the operation. - * user as to pass the string in given format only - */ public synchronized PIMList openPIMList(int aPimListType, int aMode, String aName) throws PIMException { @@ -201,130 +193,17 @@ throw new NullPointerException(ErrorString.OPENING_LISTS_FAILED_COLON + ErrorString.LIST_NAME_IS_NULL); } - //Check if the aName is as per the MultipleCalendar Parameter definition - //aName = [calendarname "/"] listname ["?operation=" ["create" | "delete"]] - if (isMultiCalendarParam(aName)) - { - String calendarName = null; - String operation = null; - String listName = null; - - listName = getListName(aName); - operation = getOperation(aName); - calendarName = aName.substring(0, aName.indexOf("/")); - if (isListNameValid(listName)) - { - if (operation == null) - { - if (calendarName != null) - { - //This is the case of opening an existing calendar - return doOpenPIMList(aPimListType, aMode, listName, "C:" + calendarName); - } - else - { - //This is the case with IllegalArgumentException - throw new IllegalArgumentException("Calendar Name is NULL"); - } - } - else if (operation.equals("create")) - { - createCalendar(calendarName); - int[] error = new int[1]; - int listHandle = _openPIMList(iManagerHandle, aPimListType, listName, calendarName, error); - PIMListImpl pimList = new EventListImpl(listHandle, aMode); - return pimList; - } - else if (operation.equals("delete")) - { - deleteCalendar(calendarName); - int listHandle = 0; - PIMListImpl pimList = new EventListImpl(listHandle, aMode); - return pimList; - } - else - { - throw new IllegalArgumentException("Invalid operation"); - } - } // if isListNameValid(listName) block ends here - else - { - throw new IllegalArgumentException("Invalid List name"); - } - } // if isMultiCalendarParam(aName) block ends here - else - { - //This is not the case of Multiple Calendar, so follow the default calendar path - return doOpenPIMList(aPimListType, aMode, aName); - } - } - - private boolean isMultiCalendarParam(String aListTypeName) - { - //If there is "?" and/or "=" is present in aListTypeName - //return true - boolean ret = false; - if ((aListTypeName.indexOf("/") != -1) || (aListTypeName.indexOf("?") != -1) || (aListTypeName.indexOf("=") != -1)) - { - ret = true; - } - return ret; - } - - private String getListName(String aName) - { - // Get Operation - String operation = "?operation="; - int operationIndex = aName.indexOf(operation); - - if (operationIndex == -1) - { - operationIndex = aName.length(); - } - - return aName.substring(aName.indexOf("/") + 1, operationIndex); - } - - private boolean isListNameValid(String aListName) - { - String lists[] = listPIMLists(PIM.EVENT_LIST); - boolean listExist = false; - - for (int i = 0; i < lists.length; i++) - { - if (aListName.trim().equalsIgnoreCase(lists[i])) - { - listExist = true; - break; - } - } - - return listExist; - } - - private String getOperation(String aName) - { - String aOperation = null; - String operation = "?operation="; - int operationIndex = aName.indexOf(operation); - - if (operationIndex != -1) - { - aOperation = aName.substring(operationIndex + operation.length()); - } - - - return aOperation; - + return doOpenPIMList(aPimListType, aMode, aName); } public synchronized String[] listPIMLists(int aPimListType) { - - if (aPimListType != PIM.CONTACT_LIST && aPimListType != PIM.EVENT_LIST && aPimListType != PIM.TODO_LIST) + if (aPimListType != PIM.CONTACT_LIST && aPimListType != PIM.EVENT_LIST + && aPimListType != PIM.TODO_LIST) { - throw new java.lang.IllegalArgumentException(ErrorString.LISTING_FAILED_DOT + ErrorString.INVALID_LIST_TYPE_COLON + aPimListType); + throw new java.lang.IllegalArgumentException(ErrorString.LISTING_FAILED_DOT + + ErrorString.INVALID_LIST_TYPE_COLON + aPimListType); } // Ensure permission getPermission(aPimListType, PIM.READ_ONLY); @@ -354,121 +233,7 @@ { return iSerializer.supportedSerialFormats(aPimListType); } - /** - * Enumerates the calendars currently present in the device. - * - * @return A list of Calendar names - * @throws java.lang.SecurityException - * if the application is not given permission to read PIM lists - */ - public synchronized Calendar[] listCalendars() - { - // security check - ApplicationUtils appUtils = ApplicationUtils.getInstance(); - PIMPermissionImpl per = new PIMPermissionImpl("pim://*", PIMPermissionImpl.ACTION_READ_EVENTS + "," + PIMPermissionImpl.ACTION_READ_TODOS); - appUtils.checkPermission(per); - int[] error = new int[1]; - String[] calendarFileLists = _listCalendars(iManagerHandle, error); - String[] calendarNameLists = _listCalendarNames(iManagerHandle, error); - if (!NativeError.checkSuccess(error[0])) - { - throw new GenericException(ErrorString.GENERAL_ERROR_COLON + error[0]); - } - Vector tokens = new Vector(); - Vector tokenNames = new Vector(); - int length = calendarFileLists.length; - for (int i = 0; i < length; i++) - { - String str[] = Tokenizer.split(calendarFileLists[i], ":"); - String strname[] = Tokenizer.split(calendarNameLists[i], ":"); - - - if (str[0].equals("C")) - { - tokens.addElement(str[1]); - - } - if (strname[0].equals("C")) - { - - tokenNames.addElement(strname[1]); - } - else - { - - tokenNames.addElement(strname[0]); - } - } - String[] calendarLists = new String[tokens.size()]; - String[] calendarNames = new String[tokenNames.size()]; - tokens.copyInto(calendarLists); - tokenNames.copyInto(calendarNames); - Calendar[] calendarobjlist = new Calendar[calendarLists.length]; - for (int i = 0; i < calendarLists.length; i++) - { - Calendar cal = new Calendar(calendarLists[i], calendarNames[i]); - calendarobjlist[i] = cal; - } - //return calendarLists; - return calendarobjlist; - } - - - private synchronized void createCalendar(String aCalName) - { - - String displayName = aCalName; - // security check - ApplicationUtils appUtils = ApplicationUtils.getInstance(); - PIMPermissionImpl per = new PIMPermissionImpl("pim://*", PIMPermissionImpl.ACTION_WRITE_EVENTS + "," + PIMPermissionImpl.ACTION_WRITE_TODOS); - appUtils.checkPermission(per); - String fileName = "C:" + aCalName; - int error = _createCalendar(iManagerHandle, fileName,displayName); - NativeError.handleCreateCalendarError(error, aCalName); - } - - private synchronized void deleteCalendar(String aCalName) - { - // security check - ApplicationUtils appUtils = ApplicationUtils.getInstance(); - PIMPermissionImpl per = new PIMPermissionImpl(PIMPermissionImpl.ACTION_WRITE_EVENTS + "," + PIMPermissionImpl.ACTION_WRITE_TODOS, aCalName, null, -1); - appUtils.checkPermission(per); - - boolean isCalPresent = false; - String fileName = "C:" + aCalName; - int index; - for (index = 0; index < iCalInfo.size(); index++) - { - CalendarListInfo calList = (CalendarListInfo) iCalInfo.elementAt(index); - String calName = calList.iCalName; - if (calName.equals(fileName)) - { - Enumeration e = calList.iList.elements(); - while (e.hasMoreElements()) - { - PIMList list = (PIMList) e.nextElement(); - try - { - list.close(); - } - catch (PIMException ex) - { - //throw new GenericException("Delete entry failed. " + ex.toString()); - } - } - calList.iList.removeAllElements(); - isCalPresent = true; - break; - } - } - int error = _deleteCalendar(iManagerHandle, fileName); - NativeError.handleDeleteCalendarError(error, aCalName); - if (isCalPresent) - { - iCalInfo.removeElementAt(index); - } - } /** * getPermission @@ -532,17 +297,27 @@ appUtils.checkPermission(per); } + + // New private methods + /** + * Common implementation of the list opening. Arguments and permissions are + * pre-checked. + * + * @param aName + * If null, default list is opened. + */ private PIMList doOpenPIMList(int aPimListType, int aMode, String aName) throws PIMException { - - if (aPimListType != PIM.CONTACT_LIST && aPimListType != PIM.EVENT_LIST && aPimListType != PIM.TODO_LIST) + if (aPimListType != PIM.CONTACT_LIST && aPimListType != PIM.EVENT_LIST + && aPimListType != PIM.TODO_LIST) { throw new java.lang.IllegalArgumentException( ErrorString.INVALID_LIST_TYPE_COLON + aPimListType); } - if (aMode != PIM.READ_ONLY && aMode != PIM.WRITE_ONLY && aMode != PIM.READ_WRITE) + if (aMode != PIM.READ_ONLY && aMode != PIM.WRITE_ONLY + && aMode != PIM.READ_WRITE) { throw new java.lang.IllegalArgumentException( ErrorString.INVALID_MODE_COLON + aMode); @@ -564,7 +339,8 @@ } int[] error = new int[1]; int listHandle = _openPIMList( - iManagerHandle, aPimListType, aName, null, error); // if null, open default + + iManagerHandle, aPimListType, aName, error); // if null, open default // list NativeError.handleOpenPIMListError(error[0], aPimListType, aName); @@ -602,86 +378,6 @@ return pimList; } -/////////////////////// - // New private methods - - /** - * Common implementation of the list opening. Arguments and permissions are - * pre-checked. - * - * @param aName - * If null, default list is opened. - */ - private PIMList doOpenPIMList(int aPimListType, int aMode, String aName, String aCalName) - throws PIMException - { - - if (aPimListType != PIM.CONTACT_LIST && aPimListType != PIM.EVENT_LIST && aPimListType != PIM.TODO_LIST) - { - throw new java.lang.IllegalArgumentException( - ErrorString.INVALID_LIST_TYPE_COLON + aPimListType); - } - - if (aMode != PIM.READ_ONLY && aMode != PIM.WRITE_ONLY && aMode != PIM.READ_WRITE) - { - throw new java.lang.IllegalArgumentException( - ErrorString.INVALID_MODE_COLON + aMode); - } - - // Both permissions must be checked separately if aMode is - // PIM.READ_WRITE - if (aMode == PIM.READ_WRITE) - { - // First ensure read access permission - // Get localized text info for the security dialog - getPermission(aPimListType, PIM.READ_ONLY); - getPermission(aPimListType, PIM.WRITE_ONLY); - - } - else - { - getPermission(aPimListType, aMode); - } - int[] error = new int[1]; - - int listHandle = _openPIMList( - iManagerHandle, aPimListType, aName, aCalName, error); - // list - NativeError.handleOpenPIMListError(error[0], aPimListType, aName); - - // Create new pim list of right type - PIMListImpl pimList = null; - - switch (aPimListType) - { - case PIM.CONTACT_LIST: - { - pimList = new ContactListImpl(listHandle, aMode); - break; - } - - case PIM.EVENT_LIST: - { - pimList = new EventListImpl(listHandle, aMode); - break; - } - - case PIM.TODO_LIST: - { - pimList = new ToDoListImpl(listHandle, aMode); - break; - } - - default: - { - // We should never end up here - throw new PIMException(ErrorString.GENERAL_ERROR, - PIMException.GENERAL_ERROR); - } - } - - return pimList; - } // Native operations @@ -702,33 +398,11 @@ * value on error. */ private native int _openPIMList(int aManagerHandle, int aPimListType, - String aPimListName, String aCalName, - int[] aError); + String aPimListName, int[] aError); private native String[] _listPIMLists(int aManagerHandle, int aPimListType, int[] aError); - private native String[] _listCalendars(int aManagerHandle, int[] aError); - - private native String[] _listCalendarNames(int aManagerHandle, int[] aError); - - private native int _createCalendar(int aManagerHandle, String aCalName, String aDisplayName); - - private native int _deleteCalendar(int aManagerHandle, String aCalName); - - class CalendarListInfo - { - - String iCalName; - Vector iList; - - CalendarListInfo(String aCalName, PIMList aPIMList) - { - iCalName = aCalName; - iList = new Vector(); - iList.addElement(aPIMList); - } - } } // End of file