removetooltypes01: Rebase to DEV300m99

This commit is contained in:
Carsten Driesner 2011-02-07 13:06:08 +01:00
commit bebf85efd1
232 changed files with 9320 additions and 6266 deletions

View File

@ -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 );

View File

@ -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 );

View File

@ -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

View File

@ -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();

View File

@ -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,

View File

@ -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,

View File

@ -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

View File

@ -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

View 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;
}

View File

@ -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);

View File

@ -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";

View 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;
}

View 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();
}

View File

@ -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 + "'");
}
}

View File

@ -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");

View File

@ -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());
}
}

View File

@ -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");

View File

@ -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;
}

View File

@ -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();

View File

@ -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;
}

View 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" );
}
}

View File

@ -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" );
}
};

View File

@ -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" );
}
}

View 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;
}

View File

@ -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();
}
};

View File

@ -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 ------------------------------------------------------

View File

@ -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>

View File

@ -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)

View File

@ -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

View File

@ -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_//)

View File

@ -0,0 +1,4 @@
-o complex.connectivity.DBaseDriverTest
-o complex.connectivity.HsqlDriverTest
#-o complex.connectivity.JdbcLongVarCharTest
-o complex.connectivity.FlatFileAccess

View File

@ -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 );

View File

@ -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())

View File

@ -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;

View File

@ -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
);
}

View File

@ -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());
}
// -------------------------------------------------------------------------

View File

@ -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();

View File

@ -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 >();
}
// --------------------------------------------------------------------------------

View File

@ -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">

View File

@ -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;

View File

@ -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++)
{

View File

@ -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)

View File

@ -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 )

View File

@ -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)
{

View File

@ -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();

View File

@ -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(),

View File

@ -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;
}

View File

@ -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;

View File

@ -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,

View File

@ -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)

View File

@ -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,

View File

@ -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>

View File

@ -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;

View File

@ -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

View File

@ -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)
{}

View File

@ -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)
{}

View File

@ -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)
{}
};

View File

@ -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)
{}

View File

@ -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();

View File

@ -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();

View File

@ -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;
}

View File

@ -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

View File

@ -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 );
}
//----------------------------------------------------------------

View File

@ -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,

View File

@ -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();

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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:

View File

@ -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));

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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())

View File

@ -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();

View File

@ -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();
};
// -----------------------------------------------------------------------

View File

@ -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 );

View File

@ -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();

View File

@ -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() );

View File

@ -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;

View File

@ -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();

View File

@ -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() )

View File

@ -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 \

View File

@ -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))

View 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

View 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_

View File

@ -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

View 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

View File

@ -33,7 +33,7 @@
//_________________________________________________________________________________________________________________
#include <threadhelp/inoncopyable.h>
#include <threadhelp/imutex.h>
#include <framework/imutex.hxx>
#include <threadhelp/irwlock.h>
#include <threadhelp/fairrwlock.hxx>

View File

@ -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>

View 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
//......................................................................................................................

File diff suppressed because it is too large Load Diff

View File

@ -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 );
}

View 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">

View 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>

View File

@ -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>

View 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

View 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

View File

@ -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 }
};

View File

@ -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