diff -r 000000000000 -r 7f656887cf89 commands/sql/sqlcmd_open.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commands/sql/sqlcmd_open.cpp Wed Jun 23 15:52:26 2010 +0100 @@ -0,0 +1,562 @@ +// sqlcmd_open.cpp +// +// Copyright (c) 2009 - 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 +// + +#include "sqlcmd_open.h" +#include "sqlsrv.h" + +///////////////////////////////////////////////////////////////////////////////////////// +_LIT(KCommandName, "open"); + +CServerCommandBase* CSqlCmdOpen::NewLC() + { + CSqlCmdOpen* self = new(ELeave) CSqlCmdOpen(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CSqlCmdOpen::~CSqlCmdOpen() + { + delete iFileName; + } + +const TDesC& CSqlCmdOpen::NameS() + { + return KCommandName; + } + +void CSqlCmdOpen::ConstructL() + { + BaseConstructL(); + } + +const TDesC& CSqlCmdOpen::Name() const + { + return KCommandName; + } + +const TDesC& CSqlCmdOpen::Description() const + { + _LIT(KDescription, "open an existing SQL database file"); + return KDescription; + } + +//virtual +void CSqlCmdOpen::ArgumentsL(RCommandArgumentList& aArguments) +{ + _LIT(KName, "filename"); + _LIT(KDescription, "filename of the SQL database file. Should contain path."); + aArguments.AppendStringL(iFileName, KName, KDescription, KValueTypeFlagOptional); +} + +void CSqlCmdOpen::DoRunL() + { + if (iFileName==NULL || iFileName->Length()==0 ) + { + LeaveIfErr(KErrArgument, _L("Database filename unspecified.")); + } + + CCmdSqlSrv* pSrv = CCmdSqlSrv::GetServer(); + pSrv->SqlOpenL(*iFileName, this); + } + +///////////////////////////////////////////////////////////////////////////////////// +_LIT(KCommandExit, "exit"); + +CServerCommandBase* CSqlCmdExit::NewLC() + { + CSqlCmdExit* self = new(ELeave) CSqlCmdExit(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CSqlCmdExit::~CSqlCmdExit() + { + } + +const TDesC& CSqlCmdExit::NameS() + { + return KCommandExit; + } + +void CSqlCmdExit::ConstructL() + { + BaseConstructL(); + } + +const TDesC& CSqlCmdExit::Name() const + { + return KCommandExit; + } + +const TDesC& CSqlCmdExit::Description() const + { + _LIT(KDescription, "Shut down amsrv."); + return KDescription; + } + +void CSqlCmdExit::DoRunL() + { + CCmdSqlSrv* pSrv = CCmdSqlSrv::GetServer(); + pSrv->Exit(KErrNone); + + } + +///////////////////////////////////////////////////////////////////////////////////// +_LIT(KCommandClose, "close"); + +CServerCommandBase* CSqlCmdClose::NewLC() + { + CSqlCmdClose* self = new(ELeave) CSqlCmdClose(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CSqlCmdClose::~CSqlCmdClose() + { + } + +const TDesC& CSqlCmdClose::NameS() + { + return KCommandClose; + } + +void CSqlCmdClose::ConstructL() + { + BaseConstructL(); + } + +const TDesC& CSqlCmdClose::Name() const + { + return KCommandClose; + } + +const TDesC& CSqlCmdClose::Description() const + { + _LIT(KDescription, "close a SQL database file"); + return KDescription; + } + +void CSqlCmdClose::DoRunL() + { + CCmdSqlSrv* pSrv = CCmdSqlSrv::GetServer(); + pSrv->SqlClose(this); + + } + +///////////////////////////////////////////////////////////////////////////////////// +_LIT(KCommandCreate, "create"); + +CServerCommandBase* CSqlCmdCreate::NewLC() + { + CSqlCmdCreate* self = new(ELeave) CSqlCmdCreate(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CSqlCmdCreate::~CSqlCmdCreate() + { + delete iFileName; + } + +const TDesC& CSqlCmdCreate::NameS() + { + return KCommandCreate; + } + +void CSqlCmdCreate::ConstructL() + { + BaseConstructL(); + } + +const TDesC& CSqlCmdCreate::Name() const + { + return KCommandCreate; + } + +const TDesC& CSqlCmdCreate::Description() const + { + _LIT(KDescription, "Create a SQL database"); + return KDescription; + } + +//virtual +void CSqlCmdCreate::ArgumentsL(RCommandArgumentList& aArguments) + { + _LIT(KName, "filename"); + _LIT(KDescription, "filename of the SQL database file. Should contain path."); + aArguments.AppendStringL(iFileName, KName, KDescription, KValueTypeFlagOptional); + } + +void CSqlCmdCreate::DoRunL() + { + if (iFileName==NULL || iFileName->Length()==0 ) + { + LeaveIfErr(KErrArgument, _L("Database filename unspecified.")); + } + + CCmdSqlSrv* pSrv = CCmdSqlSrv::GetServer(); + pSrv->SqlCreateL(*iFileName, this); + } + +/////////////////////////////////////////////////////////////////////////////// + +_LIT(KCommandExec, "exec"); + +CServerCommandBase* CSqlCmdExec::NewLC() + { + CSqlCmdExec* self = new(ELeave) CSqlCmdExec(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CSqlCmdExec::~CSqlCmdExec() + { + delete iExec; + } + +const TDesC& CSqlCmdExec::NameS() + { + return KCommandExec; + } + +void CSqlCmdExec::ConstructL() + { + BaseConstructL(); + } + +const TDesC& CSqlCmdExec::Name() const + { + return KCommandExec; + } + +const TDesC& CSqlCmdExec::Description() const + { + _LIT(KDescription, "Execute a SQL statement without parameter and response."); + return KDescription; + } + +void CSqlCmdExec::ArgumentsL(RCommandArgumentList& aArguments) + { + _LIT(KName, "statement"); + _LIT(KDescription, "The SQL statement to execute"); + aArguments.AppendStringL(iExec, KName, KDescription, KValueTypeFlagOptional|KValueTypeFlagLast); + } + +void CSqlCmdExec::DoRunL() + { + if (iExec==NULL || iExec->Length()==0 ) + { + LeaveIfErr(KErrArgument, _L("SQL statement unspecified.")); + } + CCmdSqlSrv::StripWrapDoubleQuote(*iExec); + + CCmdSqlSrv* pSrv = CCmdSqlSrv::GetServer(); + pSrv->SqlExecL(*iExec, this); + } +///////////////////////////////////////////////////////////////////////////////////////////// + +_LIT(KCommandState, "state"); + +CServerCommandBase* CSqlCmdState::NewLC() + { + CSqlCmdState* self = new(ELeave) CSqlCmdState(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CSqlCmdState::~CSqlCmdState() + { + delete iExec; + + delete iOptFileName; + + //delete optional multiple parameter file + { + TInt optParamCnt = iOptParamFile.Count(); + if (optParamCnt) + { + for (TInt i=0; iLength()==0 ) + { + LeaveIfErr(KErrArgument, _L("SQL statement unspecified.")); + } + + CCmdSqlSrv::StripWrapDoubleQuote(*iExec); + + CCmdSqlSrv* pSrv = CCmdSqlSrv::GetServer(); + pSrv->SqlStateL(*iExec, iOptParamFile, this, iOptFileName); + } + +/////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////// +_LIT(KCommandAttach, "attach"); + +CServerCommandBase* CSqlCmdAttach::NewLC() + { + CSqlCmdAttach* self = new(ELeave) CSqlCmdAttach(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CSqlCmdAttach::~CSqlCmdAttach() + { + delete iOptFileName; + delete iOptDBName; + } + +const TDesC& CSqlCmdAttach::NameS() + { + return KCommandAttach; + } + +void CSqlCmdAttach::ConstructL() + { + BaseConstructL(); + } + +const TDesC& CSqlCmdAttach::Name() const + { + return KCommandAttach; + } + +const TDesC& CSqlCmdAttach::Description() const + { + _LIT(KDescription, "Attach additional database onto main database file"); + return KDescription; + } + +//virtual +void CSqlCmdAttach::ArgumentsL(RCommandArgumentList& /*aArguments*/) + { + } + +void CSqlCmdAttach::OptionsL(RCommandOptionList& aOptions) + { + _LIT(KOptFile, "file"); + _LIT(KOptFileDescription, "Specify additional database file."); + aOptions.AppendStringL(iOptFileName, TChar('f'), KOptFile, KOptFileDescription); + + _LIT(KOptDB, "name"); + _LIT(KOptDBDescription, "Specify additional database name."); + aOptions.AppendStringL(iOptDBName, TChar('n'), KOptDB, KOptDBDescription); + } + +void CSqlCmdAttach::DoRunL() + { + if (iOptFileName==NULL || iOptFileName->Length()==0 ) + { + LeaveIfErr(KErrArgument, _L("Database filename unspecified.")); + } + if (iOptDBName==NULL || iOptDBName->Length()==0 ) + { + LeaveIfErr(KErrArgument, _L("Database name unspecified.")); + } + + CCmdSqlSrv* pSrv = CCmdSqlSrv::GetServer(); + pSrv->SqlAttachL(*iOptFileName, *iOptDBName, this); + } + +////////////////////////////////////////////////////////////////////////////////////// + +_LIT(KCommandDetach, "detach"); + +CServerCommandBase* CSqlCmdDetach::NewLC() + { + CSqlCmdDetach* self = new(ELeave) CSqlCmdDetach(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CSqlCmdDetach::~CSqlCmdDetach() + { + delete iOptDBName; + } + +const TDesC& CSqlCmdDetach::NameS() + { + return KCommandDetach; + } + +void CSqlCmdDetach::ConstructL() + { + BaseConstructL(); + } + +const TDesC& CSqlCmdDetach::Name() const + { + return KCommandDetach; + } + +const TDesC& CSqlCmdDetach::Description() const + { + _LIT(KDescription, "Detach additional database which is previously attached onto main database file."); + return KDescription; + } + +void CSqlCmdDetach::ArgumentsL(RCommandArgumentList& /*aArguments*/) + { + } + +void CSqlCmdDetach::OptionsL(RCommandOptionList& aOptions) + { + _LIT(KOptDB, "name"); + _LIT(KOptDBDescription, "Specify additional database name."); + aOptions.AppendStringL(iOptDBName, TChar('n'), KOptDB, KOptDBDescription); + } + +void CSqlCmdDetach::DoRunL() + { + if (iOptDBName==NULL || iOptDBName->Length()==0 ) + { + LeaveIfErr(KErrArgument, _L("Database name unspecified.")); + } + + CCmdSqlSrv* pSrv = CCmdSqlSrv::GetServer(); + pSrv->SqlDetachL(*iOptDBName, this); + } + +/////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////// +#ifdef SQL_COMPACT + +_LIT(KCommandCompact, "compact"); + +CServerCommandBase* CSqlCmdCompact::NewLC() + { + CSqlCmdCompact* self = new(ELeave) CSqlCmdCompact(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CSqlCmdCompact::~CSqlCmdCompact() + { + delete iOptDBName; + } + +const TDesC& CSqlCmdCompact::NameS() + { + return KCommandCompact; + } + +void CSqlCmdCompact::ConstructL() + { + BaseConstructL(); + } + +const TDesC& CSqlCmdCompact::Name() const + { + return KCommandCompact; + } + +const TDesC& CSqlCmdCompact::Description() const + { + _LIT(KDescription, "Compacts the database.(RSqlDatabase::Compact)"); + return KDescription; + } + +//virtual +void CSqlCmdCompact::ArgumentsL(RCommandArgumentList& aArguments) +{ +} + +void CSqlCmdCompact::OptionsL(RCommandOptionList& aOptions) + { + _LIT(KOptDB, "name"); + _LIT(KOptDBDescription, "Specify database name, if unspecified, then main database will be compacted"); + aOptions.AppendStringL(iOptDBName, TChar('n'), KOptDB, KOptDBDescription); + } + +void CSqlCmdCompact::DoRunL() + { + CCmdSqlSrv* pSrv = CCmdSqlSrv::GetServer(); + pSrv->SqlCompactL(iOptDBName, this); + } +#endif