diff -r e8e63152f320 -r 2a9601315dfc javaextensions/pim/jni/src/pimitemimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaextensions/pim/jni/src/pimitemimpl.cpp Mon May 03 12:27:20 2010 +0300 @@ -0,0 +1,685 @@ +/* +* 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: PIMItemImpl JNI wrapper. + * +*/ + + +// INCLUDE FILES + +#include "com_nokia_mj_impl_pim_PIMItemImpl.h" +#include "pimcommon.h" +#include "pimbaseitem.h" +#include "pimutils.h" +#include "pimpanics.h" +#include "logger.h" + + +JNIEXPORT void +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1dispose( + JNIEnv* /*aJniEnv*/, + jobject /*aPeer*/, + jint aItemHandle) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + delete item; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1fieldDataType( + JNIEnv* /*aJniEnv*/, + jobject /*aPeer*/, + jint aItemHandle, + jint aField) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + TPIMFieldDataType fieldDataType = item->fieldDataType(aField); + return fieldDataType; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1commit( + JNIEnv* /*aJniEnv*/, + jobject /*aPeer*/, + jint aItemHandle) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + int error = 0; + try + { + item->commit(); + } + catch (int aError) + { + error = aError; + } + return error; +} + +JNIEXPORT jboolean +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1isModified( + JNIEnv* /*aJniEnv*/, + jobject /*aPeer*/, + jint aItemHandle) +{ + JELOG2(EPim); + const pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + jboolean isModified = item->isModified(); + return isModified; +} + +JNIEXPORT jintArray +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1getFields( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + jintArray javaFields = item->callGetFields(aJniEnv); + return javaFields; // NULL indicates error +} + +JNIEXPORT jbyteArray +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1getBinary( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aIndex, + jintArray aError) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + jbyteArray javaValue = item->callGetBinary(aField,aIndex,aJniEnv,aError); + return javaValue; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1addBinary( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aAttributes, + jbyteArray aValue, + jint aOffset, + jint aLength) +{ + JELOG2(EPim); + const int valueLength = aJniEnv->GetArrayLength(aValue); + if (valueLength < (aOffset + aLength)) + { + aLength = valueLength - aOffset; + } + + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + jbyte* elems = aJniEnv->GetByteArrayElements(aValue, NULL); + int error = 0; + try + { + item->callAddBinary(aField, + aAttributes, + reinterpret_cast< unsigned char*>(elems), + aOffset, + aLength); + } + catch (int aError) + { + error = aError; + } + aJniEnv->ReleaseByteArrayElements(aValue, elems, 0); + return error; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1setBinary( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aIndex, + jint aAttributes, + jbyteArray aValue, + jint aOffset, + jint aLength) +{ + JELOG2(EPim); + // If length from offset goes beyond the array end, the length + // argument must (as specified in PIM API) be interpreted as + // "to the end of the array". + const int valueLength = aJniEnv->GetArrayLength(aValue); + if (valueLength < (aOffset + aLength)) + { + aLength = valueLength - aOffset; + } + + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + jbyte* elems = aJniEnv->GetByteArrayElements(aValue, NULL); + int error = 0; + try + { + item->callSetBinary(aField, + aIndex, + aAttributes, + reinterpret_cast< unsigned char*>(elems), + aOffset, + aLength); + } + catch (int aError) + { + error = aError; + } + aJniEnv->ReleaseByteArrayElements(aValue, elems, 0); + return error; +} + +JNIEXPORT jlong +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1getDate( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aIndex, + jintArray aError) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + int error = 0; + jlong retVal = 0; + try + { + retVal = item->callGetDate(aField,aIndex); + } + catch (int aError) + { + error = aError; + } + SetJavaErrorCode(aJniEnv, aError, error); + return retVal; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1addDate( + JNIEnv* /*aJniEnv*/, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aAttributes, + jlong aValue) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + int error = 0; + try + { + item->callAddDate(aField, aAttributes, aValue); + } + catch (int aError) + { + error = aError; + } + return error; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1setDate( + JNIEnv* /*aJniEnv*/, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aIndex, + jint aAttributes, + jlong aValue) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + int error = 0; + try + { + item->callSetDate(aField, aIndex, aAttributes, aValue); + } + catch (int aError) + { + error = aError; + } + return error; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1getInt( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aIndex, + jintArray aError) +{ + + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + jint value = 0; + jint error = 0; + try + { + value = item->getInt(aField,aIndex); + } + catch (int aError) + { + error = aError; + } + + SetJavaErrorCode(aJniEnv, aError, error); + return value; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1addInt( + JNIEnv* /*aJniEnv*/, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aAttributes, + jint aValue) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + int error = 0; + try + { + item->addInt(aField, aAttributes, aValue); + } + catch (int aError) + { + error = aError; + } + return error; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1setInt( + JNIEnv* /*aJniEnv*/, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aIndex, + jint aAttributes, + jint aValue) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + int error = 0; + try + { + item->setInt(aField, aIndex, aAttributes, aValue); + } + catch (int aError) + { + error = aError; + } + return error; +} + +JNIEXPORT jstring +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1getString( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aIndex, + jintArray aError) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + + jstring javaValue = item->callGetString( + aField, + aIndex, + aJniEnv, + aError); + + // Ownership of the string is not transferred. + return javaValue; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1addString( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aAttributes, + jstring aValue) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + int error = 0; + try + { + item->callAddString(aField,aAttributes,aValue,aJniEnv); + } + catch (int aError) + { + error = aError; + } + return error; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1setString( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aIndex, + jint aAttributes, + jstring aValue) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + int error = 0; + try + { + item->callSetString(aField, aIndex, aAttributes, aValue, aJniEnv); + } + catch (int aError) + { + error = aError; + } + return error; +} + +JNIEXPORT jboolean +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1getBoolean( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aIndex, + jintArray aError) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + int error = 0; + jboolean value = false; + try + { + value = item->callGetBoolean(aField, aIndex); + } + catch (int aError) + { + error = aError; + } + SetJavaErrorCode(aJniEnv, aError, error); + return value; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1addBoolean( + JNIEnv* /*aJniEnv*/, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aAttributes, + jboolean aValue) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + + int error = 0; + try + { + item->callAddBoolean(aField, aAttributes, aValue); + } + catch (int aError) + { + error = aError; + } + return error; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1setBoolean( + JNIEnv* /*aJniEnv*/, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aIndex, + jint aAttributes, + jboolean aValue) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + + int error = 0; + try + { + item->callSetBoolean(aField, aIndex, aAttributes, aValue); + } + catch (int aError) + { + error = aError; + } + return error; +} + +JNIEXPORT jobjectArray +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1getStringArray( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aIndex, + jintArray aError) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + + jobjectArray javaStringArray = item->callGetStringArray( + aField, + aIndex, + aJniEnv, + aError); + // Ownership of the string array is not transferred. + return javaStringArray; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1addStringArray( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aAttributes, + jobjectArray aValue) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + int error = 0; + try + { + item->callAddStringArray( + aJniEnv, + aField, + aAttributes, + aValue); + } + catch (int aError) + { + error = aError; + } + return error; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1setStringArray( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aIndex, + jint aAttributes, + jobjectArray aValue) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + + int error = 0; + try + { + item->callSetStringArray( + aJniEnv, + aField, + aIndex, + aAttributes, + aValue); + } + catch (int aError) + { + error = aError; + } + + return error; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1countValues( + JNIEnv* /*aJniEnv*/, + jobject /*aPeer*/, + jint aItemHandle, + jint aField) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + int retValue = 0; + try + { + retValue = item->callCountValues(aField); + } + catch (int aError) + { + retValue = aError; + } + return retValue; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1removeValue( + JNIEnv* /*aJniEnv*/, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aIndex) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + int error = 0; + try + { + item->removeValue(aField,aIndex); + } + catch (int aError) + { + error = aError; + } + return error; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1getAttributes( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle, + jint aField, + jint aIndex, + jintArray aError) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + TPIMAttribute attributes = KPIMAttrNone; + + int error = 0; + try + { + attributes = item->getAttributes(aField,aIndex); + } + catch (int aError) + { + error = aError; + } + SetJavaErrorCode(aJniEnv, aError, error); + return attributes; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1addToCategory( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle, + jstring aCategory) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + int error = 0; + try + { + item->callAddToCategory(aCategory,aJniEnv); + } + catch (int aError) + { + error = aError; + } + return error; +} + +JNIEXPORT void +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1removeFromCategory( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle, + jstring aCategory) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + item->callRemoveFromCategory(aCategory,aJniEnv); +} + +JNIEXPORT jobjectArray +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1getCategories( + JNIEnv* aJniEnv, + jobject /*aPeer*/, + jint aItemHandle) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + jobjectArray javaCategories =item->callGetCategories(aJniEnv); + return javaCategories; +} + +JNIEXPORT jint +JNICALL Java_com_nokia_mj_impl_pim_PIMItemImpl__1maxCategories( + JNIEnv* /*aJniEnv*/, + jobject /*aPeer*/, + jint aItemHandle) +{ + JELOG2(EPim); + pimbaseitem* item = reinterpret_cast< pimbaseitem *>(aItemHandle); + int maxCategories = item->maxCategories(); + return maxCategories; +} + +// End of File