--- a/java_plat/java_superd_parser_api/inc/javasuperdparser.h Thu Jan 07 16:18:57 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,344 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: CJavaSuperDParser definition.
-*
-*/
-
-
-#ifndef C_JAVASUPERDPARSER_H
-#define C_JAVASUPERDPARSER_H
-
-#include <e32base.h>
-#include <f32file.h>
-#include <s32strm.h>
-#include <e32std.h>
-
-class CZipFile;
-class CZipFileMember;
-
-namespace Java
-{
-
-/**
- * CJavaSuperDParser includes methods for parsing SuperD packages.
- *
- * This class includes methods for creating a superdistributable JAR
- * package and also methods for parsing a superdistributable JAR
- * package when installing it.
- *
- * A superdistributable JAR package is in uncompressed ZIP format
- * containing:
- * -# a manifest file (META-INF/MANIFEST.MF),
- * -# a JAD file and
- * -# either a plaintext JAR file or a JAR file in DCF.
- *
- * The manifest file must have the following attributes:
- * -# Distribution-Package: <SuperD version number>
- * -# Distribution-Descriptor-Filename: <JAD file name>
- * -# Distribution-Content-Filename: <JAR file name>
- *
- * To create a superdistributable jar package use the static method
- * CreateSuperDPackageL:
- * @code
- * using namespace Java;
- * CJavaSuperDParser::CreateSuperDPackageL( RFs& aFileSession,
- * const TDesC& aDestinationFileName,
- * const TDesC& aJadFileName,
- * const TDesC& aJarFileName );
- * @endcode
- *
- * To parse a superdistributable jar package:
- * @code
- * using namespace Java;
- * CJavaSuperDParser* parser( NULL );
- * TRAPD( err, parser = CJavaSuperDParser::NewL( aFileSession,
- * KSuperDFile,
- * KDestinationDir ) );
- * if ( !err )
- * {
- * // Now you know that KSuperDFile is a superdistributable package.
- * // JAD and JAR file have been written in KDestinationDir.
- * }
- * delete parser;
- * @endcode
- *
- * CJavaSuperDParser was renamed from CJcfSuperDParser.
- *
- * @lib javadrmutils.lib
- * @since S60 v3.2
- */
-NONSHARABLE_CLASS(CJavaSuperDParser) : public CBase
-{
-
-public:
-
- /**
- * First phase constructor. Creates a CJavaSuperDParser object, parses
- * the SuperD package and extracts its contents to the specified
- * folder.
- *
- * @since S60 v3.2
- * @param aFileSession File session handle to be used by this object
- * @param aJarFileName Filename of the file containing SuperD
- * package
- * @param aDestinationFolder Folder where descriptor and content
- * files will be saved
- * @return The newly created CJavaSuperDParser object handle
- * @leave KErrCorrupt If supplied file is not a SuperD package
- */
- IMPORT_C static CJavaSuperDParser* NewL(RFs& aFileSession,
- const TDesC& aJarFileName,
- const TDesC& aDestinationFolder);
-
- /**
- * First phase constructor. Creates a CJavaSuperDParser object, parses
- * the SuperD package and extracts its contents to the specified
- * folder.
- *
- * @since S60 v3.2
- * @param aFileSession File session handle to be used by this object
- * @param aJarFileHandle File handle of the file containing SuperD
- * package
- * @param aDestinationFolder Folder where descriptor and content
- * files will be saved
- * @return The newly created CJavaSuperDParser object handle
- * @leave KErrCorrupt If supplied file is not a SuperD package
- */
- IMPORT_C static CJavaSuperDParser* NewL(RFs& aFileSession,
- RFile& aJarFileHandle,
- const TDesC& aDestinationFolder);
-
- /**
- * Destructor. Frees allocated resources.
- *
- * @since S60 v3.2
- */
- virtual ~CJavaSuperDParser();
-
- /**
- * Creates a superdistribution package from the given JAD and JAR file.
- *
- * @since S60 v3.2
- * @param aFileSession File session handle to be used by this object
- * @param aDestinationFileName Filename of the destination SuperD
- * package.
- * @param aDescriptorFileName JAD file name
- * @param aContentFileName JAR file name
- */
- IMPORT_C static void CreateSuperDPackageL(RFs& aFileSession,
- const TDesC& aDestinationFileName,
- const TDesC& aDescriptorFileName,
- const TDesC& aContentFileName);
-
- /**
- * Returns the name of the JAD file in the SuperD package parsed by
- * this object.
- *
- * @since S60 v3.2
- * @return Descriptor file name
- */
- IMPORT_C TFileName DescriptorFileName() const;
-
- /**
- * Returns the name of the JAR file in the SuperD package parsed by
- * this object.
- *
- * @since S60 v3.2
- * @return Content file name
- */
- IMPORT_C TFileName ContentFileName() const;
-
-private:
-
- /**
- * Private C++ constructor.
- *
- * @since S60 v3.2
- * @param aFileSession File session handle to be used by this object
- */
- CJavaSuperDParser(RFs& aFileSession);
-
- /**
- * Second phase Symbian constructor. Extracts the contents of the
- * SuperD package into the destination folder.
- *
- * @since S60 v3.2
- * @param aJarFileName File name of SuperD package in the files system
- * @param aDestinationFolder Files from the package will be extracted
- * here.
- * @leave KErrCorrupt If supplied file is not a SuperD package
- */
- void ConstructL(const TDesC& aJarFileName,
- const TDesC& aDestinationFolder);
-
- /**
- * Second phase Symbian constructor. Checks and extracts the contents
- * of the SuperD package into the destination folder with
- * ParseZipFileL.
- *
- * @since S60 v3.2
- * @param aJarFileHandle File handle to the SuperD package
- * @param aDestinationFolder Files from the package will be extracted
- * here.
- * @leave KErrCorrupt If supplied file is not a SuperD package
- */
- void ConstructL(RFile& aJarFileHandle,
- const TDesC& aDestinationFolder);
-
- /**
- * Calculates the CRC of a given file according to zip specification.
- *
- * @since S60 v3.2
- * @param aFile File to calculate the CRC for
- * @return CRC value
- */
- static TUint32 CalculateCRC(RFile& aFile);
-
- /**
- * Creates and writes the MANIFEST.MF file for the SuperD package.
- * The manifest file contains the following three lines:
- * -# Distribution-Package: <SuperD version number>
- * -# Distribution-Descriptor-Filename: <JAD file name>
- * -# Distribution-Content-Filename: <JAR file name>
- *
- * This function creates a META-INF/MANIFEST.MF (in the META-INF
- * directory inside the SuperD JAR file with the structure above,
- * and writes it to a RWriteStream with WriteEntryAndUpdateIndexL.
- *
- * @since S60 v3.2
- * @param aFileSession File session handle to be used by this object
- * @param aStream File write stream where the manifest file will be
- * written
- * @param aCurrentOffset Offset where to start to write in the write
- * stream
- * @param aZipIndex The zip file index
- * @param aRelativeJadFileName Name of the JAD file with relative path
- * @param aRelativeJarFileName Name of the JAR file with relative path
- */
- static void CreateAndWriteManifestL(RFs& aFileSession,
- RWriteStream& aStream,
- TInt& aCurrentOffset,
- HBufC8*& aZipIndex,
- const TDesC8& aRelativeJadFileName,
- const TDesC8& aRelativeJarFileName);
- /**
- * Writes an entry (file or directory) to the zip file stream and
- * updates the zip file index.
- *
- * @since S60 v3.2
- * @param aFileSession File session handle to be used by this object
- * @param aStream ZIP file write stream where the entry will be written
- * @param aCurrentOffset Offset where to start to write
- * @param aZipIndex The zip file index
- * @param aRelativeFileName Relative name of the entry inside the ZIP
- * file
- * @param aFileName Name of the file in the file system which will be
- * written in the ZIP file. Use NULL to create a directory.
- */
- static void WriteEntryAndUpdateIndexL(RFs& aFileSession,
- RWriteStream& aStream,
- TInt& aCurrentOffset,
- HBufC8*& aZipIndex,
- const TDesC8& aRelativeFileName,
- const TDesC* aFileName);
- /**
- * Writes the ZIP index entry to the ZIP output stream. The ZIP index
- * should be the last entry in the ZIP file.
- *
- * @since S60 v3.2
- * @param aStream ZIP file write stream where the entry will be written
- * @param aCurrentOffset Offset where to start to write
- * @param aZipIndex The zip file index which will be written in the stream
- */
- static void WriteIndexL(RWriteStream& aStream,
- TInt aCurrentOffset,
- const HBufC8* aZipIndex);
-
- /**
- * Checks and parses the contents of the SuperD package.
- *
- * @since S60 v3.2
- * @param aDestinationFolder Files from the package will be extracted
- * here.
- */
- void ParseZipFileL(const TDesC& aDestinationFolder);
-
- /**
- * Checks from the manifest file that this is a SuperD package.
- * Extracts the JAD and JAR file name from the manifest file in the
- * SuperD package and checks wether the package version is compatible
- * with the parser.
- *
- * @since S60 v3.2
- * @param aManifest The manifest file entry in the ZIP file.
- */
- void ParseManifestL(CZipFileMember* aManifest);
-
- /**
- * Extracts the JAD and the JAR file from the SuperD package to the
- * destination folder.
- *
- * @since S60 v3.2
- * @param aDestinationFolder Destination folder name.
- */
- void WriteFileL(const TDesC& aDestinationFolder);
-
-private: // data
-
- /**
- * File session handle to be used by this object.
- * Not own.
- */
- RFs& iFileSession;
-
- /**
- * Zip file object.
- * Own.
- */
- CZipFile* iZipFile;
-
- /**
- * JAD file entry in the SuperD package.
- * Own.
- */
- CZipFileMember* iJadMember;
-
- /**
- * JAR file entry in the SuperD package.
- * Own.
- */
- CZipFileMember* iJarMember;
-
- /**
- * Shows wether there is a valid manifest file in the package.
- */
- TBool iManifestFound;
-
- /**
- * Name of the JAD file in the SuperD package.
- */
- TFileName iDescriptorFileName;
-
- /**
- * Name of the JAR file in the SuperD package.
- */
- TFileName iContentFileName;
-
-};
-
-}
-
-#endif // C_JAVASUPERDPARSER_H
-
-// End of File