diff -r e8e63152f320 -r 2a9601315dfc javacommons/fileutils/src.s60/fileplatformspecificsjni.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/fileutils/src.s60/fileplatformspecificsjni.cpp Mon May 03 12:27:20 2010 +0300 @@ -0,0 +1,154 @@ +/* +* 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: JNI Layer for FilePlatformSpecifics + * +*/ + +#include +#include + +#include "javajniutils.h" +#include "jstringutils.h" +#include "logger.h" + +#include "filemanager.h" +#include "fileextendedcommon.h" +#include "s60filesystemutilities.h" +#include "com_nokia_mj_impl_fileutils_FilePlatformSpecifics.h" + +using namespace java::util; +using namespace java::fileutils; +using namespace java::fileutility; + +/* + * Class: com_nokia_mj_impl_fileutils_FilePlatformSpecifics + * Method: _copy + * Signature: (Ljava/lang/String;Ljava/lang/String;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_com_nokia_mj_impl_fileutils_FilePlatformSpecifics__1copy( + JNIEnv *aJni, jclass, jstring source, jstring destination, + jboolean overwrite) +{ + std::wstring sourcePath = FileUtil::jstringToWstring(aJni, source); + std::wstring destPath = FileUtil::jstringToWstring(aJni, destination); + + return FileManager::copy(sourcePath, destPath, overwrite); +} + +/* + * Class: com_nokia_mj_impl_fileutils_FilePlatformSpecifics + * Method: _move + * Signature: (Ljava/lang/String;Ljava/lang/String;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_com_nokia_mj_impl_fileutils_FilePlatformSpecifics__1move( + JNIEnv *aJni, jclass, jstring source, jstring destination, + jboolean overwrite) +{ + std::wstring sourcePath = FileUtil::jstringToWstring(aJni, source); + std::wstring destPath = FileUtil::jstringToWstring(aJni, destination); + + return FileManager::move(sourcePath, destPath, overwrite); +} + +/* + * Class: com_nokia_mj_impl_fileutils_FilePlatformSpecifics + * Method: _copyAll + * Signature: (Ljava/lang/String;Ljava/lang/String;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_com_nokia_mj_impl_fileutils_FilePlatformSpecifics__1copyAll( + JNIEnv *aJni, jclass, jstring source, jstring destination, + jboolean overwrite) +{ + std::wstring sourcePath = FileUtil::jstringToWstring(aJni, source); + std::wstring destPath = FileUtil::jstringToWstring(aJni, destination); + + return FileManager::copyAll(sourcePath, destPath, overwrite); +} + +/* + * Class: com_nokia_mj_impl_fileutils_FilePlatformSpecifics + * Method: _deleteAll + * Signature: (Ljava/lang/String;)Z + */ +JNIEXPORT jboolean JNICALL Java_com_nokia_mj_impl_fileutils_FilePlatformSpecifics__1deleteAll( + JNIEnv *aJni, jclass, jstring target) +{ + std::wstring sourcePath = FileUtil::jstringToWstring(aJni, target); + + return FileManager::deleteAll(sourcePath); +} + +/* + * Class: com_nokia_mj_impl_fileutils_FilePlatformSpecifics + * Method: _setHidden + * Signature: (Ljava/lang/String;Z)V + */ +JNIEXPORT void JNICALL Java_com_nokia_mj_impl_fileutils_FilePlatformSpecifics__1setHidden( + JNIEnv *aJni, jclass, jstring fileName, jboolean hidden) +{ + JStringUtils name(*aJni, fileName); + TBool hide = hidden; + + TRAPD(err, S60FileSystemUtilities::SetHiddenL(name, hide)); + if (err != KErrNone) + { + ELOG1(EJavaFile, + "Java_com_nokia_mj_impl_file_FileSystemUtils__1sethidden %d", + err); + JniUtils::throwNewException(aJni, "java/io/IOException", ""); + return; + } + return; +} + + +/* + * Class: com_nokia_mj_impl_fileutils_FilePlatformSpecifics + * Method: getContentId + * Signature: (Ljava/lang/String;Z)V + */ +JNIEXPORT jstring JNICALL Java_com_nokia_mj_impl_fileutils_FilePlatformSpecifics__1getContentId( + JNIEnv *aJni, jclass, jstring fileName) +{ + JStringUtils path(*aJni, fileName); + TDesC* pathStr = &path; + + std::auto_ptr content(0); + + TRAPD(err, content.reset(ContentAccess::CContent::NewL(*pathStr))); + + jstring contentId = 0; + + if (KErrNone == err) + { + TBool drmProtected = EFalse; + err = content->GetAttribute( + ContentAccess::EIsProtected, drmProtected); + + if (KErrNone == err && drmProtected) + { + std::auto_ptrcontentIdBuf( + HBufC::New(ContentAccess::KMaxCafContentName)); + if (contentIdBuf.get()) + { + TPtr idPtr(contentIdBuf->Des()); + content->GetStringAttribute(ContentAccess::EContentID, idPtr); + contentId = aJni->NewString(idPtr.Ptr(), idPtr.Length()); + } + } + } + return contentId; +} + +