Kaydet (Commit) 660159a6 authored tarafından Jan-Marek Glogowski's avatar Jan-Marek Glogowski

MM allow easier manipulation of MM test arguments

Keep the beans::NamedValue vector around and convert it to a
uno::Sequence just before executing the mail merge job.

Change-Id: Ib2b4863337af20fb4423cc1b4ea4223d66d63ae5
üst f780deb1
...@@ -138,29 +138,29 @@ public: ...@@ -138,29 +138,29 @@ public:
uno::Reference< task::XJob > xJob( getMultiServiceFactory()->createInstance( "com.sun.star.text.MailMerge" ), uno::UNO_QUERY_THROW ); uno::Reference< task::XJob > xJob( getMultiServiceFactory()->createInstance( "com.sun.star.text.MailMerge" ), uno::UNO_QUERY_THROW );
mxJob.set( xJob ); mxJob.set( xJob );
std::vector< beans::NamedValue > args; mMMargs.reserve( 15 );
args.push_back( beans::NamedValue( OUString( UNO_NAME_OUTPUT_TYPE ), uno::Any( file ? text::MailMergeType::FILE : text::MailMergeType::SHELL ) ) ); mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_OUTPUT_TYPE ), uno::Any( file ? text::MailMergeType::FILE : text::MailMergeType::SHELL ) ) );
args.push_back( beans::NamedValue( OUString( UNO_NAME_DOCUMENT_URL ), uno::Any( mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_DOCUMENT_URL ), uno::Any(
( OUString( m_directories.getURLFromSrc(mpTestDocumentPath) + OUString::createFromAscii(filename)) ) ) ) ); ( OUString( m_directories.getURLFromSrc(mpTestDocumentPath) + OUString::createFromAscii(filename)) ) ) ) );
args.push_back( beans::NamedValue( OUString( UNO_NAME_DATA_SOURCE_NAME ), uno::Any( aDBName ) ) ); mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_DATA_SOURCE_NAME ), uno::Any( aDBName ) ) );
args.push_back( beans::NamedValue( OUString( UNO_NAME_OUTPUT_URL ), uno::Any( aWorkDir ) ) ); mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_OUTPUT_URL ), uno::Any( aWorkDir ) ) );
args.push_back( beans::NamedValue( OUString( UNO_NAME_FILE_NAME_PREFIX ), uno::Any( aPrefix )) ); mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_FILE_NAME_PREFIX ), uno::Any( aPrefix )) );
if (bPrefixIsColumn) if (bPrefixIsColumn)
args.push_back( beans::NamedValue( OUString( UNO_NAME_FILE_NAME_FROM_COLUMN ), uno::Any( true ) ) ); mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_FILE_NAME_FROM_COLUMN ), uno::Any( true ) ) );
if (tablename) if (tablename)
{ {
args.push_back( beans::NamedValue( OUString( UNO_NAME_DAD_COMMAND_TYPE ), uno::Any( sdb::CommandType::TABLE ) ) ); mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_DAD_COMMAND_TYPE ), uno::Any( sdb::CommandType::TABLE ) ) );
args.push_back( beans::NamedValue( OUString( UNO_NAME_DAD_COMMAND ), uno::Any( OUString::createFromAscii(tablename) ) ) ); mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_DAD_COMMAND ), uno::Any( OUString::createFromAscii(tablename) ) ) );
} }
if (nDataSets > 0) if (nDataSets > 0)
{ {
uno::Reference< sdbc::XRowSet > xCurResultSet = getXResultFromDataset( tablename, aDBName ); uno::Reference< sdbc::XRowSet > xCurResultSet = getXResultFromDataset( tablename, aDBName );
uno::Reference< sdbcx::XRowLocate > xCurRowLocate( xCurResultSet, uno::UNO_QUERY ); uno::Reference< sdbcx::XRowLocate > xCurRowLocate( xCurResultSet, uno::UNO_QUERY );
args.push_back( beans::NamedValue( OUString( UNO_NAME_RESULT_SET ), uno::Any( xCurResultSet ) ) ); mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_RESULT_SET ), uno::Any( xCurResultSet ) ) );
std::vector< uno::Any > vResult; std::vector< uno::Any > vResult;
vResult.reserve( nDataSets ); vResult.reserve( nDataSets );
sal_Int32 i; sal_Int32 i;
...@@ -168,20 +168,20 @@ public: ...@@ -168,20 +168,20 @@ public:
{ {
vResult.push_back( uno::Any( xCurRowLocate->getBookmark() ) ); vResult.push_back( uno::Any( xCurRowLocate->getBookmark() ) );
} }
args.push_back( beans::NamedValue( OUString( UNO_NAME_SELECTION ), uno::Any( comphelper::containerToSequence(vResult) ) ) ); mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_SELECTION ), uno::Any( comphelper::containerToSequence(vResult) ) ) );
} }
mSeqMailMergeArgs = comphelper::containerToSequence( args );
} }
void executeMailMerge() void executeMailMerge()
{ {
uno::Any res = mxJob->execute( mSeqMailMergeArgs ); uno::Sequence< beans::NamedValue > aSeqMailMergeArgs = comphelper::containerToSequence( mMMargs );
uno::Any res = mxJob->execute( aSeqMailMergeArgs );
const beans::NamedValue *pArguments = mSeqMailMergeArgs.getConstArray(); const beans::NamedValue *pArguments = aSeqMailMergeArgs.getConstArray();
bool bOk = true; bool bOk = true;
bool bMMFilenameFromColumn = false; bool bMMFilenameFromColumn = false;
sal_Int32 nArgs = mSeqMailMergeArgs.getLength(); sal_Int32 nArgs = aSeqMailMergeArgs.getLength();
for (sal_Int32 i = 0; i < nArgs; ++i) { for (sal_Int32 i = 0; i < nArgs; ++i) {
const OUString &rName = pArguments[i].Name; const OUString &rName = pArguments[i].Name;
...@@ -189,9 +189,9 @@ public: ...@@ -189,9 +189,9 @@ public:
// all error checking was already done by the MM job execution // all error checking was already done by the MM job execution
if (rName == UNO_NAME_OUTPUT_URL) if (rName == UNO_NAME_OUTPUT_URL)
bOk &= rValue >>= mailMergeOutputURL; bOk &= rValue >>= msMailMergeOutputURL;
else if (rName == UNO_NAME_FILE_NAME_PREFIX) else if (rName == UNO_NAME_FILE_NAME_PREFIX)
bOk &= rValue >>= mailMergeOutputPrefix; bOk &= rValue >>= msMailMergeOutputPrefix;
else if (rName == UNO_NAME_OUTPUT_TYPE) else if (rName == UNO_NAME_OUTPUT_TYPE)
bOk &= rValue >>= mnCurOutputType; bOk &= rValue >>= mnCurOutputType;
else if (rName == UNO_NAME_FILE_NAME_FROM_COLUMN) else if (rName == UNO_NAME_FILE_NAME_FROM_COLUMN)
...@@ -227,8 +227,8 @@ public: ...@@ -227,8 +227,8 @@ public:
if (mnCurOutputType != text::MailMergeType::FILE) if (mnCurOutputType != text::MailMergeType::FILE)
return nullptr; return nullptr;
OUString name = mailMergeOutputPrefix + OUString::number( 0 ) + ".odt"; OUString name = msMailMergeOutputPrefix + OUString::number( 0 ) + ".odt";
return parseExportInternal( mailMergeOutputURL + "/" + name, rStreamName ); return parseExportInternal( msMailMergeOutputURL + "/" + name, rStreamName );
} }
void loadMailMergeDocument( const OUString &filename ) void loadMailMergeDocument( const OUString &filename )
...@@ -239,7 +239,7 @@ public: ...@@ -239,7 +239,7 @@ public:
// Output name early, so in the case of a hang, the name of the hanging input file is visible. // Output name early, so in the case of a hang, the name of the hanging input file is visible.
std::cout << filename << ","; std::cout << filename << ",";
mnStartTime = osl_getGlobalTimer(); mnStartTime = osl_getGlobalTimer();
mxComponent = loadFromDesktop(mailMergeOutputURL + "/" + filename, "com.sun.star.text.TextDocument"); mxComponent = loadFromDesktop(msMailMergeOutputURL + "/" + filename, "com.sun.star.text.TextDocument");
CPPUNIT_ASSERT( mxComponent.is()); CPPUNIT_ASSERT( mxComponent.is());
OString name2 = OUStringToOString( filename, RTL_TEXTENCODING_UTF8 ); OString name2 = OUStringToOString( filename, RTL_TEXTENCODING_UTF8 );
discardDumpedLayout(); discardDumpedLayout();
...@@ -252,7 +252,7 @@ public: ...@@ -252,7 +252,7 @@ public:
*/ */
void loadMailMergeDocument( int number ) void loadMailMergeDocument( int number )
{ {
OUString name = mailMergeOutputPrefix + OUString::number( number ) + ".odt"; OUString name = msMailMergeOutputPrefix + OUString::number( number ) + ".odt";
loadMailMergeDocument( name ); loadMailMergeDocument( name );
} }
...@@ -261,9 +261,9 @@ protected: ...@@ -261,9 +261,9 @@ protected:
int documentStartPageNumber( int document ) const; int documentStartPageNumber( int document ) const;
uno::Reference< css::task::XJob > mxJob; uno::Reference< css::task::XJob > mxJob;
uno::Sequence< beans::NamedValue > mSeqMailMergeArgs; std::vector< beans::NamedValue > mMMargs;
OUString mailMergeOutputURL; OUString msMailMergeOutputURL;
OUString mailMergeOutputPrefix; OUString msMailMergeOutputPrefix;
sal_Int16 mnCurOutputType; sal_Int16 mnCurOutputType;
uno::Reference< lang::XComponent > mxMMComponent; uno::Reference< lang::XComponent > mxMMComponent;
const char* maMMtestFilename; const char* maMMtestFilename;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment