javacommons/fileutils/src.s60/fileplatformspecificsjni.cpp
branchRCL_3
changeset 19 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javacommons/fileutils/src.s60/fileplatformspecificsjni.cpp	Tue Apr 27 16:30:29 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 <memory>
+#include <caf/content.h>
+
+#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<ContentAccess::CContent> 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_ptr<HBufC>contentIdBuf(
+                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;
+}
+
+