javaextensions/iapinfo/src.s60/javacommdb.cpp
changeset 69 773449708c84
parent 21 2a9601315dfc
child 66 2455ef1f5bbc
equal deleted inserted replaced
61:bf7ee68962da 69:773449708c84
    22 #include <e32base.h>
    22 #include <e32base.h>
    23 #include <e32debug.h>
    23 #include <e32debug.h>
    24 #include "logger.h"
    24 #include "logger.h"
    25 #include "javajniutils.h"
    25 #include "javajniutils.h"
    26 
    26 
       
    27 #include "fs_methodcall.h"
       
    28 #include "com_nokia_mid_iapinfo_IAPInfoImpl.h"
       
    29 
    27 using namespace CommsDat;
    30 using namespace CommsDat;
    28 using namespace java::util;
    31 using namespace java::util;
    29 
    32 
    30 // CONSTANTS
    33 // CONSTANTS
    31 _LIT(KIAPTable, "IAP");
    34 _LIT(KIAPTable, "IAP");
    33 _LIT(KGlobalSettingsTable, "GlobalSettings");
    36 _LIT(KGlobalSettingsTable, "GlobalSettings");
    34 //_LIT( KNetworkTable, "Network" );
    37 //_LIT( KNetworkTable, "Network" );
    35 _LIT(KFieldNameRecordId, "RecordId");
    38 _LIT(KFieldNameRecordId, "RecordId");
    36 _LIT(KFieldNameName, "Name");
    39 _LIT(KFieldNameName, "Name");
    37 
    40 
       
    41 JNIEXPORT jint JNICALL Java_com_nokia_mid_iapinfo_IAPInfoImpl__1createSession
       
    42 (JNIEnv *, jobject)
       
    43 {
       
    44     IapInfoSession *sess = NULL;
       
    45     TRAPD(err,sess =  IapInfoSession::NewL(););
       
    46     if (err!=KErrNone)
       
    47     {
       
    48         return err;
       
    49     }
       
    50     return reinterpret_cast<int>(sess);
       
    51 
       
    52 }
       
    53 
       
    54 
    38 JNIEXPORT void JNICALL Java_com_nokia_mid_iapinfo_CommsTable__1destroy(JNIEnv* ,
    55 JNIEXPORT void JNICALL Java_com_nokia_mid_iapinfo_CommsTable__1destroy(JNIEnv* ,
    39         jclass,
    56         jclass,
    40         jint aHandle)
    57         jint /*aHandle*/)
    41 {
    58 {
    42     LOG1(ESOCKET, EInfo, "CJAVACOMMDB + destroy() handle: %D", aHandle);
    59     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB + destroy()");
    43     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
    60     // JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
    44     delete commdb;
    61     //  delete commdb;
    45     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - destroy()");
    62     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - destroy()");
    46 }
    63 }
    47 
    64 
    48 JNIEXPORT jint JNICALL Java_com_nokia_mid_iapinfo_CommsTable__1construct(JNIEnv* ,
    65 
    49         jclass)
    66 JNIEXPORT jint JNICALL Java_com_nokia_mid_iapinfo_CommsTable__1open(JNIEnv* aJni,
    50 {
    67         jclass, jint aSessionHandle,
    51     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB + construct()");
    68         jstring aTableName)
    52     JavaCommDB *cdb = new JavaCommDB();
    69 {
       
    70     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB + open()gggggggggg");
       
    71     IapInfoSession* session = reinterpret_cast<IapInfoSession *>(aSessionHandle);
       
    72     JavaCommDB *cdb = new JavaCommDB(session);
       
    73     JStringUtils table(*aJni, aTableName);
       
    74     int err = -1;
       
    75     TRAP(err,CallMethodL(cdb, &JavaCommDB::OpenL,table,cdb->iSession););
    53     TInt handle = reinterpret_cast<jint>(cdb);
    76     TInt handle = reinterpret_cast<jint>(cdb);
    54     LOG1(EJavaIapInfo, EInfo, "CJAVACOMMDB - construct() handle: %D", handle);
    77     if (err < 0)
       
    78         handle = err;
       
    79     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - open()hhhhhh");
    55     return handle;
    80     return handle;
    56 }
    81 }
    57 
    82 
    58 JNIEXPORT jint JNICALL Java_com_nokia_mid_iapinfo_CommsTable__1open(JNIEnv* aJni,
       
    59         jclass, jint aHandle,
       
    60         jstring aTableName)
       
    61 {
       
    62     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB + open()");
       
    63     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
       
    64     JStringUtils table(*aJni, aTableName);
       
    65 
       
    66     //LOG1(EJavaIapInfo,  EInfo,  "CJAVACOMMDB opening table: %S", table );
       
    67     TRAPD(error, commdb->OpenL(table));
       
    68     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - open()");
       
    69     return error;
       
    70 }
       
    71 
    83 
    72 JNIEXPORT void JNICALL Java_com_nokia_mid_iapinfo_CommsTable__1close(JNIEnv* ,
    84 JNIEXPORT void JNICALL Java_com_nokia_mid_iapinfo_CommsTable__1close(JNIEnv* ,
    73         jclass, jint aHandle)
    85         jclass, jint aHandle)
    74 {
    86 {
    75     LOG1(EJavaIapInfo, EInfo, "CJAVACOMMDB + close() handle: %D", aHandle);
    87     LOG1(EJavaIapInfo, EInfo, "CJAVACOMMDB + close() handle: %D", aHandle);
    76     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
    88     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
    77     TRAP_IGNORE(commdb->Close());
    89     CallMethod(commdb, &JavaCommDB::Close,commdb->iSession);
       
    90     //TRAP_IGNORE(commdb->Close());
    78     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - close()");
    91     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - close()");
    79 }
    92 }
    80 
    93 
       
    94 void JavaCommDB::Destroy(JavaCommDB* aObj)
       
    95 {
       
    96     delete aObj;
       
    97 
       
    98 }
       
    99 
    81 JNIEXPORT jint JNICALL Java_com_nokia_mid_iapinfo_CommsTable__1getRecordCount(JNIEnv* ,
   100 JNIEXPORT jint JNICALL Java_com_nokia_mid_iapinfo_CommsTable__1getRecordCount(JNIEnv* ,
    82         jclass,
   101         jclass,
    83         jint aHandle)
   102         jint aHandle)
    84 {
   103 {
    85     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB + getRecordCount()");
   104     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB + getRecordCount()");
    86     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
   105     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
    87     TInt count = 0;
   106     TInt count = 0;
    88     count = commdb->GetRecordCount();
   107     CallMethod(count, commdb, &JavaCommDB::GetRecordCount,commdb->iSession);
       
   108     //count = commdb->GetRecordCount();
    89     LOG1(EJavaIapInfo, EInfo, "CJAVACOMMDB returning value: %D", count);
   109     LOG1(EJavaIapInfo, EInfo, "CJAVACOMMDB returning value: %D", count);
    90     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - getRecordCount()");
   110     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - getRecordCount()");
    91     return count;
   111     return count;
    92 }
   112 }
    93 
   113 
   102 
   122 
   103     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
   123     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
   104     JStringUtils field(*aJni, aFieldName);
   124     JStringUtils field(*aJni, aFieldName);
   105 
   125 
   106     //LOG1(EJavaIapInfo,  EInfo,  "CJAVACOMMDB  reading field value: %S", field );
   126     //LOG1(EJavaIapInfo,  EInfo,  "CJAVACOMMDB  reading field value: %S", field );
   107     TRAPD(err, value = commdb->GetIntFieldValueL(field));
   127 
       
   128     TRAPD(err,CallMethodL(value, commdb, &JavaCommDB::GetIntFieldValueL,field,commdb->iSession););
       
   129     //TRAPD(err, value = commdb->GetIntFieldValueL(field));
   108 
   130 
   109     // Put the native error code into the Java error array
   131     // Put the native error code into the Java error array
   110     jint javaError[1] =
   132     jint javaError[1] =
   111         {   err};
   133         {   err};
   112     aJni->SetIntArrayRegion(aError, 0, 1, javaError);
   134     aJni->SetIntArrayRegion(aError, 0, 1, javaError);
   129 
   151 
   130     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
   152     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
   131     JStringUtils field(*aJni, aFieldName);
   153     JStringUtils field(*aJni, aFieldName);
   132 
   154 
   133     //LOG1(EJavaIapInfo,  EInfo,  "CJAVACOMMDB  reading field value: %S", field );
   155     //LOG1(EJavaIapInfo,  EInfo,  "CJAVACOMMDB  reading field value: %S", field );
   134     TRAPD(err, value = commdb->GetStringFieldValueL(field));
   156     TRAPD(err,CallMethodL(value, commdb, &JavaCommDB::GetStringFieldValueL,field,commdb->iSession););
       
   157     // TRAPD(err, value = commdb->GetStringFieldValueL(field));
   135     if (NULL != value && KErrNone == err)
   158     if (NULL != value && KErrNone == err)
   136     {
   159     {
   137         str = S60CommonUtils::NativeToJavaString(*aJni, value->Des());
   160         str = S60CommonUtils::NativeToJavaString(*aJni, value->Des());
   138         //LOG1(EJavaIapInfo, EInfo, "CJAVACOMMDB  returning value: %S", value->Des() );
   161         //LOG1(EJavaIapInfo, EInfo, "CJAVACOMMDB  returning value: %S", value->Des() );
   139         delete value;
   162         delete value;
   151 JNIEXPORT jint JNICALL Java_com_nokia_mid_iapinfo_CommsTable__1next(JNIEnv* ,
   174 JNIEXPORT jint JNICALL Java_com_nokia_mid_iapinfo_CommsTable__1next(JNIEnv* ,
   152         jclass, jint aHandle)
   175         jclass, jint aHandle)
   153 {
   176 {
   154     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB + next()");
   177     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB + next()");
   155     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
   178     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
   156     TInt rec = commdb->Next();
   179     TInt rec;
       
   180     CallMethod(rec, commdb, &JavaCommDB::Next,commdb->iSession);
       
   181     //TInt rec = commdb->Next();
   157     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - next()");
   182     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - next()");
   158     return rec;
   183     return rec;
   159 }
   184 }
   160 
   185 
   161 JNIEXPORT jint JNICALL Java_com_nokia_mid_iapinfo_CommsTable__1previous(JNIEnv* ,
   186 JNIEXPORT jint JNICALL Java_com_nokia_mid_iapinfo_CommsTable__1previous(JNIEnv* ,
   172 {
   197 {
   173     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB + findById()");
   198     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB + findById()");
   174     TInt recId = 0;
   199     TInt recId = 0;
   175 
   200 
   176     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
   201     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
   177     recId = commdb->FindById(aId);
   202     CallMethod(recId, commdb, &JavaCommDB::FindById,aId,commdb->iSession);
       
   203     //recId = commdb->FindById(aId);
   178     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - findById()");
   204     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - findById()");
   179     return recId;
   205     return recId;
   180 }
   206 }
   181 
   207 
   182 JNIEXPORT jint JNICALL Java_com_nokia_mid_iapinfo_CommsTable__1findByName(JNIEnv* aJni,
   208 JNIEXPORT jint JNICALL Java_com_nokia_mid_iapinfo_CommsTable__1findByName(JNIEnv* aJni,
   187     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB + findByName()");
   213     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB + findByName()");
   188     TInt recId = 0;
   214     TInt recId = 0;
   189     JStringUtils name(*aJni, aName);
   215     JStringUtils name(*aJni, aName);
   190 
   216 
   191     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
   217     JavaCommDB* commdb = reinterpret_cast<JavaCommDB *>(aHandle);
   192     TRAP(recId, recId = commdb->FindByNameL(name));
   218     TRAPD(err,CallMethodL(recId, commdb, &JavaCommDB::FindByNameL,name,commdb->iSession););
       
   219     if (err < KErrNone)
       
   220         recId = err;
       
   221     //TRAP(recId, recId = commdb->FindByNameL(name));
   193     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - findByName()");
   222     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - findByName()");
   194     return recId;
   223     return recId;
   195 }
   224 }
   196 
   225 
   197 /* ---------------------------------------------------------------------------
   226 /* ---------------------------------------------------------------------------
   198  *    JavaCommDB class implementation ;
   227  *    JavaCommDB class implementation ;
   199  * ---------------------------------------------------------------------------
   228  * ---------------------------------------------------------------------------
   200  */
   229  */
   201 
   230 
       
   231 JavaCommDB::JavaCommDB(IapInfoSession *aSession)
       
   232 {
       
   233     iSession = aSession;
       
   234 
       
   235 
       
   236 }
       
   237 
   202 // ---------------------------------------------------------------------------
   238 // ---------------------------------------------------------------------------
   203 //    Delete allocated member objects.
   239 //    Delete allocated member objects.
   204 // -----------------------------------------------------------------------------
   240 // -----------------------------------------------------------------------------
   205 JavaCommDB::~JavaCommDB()
   241 JavaCommDB::~JavaCommDB()
   206 {
   242 {
   209     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB  - ~JavaCommDB()");
   245     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB  - ~JavaCommDB()");
   210 }
   246 }
   211 
   247 
   212 // ---------------------------------------------------------------------------
   248 // ---------------------------------------------------------------------------
   213 //    Delete allocated member objects.
   249 //    Delete allocated member objects.
   214 //    @return error code
   250 // -----------------------------------------------------------------------------
   215 // -----------------------------------------------------------------------------
   251 void JavaCommDB::Close()
   216 TInt JavaCommDB::Close()
       
   217 {
   252 {
   218     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB + Close()");
   253     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB + Close()");
   219     iCurrentRecord = 0;
   254     iCurrentRecord = 0;
   220     delete iTable;
   255     if (iTable)
       
   256         delete iTable;
       
   257 
   221     iTable = NULL;
   258     iTable = NULL;
   222     delete iDb;
       
   223     iDb = NULL;
       
   224 
   259 
   225     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - Close()");
   260     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - Close()");
   226     return KErrNone;
   261 
   227 }
   262 }
   228 
   263 
   229 // ---------------------------------------------------------------------------
   264 // ---------------------------------------------------------------------------
   230 //    Opens the given table.
   265 //    Opens the given table.
   231 //    @param aTablename name of the CommDB table to be opened
   266 //    @param aTablename name of the CommDB table to be opened
   232 //    @return error code
   267 //    @return error code
   233 // -----------------------------------------------------------------------------
   268 // -----------------------------------------------------------------------------
   234 void JavaCommDB::OpenL(const TDesC& aTableName)
   269 void JavaCommDB::OpenL(const TDesC& aTableName)
   235 {
   270 {
   236     //LOG1(EJavaIapInfo, EInfo, "CJAVACOMMDB + OpenL(): open table: %S",   aTableName);
   271     //LOG1(EJavaIapInfo, EInfo, "CJAVACOMMDB + OpenL(): open table: %S",   aTableName);
   237     iDb = CMDBSession::NewL(KCDVersion1_1);
   272     //iDb = CMDBSession::NewL(KCDVersion1_1);
   238     iCurrentRecord = 0;
   273     iCurrentRecord = 0;
   239 
   274 
   240     if (0 == aTableName.Compare(KIAPTable))
   275     if (0 == aTableName.Compare(KIAPTable))
   241     {
   276     {
   242         // Create IAP table recordset
   277         // Create IAP table recordset
   257                  CCDConnectionPrefsRecord> (KCDTIdConnectionPrefsRecord);
   292                  CCDConnectionPrefsRecord> (KCDTIdConnectionPrefsRecord);
   258         LOG(EJavaIapInfo, EInfo,
   293         LOG(EJavaIapInfo, EInfo,
   259             "CJAVACOMMDB  OpenL(): ConnectionPreferences table opened.");
   294             "CJAVACOMMDB  OpenL(): ConnectionPreferences table opened.");
   260     }
   295     }
   261     // Load the table
   296     // Load the table
   262     iTable->LoadL(*iDb);
   297 
       
   298     iTable->LoadL(*(iSession->iDb));
   263     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - OpenL()");
   299     LOG(EJavaIapInfo, EInfo, "CJAVACOMMDB - OpenL()");
   264 }
   300 }
   265 
   301 
   266 // ---------------------------------------------------------------------------
   302 // ---------------------------------------------------------------------------
   267 //    Get number of records in the current table.
   303 //    Get number of records in the current table.