commands/sql/sqlsrv.h
author Tom Sutcliffe <thomas.sutcliffe@accenture.com>
Sat, 31 Jul 2010 19:07:57 +0100
changeset 23 092bcc217d9d
parent 0 7f656887cf89
permissions -rw-r--r--
Tidied iocli exports, build macro tweaks. Removed 4 overloads of CCommandBase::RunCommand[L] that are no longer used at all, and changed one more to not be exported as it's only used internally to iocli.dll. fixed builds on platforms that don't support btrace or any form of tracing.

// sqlsrv.h
// 
// Copyright (c) 2010 Accenture. All rights reserved.
// This component and the accompanying materials are made available
// under the terms of the "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:
// Accenture - Initial contribution
//
#ifndef __SQLSRV_H__
#define __SQLSRV_H__
//  Include Files

#include <fshell/common.mmh>

#include <fshell/ioutils.h>
#include <SqlDb.h>

//class CSqlShared;
//class CLineEditor;

using namespace IoUtils;

class CCmdSqlSrv : public CServerBase
	{
public:
	static const TDesC* ColumnTypeToString(TSqlColumnType aType);
	static void StripWrapDoubleQuote(HBufC& aText);

	void PrintTime(const TTime& aTime, TBool aNewline);	
	static CCommandBase* NewLC();
	static CCmdSqlSrv* GetServer();	
	~CCmdSqlSrv();
	
	TInt NextCommandId();
	
	//SQL commands
	void SqlCreateL(TDesC& aFilename, CServerCommandBase* aCommand);
	void SqlOpenL(TDesC& aFilename, CServerCommandBase* aCommand);
	void SqlExecL(TDesC& aStatement, CServerCommandBase* aCommand);
	void SqlStateL(TDesC& aStatement, RPointerArray<HBufC> &aOptParamFile, CServerCommandBase* aCommand, 
			TDesC* aTempFileTemplate = NULL);
	void SqlClose(CServerCommandBase* aCommand);
	void SqlAttachL(TDesC& aFilename, TDesC& aDateBaseName, CServerCommandBase* aCommand);
	void SqlDetachL(TDesC& aDateBaseName, CServerCommandBase* aCommand);
	
#ifdef SQL_COMPACT	
	void SqlCompactL(TDesC* aDateBaseName, CServerCommandBase* aCommand);
#endif
	///////////////////////////////////
	void ReportResult(const TServerCommandId& aId, const TDesC& aName, TRefByValue<const TDesC> aFmt, ...);

	//////////////////////////////////
	void ParseResultL(RSqlStatement& aState, CServerCommandBase* aCommand, TDesC* aTempFileTemplate);

private:
	CCmdSqlSrv();
	void ConstructL();
	void MakeTempFilename(TDes& aTmpFile, TDesC& aTemplate);

private:
	enum TPrintPostfix
		{
		ENone,
		ENewLine
		};

	void DoPrintf(TRefByValue<const TDesC> aFmt, ...);
	void DoPrintf(TRefByValue<const TDesC8> aFmt, ...);
	void DoPrintList(TRefByValue<const TDesC> aFmt, VA_LIST& aList, TPrintPostfix aPostfix = ENone);
	void DoPrintList(TRefByValue<const TDesC8> aFmt, VA_LIST& aList, TPrintPostfix aPostfix = ENone);
	void DoPrint(const TDesC& aDes, TPrintPostfix aPostfix = ENone);
	
private: // From CCommandBase.
	virtual const TDesC& Name() const;
	virtual const TDesC& Description() const;

	virtual void ArgumentsL(RCommandArgumentList& aArguments);
	virtual void OptionsL(RCommandOptionList& aOptions);
private: // From CServerBase.
	virtual void InitializeL();
	virtual void Report(const TServerCommandId& aId, const TDesC& aDes);
	virtual void Report(const TServerCommandId& aId, const TDesC8& aDes);
	virtual void ReportWarning(const TServerCommandId& aId, const TDesC& aDes);
	virtual void ReportError(const TServerCommandId& aId, TInt aError, const TDesC& aDes);
	
private:
	RSqlDatabase	iSqlDb;
	TBool			iDatabaseOpened;	//when database is created or opened, set this to ETrue
	
	TBool iExit;
	TBuf<512> iLine;
	TInt iExitReason;
	
	TBool iLineRead;
	
	TInt iNextCommandId;
	TInt iTmpFileNo;	
		
private:
	//use this static variable to make sure only one instance exists
	static CCmdSqlSrv*	iOnlyInstance;
	};


#endif //__SQLSRV_H__