removetooltypes01: Rebase to DEV300m99
This commit is contained in:
commit
bebf85efd1
@ -237,6 +237,13 @@ public:
|
||||
*/
|
||||
bool LegacyPsswdBinaryLimitExceeded( ::com::sun::star::uno::Sequence< rtl::OUString >& _out_rModuleNames );
|
||||
|
||||
/// determines whether the Basic Manager has a given macro, given by fully qualified name
|
||||
bool HasMacro( String const& i_fullyQualifiedName ) const;
|
||||
/// executes a given macro
|
||||
ErrCode ExecuteMacro( String const& i_fullyQualifiedName, SbxArray* i_arguments, SbxValue* i_retValue );
|
||||
/// executes a given macro
|
||||
ErrCode ExecuteMacro( String const& i_fullyQualifiedName, String const& i_commaSeparatedArgs, SbxValue* i_retValue );
|
||||
|
||||
private:
|
||||
sal_Bool IsReference( sal_uInt16 nLib );
|
||||
|
||||
|
@ -201,8 +201,8 @@ long AppEdit::InitMenu( Menu* pMenu )
|
||||
|
||||
if( pDataEdit )
|
||||
{
|
||||
sal_uInt16 UndoCount = ((TextEdit*)pDataEdit)->aEdit.pTextEngine->GetUndoManager().GetUndoActionCount();
|
||||
sal_uInt16 RedoCount = ((TextEdit*)pDataEdit)->aEdit.pTextEngine->GetUndoManager().GetRedoActionCount();
|
||||
size_t UndoCount = ((TextEdit*)pDataEdit)->aEdit.pTextEngine->GetUndoManager().GetUndoActionCount();
|
||||
size_t RedoCount = ((TextEdit*)pDataEdit)->aEdit.pTextEngine->GetUndoManager().GetRedoActionCount();
|
||||
|
||||
pMenu->EnableItem( RID_EDITUNDO, UndoCount > 0 );
|
||||
pMenu->EnableItem( RID_EDITREDO, RedoCount > 0 );
|
||||
|
@ -42,6 +42,8 @@
|
||||
#include <tools/diagnose_ex.h>
|
||||
#include <basic/sbmod.hxx>
|
||||
#include <basic/sbobjmod.hxx>
|
||||
#include <unotools/intlwrapper.hxx>
|
||||
#include <comphelper/processfactory.hxx>
|
||||
|
||||
#include <basic/sbuno.hxx>
|
||||
#include <basic/basmgr.hxx>
|
||||
@ -1868,6 +1870,116 @@ bool BasicManager::LegacyPsswdBinaryLimitExceeded( ::com::sun::star::uno::Sequen
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
namespace
|
||||
{
|
||||
SbMethod* lcl_queryMacro( BasicManager* i_manager, String const& i_fullyQualifiedName )
|
||||
{
|
||||
sal_uInt16 nLast = 0;
|
||||
String sMacro = i_fullyQualifiedName;
|
||||
String sLibName = sMacro.GetToken( 0, '.', nLast );
|
||||
String sModule = sMacro.GetToken( 0, '.', nLast );
|
||||
sMacro.Erase( 0, nLast );
|
||||
|
||||
IntlWrapper aIntlWrapper( ::comphelper::getProcessServiceFactory(), Application::GetSettings().GetLocale() );
|
||||
const CollatorWrapper* pCollator = aIntlWrapper.getCollator();
|
||||
sal_uInt16 nLibCount = i_manager->GetLibCount();
|
||||
for ( sal_uInt16 nLib = 0; nLib < nLibCount; ++nLib )
|
||||
{
|
||||
if ( COMPARE_EQUAL == pCollator->compareString( i_manager->GetLibName( nLib ), sLibName ) )
|
||||
{
|
||||
StarBASIC* pLib = i_manager->GetLib( nLib );
|
||||
if( !pLib )
|
||||
{
|
||||
i_manager->LoadLib( nLib );
|
||||
pLib = i_manager->GetLib( nLib );
|
||||
}
|
||||
|
||||
if( pLib )
|
||||
{
|
||||
sal_uInt16 nModCount = pLib->GetModules()->Count();
|
||||
for( sal_uInt16 nMod = 0; nMod < nModCount; ++nMod )
|
||||
{
|
||||
SbModule* pMod = (SbModule*)pLib->GetModules()->Get( nMod );
|
||||
if ( pMod && COMPARE_EQUAL == pCollator->compareString( pMod->GetName(), sModule ) )
|
||||
{
|
||||
SbMethod* pMethod = (SbMethod*)pMod->Find( sMacro, SbxCLASS_METHOD );
|
||||
if( pMethod )
|
||||
return pMethod;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
bool BasicManager::HasMacro( String const& i_fullyQualifiedName ) const
|
||||
{
|
||||
return ( NULL != lcl_queryMacro( const_cast< BasicManager* >( this ), i_fullyQualifiedName ) );
|
||||
}
|
||||
|
||||
ErrCode BasicManager::ExecuteMacro( String const& i_fullyQualifiedName, SbxArray* i_arguments, SbxValue* i_retValue )
|
||||
{
|
||||
SbMethod* pMethod = lcl_queryMacro( this, i_fullyQualifiedName );
|
||||
ErrCode nError = 0;
|
||||
if ( pMethod )
|
||||
{
|
||||
if ( i_arguments )
|
||||
pMethod->SetParameters( i_arguments );
|
||||
nError = pMethod->Call( i_retValue );
|
||||
}
|
||||
else
|
||||
nError = ERRCODE_BASIC_PROC_UNDEFINED;
|
||||
return nError;
|
||||
}
|
||||
|
||||
ErrCode BasicManager::ExecuteMacro( String const& i_fullyQualifiedName, String const& i_commaSeparatedArgs, SbxValue* i_retValue )
|
||||
{
|
||||
SbMethod* pMethod = lcl_queryMacro( this, i_fullyQualifiedName );
|
||||
if ( !pMethod )
|
||||
return ERRCODE_BASIC_PROC_UNDEFINED;
|
||||
|
||||
// arguments must be quoted
|
||||
String sQuotedArgs;
|
||||
String sArgs( i_commaSeparatedArgs );
|
||||
if ( sArgs.Len()<2 || sArgs.GetBuffer()[1] == '\"')
|
||||
// no args or already quoted args
|
||||
sQuotedArgs = sArgs;
|
||||
else
|
||||
{
|
||||
// quote parameters
|
||||
sArgs.Erase( 0, 1 );
|
||||
sArgs.Erase( sArgs.Len()-1, 1 );
|
||||
|
||||
sQuotedArgs = '(';
|
||||
|
||||
sal_uInt16 nCount = sArgs.GetTokenCount(',');
|
||||
for ( sal_uInt16 n=0; n<nCount; ++n )
|
||||
{
|
||||
sQuotedArgs += '\"';
|
||||
sQuotedArgs += sArgs.GetToken( n, ',' );
|
||||
sQuotedArgs += '\"';
|
||||
if ( n<nCount-1 )
|
||||
sQuotedArgs += ',';
|
||||
}
|
||||
|
||||
sQuotedArgs += ')';
|
||||
}
|
||||
|
||||
// add quoted arguments and do the call
|
||||
String sCall( '[' );
|
||||
sCall += pMethod->GetName();
|
||||
sCall += sQuotedArgs;
|
||||
sCall += ']';
|
||||
|
||||
SbxVariable* pRet = pMethod->GetParent()->Execute( sCall );
|
||||
if ( pRet )
|
||||
*i_retValue = *pRet;
|
||||
return SbxBase::GetError();
|
||||
}
|
||||
|
||||
//=====================================================================
|
||||
|
||||
class ModuleInfo_Impl : public ModuleInfoHelper
|
||||
|
@ -125,15 +125,27 @@ namespace connectivity
|
||||
class OOO_DLLPUBLIC_DBTOOLS OOrderColumn :
|
||||
public OOrderColumn_BASE, public OOrderColumn_PROP
|
||||
{
|
||||
sal_Bool m_bAscending;
|
||||
sal_Bool m_bOrder;
|
||||
const sal_Bool m_bAscending;
|
||||
const ::rtl::OUString m_sTableName;
|
||||
|
||||
protected:
|
||||
virtual ::cppu::IPropertyArrayHelper* createArrayHelper() const;
|
||||
virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
|
||||
|
||||
virtual ~OOrderColumn();
|
||||
public:
|
||||
OOrderColumn(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _xColumn,sal_Bool _bCase,sal_Bool _bAscending);
|
||||
OOrderColumn(
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _xColumn,
|
||||
const ::rtl::OUString& i_rOriginatingTableName,
|
||||
sal_Bool _bCase,
|
||||
sal_Bool _bAscending
|
||||
);
|
||||
|
||||
OOrderColumn(
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _xColumn,
|
||||
sal_Bool _bCase,
|
||||
sal_Bool _bAscending
|
||||
);
|
||||
|
||||
virtual void construct();
|
||||
|
||||
|
@ -98,17 +98,18 @@ namespace dbtools
|
||||
const double& rValue,
|
||||
sal_Int16 nKeyType) throw(::com::sun::star::lang::IllegalArgumentException);
|
||||
|
||||
static double getValue(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn>& xVariant, const ::com::sun::star::util::Date& rNullDate,
|
||||
sal_Int16 nKeyType);
|
||||
static double getValue( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn>& xVariant, const ::com::sun::star::util::Date& rNullDate );
|
||||
|
||||
// get the columnvalue as string with a default format given by the column or a default format
|
||||
// for the type
|
||||
static ::rtl::OUString getValue(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _xColumn,
|
||||
static ::rtl::OUString getFormattedValue(
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _xColumn,
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter>& xFormatter,
|
||||
const ::com::sun::star::lang::Locale& _rLocale,
|
||||
const ::com::sun::star::util::Date& rNullDate);
|
||||
|
||||
static ::rtl::OUString getValue(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn>& _xColumn,
|
||||
static ::rtl::OUString getFormattedValue(
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn>& _xColumn,
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter>& xFormatter,
|
||||
const ::com::sun::star::util::Date& rNullDate,
|
||||
sal_Int32 nKey,
|
||||
|
@ -256,17 +256,16 @@ namespace connectivity
|
||||
|
||||
virtual double getValue(
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn>& _rxVariant,
|
||||
const ::com::sun::star::util::Date& rNullDate,
|
||||
sal_Int16 nKeyType) const = 0;
|
||||
const ::com::sun::star::util::Date& rNullDate ) const = 0;
|
||||
|
||||
virtual ::rtl::OUString getValue(
|
||||
virtual ::rtl::OUString getFormattedValue(
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _rxColumn,
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& _rxFormatter,
|
||||
const ::com::sun::star::util::Date& _rNullDate,
|
||||
sal_Int32 _nKey,
|
||||
sal_Int16 _nKeyType) const = 0;
|
||||
|
||||
virtual ::rtl::OUString getValue(
|
||||
virtual ::rtl::OUString getFormattedValue(
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _rxColumn,
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter>& _rxFormatter,
|
||||
const ::com::sun::star::lang::Locale& _rLocale,
|
||||
|
@ -28,5 +28,5 @@ cn connectivity\source\parse nmake - all cn_parse cn_
|
||||
cn connectivity\source\simpledbt nmake - all cn_simpledbt cn_cmtools cn_inc NULL
|
||||
cn connectivity\source\dbtools nmake - all cn_dbtools cn_simpledbt cn_cmtools cn_parse cn_res cn_sdbcx cn_inc cn_res NULL
|
||||
cn connectivity\qa\connectivity\tools nmake - all cn_qa_tools cn_inc NULL
|
||||
cn connectivity\qa nmake - all cn_qa cn_inc NULL
|
||||
cn connectivity\util nmake - all cn_util cn_ado cn_mozab cn_kab cn_evoab2 cn_calc cn_odbc cn_mysql cn_jdbc cn_adabas cn_flat cn_dbase cn_hsqldb cn_macab NULL
|
||||
|
||||
|
@ -24,36 +24,18 @@
|
||||
* for a copy of the LGPLv3 License.
|
||||
*
|
||||
************************************************************************/
|
||||
package qa.drivers.dbase;
|
||||
package complex.connectivity;
|
||||
|
||||
import com.sun.star.sdbc.*;
|
||||
import complex.connectivity.dbase.DBaseDateFunctions;
|
||||
import complex.connectivity.dbase.DBaseStringFunctions;
|
||||
import complex.connectivity.dbase.DBaseSqlTests;
|
||||
import complex.connectivity.dbase.DBaseNumericFunctions;
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import complexlib.ComplexTestCase;
|
||||
import java.util.*;
|
||||
import java.io.*;
|
||||
import share.LogWriter;
|
||||
//import complex.connectivity.DBaseStringFunctions;
|
||||
|
||||
public class DBaseDriverTest extends ComplexTestCase
|
||||
public class DBaseDriverTest extends ComplexTestCase implements TestCase
|
||||
{
|
||||
|
||||
private static Properties props = new Properties();
|
||||
private XDriver m_xDiver;
|
||||
private String where = "FROM \"biblio\" \"biblio\" where \"Identifier\" = 'BOR00'";
|
||||
|
||||
static
|
||||
{
|
||||
try
|
||||
{
|
||||
String propsFile = "test.properties";
|
||||
props.load(new FileInputStream(propsFile));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new RuntimeException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
public String[] getTestMethodNames()
|
||||
{
|
||||
return new String[]
|
||||
@ -62,19 +44,21 @@ public class DBaseDriverTest extends ComplexTestCase
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTestObjectName()
|
||||
{
|
||||
return "DBaseDriverTest";
|
||||
}
|
||||
|
||||
public void assure2(String s, boolean b)
|
||||
@Override
|
||||
public void assure( final String i_message, final boolean i_condition )
|
||||
{
|
||||
assure(s, b);
|
||||
super.assure( i_message, i_condition );
|
||||
}
|
||||
|
||||
public LogWriter getLog()
|
||||
{
|
||||
return log;
|
||||
return ComplexTestCase.log;
|
||||
}
|
||||
|
||||
public void Functions() throws com.sun.star.uno.Exception, com.sun.star.beans.UnknownPropertyException
|
237
connectivity/qa/complex/connectivity/FlatFileAccess.java
Executable file
237
connectivity/qa/complex/connectivity/FlatFileAccess.java
Executable file
@ -0,0 +1,237 @@
|
||||
package complex.connectivity;
|
||||
|
||||
import com.sun.star.beans.XPropertySet;
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import com.sun.star.sdb.CommandType;
|
||||
import com.sun.star.sdbc.SQLException;
|
||||
import com.sun.star.util.Date;
|
||||
import complexlib.ComplexTestCase;
|
||||
import connectivity.tools.CsvDatabase;
|
||||
import connectivity.tools.RowSet;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class FlatFileAccess extends ComplexTestCase
|
||||
{
|
||||
public FlatFileAccess()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getTestMethodNames()
|
||||
{
|
||||
return new String[] {
|
||||
"testBasicAccess",
|
||||
"testCalendarFunctions",
|
||||
"testSortingByFunction"
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTestObjectName()
|
||||
{
|
||||
return "FlatFileAccess";
|
||||
}
|
||||
|
||||
public void before() throws Exception
|
||||
{
|
||||
m_database = new CsvDatabase( (XMultiServiceFactory)param.getMSF() );
|
||||
|
||||
// proper settings
|
||||
final XPropertySet dataSourceSettings = m_database.getDataSource().geSettings();
|
||||
dataSourceSettings.setPropertyValue( "Extension", "csv" );
|
||||
dataSourceSettings.setPropertyValue( "HeaderLine", Boolean.TRUE );
|
||||
dataSourceSettings.setPropertyValue( "FieldDelimiter", " " );
|
||||
m_database.store();
|
||||
|
||||
// write the table(s) for our test
|
||||
final String tableLocation = m_database.getTableFileLocation().getAbsolutePath();
|
||||
final PrintWriter tableWriter = new PrintWriter( new FileOutputStream( tableLocation + File.separatorChar + "dates.csv", false ) );
|
||||
tableWriter.println( "ID date" );
|
||||
tableWriter.println( "1 2013-01-01" );
|
||||
tableWriter.println( "2 2012-02-02" );
|
||||
tableWriter.println( "3 2011-03-03" );
|
||||
tableWriter.close();
|
||||
}
|
||||
|
||||
public void after()
|
||||
{
|
||||
}
|
||||
|
||||
private class EqualityDate extends Date
|
||||
{
|
||||
EqualityDate( short i_day, short i_month, short i_year )
|
||||
{
|
||||
super( i_day, i_month, i_year );
|
||||
}
|
||||
|
||||
EqualityDate( Date i_date )
|
||||
{
|
||||
super( i_date.Day, i_date.Month, i_date.Year );
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object i_compare )
|
||||
{
|
||||
if ( !( i_compare instanceof Date ) )
|
||||
return false;
|
||||
return Day == ((Date)i_compare).Day
|
||||
&& Month == ((Date)i_compare).Month
|
||||
&& Year == ((Date)i_compare).Year;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ensures simple SELECTs from our table(s) work, and deliver the expected results
|
||||
*/
|
||||
public void testBasicAccess()
|
||||
{
|
||||
testRowSetResults(
|
||||
"SELECT * FROM \"dates\"",
|
||||
new RowSetIntGetter(1),
|
||||
new Integer[] { 1, 2, 3 },
|
||||
"simple select", "wrong IDs"
|
||||
);
|
||||
|
||||
testRowSetResults(
|
||||
"SELECT * FROM \"dates\"",
|
||||
new RowSetDateGetter( 2 ),
|
||||
new EqualityDate[] { new EqualityDate( (short)1, (short)1, (short)2013 ),
|
||||
new EqualityDate( (short)2, (short)2, (short)2012 ),
|
||||
new EqualityDate( (short)3, (short)3, (short)2011 )
|
||||
},
|
||||
"simple select", "wrong dates"
|
||||
);
|
||||
testRowSetResults(
|
||||
"SELECT \"date\", \"ID\" FROM \"dates\" ORDER BY \"ID\" DESC",
|
||||
new RowSetIntGetter( 2 ),
|
||||
new Integer[] { 3, 2, 1 },
|
||||
"explicit column selection, sorted by IDs", "wrong IDs"
|
||||
);
|
||||
testRowSetResults(
|
||||
"SELECT * FROM \"dates\" ORDER BY \"date\"",
|
||||
new RowSetIntGetter( 1 ),
|
||||
new Integer[] { 3, 2, 1 },
|
||||
"sorted by date", "wrong IDs"
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* ensures the basic functionality for selecting calendar functions from a CSV table - this is a prerequisite for
|
||||
* later tests.
|
||||
*/
|
||||
public void testCalendarFunctions()
|
||||
{
|
||||
// simple check for proper results of the calendar functions (DATE/MONTH)
|
||||
// The * at the first position is crucial here - there was code which wrongly calculated
|
||||
// column positions of function columns when * was present in the statement
|
||||
testRowSetResults(
|
||||
"SELECT \"dates\".*, YEAR( \"date\" ) FROM \"dates\"",
|
||||
new RowSetIntGetter( 3 ),
|
||||
new Integer[] { 2013, 2012, 2011 },
|
||||
"YEAR function", "wrong calculated years"
|
||||
);
|
||||
testRowSetResults(
|
||||
"SELECT \"dates\".*, MONTH( \"date\" ) FROM \"dates\"",
|
||||
new RowSetIntGetter( 3 ),
|
||||
new Integer[] { 1, 2, 3 },
|
||||
"MONTH function", "wrong calculated months"
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* ensures that sorting by a function column works
|
||||
*/
|
||||
public void testSortingByFunction()
|
||||
{
|
||||
// most simple case: select a function, and sort by it
|
||||
testRowSetResults(
|
||||
"SELECT YEAR( \"date\" ) AS \"year\" FROM \"dates\" ORDER BY \"year\"",
|
||||
new RowSetIntGetter(1),
|
||||
new Integer[] { 2011, 2012, 2013 },
|
||||
"single YEAR selection, sorted by years", "wrong calculated years"
|
||||
);
|
||||
// somewhat more "difficult" (this used to crash): Select all columns, plus a function, so the calculated
|
||||
// column has a position greater than column count
|
||||
testRowSetResults(
|
||||
"SELECT \"dates\".*, YEAR( \"date\" ) AS \"year\" FROM \"dates\" ORDER BY \"year\" DESC",
|
||||
new RowSetIntGetter(3),
|
||||
new Integer[] { 2013, 2012, 2011 },
|
||||
"extended YEAR selection, sorted by years", "wrong calculated years"
|
||||
);
|
||||
}
|
||||
|
||||
private interface RowSetValueGetter
|
||||
{
|
||||
public Object getValue( final RowSet i_rowSet ) throws SQLException;
|
||||
}
|
||||
|
||||
private abstract class RowSetColumnValueGetter implements RowSetValueGetter
|
||||
{
|
||||
RowSetColumnValueGetter( final int i_columnIndex )
|
||||
{
|
||||
m_columnIndex = i_columnIndex;
|
||||
}
|
||||
|
||||
protected final int m_columnIndex;
|
||||
}
|
||||
|
||||
private class RowSetIntGetter extends RowSetColumnValueGetter
|
||||
{
|
||||
RowSetIntGetter( final int i_columnIndex )
|
||||
{
|
||||
super( i_columnIndex );
|
||||
}
|
||||
|
||||
public Object getValue( final RowSet i_rowSet ) throws SQLException
|
||||
{
|
||||
return i_rowSet.getInt( m_columnIndex );
|
||||
}
|
||||
}
|
||||
|
||||
private class RowSetDateGetter extends RowSetColumnValueGetter
|
||||
{
|
||||
RowSetDateGetter( final int i_columnIndex )
|
||||
{
|
||||
super( i_columnIndex );
|
||||
}
|
||||
|
||||
public Object getValue( final RowSet i_rowSet ) throws SQLException
|
||||
{
|
||||
return i_rowSet.getDate( m_columnIndex );
|
||||
}
|
||||
}
|
||||
|
||||
private <T> void testRowSetResults( String i_command, RowSetValueGetter i_getter,
|
||||
T[] i_expectedValues, String i_context, String i_failureDesc )
|
||||
{
|
||||
RowSet rowSet = null;
|
||||
try
|
||||
{
|
||||
rowSet = m_database.createRowSet( CommandType.COMMAND, i_command );
|
||||
rowSet.execute();
|
||||
|
||||
List< T > values = new ArrayList< T >();
|
||||
while ( rowSet.next() )
|
||||
{
|
||||
values.add( (T)i_getter.getValue( rowSet ) );
|
||||
}
|
||||
assureEquals( i_context + ": " + i_failureDesc, i_expectedValues, values.toArray(), true );
|
||||
}
|
||||
catch( final SQLException e )
|
||||
{
|
||||
failed( i_context + ": caught an exception: " + e.toString(), false );
|
||||
}
|
||||
finally
|
||||
{
|
||||
if ( rowSet != null )
|
||||
rowSet.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private CsvDatabase m_database = null;
|
||||
}
|
@ -24,63 +24,50 @@
|
||||
* for a copy of the LGPLv3 License.
|
||||
*
|
||||
************************************************************************/
|
||||
package qa.drivers.hsqldb;
|
||||
package complex.connectivity;
|
||||
|
||||
import com.sun.star.awt.XWindow;
|
||||
import complex.connectivity.hsqldb.TestCacheSize;
|
||||
import com.sun.star.frame.XModel;
|
||||
import com.sun.star.text.XTextDocument;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import com.sun.star.util.XCloseable;
|
||||
import com.sun.star.sdbc.*;
|
||||
import com.sun.star.beans.PropertyValue;
|
||||
import com.sun.star.container.XNameAccess;
|
||||
import com.sun.star.sdbc.XDataSource;
|
||||
import com.sun.star.frame.XStorable;
|
||||
|
||||
import com.sun.star.lang.*;
|
||||
import com.sun.star.document.XDocumentSubStorageSupplier;
|
||||
import complexlib.ComplexTestCase;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import util.utils;
|
||||
import java.util.*;
|
||||
import java.io.*;
|
||||
import org.hsqldb.jdbcDriver;
|
||||
import qa.drivers.hsqldb.DatabaseMetaData;
|
||||
import org.hsqldb.lib.StopWatch;
|
||||
import com.sun.star.sdbc.*;
|
||||
import com.sun.star.container.XNameAccess;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import com.sun.star.beans.PropertyValue;
|
||||
import com.sun.star.beans.PropertyState;
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import com.sun.star.embed.XStorage;
|
||||
import com.sun.star.sdbc.XDataSource;
|
||||
import com.sun.star.sdbc.XDriver;
|
||||
import connectivity.tools.HsqlDatabase;
|
||||
|
||||
public class DriverTest extends ComplexTestCase {
|
||||
public class HsqlDriverTest extends ComplexTestCase {
|
||||
|
||||
|
||||
public String[] getTestMethodNames() {
|
||||
return new String[] { "test" };
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTestObjectName() {
|
||||
return "DriverTest";
|
||||
}
|
||||
|
||||
public void assurePublic(String sMessage,boolean check){
|
||||
addResult(sMessage,check);
|
||||
super.assure(sMessage,check);
|
||||
}
|
||||
|
||||
public void test(){
|
||||
mThreadTimeOut = 10000000;
|
||||
XDataSource ds = null;
|
||||
System.gc();
|
||||
try {
|
||||
XNameAccess xNameAccess = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class,((XMultiServiceFactory)param.getMSF()).createInstance("com.sun.star.sdb.DatabaseContext"));
|
||||
ds = (XDataSource)UnoRuntime.queryInterface(XDataSource.class,xNameAccess.getByName("file:///g:/test.odb"));
|
||||
HsqlDatabase database = new HsqlDatabase( (XMultiServiceFactory)param.getMSF() );
|
||||
ds = database.getDataSource().getXDataSource();
|
||||
} catch(Exception ex) {
|
||||
throw new RuntimeException("factory: unable to construct data source" );
|
||||
throw new RuntimeException("factory: unable to construct data source" );
|
||||
}
|
||||
|
||||
try{
|
||||
@ -141,7 +128,6 @@ public class DriverTest extends ComplexTestCase {
|
||||
}catch(Exception e){}
|
||||
}
|
||||
public void test2(){
|
||||
mThreadTimeOut = 10000000;
|
||||
System.gc();
|
||||
|
||||
com.sun.star.beans.PropertyValue[] info = null;
|
||||
@ -149,7 +135,7 @@ public class DriverTest extends ComplexTestCase {
|
||||
try{
|
||||
info = new com.sun.star.beans.PropertyValue[]{
|
||||
new com.sun.star.beans.PropertyValue("JavaDriverClass",0,"org.hsqldb.jdbcDriver",PropertyState.DIRECT_VALUE)
|
||||
,new com.sun.star.beans.PropertyValue("ParameterNameSubstitution",0,new Boolean(false),PropertyState.DIRECT_VALUE)
|
||||
,new com.sun.star.beans.PropertyValue("ParameterNameSubstitution",0, false,PropertyState.DIRECT_VALUE)
|
||||
};
|
||||
drv = (XDriver)UnoRuntime.queryInterface(XDriver.class,((XMultiServiceFactory)param.getMSF()).createInstance("com.sun.star.comp.sdbc.JDBCDriver"));
|
||||
TestCacheSize test = new TestCacheSize(((XMultiServiceFactory)param.getMSF()),info,drv);
|
@ -40,7 +40,7 @@ import com.sun.star.sdbc.XRow;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import complexlib.ComplexTestCase;
|
||||
|
||||
public class LongVarCharTest extends ComplexTestCase
|
||||
public class JdbcLongVarCharTest extends ComplexTestCase
|
||||
{
|
||||
|
||||
public String[] getTestMethodNames()
|
||||
@ -51,6 +51,7 @@ public class LongVarCharTest extends ComplexTestCase
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTestObjectName()
|
||||
{
|
||||
return "LongVarCharTest";
|
23
connectivity/qa/complex/connectivity/SubTestCase.java
Executable file
23
connectivity/qa/complex/connectivity/SubTestCase.java
Executable file
@ -0,0 +1,23 @@
|
||||
package complex.connectivity;
|
||||
|
||||
import share.LogWriter;
|
||||
|
||||
public class SubTestCase implements TestCase
|
||||
{
|
||||
protected SubTestCase( final TestCase i_parentTestCase )
|
||||
{
|
||||
m_parentTestCase = i_parentTestCase;
|
||||
}
|
||||
|
||||
public void assure( String i_message, boolean i_condition )
|
||||
{
|
||||
m_parentTestCase.assure( i_message, i_condition );
|
||||
}
|
||||
|
||||
public LogWriter getLog()
|
||||
{
|
||||
return m_parentTestCase.getLog();
|
||||
}
|
||||
|
||||
private final TestCase m_parentTestCase;
|
||||
}
|
21
sfx2/inc/sfxbasic.hxx → connectivity/qa/complex/connectivity/TestCase.java
Normal file → Executable file
21
sfx2/inc/sfxbasic.hxx → connectivity/qa/complex/connectivity/TestCase.java
Normal file → Executable file
@ -24,19 +24,12 @@
|
||||
* for a copy of the LGPLv3 License.
|
||||
*
|
||||
************************************************************************/
|
||||
#ifndef _SFXBASIC_HXX
|
||||
#define _SFXBASIC_HXX
|
||||
package complex.connectivity;
|
||||
|
||||
class BasicManager;
|
||||
class SbMethod;
|
||||
|
||||
//------------------------------------------------------------------
|
||||
|
||||
SbMethod* SfxQueryMacro( BasicManager* pMgr, const String& rMacro );
|
||||
|
||||
ErrCode SfxCallMacro( BasicManager* pMgr, const String& rMacro,
|
||||
SbxArray *pArgs = 0, SbxValue *pRet = 0 );
|
||||
|
||||
|
||||
#endif
|
||||
import share.LogWriter;
|
||||
|
||||
public interface TestCase
|
||||
{
|
||||
public void assure( final String i_message, final boolean i_condition );
|
||||
public LogWriter getLog();
|
||||
}
|
@ -24,30 +24,26 @@
|
||||
* for a copy of the LGPLv3 License.
|
||||
*
|
||||
************************************************************************/
|
||||
package qa.drivers.dbase;
|
||||
package complex.connectivity.dbase;
|
||||
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import com.sun.star.sdbc.*;
|
||||
import com.sun.star.beans.XPropertySet;
|
||||
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import complex.connectivity.TestCase;
|
||||
import complex.connectivity.SubTestCase;
|
||||
|
||||
public class DBaseDateFunctions
|
||||
public class DBaseDateFunctions extends SubTestCase
|
||||
{
|
||||
|
||||
private final String where = "FROM \"biblio\" \"biblio\" where \"Identifier\" = 'BOR00'";
|
||||
private final XMultiServiceFactory m_xORB;
|
||||
private final DBaseDriverTest testcase;
|
||||
|
||||
public DBaseDateFunctions(final XMultiServiceFactory _xORB, final DBaseDriverTest _testcase)
|
||||
public DBaseDateFunctions(final XMultiServiceFactory _xORB, final TestCase i_testCase)
|
||||
{
|
||||
super( i_testCase );
|
||||
m_xORB = _xORB;
|
||||
testcase = _testcase;
|
||||
}
|
||||
|
||||
private void assure(final String s, final boolean b)
|
||||
{
|
||||
testcase.assure2(s, b);
|
||||
}
|
||||
|
||||
public void testFunctions() throws com.sun.star.uno.Exception, com.sun.star.beans.UnknownPropertyException
|
||||
@ -55,7 +51,7 @@ public class DBaseDateFunctions
|
||||
final XRowSet xRowRes = (XRowSet) UnoRuntime.queryInterface(XRowSet.class,
|
||||
m_xORB.createInstance("com.sun.star.sdb.RowSet"));
|
||||
|
||||
testcase.getLog().println("starting DateTime function test!");
|
||||
getLog().println("starting DateTime function test!");
|
||||
// set the properties needed to connect to a database
|
||||
final XPropertySet xProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xRowRes);
|
||||
xProp.setPropertyValue("DataSourceName", "Bibliography");
|
||||
@ -289,21 +285,21 @@ public class DBaseDateFunctions
|
||||
{
|
||||
final XRow row = execute(xRowRes, "CURDATE() ");
|
||||
final com.sun.star.util.Date aDate = row.getDate(1);
|
||||
testcase.getLog().println("CURDATE() is '" + aDate.Year + "-" + aDate.Month + "-" + aDate.Day + "'");
|
||||
getLog().println("CURDATE() is '" + aDate.Year + "-" + aDate.Month + "-" + aDate.Day + "'");
|
||||
}
|
||||
|
||||
private void curtime(final XRowSet xRowRes) throws com.sun.star.uno.Exception, com.sun.star.beans.UnknownPropertyException
|
||||
{
|
||||
final XRow row = execute(xRowRes, "CURTIME() ");
|
||||
final com.sun.star.util.Time aTime = row.getTime(1);
|
||||
testcase.getLog().println("CURTIME() is '" + aTime.Hours + ":" + aTime.Minutes + ":" + aTime.Seconds + "'");
|
||||
getLog().println("CURTIME() is '" + aTime.Hours + ":" + aTime.Minutes + ":" + aTime.Seconds + "'");
|
||||
}
|
||||
|
||||
private void now(final XRowSet xRowRes) throws com.sun.star.uno.Exception, com.sun.star.beans.UnknownPropertyException
|
||||
{
|
||||
final XRow row = execute(xRowRes, "NOW() ");
|
||||
final com.sun.star.util.DateTime aTime = row.getTimestamp(1);
|
||||
testcase.getLog().println("NOW() is '" + aTime.Year + "-" + aTime.Month + "-" + aTime.Day + "'");
|
||||
testcase.getLog().println("'" + aTime.Hours + ":" + aTime.Minutes + ":" + aTime.Seconds + "'");
|
||||
getLog().println("NOW() is '" + aTime.Year + "-" + aTime.Month + "-" + aTime.Day + "'");
|
||||
getLog().println("'" + aTime.Hours + ":" + aTime.Minutes + ":" + aTime.Seconds + "'");
|
||||
}
|
||||
}
|
@ -24,30 +24,25 @@
|
||||
* for a copy of the LGPLv3 License.
|
||||
*
|
||||
************************************************************************/
|
||||
package qa.drivers.dbase;
|
||||
package complex.connectivity.dbase;
|
||||
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import com.sun.star.sdbc.*;
|
||||
import com.sun.star.beans.XPropertySet;
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import complex.connectivity.SubTestCase;
|
||||
import complex.connectivity.TestCase;
|
||||
|
||||
|
||||
public class DBaseNumericFunctions
|
||||
public class DBaseNumericFunctions extends SubTestCase
|
||||
{
|
||||
|
||||
private final String where = "FROM \"biblio\" \"biblio\" where \"Identifier\" = 'BOR00'";
|
||||
private final XMultiServiceFactory m_xORB;
|
||||
private final DBaseDriverTest testcase;
|
||||
|
||||
public DBaseNumericFunctions(final XMultiServiceFactory _xORB, final DBaseDriverTest _testcase)
|
||||
public DBaseNumericFunctions(final XMultiServiceFactory _xORB, final TestCase i_testCase)
|
||||
{
|
||||
super( i_testCase );
|
||||
m_xORB = _xORB;
|
||||
testcase = _testcase;
|
||||
}
|
||||
|
||||
private void assure(final String s, final boolean b)
|
||||
{
|
||||
testcase.assure2(s, b);
|
||||
}
|
||||
|
||||
public void testFunctions() throws com.sun.star.uno.Exception, com.sun.star.beans.UnknownPropertyException
|
||||
@ -55,7 +50,7 @@ public class DBaseNumericFunctions
|
||||
final XRowSet xRowRes = (XRowSet) UnoRuntime.queryInterface(XRowSet.class,
|
||||
m_xORB.createInstance("com.sun.star.sdb.RowSet"));
|
||||
|
||||
testcase.getLog().println("starting Numeric function test");
|
||||
getLog().println("starting Numeric function test");
|
||||
// set the properties needed to connect to a database
|
||||
final XPropertySet xProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xRowRes);
|
||||
xProp.setPropertyValue("DataSourceName", "Bibliography");
|
@ -24,27 +24,23 @@
|
||||
* for a copy of the LGPLv3 License.
|
||||
*
|
||||
************************************************************************/
|
||||
package qa.drivers.dbase;
|
||||
package complex.connectivity.dbase;
|
||||
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import com.sun.star.sdbc.*;
|
||||
import com.sun.star.beans.XPropertySet;
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import complex.connectivity.TestCase;
|
||||
import complex.connectivity.SubTestCase;
|
||||
|
||||
public class DBaseSqlTests
|
||||
public class DBaseSqlTests extends SubTestCase
|
||||
{
|
||||
private final XMultiServiceFactory m_xORB;
|
||||
private final DBaseDriverTest testcase;
|
||||
|
||||
public DBaseSqlTests(final XMultiServiceFactory _xORB,final DBaseDriverTest _testcase)
|
||||
public DBaseSqlTests(final XMultiServiceFactory _xORB,final TestCase i_testCase)
|
||||
{
|
||||
super( i_testCase );
|
||||
m_xORB = _xORB;
|
||||
testcase = _testcase;
|
||||
}
|
||||
|
||||
private void assure(final String s,final boolean b)
|
||||
{
|
||||
testcase.assure2(s, b);
|
||||
}
|
||||
|
||||
public void testFunctions() throws com.sun.star.uno.Exception, com.sun.star.beans.UnknownPropertyException
|
||||
@ -52,7 +48,7 @@ public class DBaseSqlTests
|
||||
final XRowSet xRowRes = (XRowSet) UnoRuntime.queryInterface(XRowSet.class,
|
||||
m_xORB.createInstance("com.sun.star.sdb.RowSet"));
|
||||
|
||||
testcase.getLog().println("starting SQL test");
|
||||
getLog().println("starting SQL test");
|
||||
// set the properties needed to connect to a database
|
||||
final XPropertySet xProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xRowRes);
|
||||
xProp.setPropertyValue("DataSourceName", "Bibliography");
|
||||
@ -88,7 +84,7 @@ public class DBaseSqlTests
|
||||
}
|
||||
catch(SQLException e)
|
||||
{
|
||||
testcase.getLog().println(sql + " Error: " + e.getMessage());
|
||||
getLog().println(sql + " Error: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
@ -24,28 +24,24 @@
|
||||
* for a copy of the LGPLv3 License.
|
||||
*
|
||||
************************************************************************/
|
||||
package qa.drivers.dbase;
|
||||
package complex.connectivity.dbase;
|
||||
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import com.sun.star.sdbc.*;
|
||||
import com.sun.star.beans.XPropertySet;
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import complex.connectivity.SubTestCase;
|
||||
import complex.connectivity.TestCase;
|
||||
|
||||
public class DBaseStringFunctions
|
||||
public class DBaseStringFunctions extends SubTestCase
|
||||
{
|
||||
private String where = "FROM \"biblio\" \"biblio\" where \"Identifier\" = 'BOR00'";
|
||||
private final XMultiServiceFactory m_xORB;
|
||||
private final DBaseDriverTest testcase;
|
||||
|
||||
public DBaseStringFunctions(final XMultiServiceFactory _xORB,final DBaseDriverTest _testcase)
|
||||
public DBaseStringFunctions(final XMultiServiceFactory _xORB,final TestCase i_testCase)
|
||||
{
|
||||
super( i_testCase );
|
||||
m_xORB = _xORB;
|
||||
testcase = _testcase;
|
||||
}
|
||||
|
||||
private void assure(final String s,final boolean b)
|
||||
{
|
||||
testcase.assure2(s, b);
|
||||
}
|
||||
|
||||
public void testFunctions() throws com.sun.star.uno.Exception, com.sun.star.beans.UnknownPropertyException
|
||||
@ -53,7 +49,7 @@ public class DBaseStringFunctions
|
||||
final XRowSet xRowRes = (XRowSet) UnoRuntime.queryInterface(XRowSet.class,
|
||||
m_xORB.createInstance("com.sun.star.sdb.RowSet"));
|
||||
|
||||
testcase.getLog().println("starting String function test");
|
||||
getLog().println("starting String function test");
|
||||
// set the properties needed to connect to a database
|
||||
final XPropertySet xProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xRowRes);
|
||||
xProp.setPropertyValue("DataSourceName", "Bibliography");
|
@ -8,21 +8,19 @@
|
||||
*
|
||||
* @author oj93728
|
||||
*/
|
||||
package qa.drivers.hsqldb;
|
||||
package complex.connectivity.hsqldb;
|
||||
import complex.connectivity.HsqlDriverTest;
|
||||
import java.sql.*;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import complexlib.ComplexTestCase;
|
||||
import java.lang.reflect.Method;
|
||||
import qa.drivers.hsqldb.DriverTest;
|
||||
|
||||
|
||||
public class DatabaseMetaData {
|
||||
|
||||
private java.sql.DatabaseMetaData m_xMD;
|
||||
private DriverTest m_TestCase;
|
||||
private HsqlDriverTest m_TestCase;
|
||||
|
||||
/** Creates a new instance of DatabaseMetaData */
|
||||
public DatabaseMetaData(DriverTest _testCase,java.sql.DatabaseMetaData _xmd) {
|
||||
public DatabaseMetaData(HsqlDriverTest _testCase,java.sql.DatabaseMetaData _xmd) {
|
||||
m_TestCase = _testCase;
|
||||
m_xMD = _xmd;
|
||||
}
|
@ -29,24 +29,16 @@
|
||||
*/
|
||||
|
||||
|
||||
package qa.drivers.hsqldb;
|
||||
package complex.connectivity.hsqldb;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
|
||||
import org.hsqldb.lib.StopWatch;
|
||||
import org.hsqldb.lib.FileAccess;
|
||||
|
||||
import java.util.Random;
|
||||
import com.sun.star.lang.*;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import com.sun.star.beans.PropertyValue;
|
||||
import com.sun.star.beans.PropertyState;
|
||||
import com.sun.star.container.XNameAccess;
|
||||
import com.sun.star.sdbc.*;
|
||||
import com.sun.star.document.XDocumentSubStorageSupplier;
|
||||
import com.sun.star.embed.XStorage;
|
||||
import com.sun.star.frame.XStorable;
|
||||
|
||||
/**
|
||||
* Test large cached tables by setting up a cached table of 100000 records
|
||||
@ -123,17 +115,17 @@ public class TestCacheSize {
|
||||
XDriver drv;
|
||||
com.sun.star.beans.PropertyValue[] info;
|
||||
|
||||
TestCacheSize(XMultiServiceFactory _xmulti,com.sun.star.beans.PropertyValue[] _info,XDriver _drv){
|
||||
public TestCacheSize(XMultiServiceFactory _xmulti,com.sun.star.beans.PropertyValue[] _info,XDriver _drv){
|
||||
servicefactory = _xmulti;
|
||||
drv = _drv;
|
||||
info = _info;
|
||||
}
|
||||
|
||||
void setURL(String _url){
|
||||
public void setURL(String _url){
|
||||
url = _url;
|
||||
}
|
||||
|
||||
protected void setUp() {
|
||||
public void setUp() {
|
||||
|
||||
user = "sa";
|
||||
password = "";
|
||||
@ -406,9 +398,9 @@ public class TestCacheSize {
|
||||
+ (i * 1000 / (sw.elapsedTime() + 1)));
|
||||
}
|
||||
|
||||
protected void tearDown() {}
|
||||
public void tearDown() {}
|
||||
|
||||
protected void checkResults() {
|
||||
public void checkResults() {
|
||||
|
||||
try {
|
||||
StopWatch sw = new StopWatch();
|
@ -47,18 +47,6 @@ import java.io.File;
|
||||
*/
|
||||
public abstract class AbstractDatabase implements DatabaseAccess
|
||||
{
|
||||
// the service factory
|
||||
|
||||
protected final XMultiServiceFactory m_orb;
|
||||
// the URL of the temporary file used for the database document
|
||||
protected String m_databaseDocumentFile;
|
||||
// the database document
|
||||
protected XOfficeDatabaseDocument m_databaseDocument;
|
||||
// the data source belonging to the database document
|
||||
protected DataSource m_dataSource;
|
||||
// the default connection
|
||||
protected Connection m_connection;
|
||||
|
||||
public AbstractDatabase(final XMultiServiceFactory orb) throws Exception
|
||||
{
|
||||
m_orb = orb;
|
||||
@ -75,7 +63,6 @@ public abstract class AbstractDatabase implements DatabaseAccess
|
||||
*
|
||||
* Multiple calls to this method return the same connection. The DbaseDatabase object keeps
|
||||
* the ownership of the connection, so you don't need to (and should not) dispose/close it.
|
||||
*
|
||||
*/
|
||||
public Connection defaultConnection() throws SQLException
|
||||
{
|
||||
@ -219,4 +206,15 @@ public abstract class AbstractDatabase implements DatabaseAccess
|
||||
closeAndDelete();
|
||||
super.finalize();
|
||||
}
|
||||
|
||||
// the service factory
|
||||
protected final XMultiServiceFactory m_orb;
|
||||
// the URL of the temporary file used for the database document
|
||||
protected String m_databaseDocumentFile;
|
||||
// the database document
|
||||
protected XOfficeDatabaseDocument m_databaseDocument;
|
||||
// the data source belonging to the database document
|
||||
protected DataSource m_dataSource;
|
||||
// the default connection
|
||||
protected Connection m_connection;
|
||||
}
|
||||
|
18
connectivity/qa/connectivity/tools/CsvDatabase.java
Executable file
18
connectivity/qa/connectivity/tools/CsvDatabase.java
Executable file
@ -0,0 +1,18 @@
|
||||
package connectivity.tools;
|
||||
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
|
||||
public class CsvDatabase extends FlatFileDatabase
|
||||
{
|
||||
// --------------------------------------------------------------------------------------------------------
|
||||
public CsvDatabase( final XMultiServiceFactory i_orb ) throws Exception
|
||||
{
|
||||
super( i_orb, "flat" );
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------
|
||||
protected CsvDatabase( final XMultiServiceFactory i_orb, final String i_existingDocumentURL ) throws Exception
|
||||
{
|
||||
super( i_orb, i_existingDocumentURL, "flat" );
|
||||
}
|
||||
}
|
@ -69,6 +69,14 @@ public class DataSource
|
||||
return m_dataSource;
|
||||
}
|
||||
|
||||
/**
|
||||
* retrieves the data source's settings
|
||||
*/
|
||||
public XPropertySet geSettings()
|
||||
{
|
||||
return UnoRuntime.queryInterface( XPropertySet.class, impl_getPropertyValue( "Settings" ) );
|
||||
}
|
||||
|
||||
/** creates a query with a given name and SQL command
|
||||
*/
|
||||
public void createQuery(final String _name, final String _sqlCommand) throws ElementExistException, WrappedTargetException, com.sun.star.lang.IllegalArgumentException
|
||||
@ -121,6 +129,26 @@ public class DataSource
|
||||
return suppQueries.getQueryDefinitions();
|
||||
}
|
||||
|
||||
/**
|
||||
* retrieves a property value from the data source
|
||||
* @param i_propertyName
|
||||
* the name of the property whose value is to be returned.
|
||||
*/
|
||||
private Object impl_getPropertyValue( final String i_propertyName )
|
||||
{
|
||||
Object propertyValue = null;
|
||||
try
|
||||
{
|
||||
final XPropertySet dataSourceProps = UnoRuntime.queryInterface( XPropertySet.class, m_dataSource );
|
||||
propertyValue = dataSourceProps.getPropertyValue( i_propertyName );
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.getLogger(DataSource.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
return propertyValue;
|
||||
}
|
||||
|
||||
/** returns the name of the data source
|
||||
*
|
||||
* If a data source is registered at the database context, the name is the registration
|
||||
@ -130,16 +158,6 @@ public class DataSource
|
||||
*/
|
||||
public String getName()
|
||||
{
|
||||
String name = null;
|
||||
try
|
||||
{
|
||||
final XPropertySet dataSourceProps = UnoRuntime.queryInterface( XPropertySet.class, m_dataSource );
|
||||
name = (String) dataSourceProps.getPropertyValue("Name");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.getLogger(DataSource.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
return name;
|
||||
return (String)impl_getPropertyValue( "Name" );
|
||||
}
|
||||
};
|
||||
|
@ -1,98 +1,18 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
||||
*
|
||||
* OpenOffice.org - a multi-platform office productivity suite
|
||||
*
|
||||
* This file is part of OpenOffice.org.
|
||||
*
|
||||
* OpenOffice.org is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License version 3
|
||||
* only, as published by the Free Software Foundation.
|
||||
*
|
||||
* OpenOffice.org is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License version 3 for more details
|
||||
* (a copy is included in the LICENSE file that accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* version 3 along with OpenOffice.org. If not, see
|
||||
* <http://www.openoffice.org/license.html>
|
||||
* for a copy of the LGPLv3 License.
|
||||
*
|
||||
************************************************************************/
|
||||
package connectivity.tools;
|
||||
|
||||
import com.sun.star.beans.PropertyValue;
|
||||
import com.sun.star.beans.XPropertySet;
|
||||
import com.sun.star.frame.XStorable;
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import com.sun.star.sdb.XOfficeDatabaseDocument;
|
||||
import com.sun.star.sdbc.SQLException;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
|
||||
import helper.URLHelper;
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Ocke
|
||||
*/
|
||||
public class DbaseDatabase extends AbstractDatabase
|
||||
public class DbaseDatabase extends FlatFileDatabase
|
||||
{
|
||||
// --------------------------------------------------------------------------------------------------------
|
||||
|
||||
public DbaseDatabase(final XMultiServiceFactory orb) throws Exception
|
||||
public DbaseDatabase( final XMultiServiceFactory i_orb ) throws Exception
|
||||
{
|
||||
super(orb);
|
||||
createDBDocument();
|
||||
super( i_orb, "dbase" );
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------
|
||||
public DbaseDatabase(final XMultiServiceFactory orb, final String _existingDocumentURL) throws Exception
|
||||
protected DbaseDatabase( final XMultiServiceFactory i_orb, final String i_existingDocumentURL ) throws Exception
|
||||
{
|
||||
super(orb, _existingDocumentURL);
|
||||
}
|
||||
|
||||
/** creates an empty database document in a temporary location
|
||||
*/
|
||||
private void createDBDocument() throws Exception
|
||||
{
|
||||
final File documentFile = File.createTempFile("dbase", ".odb");
|
||||
if ( documentFile.exists() )
|
||||
documentFile.delete();
|
||||
final File subPath = new File(documentFile.getParent() + File.separator + documentFile.getName().replaceAll(".odb", "") + File.separator );
|
||||
subPath.mkdir();
|
||||
//subPath.deleteOnExit();
|
||||
m_databaseDocumentFile = URLHelper.getFileURLFromSystemPath(documentFile);
|
||||
final String path = URLHelper.getFileURLFromSystemPath(subPath.getPath());
|
||||
|
||||
m_databaseDocument = (XOfficeDatabaseDocument) UnoRuntime.queryInterface(
|
||||
XOfficeDatabaseDocument.class, m_orb.createInstance("com.sun.star.sdb.OfficeDatabaseDocument"));
|
||||
m_dataSource = new DataSource(m_orb, m_databaseDocument.getDataSource());
|
||||
|
||||
final XPropertySet dsProperties = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, m_databaseDocument.getDataSource());
|
||||
dsProperties.setPropertyValue("URL", "sdbc:dbase:" + path);
|
||||
|
||||
final XStorable storable = (XStorable) UnoRuntime.queryInterface(XStorable.class, m_databaseDocument);
|
||||
storable.storeAsURL(m_databaseDocumentFile, new PropertyValue[]
|
||||
{
|
||||
});
|
||||
}
|
||||
|
||||
/** drops the table with a given name
|
||||
|
||||
@param _name
|
||||
the name of the table to drop
|
||||
@param _ifExists
|
||||
TRUE if it should be dropped only when it exists.
|
||||
*/
|
||||
public void dropTable(final String _name,final boolean _ifExists) throws SQLException
|
||||
{
|
||||
String dropStatement = "DROP TABLE \"" + _name;
|
||||
executeSQL(dropStatement);
|
||||
super( i_orb, i_existingDocumentURL, "dbase" );
|
||||
}
|
||||
}
|
||||
|
116
connectivity/qa/connectivity/tools/FlatFileDatabase.java
Executable file
116
connectivity/qa/connectivity/tools/FlatFileDatabase.java
Executable file
@ -0,0 +1,116 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
||||
*
|
||||
* OpenOffice.org - a multi-platform office productivity suite
|
||||
*
|
||||
* This file is part of OpenOffice.org.
|
||||
*
|
||||
* OpenOffice.org is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License version 3
|
||||
* only, as published by the Free Software Foundation.
|
||||
*
|
||||
* OpenOffice.org is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License version 3 for more details
|
||||
* (a copy is included in the LICENSE file that accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* version 3 along with OpenOffice.org. If not, see
|
||||
* <http://www.openoffice.org/license.html>
|
||||
* for a copy of the LGPLv3 License.
|
||||
*
|
||||
************************************************************************/
|
||||
package connectivity.tools;
|
||||
|
||||
import com.sun.star.beans.PropertyValue;
|
||||
import com.sun.star.beans.XPropertySet;
|
||||
import com.sun.star.frame.XStorable;
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import com.sun.star.sdb.XOfficeDatabaseDocument;
|
||||
import com.sun.star.sdbc.SQLException;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
|
||||
import helper.URLHelper;
|
||||
import java.io.File;
|
||||
|
||||
class FlatFileDatabase extends AbstractDatabase
|
||||
{
|
||||
// --------------------------------------------------------------------------------------------------------
|
||||
protected FlatFileDatabase( final XMultiServiceFactory i_orb, final String i_urlSubScheme ) throws Exception
|
||||
{
|
||||
super(i_orb);
|
||||
m_urlSubScheme = i_urlSubScheme;
|
||||
createDBDocument();
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------
|
||||
protected FlatFileDatabase(final XMultiServiceFactory i_orb, final String i_existingDocumentURL,
|
||||
final String i_urlSubScheme ) throws Exception
|
||||
{
|
||||
super( i_orb, i_existingDocumentURL );
|
||||
m_urlSubScheme = i_urlSubScheme;
|
||||
|
||||
final XPropertySet dsProperties = UnoRuntime.queryInterface(XPropertySet.class, m_databaseDocument.getDataSource());
|
||||
final String url = (String)dsProperties.getPropertyValue( "URL" );
|
||||
final String expectedURLPrefix = "sdbc:" + m_urlSubScheme + ":";
|
||||
if ( !url.startsWith( expectedURLPrefix ) )
|
||||
throw new IllegalArgumentException( i_existingDocumentURL + " is of wrong type" );
|
||||
|
||||
final String location = url.substring( expectedURLPrefix.length() );
|
||||
m_tableFileLocation = new File( location );
|
||||
if ( m_tableFileLocation.isDirectory() )
|
||||
throw new IllegalArgumentException( "unsupported table file location (must be a folder)" );
|
||||
}
|
||||
|
||||
/**
|
||||
* returns a {@link File} which represents the folder where the database's table files reside.
|
||||
*/
|
||||
public File getTableFileLocation()
|
||||
{
|
||||
return m_tableFileLocation;
|
||||
}
|
||||
|
||||
/** creates an empty database document in a temporary location
|
||||
*/
|
||||
private void createDBDocument() throws Exception
|
||||
{
|
||||
final File documentFile = File.createTempFile( m_urlSubScheme, ".odb" );
|
||||
if ( documentFile.exists() )
|
||||
documentFile.delete();
|
||||
m_tableFileLocation = new File(documentFile.getParent() + File.separator + documentFile.getName().replace(".odb", "") + File.separator );
|
||||
m_tableFileLocation.mkdir();
|
||||
//subPath.deleteOnExit();
|
||||
m_databaseDocumentFile = URLHelper.getFileURLFromSystemPath(documentFile);
|
||||
final String path = URLHelper.getFileURLFromSystemPath( m_tableFileLocation.getPath() );
|
||||
|
||||
m_databaseDocument = UnoRuntime.queryInterface( XOfficeDatabaseDocument.class,
|
||||
m_orb.createInstance("com.sun.star.sdb.OfficeDatabaseDocument"));
|
||||
m_dataSource = new DataSource(m_orb, m_databaseDocument.getDataSource());
|
||||
|
||||
final XPropertySet dsProperties = UnoRuntime.queryInterface(XPropertySet.class, m_databaseDocument.getDataSource());
|
||||
dsProperties.setPropertyValue("URL", "sdbc:" + m_urlSubScheme + ":" + path);
|
||||
|
||||
final XStorable storable = UnoRuntime.queryInterface( XStorable.class, m_databaseDocument );
|
||||
storable.storeAsURL( m_databaseDocumentFile, new PropertyValue[] { } );
|
||||
}
|
||||
|
||||
/** drops the table with a given name
|
||||
|
||||
@param _name
|
||||
the name of the table to drop
|
||||
@param _ifExists
|
||||
TRUE if it should be dropped only when it exists.
|
||||
*/
|
||||
public void dropTable(final String _name,final boolean _ifExists) throws SQLException
|
||||
{
|
||||
String dropStatement = "DROP TABLE \"" + _name;
|
||||
executeSQL(dropStatement);
|
||||
}
|
||||
|
||||
final String m_urlSubScheme;
|
||||
File m_tableFileLocation = null;
|
||||
}
|
@ -31,6 +31,7 @@ import com.sun.star.beans.XPropertySet;
|
||||
import com.sun.star.container.XIndexAccess;
|
||||
import com.sun.star.container.XNameAccess;
|
||||
import com.sun.star.io.XInputStream;
|
||||
import com.sun.star.lang.XComponent;
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import com.sun.star.sdbc.SQLException;
|
||||
import com.sun.star.sdbc.XArray;
|
||||
@ -48,7 +49,6 @@ import com.sun.star.util.Time;
|
||||
|
||||
public class RowSet implements XRowSet, XRow
|
||||
{
|
||||
private XMultiServiceFactory m_orb;
|
||||
private XRowSet m_rowSet;
|
||||
private XRow m_row;
|
||||
private XPropertySet m_rowSetProps;
|
||||
@ -57,14 +57,13 @@ public class RowSet implements XRowSet, XRow
|
||||
{
|
||||
try
|
||||
{
|
||||
m_rowSetProps = (XPropertySet)UnoRuntime.queryInterface(
|
||||
XPropertySet.class, _orb.createInstance("com.sun.star.sdb.RowSet") );
|
||||
m_rowSetProps = UnoRuntime.queryInterface( XPropertySet.class, _orb.createInstance( "com.sun.star.sdb.RowSet" ) );
|
||||
m_rowSetProps.setPropertyValue( "DataSourceName", _dataSource );
|
||||
m_rowSetProps.setPropertyValue( "CommandType", new Integer( _commandType ) );
|
||||
m_rowSetProps.setPropertyValue( "Command", _command );
|
||||
|
||||
m_rowSet = (XRowSet)UnoRuntime.queryInterface( XRowSet.class, m_rowSetProps );
|
||||
m_row = (XRow)UnoRuntime.queryInterface( XRow.class, m_rowSetProps );
|
||||
m_rowSet = UnoRuntime.queryInterface( XRowSet.class, m_rowSetProps );
|
||||
m_row = UnoRuntime.queryInterface( XRow.class, m_rowSetProps );
|
||||
}
|
||||
catch ( Exception e )
|
||||
{
|
||||
@ -289,4 +288,12 @@ public class RowSet implements XRowSet, XRow
|
||||
{
|
||||
return m_row.getArray(i);
|
||||
}
|
||||
|
||||
public void dispose()
|
||||
{
|
||||
if ( m_rowSet == null )
|
||||
return;
|
||||
XComponent rowSetComp = UnoRuntime.queryInterface( XComponent.class, m_rowSet );
|
||||
rowSetComp.dispose();
|
||||
}
|
||||
};
|
||||
|
@ -42,15 +42,11 @@ all:
|
||||
|
||||
JARFILES = ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar OOoRunnerLight.jar
|
||||
JAVAFILES := $(shell @$(FIND) . -name "*.java")
|
||||
JAVACLASSFILES := $(foreach,i,$(JAVAFILES) $(CLASSDIR)/$(PACKAGE)/$(i:d)$(i:b).class)
|
||||
|
||||
#----- make a jar from compiled files ------------------------------
|
||||
|
||||
MAXLINELENGTH = 100000
|
||||
|
||||
JARCLASSDIRS = $(PACKAGE)
|
||||
JARTARGET = $(TARGET).jar
|
||||
JARCOMPRESS = TRUE
|
||||
JARCLASSDIRS = $(PACKAGE)
|
||||
JARTARGET = $(TARGET).jar
|
||||
|
||||
# --- Targets ------------------------------------------------------
|
||||
|
||||
|
@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE attributes PUBLIC "-//NetBeans//DTD DefaultAttributes 1.0//EN" "http://www.netbeans.org/dtds/attributes-1_0.dtd">
|
||||
<attributes version="1.0">
|
||||
<fileobject name="DBaseDriverTest.java">
|
||||
<attr name="class_dependency_complexlib.ComplexTestCase" stringvalue="DBaseDriverTest"/>
|
||||
</fileobject>
|
||||
<fileobject name="makefile.mk">
|
||||
<attr name="org.netbeans.modules.text.IsTextFile" boolvalue="true"/>
|
||||
</fileobject>
|
||||
</attributes>
|
@ -1,64 +0,0 @@
|
||||
#*************************************************************************
|
||||
#
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# Copyright 2000, 2010 Oracle and/or its affiliates.
|
||||
#
|
||||
# OpenOffice.org - a multi-platform office productivity suite
|
||||
#
|
||||
# This file is part of OpenOffice.org.
|
||||
#
|
||||
# OpenOffice.org is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License version 3
|
||||
# only, as published by the Free Software Foundation.
|
||||
#
|
||||
# OpenOffice.org is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License version 3 for more details
|
||||
# (a copy is included in the LICENSE file that accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# version 3 along with OpenOffice.org. If not, see
|
||||
# <http://www.openoffice.org/license.html>
|
||||
# for a copy of the LGPLv3 License.
|
||||
#
|
||||
#*************************************************************************
|
||||
|
||||
PRJ = ..$/..$/..
|
||||
TARGET = DBaseDriverTest
|
||||
PRJNAME = connectivity
|
||||
PACKAGE = qa$/drivers$/dbase
|
||||
|
||||
# --- Settings -----------------------------------------------------
|
||||
.INCLUDE: settings.mk
|
||||
|
||||
|
||||
#----- compile .java files -----------------------------------------
|
||||
|
||||
JARFILES = ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar OOoRunner.jar
|
||||
JAVAFILES =\
|
||||
DBaseDateFunctions.java\
|
||||
DBaseDriverTest.java\
|
||||
DBaseNumericFunctions.java\
|
||||
DBaseStringFunctions.java\
|
||||
DBaseSqlTests.java
|
||||
|
||||
JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
|
||||
|
||||
#----- make a jar from compiled files ------------------------------
|
||||
|
||||
MAXLINELENGTH = 100000
|
||||
|
||||
JARCLASSDIRS = $(PACKAGE)
|
||||
JARTARGET = $(TARGET).jar
|
||||
JARCOMPRESS = TRUE
|
||||
|
||||
# --- Targets ------------------------------------------------------
|
||||
|
||||
.INCLUDE : target.mk
|
||||
|
||||
|
||||
run: $(CLASSDIR)$/$(JARTARGET)
|
||||
java -cp "$(CLASSPATH)$(PATH_SEPERATOR)$(SOLARBINDIR)$/OOoRunner.jar" org.openoffice.Runner -TestBase java_complex -o qa.drivers.dbase.$(TARGET)
|
||||
|
@ -1,5 +0,0 @@
|
||||
# x-no-translate
|
||||
Driver=org.openoffice.comp.drivers.MySQL.Driver
|
||||
user=testuser
|
||||
password=
|
||||
URL=sdbc:mysql:odbc:MYSQL fs-11110 TESTUSER
|
@ -25,42 +25,48 @@
|
||||
#
|
||||
#*************************************************************************
|
||||
|
||||
PRJ = ..$/..$/..
|
||||
TARGET = LongVarCharTest
|
||||
PRJ = ..
|
||||
TARGET = ConnectivityComplexTests
|
||||
PRJNAME = connectivity
|
||||
PACKAGE = complex$/connectivity
|
||||
PACKAGE = complex/connectivity
|
||||
|
||||
# --- Settings -----------------------------------------------------
|
||||
.INCLUDE: settings.mk
|
||||
|
||||
|
||||
#----- compile .java files -----------------------------------------
|
||||
|
||||
JARFILES = ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar OOoRunner.jar
|
||||
JAVAFILES =\
|
||||
LongVarCharTest.java
|
||||
|
||||
JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
|
||||
JARFILES = ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar OOoRunner.jar hsqldb.jar
|
||||
JAVAFILES := $(shell @$(FIND) complex -name "*.java")
|
||||
|
||||
#----- make a jar from compiled files ------------------------------
|
||||
|
||||
MAXLINELENGTH = 100000
|
||||
JARCLASSDIRS = $(PACKAGE)
|
||||
JARTARGET = $(TARGET).jar
|
||||
|
||||
JARCLASSDIRS = $(PACKAGE)
|
||||
JARTARGET = $(TARGET).jar
|
||||
JARCOMPRESS = TRUE
|
||||
# --- Runner Settings ----------------------------------------------
|
||||
|
||||
# classpath and argument list
|
||||
RUNNER_CLASSPATH = -cp "$(CLASSPATH)$(PATH_SEPERATOR)$(SOLARBINDIR)$/OOoRunner.jar"
|
||||
RUNNER_ARGS = org.openoffice.Runner -TestBase java_complex
|
||||
|
||||
# --- Targets ------------------------------------------------------
|
||||
|
||||
.IF "$(depend)" == ""
|
||||
ALL : ALLTAR
|
||||
@echo -----------------------------------------------------
|
||||
@echo - do a 'dmake show_targets' to show available targets
|
||||
@echo -----------------------------------------------------
|
||||
.ELSE
|
||||
ALL: ALLDEP
|
||||
.ENDIF
|
||||
|
||||
.INCLUDE : target.mk
|
||||
|
||||
show_targets:
|
||||
+@$(AUGMENT_LIBRARY_PATH) java $(RUNNER_CLASSPATH) complexlib.ShowTargets $(foreach,i,$(JAVAFILES) $(i:s/.\$///:s/.java//))
|
||||
|
||||
run:
|
||||
java -cp $(CLASSPATH)$(PATH_SEPERATOR)$(SOLARBINDIR)$/OOoRunner.jar org.openoffice.Runner -TestBase java_complex -o complex.connectivity.$(TARGET)
|
||||
run: $(CLASSDIR)$/$(JARTARGET)
|
||||
+$(AUGMENT_LIBRARY_PATH) java $(RUNNER_CLASSPATH) $(RUNNER_ARGS) -sce scenarios.sce
|
||||
|
||||
run_%: $(CLASSDIR)$/$(JARTARGET)
|
||||
+$(AUGMENT_LIBRARY_PATH) java $(RUNNER_CLASSPATH) $(RUNNER_ARGS) -o complex.$(PRJNAME).$(@:s/run_//)
|
4
connectivity/qa/scenarios.sce
Normal file
4
connectivity/qa/scenarios.sce
Normal file
@ -0,0 +1,4 @@
|
||||
-o complex.connectivity.DBaseDriverTest
|
||||
-o complex.connectivity.HsqlDriverTest
|
||||
#-o complex.connectivity.JdbcLongVarCharTest
|
||||
-o complex.connectivity.FlatFileAccess
|
@ -43,6 +43,7 @@
|
||||
#include "diagnose_ex.h"
|
||||
#include <comphelper/numbers.hxx>
|
||||
#include <rtl/ustrbuf.hxx>
|
||||
#include <tools/diagnose_ex.h>
|
||||
|
||||
|
||||
using namespace ::connectivity;
|
||||
@ -365,56 +366,59 @@ void DBTypeConversion::setValue(const Reference<XColumnUpdate>& xVariant,
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
double DBTypeConversion::getValue(const Reference<XColumn>& xVariant,
|
||||
const Date& rNullDate,
|
||||
sal_Int16 nKeyType)
|
||||
double DBTypeConversion::getValue( const Reference< XColumn >& i_column, const Date& i_relativeToNullDate )
|
||||
{
|
||||
try
|
||||
{
|
||||
switch (nKeyType & ~NumberFormat::DEFINED)
|
||||
const Reference< XPropertySet > xProp( i_column, UNO_QUERY_THROW );
|
||||
|
||||
const sal_Int32 nColumnType = ::comphelper::getINT32( xProp->getPropertyValue( OMetaConnection::getPropMap().getNameByIndex( PROPERTY_ID_TYPE ) ) );
|
||||
switch ( nColumnType )
|
||||
{
|
||||
case NumberFormat::DATE:
|
||||
return toDouble( xVariant->getDate(), rNullDate);
|
||||
case NumberFormat::DATETIME:
|
||||
return toDouble(xVariant->getTimestamp(),rNullDate);
|
||||
case NumberFormat::TIME:
|
||||
return toDouble(xVariant->getTime());
|
||||
default:
|
||||
case DataType::DATE:
|
||||
return toDouble( i_column->getDate(), i_relativeToNullDate );
|
||||
|
||||
case DataType::TIME:
|
||||
return toDouble( i_column->getTime() );
|
||||
|
||||
case DataType::TIMESTAMP:
|
||||
return toDouble( i_column->getTimestamp(), i_relativeToNullDate );
|
||||
|
||||
default:
|
||||
{
|
||||
Reference<XPropertySet> xProp(xVariant,UNO_QUERY);
|
||||
if ( xProp.is()
|
||||
&& xProp->getPropertySetInfo()->hasPropertyByName(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISSIGNED))
|
||||
&& !::comphelper::getBOOL(xProp->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISSIGNED))) )
|
||||
sal_Bool bIsSigned = sal_True;
|
||||
OSL_VERIFY( xProp->getPropertyValue( OMetaConnection::getPropMap().getNameByIndex( PROPERTY_ID_ISSIGNED ) ) >>= bIsSigned );
|
||||
if ( !bIsSigned )
|
||||
{
|
||||
switch (::comphelper::getINT32(xProp->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))))
|
||||
switch ( nColumnType)
|
||||
{
|
||||
case DataType::TINYINT:
|
||||
return static_cast<double>(static_cast<sal_uInt8>(xVariant->getByte()));
|
||||
return static_cast<double>(static_cast<sal_uInt8>(i_column->getByte()));
|
||||
case DataType::SMALLINT:
|
||||
return static_cast<double>(static_cast<sal_uInt16>(xVariant->getShort()));
|
||||
return static_cast<double>(static_cast<sal_uInt16>(i_column->getShort()));
|
||||
case DataType::INTEGER:
|
||||
return static_cast<double>(static_cast<sal_uInt32>(xVariant->getInt()));
|
||||
return static_cast<double>(static_cast<sal_uInt32>(i_column->getInt()));
|
||||
case DataType::BIGINT:
|
||||
return static_cast<double>(static_cast<sal_uInt64>(xVariant->getLong()));
|
||||
return static_cast<double>(static_cast<sal_uInt64>(i_column->getLong()));
|
||||
}
|
||||
}
|
||||
|
||||
return xVariant->getDouble();
|
||||
}
|
||||
return i_column->getDouble();
|
||||
}
|
||||
}
|
||||
catch(const Exception& )
|
||||
catch( const Exception& )
|
||||
{
|
||||
DBG_UNHANDLED_EXCEPTION();
|
||||
return 0.0;
|
||||
}
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
::rtl::OUString DBTypeConversion::getValue(const Reference< XPropertySet>& _xColumn,
|
||||
::rtl::OUString DBTypeConversion::getFormattedValue(const Reference< XPropertySet>& _xColumn,
|
||||
const Reference<XNumberFormatter>& _xFormatter,
|
||||
const ::com::sun::star::lang::Locale& _rLocale,
|
||||
const Date& _rNullDate)
|
||||
{
|
||||
OSL_ENSURE(_xColumn.is() && _xFormatter.is(), "DBTypeConversion::getValue: invalid arg !");
|
||||
OSL_ENSURE(_xColumn.is() && _xFormatter.is(), "DBTypeConversion::getFormattedValue: invalid arg !");
|
||||
if (!_xColumn.is() || !_xFormatter.is())
|
||||
return ::rtl::OUString();
|
||||
|
||||
@ -425,7 +429,7 @@ double DBTypeConversion::getValue(const Reference<XColumn>& xVariant,
|
||||
}
|
||||
catch (const Exception& )
|
||||
{
|
||||
OSL_ENSURE(false, "DBTypeConversion::getValue: caught an exception while asking for the format key!");
|
||||
OSL_ENSURE(false, "DBTypeConversion::getFormattedValue: caught an exception while asking for the format key!");
|
||||
}
|
||||
|
||||
if (!nKey)
|
||||
@ -441,11 +445,11 @@ double DBTypeConversion::getValue(const Reference<XColumn>& xVariant,
|
||||
|
||||
sal_Int16 nKeyType = getNumberFormatType(_xFormatter, nKey) & ~NumberFormat::DEFINED;
|
||||
|
||||
return DBTypeConversion::getValue(Reference< XColumn > (_xColumn, UNO_QUERY), _xFormatter, _rNullDate, nKey, nKeyType);
|
||||
return DBTypeConversion::getFormattedValue(Reference< XColumn > (_xColumn, UNO_QUERY), _xFormatter, _rNullDate, nKey, nKeyType);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
::rtl::OUString DBTypeConversion::getValue(const Reference<XColumn>& xVariant,
|
||||
::rtl::OUString DBTypeConversion::getFormattedValue(const Reference<XColumn>& xVariant,
|
||||
const Reference<XNumberFormatter>& xFormatter,
|
||||
const Date& rNullDate,
|
||||
sal_Int32 nKey,
|
||||
@ -462,23 +466,20 @@ double DBTypeConversion::getValue(const Reference<XColumn>& xVariant,
|
||||
case NumberFormat::DATETIME:
|
||||
{
|
||||
// get a value which represents the given date, relative to the given null date
|
||||
double fValue = getValue(xVariant, rNullDate, nKeyType);
|
||||
double fValue = getValue( xVariant, rNullDate );
|
||||
if ( !xVariant->wasNull() )
|
||||
{
|
||||
// get the null date of the formatter
|
||||
Date aFormatterNullDate( rNullDate );
|
||||
try
|
||||
{
|
||||
Reference< XPropertySet > xFormatterSettings;
|
||||
Reference< XNumberFormatsSupplier > xSupplier( xFormatter->getNumberFormatsSupplier( ) );
|
||||
if ( xSupplier.is() )
|
||||
xFormatterSettings = xSupplier->getNumberFormatSettings();
|
||||
if ( xFormatterSettings.is() )
|
||||
xFormatterSettings->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "NullDate" ) ) ) >>= aFormatterNullDate;
|
||||
Reference< XNumberFormatsSupplier > xSupplier( xFormatter->getNumberFormatsSupplier(), UNO_SET_THROW );
|
||||
Reference< XPropertySet > xFormatterSettings( xSupplier->getNumberFormatSettings(), UNO_SET_THROW );
|
||||
OSL_VERIFY( xFormatterSettings->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "NullDate" ) ) ) >>= aFormatterNullDate );
|
||||
}
|
||||
catch( const Exception& )
|
||||
{
|
||||
OSL_ENSURE( sal_False, "DBTypeConversion::getValue: caught an exception while retrieving the formatter's NullDate!" );
|
||||
DBG_UNHANDLED_EXCEPTION();
|
||||
}
|
||||
// get a value which represents the given date, relative to the null date of the formatter
|
||||
fValue -= toDays( rNullDate, aFormatterNullDate );
|
||||
|
@ -154,10 +154,15 @@ sal_Bool OSkipDeletedSet::skipDeleted(IResultSetHelper::Movement _eCursorPositio
|
||||
bDone = sal_False;
|
||||
}
|
||||
|
||||
if(bDataFound && bDone )
|
||||
if(bDataFound && bDone)
|
||||
{
|
||||
const sal_Int32 nDriverPos = m_pHelper->getDriverPos();
|
||||
if ( ::std::find(m_aBookmarksPositions.begin(),m_aBookmarksPositions.end(),nDriverPos) == m_aBookmarksPositions.end() )
|
||||
if ( m_bDeletedVisible )
|
||||
{
|
||||
if ( nDriverPos > (sal_Int32)m_aBookmarksPositions.size() )
|
||||
m_aBookmarksPositions.push_back(nDriverPos);
|
||||
}
|
||||
else if ( ::std::find(m_aBookmarksPositions.begin(),m_aBookmarksPositions.end(),nDriverPos) == m_aBookmarksPositions.end() )
|
||||
m_aBookmarksPositions.push_back(nDriverPos);
|
||||
/*sal_Int32 nDriverPos = m_pHelper->getDriverPos();
|
||||
if(m_aBookmarks.find(nDriverPos) == m_aBookmarks.end())
|
||||
|
@ -261,7 +261,7 @@ Reference< XDataSource> getDataSource_allowException(
|
||||
const ::rtl::OUString& _rsTitleOrPath,
|
||||
const Reference< XMultiServiceFactory >& _rxFactory )
|
||||
{
|
||||
OSL_ENSURE( _rsTitleOrPath.getLength(), "getDataSource_allowException: invalid arg !" );
|
||||
ENSURE_OR_RETURN( _rsTitleOrPath.getLength(), "getDataSource_allowException: invalid arg !", NULL );
|
||||
|
||||
Reference< XNameAccess> xDatabaseContext(
|
||||
_rxFactory->createInstance(
|
||||
@ -281,8 +281,9 @@ Reference< XDataSource > getDataSource(
|
||||
{
|
||||
xDS = getDataSource_allowException( _rsTitleOrPath, _rxFactory );
|
||||
}
|
||||
catch(Exception)
|
||||
catch( const Exception& )
|
||||
{
|
||||
DBG_UNHANDLED_EXCEPTION();
|
||||
}
|
||||
|
||||
return xDS;
|
||||
|
@ -328,7 +328,7 @@ namespace dbtools
|
||||
{
|
||||
if ( m_pData->m_bNumericField )
|
||||
{
|
||||
sStringValue = DBTypeConversion::getValue(
|
||||
sStringValue = DBTypeConversion::getFormattedValue(
|
||||
m_pData->m_xColumn, m_pData->m_xFormatter, m_pData->m_aNullDate, m_pData->m_nFormatKey, m_pData->m_nKeyType
|
||||
);
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ void OCatalog::refreshTables()
|
||||
if(m_pTables)
|
||||
m_pTables->reFill(aVector);
|
||||
else
|
||||
m_pTables = new OTables(this,m_aMutex,aVector,aTables,m_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers());
|
||||
m_pTables = new OTables(this,m_aMutex,aVector,aTables,m_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers());
|
||||
}
|
||||
// -------------------------------------------------------------------------
|
||||
void OCatalog::refreshViews()
|
||||
@ -94,7 +94,7 @@ void OCatalog::refreshViews()
|
||||
if(m_pViews)
|
||||
m_pViews->reFill(aVector);
|
||||
else
|
||||
m_pViews = new OViews(this,m_aMutex,aVector,aViews,m_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers());
|
||||
m_pViews = new OViews(this,m_aMutex,aVector,aViews,m_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers());
|
||||
}
|
||||
// -------------------------------------------------------------------------
|
||||
void OCatalog::refreshGroups()
|
||||
@ -107,7 +107,7 @@ void OCatalog::refreshGroups()
|
||||
if(m_pGroups)
|
||||
m_pGroups->reFill(aVector);
|
||||
else
|
||||
m_pGroups = new OGroups(this,m_aMutex,aVector,aGroups,m_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers());
|
||||
m_pGroups = new OGroups(this,m_aMutex,aVector,aGroups,m_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers());
|
||||
}
|
||||
// -------------------------------------------------------------------------
|
||||
void OCatalog::refreshUsers()
|
||||
@ -120,7 +120,7 @@ void OCatalog::refreshUsers()
|
||||
if(m_pUsers)
|
||||
m_pUsers->reFill(aVector);
|
||||
else
|
||||
m_pUsers = new OUsers(this,m_aMutex,aVector,aUsers,m_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers());
|
||||
m_pUsers = new OUsers(this,m_aMutex,aVector,aUsers,m_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers());
|
||||
}
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
|
@ -72,8 +72,14 @@ Reference< XPropertySet > OColumns::createDescriptor()
|
||||
sdbcx::ObjectType OColumns::appendObject( const ::rtl::OUString&, const Reference< XPropertySet >& descriptor )
|
||||
{
|
||||
OAdoColumn* pColumn = NULL;
|
||||
Reference< XPropertySet > xColumn;
|
||||
if ( !getImplementation( pColumn, descriptor ) || pColumn == NULL )
|
||||
m_pConnection->throwGenericSQLException( STR_INVALID_COLUMN_DESCRIPTOR_ERROR,static_cast<XTypeProvider*>(this) );
|
||||
{
|
||||
// m_pConnection->throwGenericSQLException( STR_INVALID_COLUMN_DESCRIPTOR_ERROR,static_cast<XTypeProvider*>(this) );
|
||||
pColumn = new OAdoColumn(isCaseSensitive(),m_pConnection);
|
||||
xColumn = pColumn;
|
||||
::comphelper::copyProperties(descriptor,xColumn);
|
||||
}
|
||||
|
||||
WpADOColumn aColumn = pColumn->getColumnImpl();
|
||||
|
||||
|
@ -163,6 +163,37 @@ void ODriver::impl_checkURL_throw(const ::rtl::OUString& _sUrl)
|
||||
Sequence< DriverPropertyInfo > SAL_CALL ODriver::getPropertyInfo( const ::rtl::OUString& url, const Sequence< PropertyValue >& /*info*/ ) throw(SQLException, RuntimeException)
|
||||
{
|
||||
impl_checkURL_throw(url);
|
||||
if ( acceptsURL(url) )
|
||||
{
|
||||
::std::vector< DriverPropertyInfo > aDriverInfo;
|
||||
|
||||
Sequence< ::rtl::OUString > aBooleanValues(2);
|
||||
aBooleanValues[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "false" ) );
|
||||
aBooleanValues[1] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "true" ) );
|
||||
|
||||
aDriverInfo.push_back(DriverPropertyInfo(
|
||||
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IgnoreDriverPrivileges"))
|
||||
,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Ignore the privileges from the database driver."))
|
||||
,sal_False
|
||||
,::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "false" ) )
|
||||
,aBooleanValues)
|
||||
);
|
||||
aDriverInfo.push_back(DriverPropertyInfo(
|
||||
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("EscapeDateTime"))
|
||||
,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Escape date time format."))
|
||||
,sal_False
|
||||
,::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "true" ) )
|
||||
,aBooleanValues)
|
||||
);
|
||||
aDriverInfo.push_back(DriverPropertyInfo(
|
||||
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TypeInfoSettings"))
|
||||
,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Defines how the type info of the database metadata should be manipulated."))
|
||||
,sal_False
|
||||
,::rtl::OUString( )
|
||||
,Sequence< ::rtl::OUString > ())
|
||||
);
|
||||
return Sequence< DriverPropertyInfo >(&aDriverInfo[0],aDriverInfo.size());
|
||||
}
|
||||
return Sequence< DriverPropertyInfo >();
|
||||
}
|
||||
// --------------------------------------------------------------------------------
|
||||
|
@ -164,6 +164,11 @@
|
||||
<value>false</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name="TypeInfoSettings" oor:op="replace">
|
||||
<prop oor:name="Value" oor:type="oor:string-list">
|
||||
<value oor:separator=",">Column(2) = 16,Column(3) = 1</value>
|
||||
</prop>
|
||||
</node>
|
||||
</node>
|
||||
<node oor:name="Features">
|
||||
<node oor:name="UseSQL92NamingConstraints" oor:op="replace">
|
||||
|
@ -105,7 +105,7 @@ sal_Int32 ADOS::MapADOType2Jdbc(DataTypeEnum eType)
|
||||
case adDBTime: nType = DataType::TIME; break;
|
||||
case adDate:
|
||||
case adDBTimeStamp: nType = DataType::TIMESTAMP; break;
|
||||
case adBoolean: nType = DataType::BIT; break;
|
||||
case adBoolean: nType = DataType::BOOLEAN; break;
|
||||
// case adArray: nType = DataType::ARRAY; break;
|
||||
case adBinary: nType = DataType::BINARY; break;
|
||||
case adGUID: nType = DataType::OBJECT; break;
|
||||
@ -151,6 +151,7 @@ DataTypeEnum ADOS::MapJdbc2ADOType(sal_Int32 _nType,sal_Int32 _nJetEngine)
|
||||
case DataType::DATE: return isJetEngine(_nJetEngine) ? adDate : adDBDate; break;
|
||||
case DataType::TIME: return adDBTime; break;
|
||||
case DataType::TIMESTAMP: return isJetEngine(_nJetEngine) ? adDate : adDBTimeStamp; break;
|
||||
case DataType::BOOLEAN:
|
||||
case DataType::BIT: return adBoolean; break;
|
||||
case DataType::BINARY: return adBinary; break;
|
||||
case DataType::VARCHAR: return adVarWChar; break;
|
||||
|
@ -470,8 +470,8 @@ void OCalcTable::fillColumns()
|
||||
String aStrFieldName;
|
||||
aStrFieldName.AssignAscii("Column");
|
||||
::rtl::OUString aTypeName;
|
||||
::comphelper::UStringMixEqual aCase(m_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers());
|
||||
const sal_Bool bStoresMixedCaseQuotedIdentifiers = getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers();
|
||||
::comphelper::UStringMixEqual aCase(m_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers());
|
||||
const sal_Bool bStoresMixedCaseQuotedIdentifiers = getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers();
|
||||
|
||||
for (sal_Int32 i = 0; i < m_nDataCols; i++)
|
||||
{
|
||||
|
@ -67,7 +67,7 @@ using namespace com::sun::star::lang;
|
||||
|
||||
IMPLEMENT_SERVICE_INFO(ODbaseIndex,"com.sun.star.sdbcx.driver.dbase.Index","com.sun.star.sdbcx.Index");
|
||||
// -------------------------------------------------------------------------
|
||||
ODbaseIndex::ODbaseIndex(ODbaseTable* _pTable) : OIndex(sal_True/*_pTable->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers()*/)
|
||||
ODbaseIndex::ODbaseIndex(ODbaseTable* _pTable) : OIndex(sal_True/*_pTable->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers()*/)
|
||||
,m_pFileStream(NULL)
|
||||
,m_nCurNode(NODE_NOTFOUND)
|
||||
,m_pTable(_pTable)
|
||||
@ -80,7 +80,7 @@ ODbaseIndex::ODbaseIndex(ODbaseTable* _pTable) : OIndex(sal_True/*_pTable->getCo
|
||||
ODbaseIndex::ODbaseIndex( ODbaseTable* _pTable,
|
||||
const NDXHeader& _rHeader,
|
||||
const ::rtl::OUString& _rName)
|
||||
:OIndex(_rName,::rtl::OUString(),_rHeader.db_unique,sal_False,sal_False,sal_True) // _pTable->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers()
|
||||
:OIndex(_rName,::rtl::OUString(),_rHeader.db_unique,sal_False,sal_False,sal_True) // _pTable->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers()
|
||||
,m_pFileStream(NULL)
|
||||
,m_aHeader(_rHeader)
|
||||
,m_nCurNode(NODE_NOTFOUND)
|
||||
|
@ -69,7 +69,7 @@ sdbcx::ObjectType ODbaseIndexColumns::createObject(const ::rtl::OUString& _rName
|
||||
,sal_False
|
||||
,sal_False
|
||||
,sal_False
|
||||
,pTable->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers());
|
||||
,pTable->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers());
|
||||
|
||||
return xRet;
|
||||
}
|
||||
@ -82,7 +82,7 @@ void ODbaseIndexColumns::impl_refresh() throw(RuntimeException)
|
||||
// -------------------------------------------------------------------------
|
||||
Reference< XPropertySet > ODbaseIndexColumns::createDescriptor()
|
||||
{
|
||||
return new sdbcx::OIndexColumn(m_pIndex->getTable()->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers());
|
||||
return new sdbcx::OIndexColumn(m_pIndex->getTable()->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers());
|
||||
}
|
||||
// -------------------------------------------------------------------------
|
||||
sdbcx::ObjectType ODbaseIndexColumns::appendObject( const ::rtl::OUString& /*_rForName*/, const Reference< XPropertySet >& descriptor )
|
||||
|
@ -340,7 +340,7 @@ void ODbaseTable::fillColumns()
|
||||
aStrFieldName.AssignAscii("Column");
|
||||
::rtl::OUString aTypeName;
|
||||
static const ::rtl::OUString sVARCHAR(RTL_CONSTASCII_USTRINGPARAM("VARCHAR"));
|
||||
const sal_Bool bCase = getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers();
|
||||
const sal_Bool bCase = getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers();
|
||||
const bool bFoxPro = m_aHeader.db_typ == VisualFoxPro || m_aHeader.db_typ == VisualFoxProAuto || m_aHeader.db_typ == FoxProMemo;
|
||||
|
||||
sal_Int32 i = 0;
|
||||
@ -2208,7 +2208,7 @@ void ODbaseTable::alterColumn(sal_Int32 index,
|
||||
if(xOldColumn.is())
|
||||
xCopyColumn = xOldColumn->createDataDescriptor();
|
||||
else
|
||||
xCopyColumn = new OColumn(getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers());
|
||||
xCopyColumn = new OColumn(getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers());
|
||||
|
||||
::comphelper::copyProperties(descriptor,xCopyColumn);
|
||||
|
||||
@ -2233,7 +2233,7 @@ void ODbaseTable::alterColumn(sal_Int32 index,
|
||||
if(xColumn.is())
|
||||
xCpy = xColumn->createDataDescriptor();
|
||||
else
|
||||
xCpy = new OColumn(getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers());
|
||||
xCpy = new OColumn(getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers());
|
||||
::comphelper::copyProperties(xProp,xCpy);
|
||||
xAppend->appendByDescriptor(xCpy);
|
||||
}
|
||||
@ -2249,7 +2249,7 @@ void ODbaseTable::alterColumn(sal_Int32 index,
|
||||
if(xColumn.is())
|
||||
xCpy = xColumn->createDataDescriptor();
|
||||
else
|
||||
xCpy = new OColumn(getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers());
|
||||
xCpy = new OColumn(getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers());
|
||||
::comphelper::copyProperties(xProp,xCpy);
|
||||
xAppend->appendByDescriptor(xCpy);
|
||||
}
|
||||
@ -2390,7 +2390,7 @@ void ODbaseTable::addColumn(const Reference< XPropertySet >& _xNewColumn)
|
||||
pNewTable->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME),makeAny(::rtl::OUString(sTempName)));
|
||||
{
|
||||
Reference<XAppend> xAppend(pNewTable->getColumns(),UNO_QUERY);
|
||||
sal_Bool bCase = getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers();
|
||||
sal_Bool bCase = getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers();
|
||||
// copy the structure
|
||||
for(sal_Int32 i=0;i < m_pColumns->getCount();++i)
|
||||
{
|
||||
@ -2463,7 +2463,7 @@ void ODbaseTable::dropColumn(sal_Int32 _nPos)
|
||||
pNewTable->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME),makeAny(::rtl::OUString(sTempName)));
|
||||
{
|
||||
Reference<XAppend> xAppend(pNewTable->getColumns(),UNO_QUERY);
|
||||
sal_Bool bCase = getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers();
|
||||
sal_Bool bCase = getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers();
|
||||
// copy the structure
|
||||
for(sal_Int32 i=0;i < m_pColumns->getCount();++i)
|
||||
{
|
||||
|
@ -107,7 +107,7 @@ void OEvoabFolderList::fillColumns(const ::com::sun::star::lang::Locale& _aLocal
|
||||
m_aPrecisions.reserve(nFieldCount);
|
||||
m_aScales.reserve(nFieldCount);
|
||||
|
||||
sal_Bool bCase = getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers();
|
||||
sal_Bool bCase = getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers();
|
||||
CharClass aCharClass(pConnection->getDriver()->getFactory(),_aLocale);
|
||||
// read description
|
||||
sal_Unicode cDecimalDelimiter = pConnection->getDecimalDelimiter();
|
||||
|
@ -119,7 +119,7 @@ void OEvoabTable::fillColumns(const ::com::sun::star::lang::Locale& _aLocale)
|
||||
m_aPrecisions.reserve(nFieldCount);
|
||||
m_aScales.reserve(nFieldCount);
|
||||
|
||||
sal_Bool bCase = getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers();
|
||||
sal_Bool bCase = getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers();
|
||||
CharClass aCharClass(pConnection->getDriver()->getFactory(),_aLocale);
|
||||
// read description
|
||||
sal_Unicode cDecimalDelimiter = pConnection->getDecimalDelimiter();
|
||||
@ -674,7 +674,7 @@ sal_Bool OEvoabTable::setColumnAliases()
|
||||
aColumnFinalName = aColumnReadName;
|
||||
sColumnFinalName = aColumnFinalName;
|
||||
|
||||
sal_Bool bCase = getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers();
|
||||
sal_Bool bCase = getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers();
|
||||
::rtl::OUString aTypeName;
|
||||
aTypeName = ::rtl::OUString::createFromAscii("VARCHAR");
|
||||
sdbcx::OColumn* pColumn = new sdbcx::OColumn(sColumnFinalName,aTypeName,::rtl::OUString(),
|
||||
|
@ -72,7 +72,7 @@ sdbcx::ObjectType OColumns::createObject(const ::rtl::OUString& _rName)
|
||||
sal_False,
|
||||
sal_False,
|
||||
sal_False,
|
||||
m_pTable->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers());
|
||||
m_pTable->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers());
|
||||
xRet = pRet;
|
||||
break;
|
||||
}
|
||||
|
@ -138,7 +138,7 @@ OResultSet::OResultSet(OStatement_Base* pStmt,OSQLParseTreeIterator& _aSQLIte
|
||||
|
||||
m_nResultSetConcurrency = isCount() ? ResultSetConcurrency::READ_ONLY : ResultSetConcurrency::UPDATABLE;
|
||||
construct();
|
||||
m_aSkipDeletedSet.SetDeleted(m_bShowDeleted);
|
||||
m_aSkipDeletedSet.SetDeletedVisible(m_bShowDeleted);
|
||||
osl_decrementInterlockedCount( &m_refCount );
|
||||
}
|
||||
|
||||
@ -1692,7 +1692,7 @@ void OResultSet::setBoundedColumns(const OValueRefRow& _rRow,
|
||||
::std::vector<sal_Int32>& _rColMapping)
|
||||
{
|
||||
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "file", "Ocke.Janssen@sun.com", "OResultSet::setBoundedColumns" );
|
||||
::comphelper::UStringMixEqual aCase(_xMetaData->storesMixedCaseQuotedIdentifiers());
|
||||
::comphelper::UStringMixEqual aCase(_xMetaData->supportsMixedCaseQuotedIdentifiers());
|
||||
|
||||
Reference<XPropertySet> xTableColumn;
|
||||
::rtl::OUString sTableColumnName, sSelectColumnRealName;
|
||||
|
@ -50,7 +50,7 @@ using namespace ::com::sun::star::container;
|
||||
|
||||
DBG_NAME( file_OFileTable )
|
||||
OFileTable::OFileTable(sdbcx::OCollection* _pTables,OConnection* _pConnection)
|
||||
: OTable_TYPEDEF(_pTables,_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers())
|
||||
: OTable_TYPEDEF(_pTables,_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers())
|
||||
,m_pConnection(_pConnection)
|
||||
,m_pFileStream(NULL)
|
||||
,m_nFilePos(0)
|
||||
@ -72,7 +72,7 @@ OFileTable::OFileTable( sdbcx::OCollection* _pTables,OConnection* _pConnection,
|
||||
const ::rtl::OUString& _Description ,
|
||||
const ::rtl::OUString& _SchemaName,
|
||||
const ::rtl::OUString& _CatalogName
|
||||
) : OTable_TYPEDEF(_pTables,_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers(),
|
||||
) : OTable_TYPEDEF(_pTables,_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers(),
|
||||
_Name,
|
||||
_Type,
|
||||
_Description,
|
||||
|
@ -56,6 +56,7 @@ using namespace ::com::sun::star::lang;
|
||||
|
||||
// --------------------------------------------------------------------------------
|
||||
OFlatConnection::OFlatConnection(ODriver* _pDriver) : OConnection(_pDriver)
|
||||
,m_nMaxRowsToScan(50)
|
||||
,m_bHeaderLine(sal_True)
|
||||
,m_cFieldDelimiter(';')
|
||||
,m_cStringDelimiter('"')
|
||||
@ -108,10 +109,15 @@ void OFlatConnection::construct(const ::rtl::OUString& url,const Sequence< Prope
|
||||
OSL_VERIFY( pBegin->Value >>= aVal );
|
||||
m_cThousandDelimiter = aVal.toChar();
|
||||
}
|
||||
else if ( !pBegin->Name.compareToAscii("MaxRowScan") )
|
||||
{
|
||||
pBegin->Value >>= m_nMaxRowsToScan;
|
||||
}
|
||||
}
|
||||
|
||||
osl_decrementInterlockedCount( &m_refCount );
|
||||
OConnection::construct(url,info);
|
||||
m_bShowDeleted = sal_True; // we do not supported rows for this type
|
||||
}
|
||||
// --------------------------------------------------------------------------------
|
||||
Reference< XDatabaseMetaData > SAL_CALL OFlatConnection::getMetaData( ) throw(SQLException, RuntimeException)
|
||||
|
@ -113,11 +113,11 @@ void OFlatTable::fillColumns(const ::com::sun::star::lang::Locale& _aLocale)
|
||||
m_aScales.clear();
|
||||
// reserve some space
|
||||
m_aColumns->get().reserve(nFieldCount+1);
|
||||
m_aTypes.reserve(nFieldCount+1);
|
||||
m_aPrecisions.reserve(nFieldCount+1);
|
||||
m_aScales.reserve(nFieldCount+1);
|
||||
m_aTypes.assign(nFieldCount+1,DataType::SQLNULL);
|
||||
m_aPrecisions.assign(nFieldCount+1,-1);
|
||||
m_aScales.assign(nFieldCount+1,-1);
|
||||
|
||||
const sal_Bool bCase = m_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers();
|
||||
const sal_Bool bCase = m_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers();
|
||||
CharClass aCharClass(pConnection->getDriver()->getFactory(),_aLocale);
|
||||
// read description
|
||||
const sal_Unicode cDecimalDelimiter = pConnection->getDecimalDelimiter();
|
||||
@ -125,106 +125,186 @@ void OFlatTable::fillColumns(const ::com::sun::star::lang::Locale& _aLocale)
|
||||
String aColumnName;
|
||||
::rtl::OUString aTypeName;
|
||||
::comphelper::UStringMixEqual aCase(bCase);
|
||||
xub_StrLen nStartPosHeaderLine = 0; // use for eficient way to get the tokens
|
||||
xub_StrLen nStartPosFirstLine = 0; // use for eficient way to get the tokens
|
||||
xub_StrLen nStartPosFirstLine2 = 0;
|
||||
::std::vector<String> aColumnNames,m_aTypeNames;
|
||||
m_aTypeNames.resize(nFieldCount);
|
||||
const sal_Int32 nMaxRowsToScan = pConnection->getMaxRowsToScan();
|
||||
sal_Int32 nRowCount = 0;
|
||||
do
|
||||
{
|
||||
xub_StrLen nStartPosHeaderLine = 0; // use for eficient way to get the tokens
|
||||
xub_StrLen nStartPosFirstLine = 0; // use for eficient way to get the tokens
|
||||
xub_StrLen nStartPosFirstLine2 = 0;
|
||||
for (xub_StrLen i = 0; i < nFieldCount; i++)
|
||||
{
|
||||
if ( nRowCount == 0)
|
||||
{
|
||||
if ( bHasHeaderLine )
|
||||
{
|
||||
aHeaderLine.GetTokenSpecial(aColumnName,nStartPosHeaderLine,m_cFieldDelimiter,m_cStringDelimiter);
|
||||
if ( !aColumnName.Len() )
|
||||
{
|
||||
aColumnName = 'C';
|
||||
aColumnName += String::CreateFromInt32(i+1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// no column name so ...
|
||||
aColumnName = 'C';
|
||||
aColumnName += String::CreateFromInt32(i+1);
|
||||
}
|
||||
aColumnNames.push_back(aColumnName);
|
||||
}
|
||||
impl_fillColumnInfo_nothrow(aFirstLine,nStartPosFirstLine,nStartPosFirstLine2,m_aTypes[i],m_aPrecisions[i],m_aScales[i],m_aTypeNames[i],cDecimalDelimiter,cThousandDelimiter,aCharClass);
|
||||
}
|
||||
++nRowCount;
|
||||
}
|
||||
while(nRowCount < nMaxRowsToScan && m_pFileStream->ReadByteStringLine(aFirstLine,nEncoding));
|
||||
|
||||
for (xub_StrLen i = 0; i < nFieldCount; i++)
|
||||
{
|
||||
if ( bHasHeaderLine )
|
||||
// check if the columname already exists
|
||||
String aAlias(aColumnNames[i]);
|
||||
OSQLColumns::Vector::const_iterator aFind = connectivity::find(m_aColumns->get().begin(),m_aColumns->get().end(),aAlias,aCase);
|
||||
sal_Int32 nExprCnt = 0;
|
||||
while(aFind != m_aColumns->get().end())
|
||||
{
|
||||
aHeaderLine.GetTokenSpecial(aColumnName,nStartPosHeaderLine,m_cFieldDelimiter,m_cStringDelimiter);
|
||||
if ( !aColumnName.Len() )
|
||||
(aAlias = aColumnNames[i]) += String::CreateFromInt32(++nExprCnt);
|
||||
aFind = connectivity::find(m_aColumns->get().begin(),m_aColumns->get().end(),aAlias,aCase);
|
||||
}
|
||||
|
||||
sdbcx::OColumn* pColumn = new sdbcx::OColumn(aAlias,m_aTypeNames[i],::rtl::OUString(),::rtl::OUString(),
|
||||
ColumnValue::NULLABLE,
|
||||
m_aPrecisions[i],
|
||||
m_aScales[i],
|
||||
m_aTypes[i],
|
||||
sal_False,
|
||||
sal_False,
|
||||
sal_False,
|
||||
bCase);
|
||||
Reference< XPropertySet> xCol = pColumn;
|
||||
m_aColumns->get().push_back(xCol);
|
||||
}
|
||||
m_pFileStream->Seek(m_nStartRowFilePos);
|
||||
}
|
||||
void OFlatTable::impl_fillColumnInfo_nothrow(QuotedTokenizedString& aFirstLine,xub_StrLen& nStartPosFirstLine,xub_StrLen& nStartPosFirstLine2
|
||||
,sal_Int32& io_nType,sal_Int32& io_nPrecisions,sal_Int32& io_nScales,String& o_sTypeName
|
||||
,const sal_Unicode cDecimalDelimiter,const sal_Unicode cThousandDelimiter,const CharClass& aCharClass)
|
||||
{
|
||||
if ( io_nType != DataType::VARCHAR )
|
||||
{
|
||||
BOOL bNumeric = io_nType == DataType::SQLNULL || io_nType == DataType::DOUBLE || io_nType == DataType::DECIMAL || io_nType == DataType::INTEGER;
|
||||
ULONG nIndex = 0;
|
||||
|
||||
if ( bNumeric )
|
||||
{
|
||||
// first without fielddelimiter
|
||||
String aField;
|
||||
aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine,m_cFieldDelimiter,'\0');
|
||||
if (aField.Len() == 0 ||
|
||||
(m_cStringDelimiter && m_cStringDelimiter == aField.GetChar(0)))
|
||||
{
|
||||
aColumnName = 'C';
|
||||
aColumnName += String::CreateFromInt32(i+1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// no column name so ...
|
||||
aColumnName = 'C';
|
||||
aColumnName += String::CreateFromInt32(i+1);
|
||||
}
|
||||
sal_Int32 eType;
|
||||
sal_uInt16 nPrecision = 0;
|
||||
sal_uInt16 nScale = 0;
|
||||
|
||||
sal_Bool bNumeric = sal_False;
|
||||
sal_uIntPtr nIndex = 0;
|
||||
|
||||
// first without fielddelimiter
|
||||
String aField;
|
||||
aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine,m_cFieldDelimiter,'\0');
|
||||
if (aField.Len() == 0 ||
|
||||
(m_cStringDelimiter && m_cStringDelimiter == aField.GetChar(0)))
|
||||
{
|
||||
bNumeric = sal_False;
|
||||
if ( m_cStringDelimiter != '\0' )
|
||||
aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter);
|
||||
else
|
||||
nStartPosFirstLine2 = nStartPosFirstLine;
|
||||
}
|
||||
else
|
||||
{
|
||||
String aField2;
|
||||
if ( m_cStringDelimiter != '\0' )
|
||||
aFirstLine.GetTokenSpecial(aField2,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter);
|
||||
else
|
||||
aField2 = aField;
|
||||
|
||||
if (aField2.Len() == 0)
|
||||
{
|
||||
bNumeric = sal_False;
|
||||
bNumeric = FALSE;
|
||||
if ( m_cStringDelimiter != '\0' )
|
||||
aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter);
|
||||
else
|
||||
nStartPosFirstLine2 = nStartPosFirstLine;
|
||||
}
|
||||
else
|
||||
{
|
||||
bNumeric = sal_True;
|
||||
xub_StrLen nDot = 0;
|
||||
xub_StrLen nDecimalDelCount = 0;
|
||||
for (xub_StrLen j = 0; j < aField2.Len(); j++)
|
||||
String aField2;
|
||||
if ( m_cStringDelimiter != '\0' )
|
||||
aFirstLine.GetTokenSpecial(aField2,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter);
|
||||
else
|
||||
aField2 = aField;
|
||||
|
||||
if (aField2.Len() == 0)
|
||||
{
|
||||
const sal_Unicode c = aField2.GetChar(j);
|
||||
// nur Ziffern und Dezimalpunkt und Tausender-Trennzeichen?
|
||||
if ( ( !cDecimalDelimiter || c != cDecimalDelimiter ) &&
|
||||
( !cThousandDelimiter || c != cThousandDelimiter ) &&
|
||||
!aCharClass.isDigit(aField2,j) &&
|
||||
( j != 0 || (c != '+' && c != '-' ) ) )
|
||||
{
|
||||
bNumeric = sal_False;
|
||||
break;
|
||||
}
|
||||
if (cDecimalDelimiter && c == cDecimalDelimiter)
|
||||
{
|
||||
nPrecision = 15; // we have an decimal value
|
||||
nScale = 2;
|
||||
++nDecimalDelCount;
|
||||
} // if (cDecimalDelimiter && c == cDecimalDelimiter)
|
||||
if ( c == '.' )
|
||||
++nDot;
|
||||
bNumeric = FALSE;
|
||||
}
|
||||
|
||||
if (nDecimalDelCount > 1 || nDot > 1 ) // if there is more than one dot it isn't a number
|
||||
bNumeric = sal_False;
|
||||
if (bNumeric && cThousandDelimiter)
|
||||
else
|
||||
{
|
||||
// Ist der Trenner richtig angegeben?
|
||||
const String aValue = aField2.GetToken(0,cDecimalDelimiter);
|
||||
for (sal_Int32 j = aValue.Len() - 4; j >= 0; j -= 4)
|
||||
bNumeric = TRUE;
|
||||
xub_StrLen nDot = 0;
|
||||
xub_StrLen nDecimalDelCount = 0;
|
||||
xub_StrLen nSpaceCount = 0;
|
||||
for (xub_StrLen j = 0; j < aField2.Len(); j++)
|
||||
{
|
||||
const sal_Unicode c = aValue.GetChar(static_cast<sal_uInt16>(j));
|
||||
// nur Ziffern und Dezimalpunkt und Tausender-Trennzeichen?
|
||||
if (c == cThousandDelimiter && j)
|
||||
continue;
|
||||
else
|
||||
const sal_Unicode c = aField2.GetChar(j);
|
||||
if ( j == nSpaceCount && m_cFieldDelimiter != 32 && c == 32 )
|
||||
{
|
||||
bNumeric = sal_False;
|
||||
++nSpaceCount;
|
||||
continue;
|
||||
}
|
||||
// nur Ziffern und Dezimalpunkt und Tausender-Trennzeichen?
|
||||
if ( ( !cDecimalDelimiter || c != cDecimalDelimiter ) &&
|
||||
( !cThousandDelimiter || c != cThousandDelimiter ) &&
|
||||
!aCharClass.isDigit(aField2,j) &&
|
||||
( j != 0 || (c != '+' && c != '-' ) ) )
|
||||
{
|
||||
bNumeric = FALSE;
|
||||
break;
|
||||
}
|
||||
if (cDecimalDelimiter && c == cDecimalDelimiter)
|
||||
{
|
||||
io_nPrecisions = 15; // we have an decimal value
|
||||
io_nScales = 2;
|
||||
++nDecimalDelCount;
|
||||
} // if (cDecimalDelimiter && c == cDecimalDelimiter)
|
||||
if ( c == '.' )
|
||||
++nDot;
|
||||
}
|
||||
|
||||
if (nDecimalDelCount > 1 || nDot > 1 ) // if there is more than one dot it isn't a number
|
||||
bNumeric = FALSE;
|
||||
if (bNumeric && cThousandDelimiter)
|
||||
{
|
||||
// Ist der Trenner richtig angegeben?
|
||||
const String aValue = aField2.GetToken(0,cDecimalDelimiter);
|
||||
for (sal_Int32 j = aValue.Len() - 4; j >= 0; j -= 4)
|
||||
{
|
||||
const sal_Unicode c = aValue.GetChar(static_cast<sal_uInt16>(j));
|
||||
// nur Ziffern und Dezimalpunkt und Tausender-Trennzeichen?
|
||||
if (c == cThousandDelimiter && j)
|
||||
continue;
|
||||
else
|
||||
{
|
||||
bNumeric = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// jetzt koennte es noch ein Datumsfeld sein
|
||||
if (!bNumeric)
|
||||
{
|
||||
try
|
||||
{
|
||||
nIndex = m_xNumberFormatter->detectNumberFormat(::com::sun::star::util::NumberFormat::ALL,aField2);
|
||||
}
|
||||
catch(Exception&)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// jetzt koennte es noch ein Datumsfeld sein
|
||||
if (!bNumeric)
|
||||
}
|
||||
}
|
||||
else if ( io_nType == DataType::DATE || io_nType == DataType::TIMESTAMP || io_nType == DataType::TIME)
|
||||
{
|
||||
String aField;
|
||||
aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine,m_cFieldDelimiter,'\0');
|
||||
if (aField.Len() == 0 ||
|
||||
(m_cStringDelimiter && m_cStringDelimiter == aField.GetChar(0)))
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
String aField2;
|
||||
if ( m_cStringDelimiter != '\0' )
|
||||
aFirstLine.GetTokenSpecial(aField2,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter);
|
||||
else
|
||||
aField2 = aField;
|
||||
if (aField2.Len() )
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -242,87 +322,83 @@ void OFlatTable::fillColumns(const ::com::sun::star::lang::Locale& _aLocale)
|
||||
{
|
||||
if (cDecimalDelimiter)
|
||||
{
|
||||
if(nPrecision)
|
||||
if(io_nPrecisions)
|
||||
{
|
||||
eType = DataType::DECIMAL;
|
||||
io_nType = DataType::DECIMAL;
|
||||
static const ::rtl::OUString s_sDECIMAL(RTL_CONSTASCII_USTRINGPARAM("DECIMAL"));
|
||||
aTypeName = s_sDECIMAL;
|
||||
o_sTypeName = s_sDECIMAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
eType = DataType::DOUBLE;
|
||||
io_nType = DataType::DOUBLE;
|
||||
static const ::rtl::OUString s_sDOUBLE(RTL_CONSTASCII_USTRINGPARAM("DOUBLE"));
|
||||
aTypeName = s_sDOUBLE;
|
||||
o_sTypeName = s_sDOUBLE;
|
||||
}
|
||||
}
|
||||
else
|
||||
eType = DataType::INTEGER;
|
||||
{
|
||||
io_nType = DataType::INTEGER;
|
||||
io_nPrecisions = 0;
|
||||
io_nScales = 0;
|
||||
}
|
||||
nFlags = ColumnSearch::BASIC;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
switch (comphelper::getNumberFormatType(m_xNumberFormatter,nIndex))
|
||||
{
|
||||
case NUMBERFORMAT_DATE:
|
||||
eType = DataType::DATE;
|
||||
io_nType = DataType::DATE;
|
||||
{
|
||||
static const ::rtl::OUString s_sDATE(RTL_CONSTASCII_USTRINGPARAM("DATE"));
|
||||
aTypeName = s_sDATE;
|
||||
o_sTypeName = s_sDATE;
|
||||
}
|
||||
break;
|
||||
case NUMBERFORMAT_DATETIME:
|
||||
eType = DataType::TIMESTAMP;
|
||||
io_nType = DataType::TIMESTAMP;
|
||||
{
|
||||
static const ::rtl::OUString s_sTIMESTAMP(RTL_CONSTASCII_USTRINGPARAM("TIMESTAMP"));
|
||||
aTypeName = s_sTIMESTAMP;
|
||||
o_sTypeName = s_sTIMESTAMP;
|
||||
}
|
||||
break;
|
||||
case NUMBERFORMAT_TIME:
|
||||
eType = DataType::TIME;
|
||||
io_nType = DataType::TIME;
|
||||
{
|
||||
static const ::rtl::OUString s_sTIME(RTL_CONSTASCII_USTRINGPARAM("TIME"));
|
||||
aTypeName = s_sTIME;
|
||||
o_sTypeName = s_sTIME;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
eType = DataType::VARCHAR;
|
||||
nPrecision = 0; // nyi: Daten koennen aber laenger sein!
|
||||
nScale = 0;
|
||||
io_nType = DataType::VARCHAR;
|
||||
io_nPrecisions = 0; // nyi: Daten koennen aber laenger sein!
|
||||
io_nScales = 0;
|
||||
{
|
||||
static const ::rtl::OUString s_sVARCHAR(RTL_CONSTASCII_USTRINGPARAM("VARCHAR"));
|
||||
aTypeName = s_sVARCHAR;
|
||||
o_sTypeName = s_sVARCHAR;
|
||||
}
|
||||
};
|
||||
nFlags |= ColumnSearch::CHAR;
|
||||
}
|
||||
|
||||
// check if the columname already exists
|
||||
String aAlias(aColumnName);
|
||||
OSQLColumns::Vector::const_iterator aFind = connectivity::find(m_aColumns->get().begin(),m_aColumns->get().end(),aAlias,aCase);
|
||||
sal_Int32 nExprCnt = 0;
|
||||
while(aFind != m_aColumns->get().end())
|
||||
{
|
||||
(aAlias = aColumnName) += String::CreateFromInt32(++nExprCnt);
|
||||
aFind = connectivity::find(m_aColumns->get().begin(),m_aColumns->get().end(),aAlias,aCase);
|
||||
}
|
||||
|
||||
sdbcx::OColumn* pColumn = new sdbcx::OColumn(aAlias,aTypeName,::rtl::OUString(),::rtl::OUString(),
|
||||
ColumnValue::NULLABLE,
|
||||
nPrecision,
|
||||
nScale,
|
||||
eType,
|
||||
sal_False,
|
||||
sal_False,
|
||||
sal_False,
|
||||
bCase);
|
||||
Reference< XPropertySet> xCol = pColumn;
|
||||
m_aColumns->get().push_back(xCol);
|
||||
m_aTypes.push_back(eType);
|
||||
m_aPrecisions.push_back(nPrecision);
|
||||
m_aScales.push_back(nScale);
|
||||
}
|
||||
m_pFileStream->Seek(m_nStartRowFilePos);
|
||||
else
|
||||
{
|
||||
String aField;
|
||||
aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine,m_cFieldDelimiter,'\0');
|
||||
if (aField.Len() == 0 ||
|
||||
(m_cStringDelimiter && m_cStringDelimiter == aField.GetChar(0)))
|
||||
{
|
||||
if ( m_cStringDelimiter != '\0' )
|
||||
aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter);
|
||||
else
|
||||
nStartPosFirstLine2 = nStartPosFirstLine;
|
||||
}
|
||||
else
|
||||
{
|
||||
String aField2;
|
||||
if ( m_cStringDelimiter != '\0' )
|
||||
aFirstLine.GetTokenSpecial(aField2,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter);
|
||||
}
|
||||
}
|
||||
}
|
||||
// -------------------------------------------------------------------------
|
||||
OFlatTable::OFlatTable(sdbcx::OCollection* _pTables,OFlatConnection* _pConnection,
|
||||
|
@ -75,8 +75,18 @@
|
||||
<value>false</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name="MaxRowScan" oor:op="replace">
|
||||
<prop oor:name="Value" oor:type="xs:int">
|
||||
<value>100</value>
|
||||
</prop>
|
||||
</node>
|
||||
</node>
|
||||
<node oor:name="Features">
|
||||
<node oor:name="MaxRowScan" oor:op="replace">
|
||||
<prop oor:name="Value" oor:type="xs:boolean">
|
||||
<value>true</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name="UseSQL92NamingConstraints" oor:op="replace">
|
||||
<prop oor:name="Value" oor:type="xs:boolean">
|
||||
<value>true</value>
|
||||
|
@ -897,8 +897,8 @@ void OResultSet::analyseWhereClause( const OSQLParseNode* parseT
|
||||
OSQLParseNode *pOptEscape;
|
||||
const OSQLParseNode* pPart2 = parseTree->getChild(1);
|
||||
pColumn = parseTree->getChild(0); // Match Item
|
||||
pAtom = pPart2->getChild(parseTree->count()-2); // Match String
|
||||
pOptEscape = pPart2->getChild(parseTree->count()-1); // Opt Escape Rule
|
||||
pAtom = pPart2->getChild(pPart2->count()-2); // Match String
|
||||
pOptEscape = pPart2->getChild(pPart2->count()-1); // Opt Escape Rule
|
||||
const bool bNot = SQL_ISTOKEN(pPart2->getChild(0), NOT);
|
||||
|
||||
if (!(pAtom->getNodeType() == SQL_NODE_STRING ||
|
||||
@ -1374,7 +1374,7 @@ void OResultSet::setBoundedColumns(const OValueRow& _rRow,
|
||||
const Reference<XDatabaseMetaData>& _xMetaData,
|
||||
::std::vector<sal_Int32>& _rColMapping)
|
||||
{
|
||||
::comphelper::UStringMixEqual aCase(_xMetaData->storesMixedCaseQuotedIdentifiers());
|
||||
::comphelper::UStringMixEqual aCase(_xMetaData->supportsMixedCaseQuotedIdentifiers());
|
||||
|
||||
Reference<XPropertySet> xTableColumn;
|
||||
::rtl::OUString sTableColumnName, sSelectColumnRealName;
|
||||
|
@ -98,7 +98,7 @@ namespace connectivity
|
||||
@return the last position
|
||||
*/
|
||||
inline sal_Int32 getLastPosition() const { return m_aBookmarksPositions.size(); }
|
||||
inline void SetDeleted(bool _bDeletedVisible) { m_bDeletedVisible = _bDeletedVisible; }
|
||||
inline void SetDeletedVisible(bool _bDeletedVisible) { m_bDeletedVisible = _bDeletedVisible; }
|
||||
};
|
||||
}
|
||||
#endif // CONNECTIVITY_SKIPDELETEDSSET_HXX
|
||||
|
@ -48,7 +48,7 @@ namespace connectivity
|
||||
ODbaseIndexColumns( ODbaseIndex* _pIndex,
|
||||
::osl::Mutex& _rMutex,
|
||||
const TStringVector &_rVector)
|
||||
: sdbcx::OCollection(*_pIndex,_pIndex->getTable()->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers(),_rMutex,_rVector)
|
||||
: sdbcx::OCollection(*_pIndex,_pIndex->getTable()->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers(),_rMutex,_rVector)
|
||||
, m_pIndex(_pIndex)
|
||||
{}
|
||||
|
||||
|
@ -50,7 +50,7 @@ namespace connectivity
|
||||
virtual void dropObject(sal_Int32 _nPos,const ::rtl::OUString _sElementName);
|
||||
public:
|
||||
ODbaseIndexes(ODbaseTable* _pTable, ::osl::Mutex& _rMutex,
|
||||
const TStringVector &_rVector) : ODbaseIndexes_BASE(*_pTable,_pTable->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers(),_rMutex,_rVector)
|
||||
const TStringVector &_rVector) : ODbaseIndexes_BASE(*_pTable,_pTable->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers(),_rMutex,_rVector)
|
||||
, m_pTable(_pTable)
|
||||
{}
|
||||
|
||||
|
@ -49,7 +49,7 @@ namespace connectivity
|
||||
OColumns( OFileTable* _pTable,
|
||||
::osl::Mutex& _rMutex,
|
||||
const TStringVector &_rVector
|
||||
) : sdbcx::OCollection(*_pTable,_pTable->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers(),_rMutex,_rVector)
|
||||
) : sdbcx::OCollection(*_pTable,_pTable->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers(),_rMutex,_rVector)
|
||||
,m_pTable(_pTable)
|
||||
{}
|
||||
};
|
||||
|
@ -46,7 +46,7 @@ namespace connectivity
|
||||
virtual void impl_refresh() throw(::com::sun::star::uno::RuntimeException);
|
||||
public:
|
||||
OTables(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _rMetaData,::cppu::OWeakObject& _rParent, ::osl::Mutex& _rMutex,
|
||||
const TStringVector &_rVector) : sdbcx::OCollection(_rParent,_rMetaData->storesMixedCaseQuotedIdentifiers(),_rMutex,_rVector)
|
||||
const TStringVector &_rVector) : sdbcx::OCollection(_rParent,_rMetaData->supportsMixedCaseQuotedIdentifiers(),_rMutex,_rVector)
|
||||
,m_xMetaData(_rMetaData)
|
||||
{}
|
||||
|
||||
|
@ -38,6 +38,7 @@ namespace connectivity
|
||||
class OFlatConnection : public file::OConnection
|
||||
{
|
||||
private:
|
||||
sal_Int32 m_nMaxRowsToScan;
|
||||
sal_Bool m_bHeaderLine; // column names in first row
|
||||
sal_Unicode m_cFieldDelimiter; // look at the name
|
||||
sal_Unicode m_cStringDelimiter; // delimiter for strings m_cStringDelimiter blabla m_cStringDelimiter
|
||||
@ -55,6 +56,7 @@ namespace connectivity
|
||||
inline sal_Unicode getStringDelimiter() const { return m_cStringDelimiter; }
|
||||
inline sal_Unicode getDecimalDelimiter() const { return m_cDecimalDelimiter; }
|
||||
inline sal_Unicode getThousandDelimiter() const { return m_cThousandDelimiter;}
|
||||
inline sal_Int32 getMaxRowsToScan() const { return m_nMaxRowsToScan;}
|
||||
// XServiceInfo
|
||||
DECLARE_SERVICE_INFO();
|
||||
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "connectivity/CommonTools.hxx"
|
||||
#include <tools/urlobj.hxx>
|
||||
#include "file/quotedstring.hxx"
|
||||
#include <unotools/syslocale.hxx>
|
||||
|
||||
namespace connectivity
|
||||
{
|
||||
@ -67,6 +68,9 @@ namespace connectivity
|
||||
void fillColumns(const ::com::sun::star::lang::Locale& _aLocale);
|
||||
sal_Bool CreateFile(const INetURLObject& aFile, sal_Bool& bCreateMemo);
|
||||
sal_Bool readLine(sal_Int32& _rnCurrentPos);
|
||||
void impl_fillColumnInfo_nothrow(QuotedTokenizedString& aFirstLine,xub_StrLen& nStartPosFirstLine,xub_StrLen& nStartPosFirstLine2
|
||||
,sal_Int32& io_nType,sal_Int32& io_nPrecisions,sal_Int32& io_nScales,String& o_sTypeName
|
||||
,const sal_Unicode cDecimalDelimiter,const sal_Unicode cThousandDelimiter,const CharClass& aCharClass);
|
||||
public:
|
||||
virtual void refreshColumns();
|
||||
|
||||
|
@ -28,12 +28,12 @@
|
||||
// MARKER(update_precomp.py): autogen include statement, do not remove
|
||||
#include "precompiled_connectivity.hxx"
|
||||
|
||||
#ifndef _CONNECTIVITY_SDBCX_COLUMN_HXX_
|
||||
#include "connectivity/PColumn.hxx"
|
||||
#endif
|
||||
#include "connectivity/dbtools.hxx"
|
||||
#include "TConnection.hxx"
|
||||
|
||||
#include <comphelper/types.hxx>
|
||||
#include <tools/diagnose_ex.h>
|
||||
|
||||
using namespace ::comphelper;
|
||||
using namespace connectivity;
|
||||
@ -153,7 +153,7 @@ OParseColumn* OParseColumn::createColumnForResultSet( const Reference< XResultSe
|
||||
_rxResMetaData->getColumnType( _nColumnPos ),
|
||||
_rxResMetaData->isAutoIncrement( _nColumnPos ),
|
||||
_rxResMetaData->isCurrency( _nColumnPos ),
|
||||
_rxDBMetaData->storesMixedCaseQuotedIdentifiers()
|
||||
_rxDBMetaData->supportsMixedCaseQuotedIdentifiers()
|
||||
);
|
||||
pColumn->setTableName( ::dbtools::composeTableName( _rxDBMetaData,
|
||||
_rxResMetaData->getCatalogName( _nColumnPos ),
|
||||
@ -191,38 +191,85 @@ void OParseColumn::construct()
|
||||
// -----------------------------------------------------------------------------
|
||||
::cppu::IPropertyArrayHelper & SAL_CALL OParseColumn::getInfoHelper()
|
||||
{
|
||||
OSL_ENSURE( !isNew(), "OParseColumn::OOrderColumn: a *new* OrderColumn?" );
|
||||
OSL_ENSURE( !isNew(), "OParseColumn::getInfoHelper: a *new* ParseColumn?" );
|
||||
return *OParseColumn_PROP::getArrayHelper();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
OOrderColumn::OOrderColumn( const Reference<XPropertySet>& _xColumn
|
||||
,sal_Bool _bCase
|
||||
,sal_Bool _bAscending)
|
||||
: connectivity::sdbcx::OColumn( getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME)))
|
||||
, getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME)))
|
||||
, getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE)))
|
||||
, getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DESCRIPTION)))
|
||||
, getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE)))
|
||||
, getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION)))
|
||||
, getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE)))
|
||||
, getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE)))
|
||||
, getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT)))
|
||||
, sal_False
|
||||
, getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY)))
|
||||
, _bCase
|
||||
)
|
||||
, m_bAscending(_bAscending)
|
||||
namespace
|
||||
{
|
||||
::rtl::OUString lcl_getColumnTableName( const Reference< XPropertySet >& i_parseColumn )
|
||||
{
|
||||
::rtl::OUString sColumnTableName;
|
||||
try
|
||||
{
|
||||
OSL_VERIFY( i_parseColumn->getPropertyValue( OMetaConnection::getPropMap().getNameByIndex( PROPERTY_ID_TABLENAME ) ) >>= sColumnTableName );
|
||||
}
|
||||
catch( const Exception& )
|
||||
{
|
||||
DBG_UNHANDLED_EXCEPTION();
|
||||
}
|
||||
return sColumnTableName;
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
OOrderColumn::OOrderColumn( const Reference<XPropertySet>& _xColumn, const ::rtl::OUString& i_rOriginatingTableName,
|
||||
sal_Bool _bCase, sal_Bool _bAscending )
|
||||
: connectivity::sdbcx::OColumn(
|
||||
getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME))),
|
||||
getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME))),
|
||||
getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE))),
|
||||
getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DESCRIPTION))),
|
||||
getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE))),
|
||||
getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION))),
|
||||
getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE))),
|
||||
getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))),
|
||||
getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT))),
|
||||
sal_False,
|
||||
getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY))),
|
||||
_bCase
|
||||
)
|
||||
,m_bAscending(_bAscending)
|
||||
,m_sTableName( i_rOriginatingTableName )
|
||||
{
|
||||
construct();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
OOrderColumn::OOrderColumn( const Reference<XPropertySet>& _xColumn, sal_Bool _bCase, sal_Bool _bAscending )
|
||||
: connectivity::sdbcx::OColumn(
|
||||
getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME))),
|
||||
getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME))),
|
||||
getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE))),
|
||||
getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DESCRIPTION))),
|
||||
getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE))),
|
||||
getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION))),
|
||||
getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE))),
|
||||
getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))),
|
||||
getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT))),
|
||||
sal_False,
|
||||
getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY))),
|
||||
_bCase
|
||||
)
|
||||
,m_bAscending(_bAscending)
|
||||
,m_sTableName( lcl_getColumnTableName( _xColumn ) )
|
||||
{
|
||||
construct();
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
OOrderColumn::~OOrderColumn()
|
||||
{
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
void OOrderColumn::construct()
|
||||
{
|
||||
registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISASCENDING),PROPERTY_ID_ISASCENDING,0,&m_bAscending, ::getCppuType(reinterpret_cast< sal_Bool*>(NULL)));
|
||||
registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISASCENDING), PROPERTY_ID_ISASCENDING,
|
||||
PropertyAttribute::READONLY, const_cast< sal_Bool* >( &m_bAscending ), ::getCppuType( reinterpret_cast< sal_Bool* >( NULL ) ) );
|
||||
registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TABLENAME), PROPERTY_ID_TABLENAME,
|
||||
PropertyAttribute::READONLY, const_cast< ::rtl::OUString* >( &m_sTableName ), ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
|
||||
}
|
||||
// -----------------------------------------------------------------------------
|
||||
::cppu::IPropertyArrayHelper* OOrderColumn::createArrayHelper() const
|
||||
@ -232,17 +279,14 @@ void OOrderColumn::construct()
|
||||
// -----------------------------------------------------------------------------
|
||||
::cppu::IPropertyArrayHelper & SAL_CALL OOrderColumn::getInfoHelper()
|
||||
{
|
||||
OSL_ENSURE( !isNew(), "OOrderColumn::OOrderColumn: a *new* OrderColumn?" );
|
||||
OSL_ENSURE( !isNew(), "OOrderColumn::getInfoHelper: a *new* OrderColumn?" );
|
||||
return *OOrderColumn_PROP::getArrayHelper();
|
||||
}
|
||||
// -----------------------------------------------------------------------------
|
||||
::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL OOrderColumn::getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException)
|
||||
{
|
||||
::com::sun::star::uno::Sequence< ::rtl::OUString > aSupported(1);
|
||||
if ( m_bOrder )
|
||||
aSupported[0] = ::rtl::OUString::createFromAscii("com.sun.star.sdb.OrderColumn");
|
||||
else
|
||||
aSupported[0] = ::rtl::OUString::createFromAscii("com.sun.star.sdb.GroupColumn");
|
||||
aSupported[0] = ::rtl::OUString::createFromAscii("com.sun.star.sdb.OrderColumn");
|
||||
|
||||
return aSupported;
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ namespace connectivity
|
||||
OSL_PRECOND( m_xConnection.is(), "OSQLParseTreeIteratorImpl::OSQLParseTreeIteratorImpl: invalid connection!" );
|
||||
m_xDatabaseMetaData = m_xConnection->getMetaData();
|
||||
|
||||
m_bIsCaseSensitive = m_xDatabaseMetaData.is() && m_xDatabaseMetaData->storesMixedCaseQuotedIdentifiers();
|
||||
m_bIsCaseSensitive = m_xDatabaseMetaData.is() && m_xDatabaseMetaData->supportsMixedCaseQuotedIdentifiers();
|
||||
m_pTables.reset( new OSQLTables( m_bIsCaseSensitive ) );
|
||||
m_pSubTables.reset( new OSQLTables( m_bIsCaseSensitive ) );
|
||||
|
||||
@ -1910,12 +1910,12 @@ void OSQLParseTreeIterator::setOrderByColumnName(const ::rtl::OUString & rColumn
|
||||
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "parse", "Ocke.Janssen@sun.com", "OSQLParseTreeIterator::setOrderByColumnName" );
|
||||
Reference<XPropertySet> xColumn = findColumn( rColumnName, rTableRange, false );
|
||||
if ( xColumn.is() )
|
||||
m_aOrderColumns->get().push_back(new OOrderColumn(xColumn,isCaseSensitive(),bAscending));
|
||||
m_aOrderColumns->get().push_back(new OOrderColumn( xColumn, rTableRange, isCaseSensitive(), bAscending ) );
|
||||
else
|
||||
{
|
||||
sal_Int32 nId = rColumnName.toInt32();
|
||||
if ( nId > 0 && nId < static_cast<sal_Int32>(m_aSelectColumns->get().size()) )
|
||||
m_aOrderColumns->get().push_back(new OOrderColumn((m_aSelectColumns->get())[nId-1],isCaseSensitive(),bAscending));
|
||||
m_aOrderColumns->get().push_back( new OOrderColumn( ( m_aSelectColumns->get() )[nId-1], isCaseSensitive(), bAscending ) );
|
||||
}
|
||||
|
||||
#ifdef SQL_TEST_PARSETREEITERATOR
|
||||
|
@ -29,7 +29,7 @@
|
||||
#include "precompiled_connectivity.hxx"
|
||||
#include <connectivity/virtualdbtools.hxx>
|
||||
#include "staticdbtools_s.hxx"
|
||||
#include <connectivity/dbconversion.hxx>
|
||||
#include "connectivity/dbconversion.hxx"
|
||||
#include <connectivity/dbtools.hxx>
|
||||
#include <com/sun/star/sdb/SQLContext.hpp>
|
||||
|
||||
@ -61,23 +61,23 @@ namespace connectivity
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
double ODataAccessStaticTools::getValue(const Reference< XColumn>& _rxVariant, const Date& rNullDate, sal_Int16 nKeyType) const
|
||||
double ODataAccessStaticTools::getValue(const Reference< XColumn>& _rxVariant, const Date& rNullDate ) const
|
||||
{
|
||||
return ::dbtools::DBTypeConversion::getValue(_rxVariant, rNullDate, nKeyType);
|
||||
return ::dbtools::DBTypeConversion::getValue( _rxVariant, rNullDate );
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
::rtl::OUString ODataAccessStaticTools::getValue(const Reference< XColumn >& _rxColumn, const Reference< XNumberFormatter >& _rxFormatter,
|
||||
::rtl::OUString ODataAccessStaticTools::getFormattedValue(const Reference< XColumn >& _rxColumn, const Reference< XNumberFormatter >& _rxFormatter,
|
||||
const Date& _rNullDate, sal_Int32 _nKey, sal_Int16 _nKeyType) const
|
||||
{
|
||||
return ::dbtools::DBTypeConversion::getValue(_rxColumn, _rxFormatter, _rNullDate, _nKey, _nKeyType);
|
||||
return ::dbtools::DBTypeConversion::getFormattedValue(_rxColumn, _rxFormatter, _rNullDate, _nKey, _nKeyType);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
::rtl::OUString ODataAccessStaticTools::getValue( const Reference< XPropertySet>& _rxColumn, const Reference< XNumberFormatter>& _rxFormatter,
|
||||
::rtl::OUString ODataAccessStaticTools::getFormattedValue( const Reference< XPropertySet>& _rxColumn, const Reference< XNumberFormatter>& _rxFormatter,
|
||||
const Locale& _rLocale, const Date& _rNullDate ) const
|
||||
{
|
||||
return ::dbtools::DBTypeConversion::getValue( _rxColumn, _rxFormatter, _rLocale, _rNullDate );
|
||||
return ::dbtools::DBTypeConversion::getFormattedValue( _rxColumn, _rxFormatter, _rLocale, _rNullDate );
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
|
@ -54,11 +54,10 @@ namespace connectivity
|
||||
// ------------------------------------------------
|
||||
virtual double getValue(
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn>& _rxVariant,
|
||||
const ::com::sun::star::util::Date& rNullDate,
|
||||
sal_Int16 nKeyType) const;
|
||||
const ::com::sun::star::util::Date& rNullDate ) const;
|
||||
|
||||
// ------------------------------------------------
|
||||
virtual ::rtl::OUString getValue(
|
||||
virtual ::rtl::OUString getFormattedValue(
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _rxColumn,
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& _rxFormatter,
|
||||
const ::com::sun::star::util::Date& _rNullDate,
|
||||
@ -66,7 +65,7 @@ namespace connectivity
|
||||
sal_Int16 _nKeyType) const;
|
||||
|
||||
// ------------------------------------------------
|
||||
virtual ::rtl::OUString getValue(
|
||||
virtual ::rtl::OUString getFormattedValue(
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _rxColumn,
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter>& _rxFormatter,
|
||||
const ::com::sun::star::lang::Locale& _rLocale,
|
||||
|
@ -43,7 +43,6 @@
|
||||
#include "com/sun/star/awt/WindowAttribute.hpp"
|
||||
#include "com/sun/star/awt/WindowClass.hpp"
|
||||
#include "com/sun/star/awt/WindowDescriptor.hpp"
|
||||
#include "com/sun/star/awt/XThrobber.hpp"
|
||||
#include "com/sun/star/awt/XToolkit.hpp"
|
||||
#include "com/sun/star/awt/XWindow.hpp"
|
||||
#include "com/sun/star/awt/XWindowPeer.hpp"
|
||||
@ -570,6 +569,7 @@ UpdateDialog::UpdateDialog(
|
||||
ModalDialog(parent,DpGuiResId(RID_DLG_UPDATE)),
|
||||
m_context(context),
|
||||
m_checking(this, DpGuiResId(RID_DLG_UPDATE_CHECKING)),
|
||||
m_throbber(this, DpGuiResId(RID_DLG_UPDATE_THROBBER)),
|
||||
m_update(this, DpGuiResId(RID_DLG_UPDATE_UPDATE)),
|
||||
m_updates(
|
||||
*this, DpGuiResId(RID_DLG_UPDATE_UPDATES),
|
||||
@ -630,23 +630,6 @@ UpdateDialog::UpdateDialog(
|
||||
} catch (uno::Exception & e) {
|
||||
throw uno::RuntimeException(e.Message, e.Context);
|
||||
}
|
||||
Control c(this, DpGuiResId(RID_DLG_UPDATE_THROBBER));
|
||||
Point pos(c.GetPosPixel());
|
||||
Size size(c.GetSizePixel());
|
||||
try {
|
||||
m_throbber = uno::Reference< awt::XThrobber >(
|
||||
toolkit->createWindow(
|
||||
awt::WindowDescriptor(
|
||||
awt::WindowClass_SIMPLE,
|
||||
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Throbber")),
|
||||
GetComponentInterface(), 0,
|
||||
awt::Rectangle(
|
||||
pos.X(), pos.Y(), size.Width(), size.Height()),
|
||||
awt::WindowAttribute::SHOW)),
|
||||
uno::UNO_QUERY_THROW);
|
||||
} catch (lang::IllegalArgumentException & e) {
|
||||
throw uno::RuntimeException(e.Message, e.Context);
|
||||
}
|
||||
m_updates.SetSelectHdl(LINK(this, UpdateDialog, selectionHandler));
|
||||
m_all.SetToggleHdl(LINK(this, UpdateDialog, allHandler));
|
||||
m_ok.SetClickHdl(LINK(this, UpdateDialog, okHandler));
|
||||
@ -681,7 +664,7 @@ sal_Bool UpdateDialog::Close() {
|
||||
}
|
||||
|
||||
short UpdateDialog::Execute() {
|
||||
m_throbber->start();
|
||||
m_throbber.start();
|
||||
m_thread->launch();
|
||||
return ModalDialog::Execute();
|
||||
}
|
||||
@ -880,9 +863,8 @@ void UpdateDialog::addSpecificError( UpdateDialog::SpecificError & data )
|
||||
|
||||
void UpdateDialog::checkingDone() {
|
||||
m_checking.Hide();
|
||||
m_throbber->stop();
|
||||
uno::Reference< awt::XWindow >(
|
||||
m_throbber, uno::UNO_QUERY_THROW)->setVisible(false);
|
||||
m_throbber.stop();
|
||||
m_throbber.Hide();
|
||||
if (m_updates.getItemCount() == 0)
|
||||
{
|
||||
clearDescription();
|
||||
|
@ -46,6 +46,7 @@
|
||||
#include "vcl/dialog.hxx"
|
||||
#include "vcl/fixed.hxx"
|
||||
#include <svtools/fixedhyper.hxx>
|
||||
#include <vcl/throbber.hxx>
|
||||
|
||||
#include "descedit.hxx"
|
||||
#include "dp_gui_updatedata.hxx"
|
||||
@ -59,7 +60,6 @@ class ResId;
|
||||
class Window;
|
||||
|
||||
namespace com { namespace sun { namespace star {
|
||||
namespace awt { class XThrobber; }
|
||||
namespace deployment { class XExtensionManager;
|
||||
class XPackage; }
|
||||
namespace uno { class XComponentContext; }
|
||||
@ -184,7 +184,7 @@ private:
|
||||
com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
|
||||
m_context;
|
||||
FixedText m_checking;
|
||||
com::sun::star::uno::Reference< com::sun::star::awt::XThrobber > m_throbber;
|
||||
Throbber m_throbber;
|
||||
FixedText m_update;
|
||||
UpdateDialog::CheckListBox m_updates;
|
||||
CheckBox m_all;
|
||||
|
@ -60,11 +60,11 @@ ModalDialog RID_DLG_UPDATE {
|
||||
Right = TRUE;
|
||||
NoLabel = TRUE;
|
||||
};
|
||||
Control RID_DLG_UPDATE_THROBBER {
|
||||
FixedImage RID_DLG_UPDATE_THROBBER {
|
||||
Pos = MAP_APPFONT(
|
||||
RSC_SP_DLG_INNERBORDER_LEFT + LOCAL_WIDTH - RSC_CD_FIXEDTEXT_HEIGHT,
|
||||
RSC_SP_DLG_INNERBORDER_TOP);
|
||||
Size = MAP_APPFONT(RSC_CD_FIXEDTEXT_HEIGHT, RSC_CD_FIXEDTEXT_HEIGHT);
|
||||
Size = MAP_APPFONT(RSC_CD_FIXEDTEXT_HEIGHT, RSC_CD_FIXEDTEXT_HEIGHT + 1);
|
||||
};
|
||||
FixedText RID_DLG_UPDATE_UPDATE {
|
||||
Disable = TRUE;
|
||||
|
@ -339,14 +339,13 @@ void MigrationThread::onTerminated()
|
||||
|
||||
MigrationPage::MigrationPage(
|
||||
svt::OWizardMachine* parent,
|
||||
const ResId& resid,
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::awt::XThrobber > xThrobber)
|
||||
const ResId& resid, Throbber& i_throbber )
|
||||
: OWizardPage(parent, resid)
|
||||
, m_ftHead(this, WizardResId(FT_MIGRATION_HEADER))
|
||||
, m_ftBody(this, WizardResId(FT_MIGRATION_BODY))
|
||||
, m_cbMigration(this, WizardResId(CB_MIGRATION))
|
||||
, m_rThrobber(i_throbber)
|
||||
, m_bMigrationDone(sal_False)
|
||||
, m_xThrobber(xThrobber)
|
||||
{
|
||||
FreeResource();
|
||||
_setBold(m_ftHead);
|
||||
@ -366,9 +365,8 @@ sal_Bool MigrationPage::commitPage( svt::WizardTypes::CommitPageReason _eReason
|
||||
if ( pWizard )
|
||||
pWizard->DisableButtonsWhileMigration();
|
||||
|
||||
uno::Reference< awt::XWindow > xWin( m_xThrobber, uno::UNO_QUERY );
|
||||
xWin->setVisible( true );
|
||||
m_xThrobber->start();
|
||||
m_rThrobber.Show();
|
||||
m_rThrobber.start();
|
||||
MigrationThread* pMigThread = new MigrationThread();
|
||||
pMigThread->create();
|
||||
|
||||
@ -377,10 +375,10 @@ sal_Bool MigrationPage::commitPage( svt::WizardTypes::CommitPageReason _eReason
|
||||
Application::Reschedule();
|
||||
}
|
||||
|
||||
m_xThrobber->stop();
|
||||
m_rThrobber.stop();
|
||||
GetParent()->LeaveWait();
|
||||
// Next state will enable buttons - so no EnableButtons necessary!
|
||||
xWin->setVisible( false );
|
||||
m_rThrobber.Hide();
|
||||
pMigThread->join();
|
||||
delete pMigThread;
|
||||
m_bMigrationDone = sal_True;
|
||||
|
@ -29,17 +29,15 @@
|
||||
#define _PAGES_HXX_
|
||||
|
||||
#include <vcl/tabpage.hxx>
|
||||
#include <vcl/fixed.hxx>
|
||||
#include <vcl/button.hxx>
|
||||
#include <vcl/dialog.hxx>
|
||||
#include <vcl/scrbar.hxx>
|
||||
#include <vcl/throbber.hxx>
|
||||
#include <svtools/wizardmachine.hxx>
|
||||
#include <svtools/svmedit.hxx>
|
||||
#include <svl/lstner.hxx>
|
||||
#include <svtools/xtextedt.hxx>
|
||||
|
||||
#include <com/sun/star/awt/XThrobber.hpp>
|
||||
|
||||
namespace desktop
|
||||
{
|
||||
class WelcomePage : public svt::OWizardPage
|
||||
@ -120,11 +118,11 @@ class MigrationPage : public svt::OWizardPage
|
||||
private:
|
||||
FixedText m_ftHead;
|
||||
FixedText m_ftBody;
|
||||
CheckBox m_cbMigration;
|
||||
CheckBox m_cbMigration;
|
||||
Throbber& m_rThrobber;
|
||||
sal_Bool m_bMigrationDone;
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::awt::XThrobber > m_xThrobber;
|
||||
public:
|
||||
MigrationPage( svt::OWizardMachine* parent, const ResId& resid, ::com::sun::star::uno::Reference< ::com::sun::star::awt::XThrobber > xThrobber );
|
||||
MigrationPage( svt::OWizardMachine* parent, const ResId& resid, Throbber& i_throbber );
|
||||
virtual sal_Bool commitPage( svt::WizardTypes::CommitPageReason _eReason );
|
||||
|
||||
protected:
|
||||
|
@ -87,16 +87,6 @@ const FirstStartWizard::WizardState FirstStartWizard::STATE_USER = 3;
|
||||
const FirstStartWizard::WizardState FirstStartWizard::STATE_UPDATE_CHECK = 4;
|
||||
const FirstStartWizard::WizardState FirstStartWizard::STATE_REGISTRATION = 5;
|
||||
|
||||
static uno::Reference< uno::XComponentContext > getComponentContext( const uno::Reference< lang::XMultiServiceFactory >& rFactory )
|
||||
{
|
||||
uno::Reference< uno::XComponentContext > rContext;
|
||||
uno::Reference< beans::XPropertySet > rPropSet( rFactory, uno::UNO_QUERY );
|
||||
uno::Any a = rPropSet->getPropertyValue(
|
||||
::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ) ) );
|
||||
a >>= rContext;
|
||||
return rContext;
|
||||
}
|
||||
|
||||
static sal_Int32 getBuildId()
|
||||
{
|
||||
::rtl::OUString aDefault;
|
||||
@ -139,54 +129,14 @@ FirstStartWizard::FirstStartWizard( Window* pParent, sal_Bool bLicenseNeedsAccep
|
||||
,m_bLicenseNeedsAcceptance( bLicenseNeedsAcceptance )
|
||||
,m_bLicenseWasAccepted(sal_False)
|
||||
,m_bAutomaticUpdChk(sal_True)
|
||||
,m_aThrobber(this, WizardResId(CTRL_THROBBER))
|
||||
,m_aLicensePath( rLicensePath )
|
||||
{
|
||||
FreeResource();
|
||||
// ---
|
||||
// FreeResource();
|
||||
// enableState(STATE_USER, sal_False);
|
||||
// enableState(STATE_REGISTRATION, sal_False);
|
||||
|
||||
try
|
||||
{
|
||||
Point pos(5, 210 );
|
||||
Size size(11, 11 );
|
||||
|
||||
pos = LogicToPixel( pos, MAP_APPFONT );
|
||||
size = LogicToPixel( size, MAP_APPFONT );
|
||||
|
||||
uno::Reference< lang::XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory();
|
||||
uno::Reference< awt::XToolkit > xToolkit(
|
||||
uno::Reference< lang::XMultiComponentFactory >(
|
||||
xFactory, uno::UNO_QUERY_THROW)->
|
||||
createInstanceWithContext(
|
||||
rtl::OUString(
|
||||
RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.Toolkit")),
|
||||
getComponentContext(xFactory)),
|
||||
uno::UNO_QUERY_THROW);
|
||||
|
||||
m_xThrobber = uno::Reference< awt::XThrobber >(
|
||||
xToolkit->createWindow(
|
||||
awt::WindowDescriptor(
|
||||
awt::WindowClass_SIMPLE,
|
||||
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Throbber")),
|
||||
GetComponentInterface(), 0,
|
||||
awt::Rectangle(
|
||||
pos.X(), pos.Y(), size.Width(), size.Height()),
|
||||
awt::WindowAttribute::SHOW)),
|
||||
uno::UNO_QUERY_THROW);
|
||||
}
|
||||
catch (uno::RuntimeException &)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
catch (Exception& )
|
||||
{
|
||||
}
|
||||
|
||||
uno::Reference< awt::XWindow > xThrobberWin( m_xThrobber, uno::UNO_QUERY );
|
||||
if ( xThrobberWin.is() )
|
||||
xThrobberWin->setVisible( false );
|
||||
|
||||
Size aTPSize(TP_WIDTH, TP_HEIGHT);
|
||||
SetPageSizePixel(LogicToPixel(aTPSize, MAP_APPFONT));
|
||||
|
||||
@ -352,7 +302,7 @@ TabPage* FirstStartWizard::createPage(WizardState _nState)
|
||||
pTabPage = new LicensePage(this, WizardResId(TP_LICENSE), m_aLicensePath);
|
||||
break;
|
||||
case STATE_MIGRATION:
|
||||
pTabPage = new MigrationPage(this, WizardResId(TP_MIGRATION), m_xThrobber );
|
||||
pTabPage = new MigrationPage(this, WizardResId(TP_MIGRATION), m_aThrobber);
|
||||
break;
|
||||
case STATE_USER:
|
||||
pTabPage = new UserPage(this, WizardResId(TP_USER));
|
||||
|
@ -79,6 +79,7 @@
|
||||
#define ED_USER_FATHER 18
|
||||
#define ED_USER_INITIALS 19
|
||||
#define TR_WAITING 20
|
||||
#define CTRL_THROBBER 21
|
||||
|
||||
// global strings
|
||||
#define STR_STATE_WELCOME RID_FIRSTSTSTART_START+100
|
||||
|
@ -30,9 +30,8 @@
|
||||
|
||||
#include <rtl/ustring.hxx>
|
||||
#include <svtools/roadmapwizard.hxx>
|
||||
#include <vcl/window.hxx>
|
||||
#include <vcl/throbber.hxx>
|
||||
#include <tools/resid.hxx>
|
||||
#include <com/sun/star/awt/XThrobber.hpp>
|
||||
|
||||
namespace desktop
|
||||
{
|
||||
@ -76,7 +75,7 @@ private:
|
||||
sal_Bool m_bLicenseWasAccepted;
|
||||
sal_Bool m_bAutomaticUpdChk;
|
||||
Link m_lnkCancel;
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::awt::XThrobber > m_xThrobber;
|
||||
Throbber m_aThrobber;
|
||||
|
||||
rtl::OUString m_aLicensePath;
|
||||
|
||||
|
@ -42,6 +42,13 @@ ModalDialog DLG_FIRSTSTART_WIZARD
|
||||
Closeable = TRUE ;
|
||||
Hide = TRUE;
|
||||
HelpID = HID_FIRSTSTART_DIALOG;
|
||||
|
||||
FixedImage CTRL_THROBBER
|
||||
{
|
||||
Pos = MAP_APPFONT( 5, 210 );
|
||||
Size = MAP_APPFONT( 11, 11 );
|
||||
Hide = TRUE;
|
||||
};
|
||||
};
|
||||
|
||||
String STR_STATE_WELCOME
|
||||
|
@ -1379,6 +1379,7 @@ namespace drawinglayer
|
||||
{
|
||||
// need to handle PolyPolygonHatchPrimitive2D here to support XPATHFILL_SEQ_BEGIN/XPATHFILL_SEQ_END
|
||||
const primitive2d::PolyPolygonHatchPrimitive2D& rHatchCandidate = static_cast< const primitive2d::PolyPolygonHatchPrimitive2D& >(rCandidate);
|
||||
const attribute::FillHatchAttribute& rFillHatchAttribute = rHatchCandidate.getFillHatch();
|
||||
basegfx::B2DPolyPolygon aLocalPolyPolygon(rHatchCandidate.getB2DPolyPolygon());
|
||||
|
||||
// #i112245# Metafiles use tools Polygon and are not able to have more than 65535 points
|
||||
@ -1386,8 +1387,20 @@ namespace drawinglayer
|
||||
while(fillPolyPolygonNeededToBeSplit(aLocalPolyPolygon))
|
||||
;
|
||||
|
||||
if(rFillHatchAttribute.isFillBackground())
|
||||
{
|
||||
// with fixing #i111954# (see below) the possible background
|
||||
// fill of a hatched object was lost.Generate a background fill
|
||||
// primitive and render it
|
||||
const primitive2d::Primitive2DReference xBackground(
|
||||
new primitive2d::PolyPolygonColorPrimitive2D(
|
||||
aLocalPolyPolygon,
|
||||
rHatchCandidate.getBackgroundColor()));
|
||||
|
||||
process(primitive2d::Primitive2DSequence(&xBackground, 1));
|
||||
}
|
||||
|
||||
SvtGraphicFill* pSvtGraphicFill = 0;
|
||||
const attribute::FillHatchAttribute& rFillHatchAttribute = rHatchCandidate.getFillHatch();
|
||||
aLocalPolyPolygon.transform(maCurrentTransformation);
|
||||
|
||||
if(!mnSvtGraphicFillCount && aLocalPolyPolygon.count())
|
||||
|
@ -33,7 +33,6 @@ class EditView;
|
||||
class OutputDevice;
|
||||
class EditUndo;
|
||||
class SvxFont;
|
||||
class SfxUndoManager;
|
||||
class SfxItemPool;
|
||||
class SfxStyleSheet;
|
||||
class String;
|
||||
@ -83,6 +82,9 @@ namespace svx{
|
||||
struct SpellPortion;
|
||||
typedef std::vector<SpellPortion> SpellPortions;
|
||||
}
|
||||
namespace svl{
|
||||
class IUndoManager;
|
||||
}
|
||||
|
||||
namespace basegfx { class B2DPolyPolygon; }
|
||||
#include <rsc/rscsfx.hxx>
|
||||
@ -268,10 +270,11 @@ public:
|
||||
void ShowParagraph( sal_uInt16 nParagraph, sal_Bool bShow = sal_True );
|
||||
sal_Bool IsParagraphVisible( sal_uInt16 nParagraph );
|
||||
|
||||
SfxUndoManager& GetUndoManager();
|
||||
::svl::IUndoManager&
|
||||
GetUndoManager();
|
||||
void UndoActionStart( sal_uInt16 nId );
|
||||
void UndoActionEnd( sal_uInt16 nId );
|
||||
sal_Bool IsInUndo();
|
||||
sal_Bool IsInUndo();
|
||||
|
||||
void EnableUndo( sal_Bool bEnable );
|
||||
sal_Bool IsUndoEnabled();
|
||||
|
@ -33,7 +33,7 @@
|
||||
|
||||
class ImpEditEngine;
|
||||
|
||||
class EDITENG_DLLPUBLIC EditUndoManager : public SfxUndoManager
|
||||
class EDITENG_DLLPRIVATE EditUndoManager : public SfxUndoManager
|
||||
{
|
||||
using SfxUndoManager::Undo;
|
||||
using SfxUndoManager::Redo;
|
||||
@ -43,8 +43,8 @@ private:
|
||||
public:
|
||||
EditUndoManager( ImpEditEngine* pImpEE );
|
||||
|
||||
virtual sal_Bool Undo( sal_uInt16 nCount=1 );
|
||||
virtual sal_Bool Redo( sal_uInt16 nCount=1 );
|
||||
virtual sal_Bool Undo();
|
||||
virtual sal_Bool Redo();
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
@ -74,10 +74,15 @@ class SfxItemSet;
|
||||
class SvxNumBulletItem;
|
||||
class SvxNumberFormat;
|
||||
class SvxLRSpaceItem;
|
||||
class SfxUndoManager;
|
||||
class EditEngine;
|
||||
class SvKeyValueIterator;
|
||||
class SvxForbiddenCharactersTable;
|
||||
|
||||
namespace svl
|
||||
{
|
||||
class IUndoManager;
|
||||
}
|
||||
|
||||
#include <com/sun/star/uno/Reference.h>
|
||||
|
||||
#include <vos/ref.hxx>
|
||||
@ -938,7 +943,8 @@ public:
|
||||
// nFormat muss ein Wert aus dem enum EETextFormat sein (wg.CLOOKS)
|
||||
sal_uLong Read( SvStream& rInput, const String& rBaseURL, sal_uInt16, SvKeyValueIterator* pHTTPHeaderAttrs = NULL );
|
||||
|
||||
SfxUndoManager& GetUndoManager();
|
||||
::svl::IUndoManager&
|
||||
GetUndoManager();
|
||||
|
||||
void QuickSetAttribs( const SfxItemSet& rSet, const ESelection& rSel );
|
||||
void QuickInsertField( const SvxFieldItem& rFld, const ESelection& rSel );
|
||||
|
@ -145,7 +145,7 @@ sal_Bool EditEngine::IsInUndo()
|
||||
return pImpEditEngine->IsInUndo();
|
||||
}
|
||||
|
||||
SfxUndoManager& EditEngine::GetUndoManager()
|
||||
::svl::IUndoManager& EditEngine::GetUndoManager()
|
||||
{
|
||||
DBG_CHKTHIS( EditEngine, 0 );
|
||||
return pImpEditEngine->GetUndoManager();
|
||||
|
@ -74,7 +74,7 @@ EditUndoManager::EditUndoManager( ImpEditEngine* p )
|
||||
pImpEE = p;
|
||||
}
|
||||
|
||||
sal_Bool __EXPORT EditUndoManager::Undo( sal_uInt16 nCount )
|
||||
sal_Bool __EXPORT EditUndoManager::Undo()
|
||||
{
|
||||
if ( GetUndoActionCount() == 0 )
|
||||
return sal_False;
|
||||
@ -95,7 +95,7 @@ sal_Bool __EXPORT EditUndoManager::Undo( sal_uInt16 nCount )
|
||||
pImpEE->GetActiveView()->GetImpEditView()->DrawSelection(); // alte Selektion entfernen
|
||||
|
||||
pImpEE->SetUndoMode( sal_True );
|
||||
sal_Bool bDone = SfxUndoManager::Undo( nCount );
|
||||
sal_Bool bDone = SfxUndoManager::Undo();
|
||||
pImpEE->SetUndoMode( sal_False );
|
||||
|
||||
EditSelection aNewSel( pImpEE->GetActiveView()->GetImpEditView()->GetEditSelection() );
|
||||
@ -109,7 +109,7 @@ sal_Bool __EXPORT EditUndoManager::Undo( sal_uInt16 nCount )
|
||||
return bDone;
|
||||
}
|
||||
|
||||
sal_Bool __EXPORT EditUndoManager::Redo( sal_uInt16 nCount )
|
||||
sal_Bool __EXPORT EditUndoManager::Redo()
|
||||
{
|
||||
if ( GetRedoActionCount() == 0 )
|
||||
return sal_False;
|
||||
@ -130,7 +130,7 @@ sal_Bool __EXPORT EditUndoManager::Redo( sal_uInt16 nCount )
|
||||
pImpEE->GetActiveView()->GetImpEditView()->DrawSelection(); // alte Selektion entfernen
|
||||
|
||||
pImpEE->SetUndoMode( sal_True );
|
||||
sal_Bool bDone = SfxUndoManager::Redo( nCount );
|
||||
sal_Bool bDone = SfxUndoManager::Redo();
|
||||
pImpEE->SetUndoMode( sal_False );
|
||||
|
||||
EditSelection aNewSel( pImpEE->GetActiveView()->GetImpEditView()->GetEditSelection() );
|
||||
|
@ -310,7 +310,7 @@ sal_Bool ImpEditEngine::Undo( EditView* pView )
|
||||
if ( HasUndoManager() && GetUndoManager().GetUndoActionCount() )
|
||||
{
|
||||
SetActiveView( pView );
|
||||
GetUndoManager().Undo( 1 );
|
||||
GetUndoManager().Undo();
|
||||
return sal_True;
|
||||
}
|
||||
return sal_False;
|
||||
@ -321,7 +321,7 @@ sal_Bool ImpEditEngine::Redo( EditView* pView )
|
||||
if ( HasUndoManager() && GetUndoManager().GetRedoActionCount() )
|
||||
{
|
||||
SetActiveView( pView );
|
||||
GetUndoManager().Redo( 0 );
|
||||
GetUndoManager().Redo();
|
||||
return sal_True;
|
||||
}
|
||||
return sal_False;
|
||||
|
@ -1227,7 +1227,7 @@ void Outliner::ImpFilterIndents( sal_uLong nFirstPara, sal_uLong nLastPara )
|
||||
pEditEngine->SetUpdateMode( bUpdate );
|
||||
}
|
||||
|
||||
SfxUndoManager& Outliner::GetUndoManager()
|
||||
::svl::IUndoManager& Outliner::GetUndoManager()
|
||||
{
|
||||
DBG_CHKTHIS(Outliner,0);
|
||||
return pEditEngine->GetUndoManager();
|
||||
|
@ -235,7 +235,10 @@ void OCommonEmbeddedObject::SwitchStateTo_Impl( sal_Int32 nNextState )
|
||||
if ( nNextState == embed::EmbedStates::INPLACE_ACTIVE )
|
||||
{
|
||||
if ( !m_xClientSite.is() )
|
||||
throw embed::WrongStateException(); //TODO: client site is not set!
|
||||
throw embed::WrongStateException(
|
||||
::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "client site not set, yet" ) ),
|
||||
*this
|
||||
);
|
||||
|
||||
uno::Reference< embed::XInplaceClient > xInplaceClient( m_xClientSite, uno::UNO_QUERY );
|
||||
if ( xInplaceClient.is() && xInplaceClient->canInplaceActivate() )
|
||||
|
@ -77,6 +77,8 @@ $(eval $(call gb_Library_add_exception_objects,fwe,\
|
||||
framework/source/fwe/helper/imageproducer \
|
||||
framework/source/fwe/helper/propertysetcontainer \
|
||||
framework/source/fwe/helper/titlehelper \
|
||||
framework/source/fwe/helper/documentundoguard \
|
||||
framework/source/fwe/helper/undomanagerhelper \
|
||||
framework/source/fwe/helper/uiconfigelementwrapperbase \
|
||||
framework/source/fwe/helper/uielementwrapperbase \
|
||||
framework/source/fwe/interaction/preventduplicateinteraction \
|
||||
|
@ -34,6 +34,10 @@ $(eval $(call gb_Package_add_file,framework_inc,inc/framework/bmkmenu.hxx,framew
|
||||
$(eval $(call gb_Package_add_file,framework_inc,inc/framework/configimporter.hxx,framework/configimporter.hxx))
|
||||
$(eval $(call gb_Package_add_file,framework_inc,inc/framework/eventsconfiguration.hxx,framework/eventsconfiguration.hxx))
|
||||
$(eval $(call gb_Package_add_file,framework_inc,inc/framework/framelistanalyzer.hxx,framework/framelistanalyzer.hxx))
|
||||
$(eval $(call gb_Package_add_file,framework_inc,inc/framework/documentundoguard.hxx,framework/documentundoguard.hxx))
|
||||
$(eval $(call gb_Package_add_file,framework_inc,inc/framework/undomanagerhelper.hxx,framework/undomanagerhelper.hxx))
|
||||
$(eval $(call gb_Package_add_file,framework_inc,inc/framework/imutex.hxx,framework/imutex.hxx))
|
||||
$(eval $(call gb_Package_add_file,framework_inc,inc/framework/iguard.hxx,framework/iguard.hxx))
|
||||
$(eval $(call gb_Package_add_file,framework_inc,inc/framework/imageproducer.hxx,framework/imageproducer.hxx))
|
||||
$(eval $(call gb_Package_add_file,framework_inc,inc/framework/imagesconfiguration.hxx,framework/imagesconfiguration.hxx))
|
||||
$(eval $(call gb_Package_add_file,framework_inc,inc/framework/interaction.hxx,framework/interaction.hxx))
|
||||
|
70
framework/inc/framework/documentundoguard.hxx
Executable file
70
framework/inc/framework/documentundoguard.hxx
Executable file
@ -0,0 +1,70 @@
|
||||
/*************************************************************************
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
||||
*
|
||||
* OpenOffice.org - a multi-platform office productivity suite
|
||||
*
|
||||
* This file is part of OpenOffice.org.
|
||||
*
|
||||
* OpenOffice.org is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License version 3
|
||||
* only, as published by the Free Software Foundation.
|
||||
*
|
||||
* OpenOffice.org is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License version 3 for more details
|
||||
* (a copy is included in the LICENSE file that accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* version 3 along with OpenOffice.org. If not, see
|
||||
* <http://www.openoffice.org/license.html>
|
||||
* for a copy of the LGPLv3 License.
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#ifndef FRAMEWORK_DOCUMENTUNDOGUARD_HXX
|
||||
#define FRAMEWORK_DOCUMENTUNDOGUARD_HXX
|
||||
|
||||
#include "framework/fwedllapi.h"
|
||||
|
||||
/** === begin UNO includes === **/
|
||||
#include <com/sun/star/uno/XInterface.hpp>
|
||||
/** === end UNO includes === **/
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
//......................................................................................................................
|
||||
namespace framework
|
||||
{
|
||||
//......................................................................................................................
|
||||
|
||||
//==================================================================================================================
|
||||
//= DocumentUndoGuard
|
||||
//==================================================================================================================
|
||||
struct DocumentUndoGuard_Data;
|
||||
/** a helper class guarding the Undo manager of a document
|
||||
|
||||
This class guards, within a given scope, the Undo Manager of a document (or another component supporting
|
||||
the XUndoManagerSupplier interface). When entering the scope (i.e. when the <code>DocumentUndoGuard</code>
|
||||
instances is constructed), the current state of the undo contexts of the undo manager is examined.
|
||||
Upon leaving the scope (i.e. when the <code>DocumentUndoGuard</code> is destructed), the guard will execute
|
||||
as many calls to <member scope="com::sun::star::document">XUndoManager::leaveUndoContext</member> as are
|
||||
necessary to restore the manager's initial state.
|
||||
*/
|
||||
class FWE_DLLPUBLIC DocumentUndoGuard
|
||||
{
|
||||
public:
|
||||
DocumentUndoGuard( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& i_undoSupplierComponent );
|
||||
~DocumentUndoGuard();
|
||||
|
||||
private:
|
||||
::boost::scoped_ptr< DocumentUndoGuard_Data > m_pData;
|
||||
};
|
||||
|
||||
//......................................................................................................................
|
||||
} // namespace framework
|
||||
//......................................................................................................................
|
||||
|
||||
#endif // FRAMEWORK_DOCUMENTUNDOGUARD_HXX
|
69
framework/inc/framework/iguard.hxx
Executable file
69
framework/inc/framework/iguard.hxx
Executable file
@ -0,0 +1,69 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
||||
*
|
||||
* OpenOffice.org - a multi-platform office productivity suite
|
||||
*
|
||||
* This file is part of OpenOffice.org.
|
||||
*
|
||||
* OpenOffice.org is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License version 3
|
||||
* only, as published by the Free Software Foundation.
|
||||
*
|
||||
* OpenOffice.org is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License version 3 for more details
|
||||
* (a copy is included in the LICENSE file that accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* version 3 along with OpenOffice.org. If not, see
|
||||
* <http://www.openoffice.org/license.html>
|
||||
* for a copy of the LGPLv3 License.
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#ifndef __FRAMEWORK_THREADHELP_IGUARD_H_
|
||||
#define __FRAMEWORK_THREADHELP_IGUARD_H_
|
||||
|
||||
//_________________________________________________________________________________________________________________
|
||||
// includes
|
||||
//_________________________________________________________________________________________________________________
|
||||
|
||||
#include <sal/types.h>
|
||||
|
||||
//_________________________________________________________________________________________________________________
|
||||
// namespace
|
||||
//_________________________________________________________________________________________________________________
|
||||
|
||||
namespace framework{
|
||||
|
||||
//_________________________________________________________________________________________________________________
|
||||
// declarations
|
||||
//_________________________________________________________________________________________________________________
|
||||
|
||||
/*-************************************************************************************************************//**
|
||||
@descr interface for guarding a lock
|
||||
*//*-*************************************************************************************************************/
|
||||
class SAL_NO_VTABLE IGuard
|
||||
{
|
||||
//-------------------------------------------------------------------------------------------------------------
|
||||
// public methods
|
||||
//-------------------------------------------------------------------------------------------------------------
|
||||
public:
|
||||
|
||||
/** clears the lock. If the guard does not currently hold the lock, nothing happens.
|
||||
*/
|
||||
virtual void clear() = 0;
|
||||
|
||||
/** attempts to re-establishes the lock, blocking until the attempt is successful.
|
||||
*/
|
||||
virtual void reset() = 0;
|
||||
|
||||
}; // class IGuard
|
||||
|
||||
} // namespace framework
|
||||
|
||||
#endif // #ifndef __FRAMEWORK_THREADHELP_IGUARD_H_
|
@ -32,6 +32,8 @@
|
||||
// includes
|
||||
//_________________________________________________________________________________________________________________
|
||||
|
||||
#include <sal/types.h>
|
||||
|
||||
//_________________________________________________________________________________________________________________
|
||||
// namespace
|
||||
//_________________________________________________________________________________________________________________
|
||||
@ -45,7 +47,7 @@ namespace framework{
|
||||
/*-************************************************************************************************************//**
|
||||
@descr We need this interface to support using of different mutex implementations in a generic way.
|
||||
*//*-*************************************************************************************************************/
|
||||
class IMutex
|
||||
class SAL_NO_VTABLE IMutex
|
||||
{
|
||||
//-------------------------------------------------------------------------------------------------------------
|
||||
// public methods
|
160
framework/inc/framework/undomanagerhelper.hxx
Executable file
160
framework/inc/framework/undomanagerhelper.hxx
Executable file
@ -0,0 +1,160 @@
|
||||
/*************************************************************************
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
||||
*
|
||||
* OpenOffice.org - a multi-platform office productivity suite
|
||||
*
|
||||
* This file is part of OpenOffice.org.
|
||||
*
|
||||
* OpenOffice.org is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License version 3
|
||||
* only, as published by the Free Software Foundation.
|
||||
*
|
||||
* OpenOffice.org is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License version 3 for more details
|
||||
* (a copy is included in the LICENSE file that accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* version 3 along with OpenOffice.org. If not, see
|
||||
* <http://www.openoffice.org/license.html>
|
||||
* for a copy of the LGPLv3 License.
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#ifndef FRAMEWORK_UNDOMANAGERHELPER_HXX
|
||||
#define FRAMEWORK_UNDOMANAGERHELPER_HXX
|
||||
|
||||
#include "framework/fwedllapi.h"
|
||||
#include "framework/iguard.hxx"
|
||||
#include "framework/imutex.hxx"
|
||||
|
||||
/** === begin UNO includes === **/
|
||||
#include <com/sun/star/document/XUndoManager.hpp>
|
||||
#include <com/sun/star/util/XModifyListener.hpp>
|
||||
/** === end UNO includes === **/
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
namespace svl
|
||||
{
|
||||
class IUndoManager;
|
||||
}
|
||||
|
||||
//......................................................................................................................
|
||||
namespace framework
|
||||
{
|
||||
//......................................................................................................................
|
||||
|
||||
//==================================================================================================================
|
||||
//= IMutexGuard
|
||||
//==================================================================================================================
|
||||
class SAL_NO_VTABLE IMutexGuard : public IGuard
|
||||
{
|
||||
public:
|
||||
/** returns the mutex guarded by the instance.
|
||||
|
||||
Even if the guard currently has not a lock on the mutex, this method must succeed.
|
||||
*/
|
||||
virtual IMutex& getGuardedMutex() = 0;
|
||||
};
|
||||
|
||||
//==================================================================================================================
|
||||
//= IUndoManagerImplementation
|
||||
//==================================================================================================================
|
||||
class SAL_NO_VTABLE IUndoManagerImplementation
|
||||
{
|
||||
public:
|
||||
/** returns the IUndoManager interface to the actual Undo stack
|
||||
|
||||
@throws com::sun::star::lang::DisposedException
|
||||
when the instance is already disposed, and no IUndoManager can be provided
|
||||
|
||||
@throws com::sun::star::lang::NotInitializedException
|
||||
when the instance is not initialized, yet, and no IUndoManager can be provided
|
||||
*/
|
||||
virtual ::svl::IUndoManager& getImplUndoManager() = 0;
|
||||
|
||||
/** provides access to an UNO interface for the XUndoManager implementation. Used when throwing exceptions.
|
||||
*/
|
||||
virtual ::com::sun::star::uno::Reference< ::com::sun::star::document::XUndoManager >
|
||||
getThis() = 0;
|
||||
};
|
||||
|
||||
//==================================================================================================================
|
||||
//= UndoManagerHelper
|
||||
//==================================================================================================================
|
||||
class UndoManagerHelper_Impl;
|
||||
/** helper class for implementing an XUndoManager
|
||||
|
||||
Several of the methods of the class take an IMutexGuard instance. It is assumed that this guard has a lock on
|
||||
its mutext at the moment the method is entered. The lock will be released before any notifications to the
|
||||
registered XUndoManagerListeners happen.
|
||||
|
||||
The following locking strategy is used for this mutex:
|
||||
<ul><li>Any notifications to the registered XUndoManagerListeners are after the guard has been cleared. i.e.
|
||||
without the mutex being locked.</p>
|
||||
<li>Any calls into the <code>IUndoManager</code> implementation is made without the mutex being locked.
|
||||
Note that this implies that the <code>IUndoManager</code> implementation must be thread-safe in itself
|
||||
(which is true for the default implementation, SfxUndoManager).</li>
|
||||
<li>An exception to the previous item are the <member>IUndoManager::Undo</member> and
|
||||
<member>IUndoManager::Redo</member> methods: They're called with the given external mutex being
|
||||
locked.</li>
|
||||
</ul>
|
||||
|
||||
The reason for the exception for IUndoManager::Undo and IUndoManager::Redo is that those are expected to
|
||||
modify the actual document which the UndoManager works for. And as long as our documents are not thread-safe,
|
||||
and as long as we do not re-fit <strong>all</strong> existing SfxUndoImplementations to <em>not</em> expect
|
||||
the dreaded SolarMutex being locked when they're called, the above behavior is a compromise between "how it should
|
||||
be" and "how it can realistically be".
|
||||
*/
|
||||
class FWE_DLLPUBLIC UndoManagerHelper
|
||||
{
|
||||
public:
|
||||
UndoManagerHelper( IUndoManagerImplementation& i_undoManagerImpl );
|
||||
~UndoManagerHelper();
|
||||
|
||||
// life time control
|
||||
void disposing();
|
||||
|
||||
// XUndoManager equivalents
|
||||
void enterUndoContext( const ::rtl::OUString& i_title, IMutexGuard& i_instanceLock );
|
||||
void enterHiddenUndoContext( IMutexGuard& i_instanceLock );
|
||||
void leaveUndoContext( IMutexGuard& i_instanceLock );
|
||||
void addUndoAction( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XUndoAction >& i_action, IMutexGuard& i_instanceLock );
|
||||
void undo( IMutexGuard& i_instanceLock );
|
||||
void redo( IMutexGuard& i_instanceLock );
|
||||
::sal_Bool isUndoPossible() const;
|
||||
::sal_Bool isRedoPossible() const;
|
||||
::rtl::OUString getCurrentUndoActionTitle() const;
|
||||
::rtl::OUString getCurrentRedoActionTitle() const;
|
||||
::com::sun::star::uno::Sequence< ::rtl::OUString >
|
||||
getAllUndoActionTitles() const;
|
||||
::com::sun::star::uno::Sequence< ::rtl::OUString >
|
||||
getAllRedoActionTitles() const;
|
||||
void clear( IMutexGuard& i_instanceLock );
|
||||
void clearRedo( IMutexGuard& i_instanceLock );
|
||||
void reset( IMutexGuard& i_instanceLock );
|
||||
void addUndoManagerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XUndoManagerListener >& i_listener );
|
||||
void removeUndoManagerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XUndoManagerListener >& i_listener );
|
||||
|
||||
// XLockable, base of XUndoManager, equivalents
|
||||
void lock();
|
||||
void unlock();
|
||||
::sal_Bool isLocked();
|
||||
|
||||
// XModifyBroadcaster equivalents
|
||||
void addModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& i_listener );
|
||||
void removeModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& i_listener );
|
||||
|
||||
private:
|
||||
::boost::scoped_ptr< UndoManagerHelper_Impl > m_pImpl;
|
||||
};
|
||||
|
||||
//......................................................................................................................
|
||||
} // namespace framework
|
||||
//......................................................................................................................
|
||||
|
||||
#endif // FRAMEWORK_UNDOMANAGERHELPER_HXX
|
@ -33,7 +33,7 @@
|
||||
//_________________________________________________________________________________________________________________
|
||||
|
||||
#include <threadhelp/inoncopyable.h>
|
||||
#include <threadhelp/imutex.h>
|
||||
#include <framework/imutex.hxx>
|
||||
#include <threadhelp/irwlock.h>
|
||||
#include <threadhelp/fairrwlock.hxx>
|
||||
|
||||
|
@ -33,7 +33,7 @@
|
||||
//_________________________________________________________________________________________________________________
|
||||
|
||||
#include <threadhelp/inoncopyable.h>
|
||||
#include <threadhelp/imutex.h>
|
||||
#include <framework/imutex.hxx>
|
||||
|
||||
//#ifndef __FRAMEWORK_THREADHELP_THREADHELPBASE_HXX_
|
||||
//#include <threadhelp/threadhelpbase.hxx>
|
||||
|
271
framework/source/fwe/helper/documentundoguard.cxx
Executable file
271
framework/source/fwe/helper/documentundoguard.cxx
Executable file
@ -0,0 +1,271 @@
|
||||
/*************************************************************************
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
||||
*
|
||||
* OpenOffice.org - a multi-platform office productivity suite
|
||||
*
|
||||
* This file is part of OpenOffice.org.
|
||||
*
|
||||
* OpenOffice.org is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License version 3
|
||||
* only, as published by the Free Software Foundation.
|
||||
*
|
||||
* OpenOffice.org is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License version 3 for more details
|
||||
* (a copy is included in the LICENSE file that accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* version 3 along with OpenOffice.org. If not, see
|
||||
* <http://www.openoffice.org/license.html>
|
||||
* for a copy of the LGPLv3 License.
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#include "precompiled_framework.hxx"
|
||||
|
||||
#include "framework/documentundoguard.hxx"
|
||||
|
||||
/** === begin UNO includes === **/
|
||||
#include <com/sun/star/document/XUndoManagerSupplier.hpp>
|
||||
/** === end UNO includes === **/
|
||||
|
||||
#include <cppuhelper/implbase1.hxx>
|
||||
#include <rtl/ref.hxx>
|
||||
#include <tools/diagnose_ex.h>
|
||||
|
||||
//......................................................................................................................
|
||||
namespace framework
|
||||
{
|
||||
//......................................................................................................................
|
||||
|
||||
/** === begin UNO using === **/
|
||||
using ::com::sun::star::uno::Reference;
|
||||
using ::com::sun::star::uno::XInterface;
|
||||
using ::com::sun::star::uno::UNO_QUERY;
|
||||
using ::com::sun::star::uno::UNO_QUERY_THROW;
|
||||
using ::com::sun::star::uno::Exception;
|
||||
using ::com::sun::star::uno::RuntimeException;
|
||||
using ::com::sun::star::uno::Any;
|
||||
using ::com::sun::star::uno::makeAny;
|
||||
using ::com::sun::star::uno::Sequence;
|
||||
using ::com::sun::star::uno::Type;
|
||||
using ::com::sun::star::document::XUndoManagerSupplier;
|
||||
using ::com::sun::star::document::XUndoManager;
|
||||
using ::com::sun::star::document::XUndoManagerListener;
|
||||
using ::com::sun::star::document::UndoManagerEvent;
|
||||
using ::com::sun::star::lang::EventObject;
|
||||
/** === end UNO using === **/
|
||||
|
||||
//==================================================================================================================
|
||||
//= UndoManagerContextListener
|
||||
//==================================================================================================================
|
||||
typedef ::cppu::WeakImplHelper1 < XUndoManagerListener
|
||||
> UndoManagerContextListener_Base;
|
||||
class UndoManagerContextListener : public UndoManagerContextListener_Base
|
||||
{
|
||||
public:
|
||||
UndoManagerContextListener( const Reference< XUndoManager >& i_undoManager )
|
||||
:m_xUndoManager( i_undoManager, UNO_QUERY_THROW )
|
||||
,m_nRelativeContextDepth( 0 )
|
||||
,m_documentDisposed( false )
|
||||
{
|
||||
osl_incrementInterlockedCount( &m_refCount );
|
||||
{
|
||||
m_xUndoManager->addUndoManagerListener( this );
|
||||
}
|
||||
osl_decrementInterlockedCount( &m_refCount );
|
||||
}
|
||||
|
||||
UndoManagerContextListener()
|
||||
{
|
||||
}
|
||||
|
||||
void finish()
|
||||
{
|
||||
OSL_ENSURE( m_nRelativeContextDepth >= 0, "UndoManagerContextListener: more contexts left than entered?" );
|
||||
|
||||
if ( m_documentDisposed )
|
||||
return;
|
||||
|
||||
// work with a copy of m_nRelativeContextDepth, to be independent from possible bugs in the
|
||||
// listener notifications (where it would be decremented with every leaveUndoContext)
|
||||
sal_Int32 nDepth = m_nRelativeContextDepth;
|
||||
while ( nDepth-- > 0 )
|
||||
{
|
||||
m_xUndoManager->leaveUndoContext();
|
||||
}
|
||||
m_xUndoManager->removeUndoManagerListener( this );
|
||||
}
|
||||
|
||||
// XUndoManagerListener
|
||||
virtual void SAL_CALL undoActionAdded( const UndoManagerEvent& i_event ) throw (RuntimeException);
|
||||
virtual void SAL_CALL actionUndone( const UndoManagerEvent& i_event ) throw (RuntimeException);
|
||||
virtual void SAL_CALL actionRedone( const UndoManagerEvent& i_event ) throw (RuntimeException);
|
||||
virtual void SAL_CALL allActionsCleared( const EventObject& i_event ) throw (RuntimeException);
|
||||
virtual void SAL_CALL redoActionsCleared( const EventObject& i_event ) throw (RuntimeException);
|
||||
virtual void SAL_CALL resetAll( const EventObject& i_event ) throw (RuntimeException);
|
||||
virtual void SAL_CALL enteredContext( const UndoManagerEvent& i_event ) throw (RuntimeException);
|
||||
virtual void SAL_CALL enteredHiddenContext( const UndoManagerEvent& i_event ) throw (RuntimeException);
|
||||
virtual void SAL_CALL leftContext( const UndoManagerEvent& i_event ) throw (RuntimeException);
|
||||
virtual void SAL_CALL leftHiddenContext( const UndoManagerEvent& i_event ) throw (RuntimeException);
|
||||
virtual void SAL_CALL cancelledContext( const UndoManagerEvent& i_event ) throw (RuntimeException);
|
||||
|
||||
// XEventListener
|
||||
virtual void SAL_CALL disposing( const EventObject& i_event ) throw (RuntimeException);
|
||||
|
||||
private:
|
||||
Reference< XUndoManager > const m_xUndoManager;
|
||||
oslInterlockedCount m_nRelativeContextDepth;
|
||||
bool m_documentDisposed;
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
void SAL_CALL UndoManagerContextListener::undoActionAdded( const UndoManagerEvent& i_event ) throw (RuntimeException)
|
||||
{
|
||||
(void)i_event;
|
||||
// not interested in
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
void SAL_CALL UndoManagerContextListener::actionUndone( const UndoManagerEvent& i_event ) throw (RuntimeException)
|
||||
{
|
||||
(void)i_event;
|
||||
// not interested in
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
void SAL_CALL UndoManagerContextListener::actionRedone( const UndoManagerEvent& i_event ) throw (RuntimeException)
|
||||
{
|
||||
(void)i_event;
|
||||
// not interested in
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
void SAL_CALL UndoManagerContextListener::allActionsCleared( const EventObject& i_event ) throw (RuntimeException)
|
||||
{
|
||||
(void)i_event;
|
||||
// not interested in
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
void SAL_CALL UndoManagerContextListener::redoActionsCleared( const EventObject& i_event ) throw (RuntimeException)
|
||||
{
|
||||
(void)i_event;
|
||||
// not interested in
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
void SAL_CALL UndoManagerContextListener::resetAll( const EventObject& i_event ) throw (RuntimeException)
|
||||
{
|
||||
(void)i_event;
|
||||
m_nRelativeContextDepth = 0;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
void SAL_CALL UndoManagerContextListener::enteredContext( const UndoManagerEvent& i_event ) throw (RuntimeException)
|
||||
{
|
||||
(void)i_event;
|
||||
osl_incrementInterlockedCount( &m_nRelativeContextDepth );
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
void SAL_CALL UndoManagerContextListener::enteredHiddenContext( const UndoManagerEvent& i_event ) throw (RuntimeException)
|
||||
{
|
||||
(void)i_event;
|
||||
osl_incrementInterlockedCount( &m_nRelativeContextDepth );
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
void SAL_CALL UndoManagerContextListener::leftContext( const UndoManagerEvent& i_event ) throw (RuntimeException)
|
||||
{
|
||||
(void)i_event;
|
||||
osl_decrementInterlockedCount( &m_nRelativeContextDepth );
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
void SAL_CALL UndoManagerContextListener::leftHiddenContext( const UndoManagerEvent& i_event ) throw (RuntimeException)
|
||||
{
|
||||
(void)i_event;
|
||||
osl_decrementInterlockedCount( &m_nRelativeContextDepth );
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
void SAL_CALL UndoManagerContextListener::cancelledContext( const UndoManagerEvent& i_event ) throw (RuntimeException)
|
||||
{
|
||||
(void)i_event;
|
||||
osl_decrementInterlockedCount( &m_nRelativeContextDepth );
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
void SAL_CALL UndoManagerContextListener::disposing( const EventObject& i_event ) throw (RuntimeException)
|
||||
{
|
||||
(void)i_event;
|
||||
m_documentDisposed = true;
|
||||
}
|
||||
|
||||
//==================================================================================================================
|
||||
//= DocumentUndoGuard_Data
|
||||
//==================================================================================================================
|
||||
struct DocumentUndoGuard_Data
|
||||
{
|
||||
Reference< XUndoManager > xUndoManager;
|
||||
::rtl::Reference< UndoManagerContextListener > pContextListener;
|
||||
};
|
||||
|
||||
namespace
|
||||
{
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
void lcl_init( DocumentUndoGuard_Data& i_data, const Reference< XInterface >& i_undoSupplierComponent )
|
||||
{
|
||||
try
|
||||
{
|
||||
Reference< XUndoManagerSupplier > xUndoSupplier( i_undoSupplierComponent, UNO_QUERY );
|
||||
if ( xUndoSupplier.is() )
|
||||
i_data.xUndoManager.set( xUndoSupplier->getUndoManager(), UNO_QUERY_THROW );
|
||||
|
||||
if ( i_data.xUndoManager.is() )
|
||||
i_data.pContextListener.set( new UndoManagerContextListener( i_data.xUndoManager ) );
|
||||
}
|
||||
catch( const Exception& )
|
||||
{
|
||||
DBG_UNHANDLED_EXCEPTION();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
void lcl_restore( DocumentUndoGuard_Data& i_data )
|
||||
{
|
||||
try
|
||||
{
|
||||
if ( i_data.pContextListener.is() )
|
||||
i_data.pContextListener->finish();
|
||||
i_data.pContextListener.clear();
|
||||
}
|
||||
catch( const Exception& )
|
||||
{
|
||||
DBG_UNHANDLED_EXCEPTION();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//==================================================================================================================
|
||||
//= DocumentUndoGuard
|
||||
//==================================================================================================================
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
DocumentUndoGuard::DocumentUndoGuard( const Reference< XInterface >& i_undoSupplierComponent )
|
||||
:m_pData( new DocumentUndoGuard_Data )
|
||||
{
|
||||
lcl_init( *m_pData, i_undoSupplierComponent );
|
||||
}
|
||||
|
||||
DocumentUndoGuard::~DocumentUndoGuard()
|
||||
{
|
||||
lcl_restore( *m_pData );
|
||||
}
|
||||
|
||||
//......................................................................................................................
|
||||
} // namespace framework
|
||||
//......................................................................................................................
|
1165
framework/source/fwe/helper/undomanagerhelper.cxx
Executable file
1165
framework/source/fwe/helper/undomanagerhelper.cxx
Executable file
File diff suppressed because it is too large
Load Diff
@ -249,7 +249,10 @@ String GetWritableDictionaryURL( const String &rDicName )
|
||||
aURLObj.Append( rDicName, INetURLObject::ENCODE_ALL );
|
||||
DBG_ASSERT(!aURLObj.HasError(), "lng : invalid URL");
|
||||
|
||||
return aURLObj.GetMainURL( INetURLObject::DECODE_TO_IURI );
|
||||
// NO_DECODE preserves the escape sequences that might be included in aDirName
|
||||
// depending on the characters used in the path string. (Needed when comparing
|
||||
// the dictionary URL with GetDictionaryWriteablePath in DicList::createDictionary.)
|
||||
return aURLObj.GetMainURL( INetURLObject::NO_DECODE );
|
||||
}
|
||||
|
||||
|
||||
|
7
officecfg/registry/data/org/openoffice/Office/UI/MathCommands.xcu
Normal file → Executable file
7
officecfg/registry/data/org/openoffice/Office/UI/MathCommands.xcu
Normal file → Executable file
@ -42,9 +42,6 @@
|
||||
<prop oor:name="Label" oor:type="xs:string">
|
||||
<value xml:lang="en-US">~Import Formula...</value>
|
||||
</prop>
|
||||
<prop oor:name="Properties" oor:type="xs:int">
|
||||
<value>1</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name=".uno:FitInWindow" oor:op="replace">
|
||||
<prop oor:name="Label" oor:type="xs:string">
|
||||
@ -111,7 +108,7 @@
|
||||
</node>
|
||||
<node oor:name=".uno:View100" oor:op="replace">
|
||||
<prop oor:name="Label" oor:type="xs:string">
|
||||
<value xml:lang="en-US">1</value>
|
||||
<value xml:lang="en-US">Zoom 100%</value>
|
||||
</prop>
|
||||
<prop oor:name="Properties" oor:type="xs:int">
|
||||
<value>1</value>
|
||||
@ -119,7 +116,7 @@
|
||||
</node>
|
||||
<node oor:name=".uno:View200" oor:op="replace">
|
||||
<prop oor:name="Label" oor:type="xs:string">
|
||||
<value xml:lang="en-US">2</value>
|
||||
<value xml:lang="en-US">Zoom 200%</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name=".uno:ZoomIn" oor:op="replace">
|
||||
|
14
officecfg/registry/schema/org/openoffice/Office/Math.xcs
Normal file → Executable file
14
officecfg/registry/schema/org/openoffice/Office/Math.xcs
Normal file → Executable file
@ -316,6 +316,20 @@
|
||||
<value>100</value>
|
||||
</prop>
|
||||
</group>
|
||||
<group oor:name="LoadSave">
|
||||
<info>
|
||||
<desc>Contains settings related to load and save operations.</desc>
|
||||
</info>
|
||||
<prop oor:name="IsSaveOnlyUsedSymbols" oor:type="xs:boolean">
|
||||
<!-- UIHints: - Tools/Options - OpenOffice Maths - Settings -->
|
||||
<info>
|
||||
<author>TL</author>
|
||||
<desc>When set only symbols used in the current formula will be saved. Otherwise all user defined symbols will be saved in each formula.</desc>
|
||||
<label>Save only used symbols.</label>
|
||||
</info>
|
||||
<value>true</value>
|
||||
</prop>
|
||||
</group>
|
||||
<group oor:name="Misc">
|
||||
<info>
|
||||
<desc>Contains miscellaneous settings.</desc>
|
||||
|
@ -48,28 +48,5 @@
|
||||
<desc>Lists the registered Scripting Framework runtimes.</desc>
|
||||
</info>
|
||||
</set>
|
||||
<group oor:name="ScriptDisplaySettings">
|
||||
<info>
|
||||
<desc> Specifies display settings for assignment dialogs </desc>
|
||||
</info>
|
||||
<prop oor:name="ShowBasic" oor:type="xs:boolean">
|
||||
<info>
|
||||
<desc>Show Basic scripts in assignment dialogs</desc>
|
||||
</info>
|
||||
<value>false</value>
|
||||
</prop>
|
||||
<prop oor:name="ShowSF" oor:type="xs:boolean">
|
||||
<info>
|
||||
<desc>Show Scripting Framework scripts in assignment dialogs</desc>
|
||||
</info>
|
||||
<value>true</value>
|
||||
</prop>
|
||||
<prop oor:name="UseNewToolsConfigure" oor:type="xs:boolean">
|
||||
<info>
|
||||
<desc>Use New Tools Configure dialog</desc>
|
||||
</info>
|
||||
<value>true</value>
|
||||
</prop>
|
||||
</group>
|
||||
</component>
|
||||
</oor:component-schema>
|
||||
|
196
scripting/source/dlgprov/DialogModelProvider.cxx
Normal file
196
scripting/source/dlgprov/DialogModelProvider.cxx
Normal file
@ -0,0 +1,196 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
||||
*
|
||||
* OpenOffice.org - a multi-platform office productivity suite
|
||||
*
|
||||
* This file is part of OpenOffice.org.
|
||||
*
|
||||
* OpenOffice.org is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License version 3
|
||||
* only, as published by the Free Software Foundation.
|
||||
*
|
||||
* OpenOffice.org is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License version 3 for more details
|
||||
* (a copy is included in the LICENSE file that accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* version 3 along with OpenOffice.org. If not, see
|
||||
* <http://www.openoffice.org/license.html>
|
||||
* for a copy of the LGPLv3 License.
|
||||
*
|
||||
************************************************************************/
|
||||
// MARKER(update_precomp.py): autogen include statement, do not remove
|
||||
#include "precompiled_scripting.hxx"
|
||||
|
||||
#include "DialogModelProvider.hxx"
|
||||
#include "dlgprov.hxx"
|
||||
#include <com/sun/star/resource/XStringResourceManager.hpp>
|
||||
#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
|
||||
|
||||
|
||||
// component helper namespace
|
||||
namespace comp_DialogModelProvider {
|
||||
|
||||
namespace css = ::com::sun::star;
|
||||
using namespace ::com::sun::star;
|
||||
using namespace awt;
|
||||
using namespace lang;
|
||||
using namespace uno;
|
||||
using namespace script;
|
||||
using namespace beans;
|
||||
|
||||
|
||||
// component and service helper functions:
|
||||
::rtl::OUString SAL_CALL _getImplementationName();
|
||||
css::uno::Sequence< ::rtl::OUString > SAL_CALL _getSupportedServiceNames();
|
||||
css::uno::Reference< css::uno::XInterface > SAL_CALL _create( css::uno::Reference< css::uno::XComponentContext > const & context );
|
||||
|
||||
} // closing component helper namespace
|
||||
|
||||
|
||||
|
||||
/// anonymous implementation namespace
|
||||
namespace dlgprov {
|
||||
|
||||
namespace css = ::com::sun::star;
|
||||
using namespace ::com::sun::star;
|
||||
using namespace awt;
|
||||
using namespace lang;
|
||||
using namespace uno;
|
||||
using namespace script;
|
||||
using namespace beans;
|
||||
|
||||
|
||||
DialogModelProvider::DialogModelProvider(Reference< XComponentContext > const & context) :
|
||||
m_xContext(context)
|
||||
{}
|
||||
|
||||
// lang::XInitialization:
|
||||
void SAL_CALL DialogModelProvider::initialize(const css::uno::Sequence< uno::Any > & aArguments) throw (css::uno::RuntimeException, css::uno::Exception)
|
||||
{
|
||||
if ( aArguments.getLength() == 1 )
|
||||
{
|
||||
::rtl::OUString sURL;
|
||||
if ( !( aArguments[ 0 ] >>= sURL ))
|
||||
throw css::lang::IllegalArgumentException();
|
||||
// Try any other URL with SimpleFileAccess
|
||||
Reference< XMultiComponentFactory > xSMgr( m_xContext->getServiceManager(), UNO_QUERY_THROW );
|
||||
Reference< ucb::XSimpleFileAccess > xSFI =
|
||||
Reference< ucb::XSimpleFileAccess >( xSMgr->createInstanceWithContext
|
||||
( ::rtl::OUString::createFromAscii( "com.sun.star.ucb.SimpleFileAccess" ), m_xContext ), UNO_QUERY );
|
||||
|
||||
try
|
||||
{
|
||||
Reference< io::XInputStream > xInput = xSFI->openFileRead( sURL );
|
||||
Reference< resource::XStringResourceManager > xStringResourceManager;
|
||||
if ( xInput.is() )
|
||||
{
|
||||
xStringResourceManager = dlgprov::lcl_getStringResourceManager(m_xContext,sURL);
|
||||
Any aDialogSourceURLAny;
|
||||
aDialogSourceURLAny <<= sURL;
|
||||
|
||||
m_xDialogModel.set( dlgprov::lcl_createDialogModel( m_xContext,xInput , xStringResourceManager, aDialogSourceURLAny ), UNO_QUERY_THROW);
|
||||
m_xDialogModelProp.set(m_xDialogModel, UNO_QUERY_THROW);
|
||||
}
|
||||
}
|
||||
catch( Exception& )
|
||||
{}
|
||||
//m_sURL = sURL;
|
||||
}
|
||||
}
|
||||
|
||||
// container::XElementAccess:
|
||||
uno::Type SAL_CALL DialogModelProvider::getElementType() throw (css::uno::RuntimeException)
|
||||
{
|
||||
return m_xDialogModel->getElementType();
|
||||
}
|
||||
|
||||
::sal_Bool SAL_CALL DialogModelProvider::hasElements() throw (css::uno::RuntimeException)
|
||||
{
|
||||
return m_xDialogModel->hasElements();
|
||||
}
|
||||
|
||||
// container::XNameAccess:
|
||||
uno::Any SAL_CALL DialogModelProvider::getByName(const ::rtl::OUString & aName) throw (css::uno::RuntimeException, css::container::NoSuchElementException, css::lang::WrappedTargetException)
|
||||
{
|
||||
return m_xDialogModel->getByName(aName);
|
||||
}
|
||||
|
||||
css::uno::Sequence< ::rtl::OUString > SAL_CALL DialogModelProvider::getElementNames() throw (css::uno::RuntimeException)
|
||||
{
|
||||
return m_xDialogModel->getElementNames();
|
||||
}
|
||||
|
||||
::sal_Bool SAL_CALL DialogModelProvider::hasByName(const ::rtl::OUString & aName) throw (css::uno::RuntimeException)
|
||||
{
|
||||
return m_xDialogModel->hasByName(aName);
|
||||
}
|
||||
|
||||
// container::XNameReplace:
|
||||
void SAL_CALL DialogModelProvider::replaceByName(const ::rtl::OUString & aName, const uno::Any & aElement) throw (css::uno::RuntimeException, css::lang::IllegalArgumentException, css::container::NoSuchElementException, css::lang::WrappedTargetException)
|
||||
{
|
||||
m_xDialogModel->replaceByName(aName,aElement);
|
||||
}
|
||||
|
||||
// container::XNameContainer:
|
||||
void SAL_CALL DialogModelProvider::insertByName(const ::rtl::OUString & aName, const uno::Any & aElement) throw (css::uno::RuntimeException, css::lang::IllegalArgumentException, css::container::ElementExistException, css::lang::WrappedTargetException)
|
||||
{
|
||||
m_xDialogModel->insertByName(aName,aElement);
|
||||
}
|
||||
|
||||
void SAL_CALL DialogModelProvider::removeByName(const ::rtl::OUString & aName) throw (css::uno::RuntimeException, css::container::NoSuchElementException, css::lang::WrappedTargetException)
|
||||
{
|
||||
m_xDialogModel->removeByName(aName);
|
||||
}
|
||||
uno::Reference< beans::XPropertySetInfo > SAL_CALL DialogModelProvider::getPropertySetInfo( ) throw (uno::RuntimeException)
|
||||
{
|
||||
return m_xDialogModelProp->getPropertySetInfo();
|
||||
}
|
||||
void SAL_CALL DialogModelProvider::setPropertyValue( const ::rtl::OUString&, const uno::Any& ) throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
|
||||
{
|
||||
}
|
||||
uno::Any SAL_CALL DialogModelProvider::getPropertyValue( const ::rtl::OUString& PropertyName ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
|
||||
{
|
||||
return m_xDialogModelProp->getPropertyValue(PropertyName);
|
||||
}
|
||||
void SAL_CALL DialogModelProvider::addPropertyChangeListener( const ::rtl::OUString& , const uno::Reference< beans::XPropertyChangeListener >& ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
|
||||
{
|
||||
}
|
||||
void SAL_CALL DialogModelProvider::removePropertyChangeListener( const ::rtl::OUString& , const uno::Reference< beans::XPropertyChangeListener >& ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
|
||||
{
|
||||
}
|
||||
void SAL_CALL DialogModelProvider::addVetoableChangeListener( const ::rtl::OUString& , const uno::Reference< beans::XVetoableChangeListener >& ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
|
||||
{
|
||||
}
|
||||
void SAL_CALL DialogModelProvider::removeVetoableChangeListener( const ::rtl::OUString& ,const uno::Reference< beans::XVetoableChangeListener >& ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
|
||||
{
|
||||
}
|
||||
|
||||
// com.sun.star.uno.XServiceInfo:
|
||||
::rtl::OUString SAL_CALL DialogModelProvider::getImplementationName() throw (css::uno::RuntimeException)
|
||||
{
|
||||
return comp_DialogModelProvider::_getImplementationName();
|
||||
}
|
||||
|
||||
::sal_Bool SAL_CALL DialogModelProvider::supportsService(::rtl::OUString const & serviceName) throw (css::uno::RuntimeException)
|
||||
{
|
||||
css::uno::Sequence< ::rtl::OUString > serviceNames = comp_DialogModelProvider::_getSupportedServiceNames();
|
||||
for (::sal_Int32 i = 0; i < serviceNames.getLength(); ++i) {
|
||||
if (serviceNames[i] == serviceName)
|
||||
return sal_True;
|
||||
}
|
||||
return sal_False;
|
||||
}
|
||||
|
||||
css::uno::Sequence< ::rtl::OUString > SAL_CALL DialogModelProvider::getSupportedServiceNames() throw (css::uno::RuntimeException)
|
||||
{
|
||||
return comp_DialogModelProvider::_getSupportedServiceNames();
|
||||
}
|
||||
|
||||
} // closing anonymous implementation namespace
|
||||
|
92
scripting/source/dlgprov/DialogModelProvider.hxx
Normal file
92
scripting/source/dlgprov/DialogModelProvider.hxx
Normal file
@ -0,0 +1,92 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
||||
*
|
||||
* OpenOffice.org - a multi-platform office productivity suite
|
||||
*
|
||||
* This file is part of OpenOffice.org.
|
||||
*
|
||||
* OpenOffice.org is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License version 3
|
||||
* only, as published by the Free Software Foundation.
|
||||
*
|
||||
* OpenOffice.org is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License version 3 for more details
|
||||
* (a copy is included in the LICENSE file that accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* version 3 along with OpenOffice.org. If not, see
|
||||
* <http://www.openoffice.org/license.html>
|
||||
* for a copy of the LGPLv3 License.
|
||||
*
|
||||
************************************************************************/
|
||||
#include "sal/config.h"
|
||||
#include "cppuhelper/factory.hxx"
|
||||
#include "cppuhelper/implbase4.hxx"
|
||||
#include "com/sun/star/lang/XInitialization.hpp"
|
||||
#include "com/sun/star/container/XNameContainer.hpp"
|
||||
#include "com/sun/star/lang/XServiceInfo.hpp"
|
||||
#include "com/sun/star/beans/XPropertySet.hpp"
|
||||
|
||||
/// anonymous implementation namespace
|
||||
namespace dlgprov{
|
||||
|
||||
namespace css = ::com::sun::star;
|
||||
|
||||
class DialogModelProvider:
|
||||
public ::cppu::WeakImplHelper4<
|
||||
css::lang::XInitialization,
|
||||
css::container::XNameContainer,
|
||||
css::beans::XPropertySet,
|
||||
css::lang::XServiceInfo>
|
||||
{
|
||||
public:
|
||||
explicit DialogModelProvider(css::uno::Reference< css::uno::XComponentContext > const & context);
|
||||
private:
|
||||
// ::com::sun::star::lang::XInitialization:
|
||||
virtual void SAL_CALL initialize(const css::uno::Sequence< ::com::sun::star::uno::Any > & aArguments) throw (css::uno::RuntimeException, css::uno::Exception);
|
||||
|
||||
// ::com::sun::star::container::XElementAccess:
|
||||
virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException);
|
||||
virtual ::sal_Bool SAL_CALL hasElements() throw (css::uno::RuntimeException);
|
||||
|
||||
// ::com::sun::star::container::XNameAccess:
|
||||
virtual ::com::sun::star::uno::Any SAL_CALL getByName(const ::rtl::OUString & aName) throw (css::uno::RuntimeException, css::container::NoSuchElementException, css::lang::WrappedTargetException);
|
||||
virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() throw (css::uno::RuntimeException);
|
||||
virtual ::sal_Bool SAL_CALL hasByName(const ::rtl::OUString & aName) throw (css::uno::RuntimeException);
|
||||
|
||||
// ::com::sun::star::container::XNameReplace:
|
||||
virtual void SAL_CALL replaceByName(const ::rtl::OUString & aName, const ::com::sun::star::uno::Any & aElement) throw (css::uno::RuntimeException, css::lang::IllegalArgumentException, css::container::NoSuchElementException, css::lang::WrappedTargetException);
|
||||
|
||||
// ::com::sun::star::container::XNameContainer:
|
||||
virtual void SAL_CALL insertByName(const ::rtl::OUString & aName, const ::com::sun::star::uno::Any & aElement) throw (css::uno::RuntimeException, css::lang::IllegalArgumentException, css::container::ElementExistException, css::lang::WrappedTargetException);
|
||||
virtual void SAL_CALL removeByName(const ::rtl::OUString & Name) throw (css::uno::RuntimeException, css::container::NoSuchElementException, css::lang::WrappedTargetException);
|
||||
|
||||
// ::com::sun::star::lang::XServiceInfo:
|
||||
virtual ::rtl::OUString SAL_CALL getImplementationName() throw (css::uno::RuntimeException);
|
||||
virtual ::sal_Bool SAL_CALL supportsService(const ::rtl::OUString & ServiceName) throw (css::uno::RuntimeException);
|
||||
virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (css::uno::RuntimeException);
|
||||
|
||||
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
|
||||
virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
|
||||
virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
|
||||
virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
|
||||
virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
|
||||
virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
|
||||
|
||||
private:
|
||||
DialogModelProvider(const DialogModelProvider &); // not defined
|
||||
DialogModelProvider& operator=(const DialogModelProvider &); // not defined
|
||||
|
||||
// destructor is private and will be called indirectly by the release call virtual ~DialogModelProvider() {}
|
||||
|
||||
css::uno::Reference< css::uno::XComponentContext > m_xContext;
|
||||
css::uno::Reference< css::container::XNameContainer> m_xDialogModel;
|
||||
css::uno::Reference< css::beans::XPropertySet> m_xDialogModelProp;
|
||||
};
|
||||
} // closing anonymous implementation namespace
|
@ -28,6 +28,7 @@
|
||||
// MARKER(update_precomp.py): autogen include statement, do not remove
|
||||
#include "precompiled_scripting.hxx"
|
||||
|
||||
#include "DialogModelProvider.hxx"
|
||||
#include "dlgprov.hxx"
|
||||
#include "dlgevtatt.hxx"
|
||||
#include <com/sun/star/awt/XControlContainer.hpp>
|
||||
@ -60,20 +61,103 @@
|
||||
#include <util/MiscUtils.hxx>
|
||||
|
||||
using namespace ::com::sun::star;
|
||||
using namespace ::com::sun::star::awt;
|
||||
using namespace ::com::sun::star::lang;
|
||||
using namespace ::com::sun::star::uno;
|
||||
using namespace ::com::sun::star::script;
|
||||
using namespace ::com::sun::star::beans;
|
||||
using namespace ::com::sun::star::document;
|
||||
using namespace awt;
|
||||
using namespace lang;
|
||||
using namespace uno;
|
||||
using namespace script;
|
||||
using namespace beans;
|
||||
using namespace document;
|
||||
using namespace ::sf_misc;
|
||||
|
||||
// component helper namespace
|
||||
namespace comp_DialogModelProvider
|
||||
{
|
||||
|
||||
::rtl::OUString SAL_CALL _getImplementationName()
|
||||
{
|
||||
return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DialogModelProvider"));
|
||||
}
|
||||
|
||||
uno::Sequence< ::rtl::OUString > SAL_CALL _getSupportedServiceNames()
|
||||
{
|
||||
uno::Sequence< ::rtl::OUString > s(1);
|
||||
s[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlDialogModelProvider"));
|
||||
return s;
|
||||
}
|
||||
|
||||
uno::Reference< uno::XInterface > SAL_CALL _create(const uno::Reference< uno::XComponentContext > & context) SAL_THROW((uno::Exception))
|
||||
{
|
||||
return static_cast< ::cppu::OWeakObject * >(new dlgprov::DialogModelProvider(context));
|
||||
}
|
||||
} // closing component helper namespace
|
||||
//.........................................................................
|
||||
namespace dlgprov
|
||||
{
|
||||
//.........................................................................
|
||||
|
||||
static ::rtl::OUString aResourceResolverPropName = ::rtl::OUString::createFromAscii( "ResourceResolver" );
|
||||
|
||||
Reference< resource::XStringResourceManager > lcl_getStringResourceManager(const Reference< XComponentContext >& i_xContext,const ::rtl::OUString& i_sURL)
|
||||
{
|
||||
INetURLObject aInetObj( i_sURL );
|
||||
::rtl::OUString aDlgName = aInetObj.GetBase();
|
||||
aInetObj.removeSegment();
|
||||
::rtl::OUString aDlgLocation = aInetObj.GetMainURL( INetURLObject::NO_DECODE );
|
||||
bool bReadOnly = true;
|
||||
::com::sun::star::lang::Locale aLocale = Application::GetSettings().GetUILocale();
|
||||
::rtl::OUString aComment;
|
||||
|
||||
Sequence<Any> aArgs( 6 );
|
||||
aArgs[0] <<= aDlgLocation;
|
||||
aArgs[1] <<= bReadOnly;
|
||||
aArgs[2] <<= aLocale;
|
||||
aArgs[3] <<= aDlgName;
|
||||
aArgs[4] <<= aComment;
|
||||
|
||||
Reference< task::XInteractionHandler > xDummyHandler;
|
||||
aArgs[5] <<= xDummyHandler;
|
||||
Reference< XMultiComponentFactory > xSMgr_( i_xContext->getServiceManager(), UNO_QUERY_THROW );
|
||||
// TODO: Ctor
|
||||
Reference< resource::XStringResourceManager > xStringResourceManager( xSMgr_->createInstanceWithContext
|
||||
( ::rtl::OUString::createFromAscii( "com.sun.star.resource.StringResourceWithLocation" ),
|
||||
i_xContext ), UNO_QUERY );
|
||||
if( xStringResourceManager.is() )
|
||||
{
|
||||
Reference< XInitialization > xInit( xStringResourceManager, UNO_QUERY );
|
||||
if( xInit.is() )
|
||||
xInit->initialize( aArgs );
|
||||
}
|
||||
return xStringResourceManager;
|
||||
}
|
||||
Reference< container::XNameContainer > lcl_createControlModel(const Reference< XComponentContext >& i_xContext)
|
||||
{
|
||||
Reference< XMultiComponentFactory > xSMgr_( i_xContext->getServiceManager(), UNO_QUERY_THROW );
|
||||
Reference< container::XNameContainer > xControlModel( xSMgr_->createInstanceWithContext( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialogModel" ) ), i_xContext ), UNO_QUERY_THROW );
|
||||
return xControlModel;
|
||||
}
|
||||
Reference< container::XNameContainer > lcl_createDialogModel( const Reference< XComponentContext >& i_xContext,
|
||||
const Reference< io::XInputStream >& xInput,
|
||||
const Reference< resource::XStringResourceManager >& xStringResourceManager,
|
||||
const Any &aDialogSourceURL) throw ( Exception )
|
||||
{
|
||||
Reference< container::XNameContainer > xDialogModel( lcl_createControlModel(i_xContext) );
|
||||
|
||||
::rtl::OUString aDlgSrcUrlPropName( RTL_CONSTASCII_USTRINGPARAM( "DialogSourceURL" ) );
|
||||
Reference< beans::XPropertySet > xDlgPropSet( xDialogModel, UNO_QUERY );
|
||||
xDlgPropSet->setPropertyValue( aDlgSrcUrlPropName, aDialogSourceURL );
|
||||
|
||||
::xmlscript::importDialogModel( xInput, xDialogModel, i_xContext );
|
||||
// Set resource property
|
||||
if( xStringResourceManager.is() )
|
||||
{
|
||||
Reference< beans::XPropertySet > xDlgPSet( xDialogModel, UNO_QUERY );
|
||||
Any aStringResourceManagerAny;
|
||||
aStringResourceManagerAny <<= xStringResourceManager;
|
||||
xDlgPSet->setPropertyValue( aResourceResolverPropName, aStringResourceManagerAny );
|
||||
}
|
||||
|
||||
return xDialogModel;
|
||||
}
|
||||
// =============================================================================
|
||||
// component operations
|
||||
// =============================================================================
|
||||
@ -173,9 +257,7 @@ static ::rtl::OUString aResourceResolverPropName = ::rtl::OUString::createFromAs
|
||||
|
||||
Reference< container::XNameContainer > DialogProviderImpl::createControlModel() throw ( Exception )
|
||||
{
|
||||
Reference< XMultiComponentFactory > xSMgr_( m_xContext->getServiceManager(), UNO_QUERY_THROW );
|
||||
Reference< container::XNameContainer > xControlModel( xSMgr_->createInstanceWithContext( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialogModel" ) ), m_xContext ), UNO_QUERY_THROW );
|
||||
return xControlModel;
|
||||
return lcl_createControlModel(m_xContext);
|
||||
}
|
||||
|
||||
Reference< container::XNameContainer > DialogProviderImpl::createDialogModel(
|
||||
@ -183,23 +265,9 @@ static ::rtl::OUString aResourceResolverPropName = ::rtl::OUString::createFromAs
|
||||
const Reference< resource::XStringResourceManager >& xStringResourceManager,
|
||||
const Any &aDialogSourceURL) throw ( Exception )
|
||||
{
|
||||
Reference< container::XNameContainer > xDialogModel( createControlModel() );
|
||||
|
||||
::rtl::OUString aDlgSrcUrlPropName( RTL_CONSTASCII_USTRINGPARAM( "DialogSourceURL" ) );
|
||||
Reference< beans::XPropertySet > xDlgPropSet( xDialogModel, UNO_QUERY );
|
||||
xDlgPropSet->setPropertyValue( aDlgSrcUrlPropName, aDialogSourceURL );
|
||||
|
||||
::xmlscript::importDialogModel( xInput, xDialogModel, m_xContext );
|
||||
// Set resource property
|
||||
if( xStringResourceManager.is() )
|
||||
{
|
||||
Reference< beans::XPropertySet > xDlgPSet( xDialogModel, UNO_QUERY );
|
||||
Any aStringResourceManagerAny;
|
||||
aStringResourceManagerAny <<= xStringResourceManager;
|
||||
xDlgPSet->setPropertyValue( aResourceResolverPropName, aStringResourceManagerAny );
|
||||
}
|
||||
|
||||
return xDialogModel;
|
||||
return lcl_createDialogModel(m_xContext,xInput,xStringResourceManager,aDialogSourceURL);
|
||||
}
|
||||
|
||||
Reference< XControlModel > DialogProviderImpl::createDialogModelForBasic() throw ( Exception )
|
||||
@ -280,8 +348,8 @@ static ::rtl::OUString aResourceResolverPropName = ::rtl::OUString::createFromAs
|
||||
bSingleDialog = true;
|
||||
|
||||
// Try any other URL with SimpleFileAccess
|
||||
Reference< ::com::sun::star::ucb::XSimpleFileAccess > xSFI =
|
||||
Reference< ::com::sun::star::ucb::XSimpleFileAccess >( xSMgr->createInstanceWithContext
|
||||
Reference< ucb::XSimpleFileAccess > xSFI =
|
||||
Reference< ucb::XSimpleFileAccess >( xSMgr->createInstanceWithContext
|
||||
( ::rtl::OUString::createFromAscii( "com.sun.star.ucb.SimpleFileAccess" ), m_xContext ), UNO_QUERY );
|
||||
|
||||
try
|
||||
@ -412,34 +480,7 @@ static ::rtl::OUString aResourceResolverPropName = ::rtl::OUString::createFromAs
|
||||
Reference< resource::XStringResourceManager > xStringResourceManager;
|
||||
if( bSingleDialog )
|
||||
{
|
||||
INetURLObject aInetObj( aURL );
|
||||
::rtl::OUString aDlgName = aInetObj.GetBase();
|
||||
aInetObj.removeSegment();
|
||||
::rtl::OUString aDlgLocation = aInetObj.GetMainURL( INetURLObject::NO_DECODE );
|
||||
bool bReadOnly = true;
|
||||
::com::sun ::star::lang::Locale aLocale = Application::GetSettings().GetUILocale();
|
||||
::rtl::OUString aComment;
|
||||
|
||||
Sequence<Any> aArgs( 6 );
|
||||
aArgs[0] <<= aDlgLocation;
|
||||
aArgs[1] <<= bReadOnly;
|
||||
aArgs[2] <<= aLocale;
|
||||
aArgs[3] <<= aDlgName;
|
||||
aArgs[4] <<= aComment;
|
||||
|
||||
Reference< task::XInteractionHandler > xDummyHandler;
|
||||
aArgs[5] <<= xDummyHandler;
|
||||
Reference< XMultiComponentFactory > xSMgr_( m_xContext->getServiceManager(), UNO_QUERY_THROW );
|
||||
// TODO: Ctor
|
||||
xStringResourceManager = Reference< resource::XStringResourceManager >( xSMgr_->createInstanceWithContext
|
||||
( ::rtl::OUString::createFromAscii( "com.sun.star.resource.StringResourceWithLocation" ),
|
||||
m_xContext ), UNO_QUERY );
|
||||
if( xStringResourceManager.is() )
|
||||
{
|
||||
Reference< XInitialization > xInit( xStringResourceManager, UNO_QUERY );
|
||||
if( xInit.is() )
|
||||
xInit->initialize( aArgs );
|
||||
}
|
||||
xStringResourceManager = lcl_getStringResourceManager(m_xContext,aURL);
|
||||
}
|
||||
else if( xDialogLib.is() )
|
||||
{
|
||||
@ -794,7 +835,7 @@ static ::rtl::OUString aResourceResolverPropName = ::rtl::OUString::createFromAs
|
||||
Reference< XWindow > DialogProviderImpl::createContainerWindow(
|
||||
const ::rtl::OUString& URL, const ::rtl::OUString& WindowType,
|
||||
const Reference< XWindowPeer >& xParent, const Reference< XInterface >& xHandler )
|
||||
throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
|
||||
throw (lang::IllegalArgumentException, RuntimeException)
|
||||
{
|
||||
(void)WindowType; // for future use
|
||||
if( !xParent.is() )
|
||||
@ -824,11 +865,8 @@ static ::rtl::OUString aResourceResolverPropName = ::rtl::OUString::createFromAs
|
||||
|
||||
static struct ::cppu::ImplementationEntry s_component_entries [] =
|
||||
{
|
||||
{
|
||||
create_DialogProviderImpl, getImplementationName_DialogProviderImpl,
|
||||
getSupportedServiceNames_DialogProviderImpl, ::cppu::createSingleComponentFactory,
|
||||
0, 0
|
||||
},
|
||||
{create_DialogProviderImpl, getImplementationName_DialogProviderImpl,getSupportedServiceNames_DialogProviderImpl, ::cppu::createSingleComponentFactory,0, 0},
|
||||
{ &comp_DialogModelProvider::_create,&comp_DialogModelProvider::_getImplementationName,&comp_DialogModelProvider::_getSupportedServiceNames,&::cppu::createSingleComponentFactory, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
|
@ -61,6 +61,13 @@ namespace dlgprov
|
||||
// =============================================================================
|
||||
// class DialogProviderImpl
|
||||
// =============================================================================
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > lcl_createControlModel(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& i_xContext);
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::resource::XStringResourceManager > lcl_getStringResourceManager(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& i_xContext,const ::rtl::OUString& i_sURL);
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > lcl_createDialogModel(
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& i_xContext,
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& xInput,
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::resource::XStringResourceManager >& xStringResourceManager,
|
||||
const ::com::sun::star::uno::Any &aDialogSourceURL) throw ( ::com::sun::star::uno::Exception );
|
||||
|
||||
typedef ::cppu::WeakImplHelper4<
|
||||
::com::sun::star::lang::XServiceInfo,
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user