javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoProperties.java
branchRCL_3
changeset 19 04becd199f91
child 23 98ccebc37403
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoProperties.java	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,207 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+package com.nokia.mj.impl.properties.mobinfo;
+
+import java.util.Hashtable;
+
+import com.nokia.mj.impl.rt.support.SystemPropertyProvider;
+import com.nokia.mj.impl.rt.support.Jvm;
+import com.nokia.mj.impl.utils.Logger;
+import com.nokia.mj.impl.connectionmanager.ConnectionManager;
+import com.nokia.mj.impl.connectionmanager.AccessPoint;
+import com.nokia.mj.impl.rt.support.ApplicationInfo;
+import com.nokia.mj.impl.rt.support.ApplicationUtils;
+import com.nokia.mj.impl.utils.Uid;
+
+/**
+ * Provides system properties related to Mobile Info
+ */
+public class MobileInfoProperties implements SystemPropertyProvider
+{
+    static
+    {
+        try
+        {
+            Jvm.loadSystemLibrary("javamobinfo");
+        }
+        catch (Exception e)
+        {
+            Logger.ELOG(Logger.ESOCKET, "MOBINFO: Unable to load javamobinfo");
+        }
+    }
+
+    // Strings that are exposed as system properties.
+    private static final String NETWORK_ACCESS = "com.nokia.network.access";
+
+    private static final String BATTERY_LEVEL = "com.nokia.mid.batterylevel";
+
+    private static final String COUNTRY_CODE = "com.nokia.mid.countrycode";
+
+    private static final String IMEI = "com.nokia.mid.imei";
+
+    static final String IMSI = "com.nokia.mid.imsi";
+
+    private static final String NETWORK_AVAILABILITY = "com.nokia.mid.networkavailability";
+
+    private static final String NETWORK_ID = "com.nokia.mid.networkid";
+
+    private static final String NETWORK_SIGNAL = "com.nokia.mid.networksignal";
+
+    private static final String EMAIL_RECIEVE_SETTINGS = "com.nokia.mid.settings.email-receive-protocol";
+
+    private static final String EMAIL_SEND_SETTINGS = "com.nokia.mid.settings.email-send-protocol";
+
+    private static final String CELLID = "com.nokia.mid.cellid";
+
+    static final String MSISDN = "com.nokia.mid.msisdn";
+
+    private static final String DATEFORMAT = "com.nokia.mid.dateformat";
+
+    private static final String TIMEFORMAT = "com.nokia.mid.timeformat";
+
+    private static final String NETWORKSTATUS = "com.nokia.mid.networkstatus";
+
+    private static final int APP_DEFAULT_APN_NOT_SPECIFIED = -1;
+
+    // Constants associated with the strings
+    private static final int NETWORK_ACCESS_V = 1;
+
+    private static final int BATTERY_LEVEL_V = 2;
+
+    private static final int COUNTRY_CODE_V = 3;
+
+    private static final int IMEI_V = 4;
+
+    private static final int IMSI_V = 5;
+
+    private static final int NETWORK_AVAILABILITY_V = 6;
+
+    private static final int NETWORK_ID_V = 7;
+
+    private static final int NETWORK_SIGNAL_V = 8;
+
+    private static final int EMAIL_RECIEVE_SETTINGS_V = 9;
+
+    private static final int EMAIL_SEND_SETTINGS_V = 10;
+
+    private static final int CELLID_V = 11;
+
+    private static final int MSISDN_V = 12;
+
+    private static final int DATEFORMAT_V = 13;
+
+    private static final int TIMEFORMAT_V = 14;
+
+    private static final int NETWORKSTATUS_V = 15;
+
+    private static Hashtable iPropertyKeys;
+
+    static
+    {
+        iPropertyKeys = new Hashtable();
+        iPropertyKeys.put(NETWORK_ACCESS,       new Integer(NETWORK_ACCESS_V));
+        iPropertyKeys.put(BATTERY_LEVEL,        new Integer(BATTERY_LEVEL_V));
+        iPropertyKeys.put(COUNTRY_CODE,         new Integer(COUNTRY_CODE_V));
+        iPropertyKeys.put(IMEI,                 new Integer(IMEI_V));
+        iPropertyKeys.put(IMSI,                 new Integer(IMSI_V));
+        iPropertyKeys.put(NETWORK_AVAILABILITY, new Integer(NETWORK_AVAILABILITY_V));
+        iPropertyKeys.put(NETWORK_ID,           new Integer(NETWORK_ID_V));
+        iPropertyKeys.put(NETWORK_SIGNAL,       new Integer(NETWORK_SIGNAL_V));
+        iPropertyKeys.put(EMAIL_RECIEVE_SETTINGS, new Integer(EMAIL_RECIEVE_SETTINGS_V));
+        iPropertyKeys.put(EMAIL_SEND_SETTINGS,  new Integer(EMAIL_SEND_SETTINGS_V));
+        iPropertyKeys.put(CELLID,               new Integer(CELLID_V));
+        iPropertyKeys.put(MSISDN,               new Integer(MSISDN_V));
+        iPropertyKeys.put(DATEFORMAT,           new Integer(DATEFORMAT_V));
+        iPropertyKeys.put(TIMEFORMAT,           new Integer(TIMEFORMAT_V));
+        iPropertyKeys.put(NETWORKSTATUS,        new Integer(NETWORKSTATUS_V));
+    }
+
+    public String getProperty(String aKey)
+    {
+        // enforce security
+        ApplicationUtils appUtils = ApplicationUtils.getInstance();
+        appUtils.checkPermission(new MobileInfoPermission(aKey, "read"));
+
+        int value = ((Integer)iPropertyKeys.get(aKey)).intValue();
+        Uid appSuiteUid;
+        ConnectionManager CmInstance = null;
+        String result = null;
+        // Only network access seems to have another way to handle it.
+        if (aKey.equals(EMAIL_RECIEVE_SETTINGS)
+                || aKey.equals(EMAIL_SEND_SETTINGS))
+        {
+            return null;
+        }
+        if (aKey.equals(NETWORK_ACCESS))
+        {
+            // get application suite uid
+            try
+            {
+                appSuiteUid = ApplicationInfo.getInstance().getSuiteUid();
+                CmInstance = ConnectionManager.getInstance();
+                if (CmInstance != null)
+                {
+                    AccessPoint apn = CmInstance.getApplicationDefault(appSuiteUid);
+                    if (apn != null)
+                    {
+                        if (apn.getType() == AccessPoint.NAP_IAP) // IAP ID
+                        {
+                            result = _getPropertyApn(NETWORK_ACCESS_V, apn.getNapId());
+                        }
+                        else
+                        {
+                            result = _getPropertyApn(NETWORK_ACCESS_V, APP_DEFAULT_APN_NOT_SPECIFIED);
+                        }
+                    }
+                    else
+                    {
+                        result = _getPropertyApn(NETWORK_ACCESS_V, APP_DEFAULT_APN_NOT_SPECIFIED);
+                    }
+                }
+                else
+                {
+                    result = _getPropertyApn(NETWORK_ACCESS_V, APP_DEFAULT_APN_NOT_SPECIFIED);
+                }
+            }
+            catch (Exception e)
+            {
+                Logger.LOG(Logger.ESOCKET, Logger.EInfo,"MobilInfoProperties :: getSuiteUid exception ");
+                result = _getPropertyApn(NETWORK_ACCESS_V, APP_DEFAULT_APN_NOT_SPECIFIED);
+            }
+            return result;
+        }
+        else
+        {
+            return _getProperty(value);
+        }
+    }
+
+    public boolean isStatic(String aKey)
+    {
+        if (aKey.equals(IMEI) || aKey.equals(IMSI))
+        {
+            return true;
+        }
+        return false;
+    }
+
+    private native String _getProperty(int value);
+    private static native String _getPropertyApn(int property, int aAppDefaultApn);
+
+}
\ No newline at end of file