diff options
153 files changed, 1109 insertions, 850 deletions
diff --git a/connectivity/inc/connectivity/PColumn.hxx b/connectivity/inc/connectivity/PColumn.hxx index 547cc8fb9970..1e9dc8b560f1 100644 --- a/connectivity/inc/connectivity/PColumn.hxx +++ b/connectivity/inc/connectivity/PColumn.hxx @@ -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(); diff --git a/connectivity/inc/connectivity/dbconversion.hxx b/connectivity/inc/connectivity/dbconversion.hxx index 6a54a3e92d2d..75c491e505e6 100644 --- a/connectivity/inc/connectivity/dbconversion.hxx +++ b/connectivity/inc/connectivity/dbconversion.hxx @@ -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, diff --git a/connectivity/inc/connectivity/virtualdbtools.hxx b/connectivity/inc/connectivity/virtualdbtools.hxx index 70b17dcb37c9..1ad4c1d7d77d 100644 --- a/connectivity/inc/connectivity/virtualdbtools.hxx +++ b/connectivity/inc/connectivity/virtualdbtools.hxx @@ -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, diff --git a/connectivity/prj/build.lst b/connectivity/prj/build.lst index 6d70bc71c97c..8d16197961fa 100644 --- a/connectivity/prj/build.lst +++ b/connectivity/prj/build.lst @@ -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 - diff --git a/connectivity/qa/drivers/dbase/DBaseDriverTest.java b/connectivity/qa/complex/connectivity/DBaseDriverTest.java index 2e2920b4145b..5b9e456ab367 100644 --- a/connectivity/qa/drivers/dbase/DBaseDriverTest.java +++ b/connectivity/qa/complex/connectivity/DBaseDriverTest.java @@ -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 diff --git a/connectivity/qa/complex/connectivity/FlatFileAccess.java b/connectivity/qa/complex/connectivity/FlatFileAccess.java new file mode 100755 index 000000000000..3f0481684827 --- /dev/null +++ b/connectivity/qa/complex/connectivity/FlatFileAccess.java @@ -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; +} diff --git a/connectivity/qa/drivers/hsqldb/DriverTest.java b/connectivity/qa/complex/connectivity/HsqlDriverTest.java index d343a1309a05..28ad862c4a76 100644 --- a/connectivity/qa/drivers/hsqldb/DriverTest.java +++ b/connectivity/qa/complex/connectivity/HsqlDriverTest.java @@ -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); diff --git a/connectivity/qa/drivers/jdbc/LongVarCharTest.java b/connectivity/qa/complex/connectivity/JdbcLongVarCharTest.java index a5797b223b61..63a3e8f241bc 100644 --- a/connectivity/qa/drivers/jdbc/LongVarCharTest.java +++ b/connectivity/qa/complex/connectivity/JdbcLongVarCharTest.java @@ -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"; diff --git a/connectivity/qa/complex/connectivity/SubTestCase.java b/connectivity/qa/complex/connectivity/SubTestCase.java new file mode 100755 index 000000000000..1c2e685c5943 --- /dev/null +++ b/connectivity/qa/complex/connectivity/SubTestCase.java @@ -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; +} diff --git a/connectivity/qa/connectivity/GeneralTest.java b/connectivity/qa/complex/connectivity/TestCase.java index a69ac5c1048f..bae5fcdcb4c4 100644..100755 --- a/connectivity/qa/connectivity/GeneralTest.java +++ b/connectivity/qa/complex/connectivity/TestCase.java @@ -26,37 +26,10 @@ ************************************************************************/ package complex.connectivity; -import com.sun.star.uno.UnoRuntime; -import com.sun.star.sdbc.*; +import share.LogWriter; -import com.sun.star.lang.XMultiServiceFactory; - -import complexlib.ComplexTestCase; - - -//import complex.connectivity.DBaseStringFunctions; - -public class GeneralTest extends ComplexTestCase { - - public String[] getTestMethodNames() { - return new String[] { "test" }; - } - - public String getTestObjectName() { - return "GeneralTest"; - } - public void assure2(String s,boolean b){ - assure(s,b); - } - - public void test() throws com.sun.star.uno.Exception,com.sun.star.beans.UnknownPropertyException { - try - { - XDriverManager driverManager = UnoRuntime.queryInterface( XDriverManager.class, ((XMultiServiceFactory)param.getMSF()).createInstance( "com.sun.star.sdbc.DriverManager" ) ); - String databaseURL = "sdbc:calc:singin' in the rain" ; - XConnection catalogConnection = driverManager.getConnection(databaseURL); - failed(); - } - catch(SQLException e){} - } +public interface TestCase +{ + public void assure( final String i_message, final boolean i_condition ); + public LogWriter getLog(); } diff --git a/connectivity/qa/drivers/dbase/DBaseDateFunctions.java b/connectivity/qa/complex/connectivity/dbase/DBaseDateFunctions.java index b48ae2158359..9cfc6aaaf590 100644 --- a/connectivity/qa/drivers/dbase/DBaseDateFunctions.java +++ b/connectivity/qa/complex/connectivity/dbase/DBaseDateFunctions.java @@ -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 + "'"); } } diff --git a/connectivity/qa/drivers/dbase/DBaseNumericFunctions.java b/connectivity/qa/complex/connectivity/dbase/DBaseNumericFunctions.java index b3c8ff014a2f..f5aec94a3c23 100644 --- a/connectivity/qa/drivers/dbase/DBaseNumericFunctions.java +++ b/connectivity/qa/complex/connectivity/dbase/DBaseNumericFunctions.java @@ -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"); diff --git a/connectivity/qa/drivers/dbase/DBaseSqlTests.java b/connectivity/qa/complex/connectivity/dbase/DBaseSqlTests.java index c393c5a48356..1265e05e7bef 100755 --- a/connectivity/qa/drivers/dbase/DBaseSqlTests.java +++ b/connectivity/qa/complex/connectivity/dbase/DBaseSqlTests.java @@ -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()); } } diff --git a/connectivity/qa/drivers/dbase/DBaseStringFunctions.java b/connectivity/qa/complex/connectivity/dbase/DBaseStringFunctions.java index 1d4ccf0a9b26..30b94484d53d 100644 --- a/connectivity/qa/drivers/dbase/DBaseStringFunctions.java +++ b/connectivity/qa/complex/connectivity/dbase/DBaseStringFunctions.java @@ -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"); diff --git a/connectivity/qa/drivers/hsqldb/DatabaseMetaData.java b/connectivity/qa/complex/connectivity/hsqldb/DatabaseMetaData.java index ddc45a4e0ca1..a20bb992b4e3 100644 --- a/connectivity/qa/drivers/hsqldb/DatabaseMetaData.java +++ b/connectivity/qa/complex/connectivity/hsqldb/DatabaseMetaData.java @@ -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; } diff --git a/connectivity/qa/drivers/hsqldb/TestCacheSize.java b/connectivity/qa/complex/connectivity/hsqldb/TestCacheSize.java index 4701905772b8..6c4db8bdeee7 100644 --- a/connectivity/qa/drivers/hsqldb/TestCacheSize.java +++ b/connectivity/qa/complex/connectivity/hsqldb/TestCacheSize.java @@ -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(); diff --git a/connectivity/qa/connectivity/makefile.mk b/connectivity/qa/connectivity/makefile.mk deleted file mode 100644 index 785f20692da3..000000000000 --- a/connectivity/qa/connectivity/makefile.mk +++ /dev/null @@ -1,65 +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 = GeneralTest -PRJNAME = 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 =\ - $(TARGET).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 ------------------------------------------------------ - -.IF "$(depend)" == "" -ALL : ALLTAR -.ELSE -ALL: ALLDEP -.ENDIF - -.INCLUDE : target.mk - - -run: - java -cp $(CLASSPATH)$(PATH_SEPERATOR)$(SOLARBINDIR)$/OOoRunner.jar org.openoffice.Runner -TestBase java_complex -o complex.connectivity.$(TARGET) - diff --git a/connectivity/qa/connectivity/tools/AbstractDatabase.java b/connectivity/qa/connectivity/tools/AbstractDatabase.java index b47c7c7961da..65f550be5abf 100755 --- a/connectivity/qa/connectivity/tools/AbstractDatabase.java +++ b/connectivity/qa/connectivity/tools/AbstractDatabase.java @@ -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; } diff --git a/connectivity/qa/connectivity/tools/CsvDatabase.java b/connectivity/qa/connectivity/tools/CsvDatabase.java new file mode 100755 index 000000000000..f9f16a718205 --- /dev/null +++ b/connectivity/qa/connectivity/tools/CsvDatabase.java @@ -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" ); + } +} diff --git a/connectivity/qa/connectivity/tools/DataSource.java b/connectivity/qa/connectivity/tools/DataSource.java index 221ada3cb487..5c06f7d69622 100644 --- a/connectivity/qa/connectivity/tools/DataSource.java +++ b/connectivity/qa/connectivity/tools/DataSource.java @@ -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,25 +129,35 @@ public class DataSource return suppQueries.getQueryDefinitions(); } - /** returns the name of the data source - * - * If a data source is registered at the database context, the name is the registration - * name. Otherwise, its the URL which the respective database document is based on. - * - * Note that the above definition is from the UNO API, not from this wrapper here. + /** + * retrieves a property value from the data source + * @param i_propertyName + * the name of the property whose value is to be returned. */ - public String getName() + private Object impl_getPropertyValue( final String i_propertyName ) { - String name = null; + Object propertyValue = null; try { final XPropertySet dataSourceProps = UnoRuntime.queryInterface( XPropertySet.class, m_dataSource ); - name = (String) dataSourceProps.getPropertyValue("Name"); + propertyValue = dataSourceProps.getPropertyValue( i_propertyName ); } catch (Exception ex) { Logger.getLogger(DataSource.class.getName()).log(Level.SEVERE, null, ex); } - return name; + return propertyValue; + } + + /** returns the name of the data source + * + * If a data source is registered at the database context, the name is the registration + * name. Otherwise, its the URL which the respective database document is based on. + * + * Note that the above definition is from the UNO API, not from this wrapper here. + */ + public String getName() + { + return (String)impl_getPropertyValue( "Name" ); } }; diff --git a/connectivity/qa/connectivity/tools/DbaseDatabase.java b/connectivity/qa/connectivity/tools/DbaseDatabase.java index ae40be4222aa..19a44132adf4 100755 --- a/connectivity/qa/connectivity/tools/DbaseDatabase.java +++ b/connectivity/qa/connectivity/tools/DbaseDatabase.java @@ -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 - { - 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 + protected DbaseDatabase( final XMultiServiceFactory i_orb, final String i_existingDocumentURL ) throws Exception { - String dropStatement = "DROP TABLE \"" + _name; - executeSQL(dropStatement); + super( i_orb, i_existingDocumentURL, "dbase" ); } } diff --git a/connectivity/qa/connectivity/tools/FlatFileDatabase.java b/connectivity/qa/connectivity/tools/FlatFileDatabase.java new file mode 100755 index 000000000000..5385f1e119f6 --- /dev/null +++ b/connectivity/qa/connectivity/tools/FlatFileDatabase.java @@ -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; +} diff --git a/connectivity/qa/connectivity/tools/RowSet.java b/connectivity/qa/connectivity/tools/RowSet.java index a26456dcc746..31d0f237a1dd 100644 --- a/connectivity/qa/connectivity/tools/RowSet.java +++ b/connectivity/qa/connectivity/tools/RowSet.java @@ -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(); + } }; diff --git a/connectivity/qa/connectivity/tools/makefile.mk b/connectivity/qa/connectivity/tools/makefile.mk index 07490532a1b1..d77da7f1b945 100644 --- a/connectivity/qa/connectivity/tools/makefile.mk +++ b/connectivity/qa/connectivity/tools/makefile.mk @@ -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 ------------------------------------------------------ diff --git a/connectivity/qa/drivers/dbase/.nbattrs b/connectivity/qa/drivers/dbase/.nbattrs deleted file mode 100644 index 1ea7ed0bd8e6..000000000000 --- a/connectivity/qa/drivers/dbase/.nbattrs +++ /dev/null @@ -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> diff --git a/connectivity/qa/drivers/dbase/makefile.mk b/connectivity/qa/drivers/dbase/makefile.mk deleted file mode 100644 index d71670d67458..000000000000 --- a/connectivity/qa/drivers/dbase/makefile.mk +++ /dev/null @@ -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) - diff --git a/connectivity/qa/drivers/dbase/test.properties b/connectivity/qa/drivers/dbase/test.properties deleted file mode 100644 index c26879f480f3..000000000000 --- a/connectivity/qa/drivers/dbase/test.properties +++ /dev/null @@ -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 diff --git a/connectivity/qa/drivers/jdbc/makefile.mk b/connectivity/qa/makefile.mk index e9f03ce1be3c..ee41cab63554 100644 --- a/connectivity/qa/drivers/jdbc/makefile.mk +++ b/connectivity/qa/makefile.mk @@ -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 + +# --- Runner Settings ---------------------------------------------- -JARCLASSDIRS = $(PACKAGE) -JARTARGET = $(TARGET).jar -JARCOMPRESS = TRUE +# 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_//) diff --git a/connectivity/qa/scenarios.sce b/connectivity/qa/scenarios.sce new file mode 100644 index 000000000000..c085f11bd7d8 --- /dev/null +++ b/connectivity/qa/scenarios.sce @@ -0,0 +1,4 @@ +-o complex.connectivity.DBaseDriverTest +-o complex.connectivity.HsqlDriverTest +#-o complex.connectivity.JdbcLongVarCharTest +-o complex.connectivity.FlatFileAccess diff --git a/connectivity/source/commontools/DateConversion.cxx b/connectivity/source/commontools/DateConversion.cxx index 9f5be37f208f..a701b3b01570 100644 --- a/connectivity/source/commontools/DateConversion.cxx +++ b/connectivity/source/commontools/DateConversion.cxx @@ -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 ); diff --git a/connectivity/source/commontools/TSkipDeletedSet.cxx b/connectivity/source/commontools/TSkipDeletedSet.cxx index 2d144ab72941..ccef25db11e3 100644 --- a/connectivity/source/commontools/TSkipDeletedSet.cxx +++ b/connectivity/source/commontools/TSkipDeletedSet.cxx @@ -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()) diff --git a/connectivity/source/commontools/dbtools.cxx b/connectivity/source/commontools/dbtools.cxx index 05bcf997268f..a216864fd172 100644 --- a/connectivity/source/commontools/dbtools.cxx +++ b/connectivity/source/commontools/dbtools.cxx @@ -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; diff --git a/connectivity/source/commontools/formattedcolumnvalue.cxx b/connectivity/source/commontools/formattedcolumnvalue.cxx index d63c83524389..98a6e3c2ece9 100644 --- a/connectivity/source/commontools/formattedcolumnvalue.cxx +++ b/connectivity/source/commontools/formattedcolumnvalue.cxx @@ -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 ); } diff --git a/connectivity/source/drivers/ado/ACatalog.cxx b/connectivity/source/drivers/ado/ACatalog.cxx index d73ac4746fa3..4db595636eb4 100644 --- a/connectivity/source/drivers/ado/ACatalog.cxx +++ b/connectivity/source/drivers/ado/ACatalog.cxx @@ -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()); } // ------------------------------------------------------------------------- diff --git a/connectivity/source/drivers/ado/AColumns.cxx b/connectivity/source/drivers/ado/AColumns.cxx index b2e383f53e0d..60140e9be93e 100644 --- a/connectivity/source/drivers/ado/AColumns.cxx +++ b/connectivity/source/drivers/ado/AColumns.cxx @@ -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(); diff --git a/connectivity/source/drivers/ado/ADriver.cxx b/connectivity/source/drivers/ado/ADriver.cxx index 20eb6910f849..5b89623c28d8 100644 --- a/connectivity/source/drivers/ado/ADriver.cxx +++ b/connectivity/source/drivers/ado/ADriver.cxx @@ -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 >(); } // -------------------------------------------------------------------------------- diff --git a/connectivity/source/drivers/ado/ado.xcu b/connectivity/source/drivers/ado/ado.xcu index 50c29cf7ba2e..e95e1a676c12 100755 --- a/connectivity/source/drivers/ado/ado.xcu +++ b/connectivity/source/drivers/ado/ado.xcu @@ -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"> diff --git a/connectivity/source/drivers/ado/adoimp.cxx b/connectivity/source/drivers/ado/adoimp.cxx index 1bc136a35662..b59f41a597fa 100644 --- a/connectivity/source/drivers/ado/adoimp.cxx +++ b/connectivity/source/drivers/ado/adoimp.cxx @@ -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; diff --git a/connectivity/source/drivers/calc/CTable.cxx b/connectivity/source/drivers/calc/CTable.cxx index a4e5f35825f5..20214c18af75 100644 --- a/connectivity/source/drivers/calc/CTable.cxx +++ b/connectivity/source/drivers/calc/CTable.cxx @@ -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++) { diff --git a/connectivity/source/drivers/dbase/DIndex.cxx b/connectivity/source/drivers/dbase/DIndex.cxx index c7e64beeef1a..e4d3eafc9071 100644 --- a/connectivity/source/drivers/dbase/DIndex.cxx +++ b/connectivity/source/drivers/dbase/DIndex.cxx @@ -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) diff --git a/connectivity/source/drivers/dbase/DIndexColumns.cxx b/connectivity/source/drivers/dbase/DIndexColumns.cxx index 59682a38d8af..1ea40b7bc03f 100644 --- a/connectivity/source/drivers/dbase/DIndexColumns.cxx +++ b/connectivity/source/drivers/dbase/DIndexColumns.cxx @@ -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 ) diff --git a/connectivity/source/drivers/dbase/DTable.cxx b/connectivity/source/drivers/dbase/DTable.cxx index 011d0e89ce7a..6adbfbbbf931 100644 --- a/connectivity/source/drivers/dbase/DTable.cxx +++ b/connectivity/source/drivers/dbase/DTable.cxx @@ -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) { diff --git a/connectivity/source/drivers/evoab/LFolderList.cxx b/connectivity/source/drivers/evoab/LFolderList.cxx index 1a42ef028c54..dfa347c12134 100644 --- a/connectivity/source/drivers/evoab/LFolderList.cxx +++ b/connectivity/source/drivers/evoab/LFolderList.cxx @@ -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(); diff --git a/connectivity/source/drivers/evoab/LTable.cxx b/connectivity/source/drivers/evoab/LTable.cxx index 6239765afe25..b35d1c9551eb 100644 --- a/connectivity/source/drivers/evoab/LTable.cxx +++ b/connectivity/source/drivers/evoab/LTable.cxx @@ -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(), diff --git a/connectivity/source/drivers/file/FColumns.cxx b/connectivity/source/drivers/file/FColumns.cxx index 3c3929a80c50..e92855db23fa 100644 --- a/connectivity/source/drivers/file/FColumns.cxx +++ b/connectivity/source/drivers/file/FColumns.cxx @@ -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; } diff --git a/connectivity/source/drivers/file/FResultSet.cxx b/connectivity/source/drivers/file/FResultSet.cxx index c516b325ad9a..b2cb568eed4e 100644 --- a/connectivity/source/drivers/file/FResultSet.cxx +++ b/connectivity/source/drivers/file/FResultSet.cxx @@ -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; diff --git a/connectivity/source/drivers/file/FTable.cxx b/connectivity/source/drivers/file/FTable.cxx index 7bc28fd35b64..e317120da95c 100644 --- a/connectivity/source/drivers/file/FTable.cxx +++ b/connectivity/source/drivers/file/FTable.cxx @@ -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, diff --git a/connectivity/source/drivers/flat/EConnection.cxx b/connectivity/source/drivers/flat/EConnection.cxx index c9cec7b5ee10..428f813c2674 100644 --- a/connectivity/source/drivers/flat/EConnection.cxx +++ b/connectivity/source/drivers/flat/EConnection.cxx @@ -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) diff --git a/connectivity/source/drivers/flat/ETable.cxx b/connectivity/source/drivers/flat/ETable.cxx index 70be592405eb..c427675f15a0 100644 --- a/connectivity/source/drivers/flat/ETable.cxx +++ b/connectivity/source/drivers/flat/ETable.cxx @@ -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; - for (xub_StrLen i = 0; i < nFieldCount; i++) + ::std::vector<String> aColumnNames,m_aTypeNames; + m_aTypeNames.resize(nFieldCount); + const sal_Int32 nMaxRowsToScan = pConnection->getMaxRowsToScan(); + sal_Int32 nRowCount = 0; + do { - if ( bHasHeaderLine ) + 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++) { - aHeaderLine.GetTokenSpecial(aColumnName,nStartPosHeaderLine,m_cFieldDelimiter,m_cStringDelimiter); - if ( !aColumnName.Len() ) + if ( nRowCount == 0) { - aColumnName = 'C'; - aColumnName += String::CreateFromInt32(i+1); + 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); } - else + ++nRowCount; + } + while(nRowCount < nMaxRowsToScan && m_pFileStream->ReadByteStringLine(aFirstLine,nEncoding)); + + for (xub_StrLen i = 0; i < nFieldCount; i++) + { + // 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()) { - // no column name so ... - aColumnName = 'C'; - aColumnName += String::CreateFromInt32(i+1); + (aAlias = aColumnNames[i]) += String::CreateFromInt32(++nExprCnt); + aFind = connectivity::find(m_aColumns->get().begin(),m_aColumns->get().end(),aAlias,aCase); } - sal_Int32 eType; - UINT16 nPrecision = 0; - UINT16 nScale = 0; - BOOL bNumeric = FALSE; + 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; - // first without fielddelimiter - String aField; - aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine,m_cFieldDelimiter,'\0'); - if (aField.Len() == 0 || - (m_cStringDelimiter && m_cStringDelimiter == aField.GetChar(0))) + if ( bNumeric ) { - bNumeric = 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) + // first without fielddelimiter + String aField; + aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine,m_cFieldDelimiter,'\0'); + if (aField.Len() == 0 || + (m_cStringDelimiter && m_cStringDelimiter == aField.GetChar(0))) { bNumeric = FALSE; + if ( m_cStringDelimiter != '\0' ) + aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); + else + nStartPosFirstLine2 = nStartPosFirstLine; } else { - bNumeric = TRUE; - xub_StrLen nDot = 0; - xub_StrLen nDecimalDelCount = 0; - for (xub_StrLen j = 0; j < aField2.Len(); j++) - { - 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 = FALSE; - break; - } - if (cDecimalDelimiter && c == cDecimalDelimiter) - { - nPrecision = 15; // we have an decimal value - nScale = 2; - ++nDecimalDelCount; - } // if (cDecimalDelimiter && c == cDecimalDelimiter) - if ( c == '.' ) - ++nDot; - } + String aField2; + if ( m_cStringDelimiter != '\0' ) + aFirstLine.GetTokenSpecial(aField2,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); + else + aField2 = aField; - if (nDecimalDelCount > 1 || nDot > 1 ) // if there is more than one dot it isn't a number + if (aField2.Len() == 0) + { bNumeric = 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) + const sal_Unicode c = aField2.GetChar(j); + if ( j == nSpaceCount && m_cFieldDelimiter != 32 && c == 32 ) + { + ++nSpaceCount; continue; - else + } + // 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; } - } - // jetzt koennte es noch ein Datumsfeld sein - if (!bNumeric) + 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&) + { + } + } + } + } + } + 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()) + } + else + { + String aField; + aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine,m_cFieldDelimiter,'\0'); + if (aField.Len() == 0 || + (m_cStringDelimiter && m_cStringDelimiter == aField.GetChar(0))) { - (aAlias = aColumnName) += String::CreateFromInt32(++nExprCnt); - aFind = connectivity::find(m_aColumns->get().begin(),m_aColumns->get().end(),aAlias,aCase); + 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); } - - 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); } // ------------------------------------------------------------------------- OFlatTable::OFlatTable(sdbcx::OCollection* _pTables,OFlatConnection* _pConnection, diff --git a/connectivity/source/drivers/flat/flat.xcu b/connectivity/source/drivers/flat/flat.xcu index d00d1f98c38c..a54394e853e8 100755 --- a/connectivity/source/drivers/flat/flat.xcu +++ b/connectivity/source/drivers/flat/flat.xcu @@ -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> diff --git a/connectivity/source/drivers/mozab/MResultSet.cxx b/connectivity/source/drivers/mozab/MResultSet.cxx index c7c85770419e..da55b60079b3 100644 --- a/connectivity/source/drivers/mozab/MResultSet.cxx +++ b/connectivity/source/drivers/mozab/MResultSet.cxx @@ -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; diff --git a/connectivity/source/inc/TSkipDeletedSet.hxx b/connectivity/source/inc/TSkipDeletedSet.hxx index bcd3fc23f1a6..c5d5d5b71dd6 100644 --- a/connectivity/source/inc/TSkipDeletedSet.hxx +++ b/connectivity/source/inc/TSkipDeletedSet.hxx @@ -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 diff --git a/connectivity/source/inc/dbase/DIndexColumns.hxx b/connectivity/source/inc/dbase/DIndexColumns.hxx index be4f2577237e..6ccdb07c12f9 100644 --- a/connectivity/source/inc/dbase/DIndexColumns.hxx +++ b/connectivity/source/inc/dbase/DIndexColumns.hxx @@ -48,7 +48,7 @@ namespace connectivity ODbaseIndexColumns( ODbaseIndex* _pIndex, ::osl::Mutex& _rMutex, const TStringVector &_rVector) - : sdbcx::OCollection(*_pIndex,_pIndex->getTable()->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers(),_rMutex,_rVector) + : sdbcx::OCollection(*_pIndex,_pIndex->getTable()->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers(),_rMutex,_rVector) , m_pIndex(_pIndex) {} diff --git a/connectivity/source/inc/dbase/DIndexes.hxx b/connectivity/source/inc/dbase/DIndexes.hxx index e07e0cb90cb3..7988bd0a2727 100644 --- a/connectivity/source/inc/dbase/DIndexes.hxx +++ b/connectivity/source/inc/dbase/DIndexes.hxx @@ -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) {} diff --git a/connectivity/source/inc/file/FColumns.hxx b/connectivity/source/inc/file/FColumns.hxx index 119ad228ad55..81214fbe603a 100644 --- a/connectivity/source/inc/file/FColumns.hxx +++ b/connectivity/source/inc/file/FColumns.hxx @@ -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) {} }; diff --git a/connectivity/source/inc/file/FTables.hxx b/connectivity/source/inc/file/FTables.hxx index 4a15985c248b..e5247652e895 100644 --- a/connectivity/source/inc/file/FTables.hxx +++ b/connectivity/source/inc/file/FTables.hxx @@ -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) {} diff --git a/connectivity/source/inc/flat/EConnection.hxx b/connectivity/source/inc/flat/EConnection.hxx index 3b4fb7e558d6..becd4670f994 100644 --- a/connectivity/source/inc/flat/EConnection.hxx +++ b/connectivity/source/inc/flat/EConnection.hxx @@ -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(); diff --git a/connectivity/source/inc/flat/ETable.hxx b/connectivity/source/inc/flat/ETable.hxx index 51d57376c5d2..ed3c40614217 100644 --- a/connectivity/source/inc/flat/ETable.hxx +++ b/connectivity/source/inc/flat/ETable.hxx @@ -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); BOOL CreateFile(const INetURLObject& aFile, 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(); diff --git a/connectivity/source/parse/PColumn.cxx b/connectivity/source/parse/PColumn.cxx index 43e38f5a1674..10f4b5b4bdcf 100644 --- a/connectivity/source/parse/PColumn.cxx +++ b/connectivity/source/parse/PColumn.cxx @@ -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; } diff --git a/connectivity/source/parse/sqliterator.cxx b/connectivity/source/parse/sqliterator.cxx index e1d805e9a1e5..34ba49566383 100644 --- a/connectivity/source/parse/sqliterator.cxx +++ b/connectivity/source/parse/sqliterator.cxx @@ -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 diff --git a/connectivity/source/simpledbt/staticdbtools_s.cxx b/connectivity/source/simpledbt/staticdbtools_s.cxx index 17d052a35b6b..36f9478a3312 100644 --- a/connectivity/source/simpledbt/staticdbtools_s.cxx +++ b/connectivity/source/simpledbt/staticdbtools_s.cxx @@ -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 ); } //---------------------------------------------------------------- diff --git a/connectivity/source/simpledbt/staticdbtools_s.hxx b/connectivity/source/simpledbt/staticdbtools_s.hxx index 6746ad7a0918..4836f6bf3d12 100644 --- a/connectivity/source/simpledbt/staticdbtools_s.hxx +++ b/connectivity/source/simpledbt/staticdbtools_s.hxx @@ -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, diff --git a/desktop/source/deployment/gui/dp_gui_updatedialog.cxx b/desktop/source/deployment/gui/dp_gui_updatedialog.cxx index 44f335dd509d..001dfecc6932 100755 --- a/desktop/source/deployment/gui/dp_gui_updatedialog.cxx +++ b/desktop/source/deployment/gui/dp_gui_updatedialog.cxx @@ -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" @@ -566,6 +565,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), @@ -626,23 +626,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)); @@ -677,7 +660,7 @@ BOOL UpdateDialog::Close() { } short UpdateDialog::Execute() { - m_throbber->start(); + m_throbber.start(); m_thread->launch(); return ModalDialog::Execute(); } @@ -876,9 +859,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(); diff --git a/desktop/source/deployment/gui/dp_gui_updatedialog.hxx b/desktop/source/deployment/gui/dp_gui_updatedialog.hxx index 54e645f195d8..cebcc65e26a8 100755 --- a/desktop/source/deployment/gui/dp_gui_updatedialog.hxx +++ b/desktop/source/deployment/gui/dp_gui_updatedialog.hxx @@ -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; diff --git a/desktop/source/deployment/gui/dp_gui_updatedialog.src b/desktop/source/deployment/gui/dp_gui_updatedialog.src index 4da431733e31..90b764d811b2 100755 --- a/desktop/source/deployment/gui/dp_gui_updatedialog.src +++ b/desktop/source/deployment/gui/dp_gui_updatedialog.src @@ -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; diff --git a/desktop/source/migration/migration.cxx b/desktop/source/migration/migration.cxx index 314537836921..314537836921 100755..100644 --- a/desktop/source/migration/migration.cxx +++ b/desktop/source/migration/migration.cxx diff --git a/desktop/source/migration/pages.cxx b/desktop/source/migration/pages.cxx index 53ec488c2082..03352d33f7c6 100644 --- a/desktop/source/migration/pages.cxx +++ b/desktop/source/migration/pages.cxx @@ -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; diff --git a/desktop/source/migration/pages.hxx b/desktop/source/migration/pages.hxx index 776268eb475c..a89262e8ec5b 100644 --- a/desktop/source/migration/pages.hxx +++ b/desktop/source/migration/pages.hxx @@ -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: diff --git a/desktop/source/migration/wizard.cxx b/desktop/source/migration/wizard.cxx index 5cc90577aaff..150a58ce2729 100644 --- a/desktop/source/migration/wizard.cxx +++ b/desktop/source/migration/wizard.cxx @@ -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)); diff --git a/desktop/source/migration/wizard.hrc b/desktop/source/migration/wizard.hrc index fdad97a8174b..8f35488c58b3 100644 --- a/desktop/source/migration/wizard.hrc +++ b/desktop/source/migration/wizard.hrc @@ -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 diff --git a/desktop/source/migration/wizard.hxx b/desktop/source/migration/wizard.hxx index 3317880f8bd6..48045f6b035f 100644 --- a/desktop/source/migration/wizard.hxx +++ b/desktop/source/migration/wizard.hxx @@ -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; diff --git a/desktop/source/migration/wizard.src b/desktop/source/migration/wizard.src index e690e130c74f..78bd3a0e8197 100644 --- a/desktop/source/migration/wizard.src +++ b/desktop/source/migration/wizard.src @@ -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 diff --git a/editeng/inc/editeng/editeng.hxx b/editeng/inc/editeng/editeng.hxx index 84f4802e7b44..84f4802e7b44 100644..100755 --- a/editeng/inc/editeng/editeng.hxx +++ b/editeng/inc/editeng/editeng.hxx diff --git a/editeng/inc/editeng/splwrap.hxx b/editeng/inc/editeng/splwrap.hxx index 5e46a96adb9f..5e46a96adb9f 100644..100755 --- a/editeng/inc/editeng/splwrap.hxx +++ b/editeng/inc/editeng/splwrap.hxx diff --git a/editeng/source/editeng/impedit.cxx b/editeng/source/editeng/impedit.cxx index 9ac7de8e2b7d..9ac7de8e2b7d 100644..100755 --- a/editeng/source/editeng/impedit.cxx +++ b/editeng/source/editeng/impedit.cxx diff --git a/editeng/source/outliner/outlvw.cxx b/editeng/source/outliner/outlvw.cxx index e2a1fabea0ba..e2a1fabea0ba 100644..100755 --- a/editeng/source/outliner/outlvw.cxx +++ b/editeng/source/outliner/outlvw.cxx diff --git a/officecfg/registry/data/org/openoffice/Setup.xcu b/officecfg/registry/data/org/openoffice/Setup.xcu index e8b483b8622d..e8b483b8622d 100755..100644 --- a/officecfg/registry/data/org/openoffice/Setup.xcu +++ b/officecfg/registry/data/org/openoffice/Setup.xcu diff --git a/sfx2/source/dialog/securitypage.src b/sfx2/source/dialog/securitypage.src index fee60404d01c..fee60404d01c 100755..100644 --- a/sfx2/source/dialog/securitypage.src +++ b/sfx2/source/dialog/securitypage.src diff --git a/sfx2/source/doc/doctemplates.cxx b/sfx2/source/doc/doctemplates.cxx index 8644e79f611d..a84f4a718dc3 100644 --- a/sfx2/source/doc/doctemplates.cxx +++ b/sfx2/source/doc/doctemplates.cxx @@ -31,6 +31,7 @@ #include "doctemplates.hxx" #include <vos/mutex.hxx> #include <tools/debug.hxx> +#include <tools/diagnose_ex.h> #include <tools/urlobj.hxx> #include <rtl/ustring.hxx> #include <rtl/ustrbuf.hxx> @@ -42,6 +43,7 @@ #include <comphelper/sequenceashashmap.hxx> #include <unotools/pathoptions.hxx> #include <comphelper/processfactory.hxx> +#include <comphelper/componentcontext.hxx> #include <com/sun/star/beans/PropertyAttribute.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/beans/XPropertySetInfo.hpp> @@ -59,7 +61,6 @@ #include <com/sun/star/ucb/XContentAccess.hpp> #include <com/sun/star/frame/XModuleManager.hpp> #include <com/sun/star/uno/Exception.hpp> -#include <com/sun/star/util/XOfficeInstallationDirectories.hpp> #include <svtools/templatefoldercache.hxx> #include <unotools/configmgr.hxx> @@ -2876,11 +2877,35 @@ void SfxURLRelocator_Impl::initOfficeInstDirs() } // ----------------------------------------------------------------------- +void SfxURLRelocator_Impl::implExpandURL( ::rtl::OUString& io_url ) +{ + const INetURLObject aParser( io_url ); + if ( aParser.GetProtocol() != INET_PROT_VND_SUN_STAR_EXPAND ) + return; + + io_url = aParser.GetURLPath( INetURLObject::DECODE_WITH_CHARSET ); + try + { + if ( !mxMacroExpander.is() ) + { + ::comphelper::ComponentContext aContext( mxFactory ); + mxMacroExpander.set( aContext.getSingleton( "com.sun.star.util.theMacroExpander" ), UNO_QUERY_THROW ); + } + io_url = mxMacroExpander->expandMacros( io_url ); + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } +} + +// ----------------------------------------------------------------------- void SfxURLRelocator_Impl::makeRelocatableURL( rtl::OUString & rURL ) { if ( rURL.getLength() > 0 ) { initOfficeInstDirs(); + implExpandURL( rURL ); rURL = mxOfficeInstDirs->makeRelocatableURL( rURL ); } } @@ -2891,6 +2916,7 @@ void SfxURLRelocator_Impl::makeAbsoluteURL( rtl::OUString & rURL ) if ( rURL.getLength() > 0 ) { initOfficeInstDirs(); + implExpandURL( rURL ); rURL = mxOfficeInstDirs->makeAbsoluteURL( rURL ); } } diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx index d24a95332b58..81e0ba2a1d8d 100644 --- a/sfx2/source/doc/sfxbasemodel.cxx +++ b/sfx2/source/doc/sfxbasemodel.cxx @@ -221,6 +221,7 @@ struct IMPL_SfxBaseModel_DataContainer : public ::sfx2::IModifiableDocument sal_Bool m_bSaving ; sal_Bool m_bSuicide ; sal_Bool m_bInitialized ; + sal_Bool m_bExternalTitle ; sal_Bool m_bModifiedSinceLastSave; uno::Reference< com::sun::star::view::XPrintable> m_xPrintable ; uno::Reference< script::provider::XScriptProvider > m_xScriptProvider; @@ -241,6 +242,7 @@ struct IMPL_SfxBaseModel_DataContainer : public ::sfx2::IModifiableDocument , m_bSaving ( sal_False ) , m_bSuicide ( sal_False ) , m_bInitialized ( sal_False ) + , m_bExternalTitle ( sal_False ) , m_bModifiedSinceLastSave( sal_False ) , m_pStorageModifyListen ( NULL ) , m_xTitleHelper () @@ -3747,7 +3749,7 @@ css::uno::Reference< css::frame::XUntitledNumbers > SfxBaseModel::impl_getUntitl SfxModelGuard aGuard( *this ); ::rtl::OUString aResult = impl_getTitleHelper()->getTitle (); - if ( m_pData->m_pObjectShell ) + if ( !m_pData->m_bExternalTitle && m_pData->m_pObjectShell ) { SfxMedium* pMedium = m_pData->m_pObjectShell->GetMedium(); if ( pMedium ) @@ -3757,7 +3759,7 @@ css::uno::Reference< css::frame::XUntitledNumbers > SfxBaseModel::impl_getUntitl aResult += String( SfxResId(STR_REPAIREDDOCUMENT) ); } - if ( m_pData->m_pObjectShell->IsReadOnlyUI() || (m_pData->m_pObjectShell->GetMedium() && m_pData->m_pObjectShell->GetMedium()->IsReadOnly()) ) + if ( m_pData->m_pObjectShell->IsReadOnlyUI() || (pMedium && pMedium->IsReadOnly()) ) aResult += ::rtl::OUString( String( SfxResId(STR_READONLY) ) ); else if ( m_pData->m_pObjectShell->IsDocShared() ) aResult += ::rtl::OUString( String( SfxResId(STR_SHARED) ) ); @@ -3778,6 +3780,7 @@ void SAL_CALL SfxBaseModel::setTitle( const ::rtl::OUString& sTitle ) SfxModelGuard aGuard( *this ); impl_getTitleHelper()->setTitle (sTitle); + m_pData->m_bExternalTitle = sal_True; } //============================================================================= diff --git a/sfx2/source/doc/syspath.cxx b/sfx2/source/doc/syspath.cxx index a1025370ed24..a1025370ed24 100644..100755 --- a/sfx2/source/doc/syspath.cxx +++ b/sfx2/source/doc/syspath.cxx diff --git a/sfx2/source/inc/helpid.hrc b/sfx2/source/inc/helpid.hrc index ef5c168c36f0..ef5c168c36f0 100755..100644 --- a/sfx2/source/inc/helpid.hrc +++ b/sfx2/source/inc/helpid.hrc diff --git a/sfx2/source/inc/sfxurlrelocator.hxx b/sfx2/source/inc/sfxurlrelocator.hxx index 8acc674b3568..5ab1125b7cb6 100644 --- a/sfx2/source/inc/sfxurlrelocator.hxx +++ b/sfx2/source/inc/sfxurlrelocator.hxx @@ -30,6 +30,7 @@ #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/util/XOfficeInstallationDirectories.hpp> +#include <com/sun/star/util/XMacroExpander.hpp> #include <rtl/ustring.hxx> #include <osl/mutex.hxx> @@ -39,6 +40,7 @@ class SfxURLRelocator_Impl ::osl::Mutex maMutex; ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxFactory; ::com::sun::star::uno::Reference< ::com::sun::star::util::XOfficeInstallationDirectories > mxOfficeInstDirs; + ::com::sun::star::uno::Reference< ::com::sun::star::util::XMacroExpander > mxMacroExpander; public: static bool propertyCanContainOfficeDir( const rtl::OUString & rPropName ); @@ -48,6 +50,9 @@ public: SfxURLRelocator_Impl( ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xFactory ); ~SfxURLRelocator_Impl(); + +private: + void implExpandURL( ::rtl::OUString& io_url ); }; #endif diff --git a/svx/source/fmcomp/fmgridif.cxx b/svx/source/fmcomp/fmgridif.cxx index d6a530db85e3..783e07c3a2ed 100644 --- a/svx/source/fmcomp/fmgridif.cxx +++ b/svx/source/fmcomp/fmgridif.cxx @@ -1974,10 +1974,12 @@ void FmXGridPeer::setProperty( const ::rtl::OUString& PropertyName, const Any& V } else if ( 0 == PropertyName.compareTo( FM_PROP_HELPURL ) ) { - INetURLObject aHID( ::comphelper::getString(Value) ); - DBG_ASSERT( aHID.GetProtocol() == INET_PROT_HID, "Wrong HelpURL!" ); + ::rtl::OUString sHelpURL; + OSL_VERIFY( Value >>= sHelpURL ); + INetURLObject aHID( sHelpURL ); if ( aHID.GetProtocol() == INET_PROT_HID ) - pGrid->SetHelpId( rtl::OUStringToOString( aHID.GetURLPath(), RTL_TEXTENCODING_UTF8 ) ); + sHelpURL = aHID.GetURLPath(); + pGrid->SetHelpId( rtl::OUStringToOString( sHelpURL, RTL_TEXTENCODING_UTF8 ) ); } else if ( 0 == PropertyName.compareTo( FM_PROP_DISPLAYSYNCHRON ) ) { @@ -2073,25 +2075,28 @@ void FmXGridPeer::setProperty( const ::rtl::OUString& PropertyName, const Any& V } else if ( 0 == PropertyName.compareTo( FM_PROP_HASNAVIGATION ) ) { - if (Value.getValueType() == ::getBooleanCppuType()) - pGrid->EnableNavigationBar(*(sal_Bool*)Value.getValue()); + sal_Bool bValue( sal_True ); + OSL_VERIFY( Value >>= bValue ); + pGrid->EnableNavigationBar( bValue ); } else if ( 0 == PropertyName.compareTo( FM_PROP_RECORDMARKER ) ) { - if (Value.getValueType() == ::getBooleanCppuType()) - pGrid->EnableHandle(*(sal_Bool*)Value.getValue()); + sal_Bool bValue( sal_True ); + OSL_VERIFY( Value >>= bValue ); + pGrid->EnableHandle( bValue ); } else if ( 0 == PropertyName.compareTo( FM_PROP_ENABLED ) ) { - if (Value.getValueType() == ::getBooleanCppuType()) - { - // Im DesignModus nur das Datenfenster disablen - // Sonst kann das Control nicht mehr konfiguriert werden - if (isDesignMode()) - pGrid->GetDataWindow().Enable(*(sal_Bool*)Value.getValue()); - else - pGrid->Enable(*(sal_Bool*)Value.getValue()); - } + sal_Bool bValue( sal_True ); + OSL_VERIFY( Value >>= bValue ); + pGrid->EnableHandle( bValue ); + + // Im DesignModus nur das Datenfenster disablen + // Sonst kann das Control nicht mehr konfiguriert werden + if (isDesignMode()) + pGrid->GetDataWindow().Enable( bValue ); + else + pGrid->Enable( bValue ); } else VCLXWindow::setProperty( PropertyName, Value ); diff --git a/svx/source/fmcomp/gridcell.cxx b/svx/source/fmcomp/gridcell.cxx index 7fb9d8330cf6..f546a2cef0b8 100644 --- a/svx/source/fmcomp/gridcell.cxx +++ b/svx/source/fmcomp/gridcell.cxx @@ -1193,7 +1193,7 @@ String DbTextField::GetFormatText(const Reference< XColumn >& _rxField, const Re if ( _rxField.is() ) try { - aString = getValue( _rxField, xFormatter, m_rColumn.GetParent().getNullDate(), m_rColumn.GetKey(), m_nKeyType); + aString = getFormattedValue( _rxField, xFormatter, m_rColumn.GetParent().getNullDate(), m_rColumn.GetKey(), m_nKeyType); } catch( const Exception& ) { @@ -1534,7 +1534,7 @@ String DbFormattedField::GetFormatText(const Reference< ::com::sun::star::sdb::X // ein double-Feld bindet und als Text formatiert, liefert m_rColumn.IsNumeric() sal_True. Das heisst // also einfach, dass ich den Inhalt der Variant mittels getDouble abfragen kann, und dann kann // ich den Rest (die Formatierung) dem FormattedField ueberlassen. - double dValue = getValue(_rxField, m_rColumn.GetParent().getNullDate(), m_nKeyType); + double dValue = getValue( _rxField, m_rColumn.GetParent().getNullDate() ); if (_rxField->wasNull()) return aText; ((FormattedField*)m_pPainter)->SetValue(dValue); @@ -1578,7 +1578,7 @@ void DbFormattedField::UpdateFromField(const Reference< ::com::sun::star::sdb::X // ein double-Feld bindet und als Text formatiert, liefert m_rColumn.IsNumeric() sal_True. Das heisst // also einfach, dass ich den Inhalt der Variant mittels getDouble abfragen kann, und dann kann // ich den Rest (die Formatierung) dem FormattedField ueberlassen. - double dValue = getValue(_rxField, m_rColumn.GetParent().getNullDate(), m_nKeyType); + double dValue = getValue( _rxField, m_rColumn.GetParent().getNullDate() ); if (_rxField->wasNull()) m_pWindow->SetText(String()); else @@ -2553,7 +2553,7 @@ String DbComboBox::GetFormatText(const Reference< ::com::sun::star::sdb::XColumn if (_rxField.is()) try { - aString = getValue( _rxField, xFormatter, m_rColumn.GetParent().getNullDate(), m_rColumn.GetKey(), m_nKeyType ); + aString = getFormattedValue( _rxField, xFormatter, m_rColumn.GetParent().getNullDate(), m_rColumn.GetKey(), m_nKeyType ); } catch( const Exception& ) { @@ -3164,7 +3164,7 @@ void DbFilterField::Update() while (!xListCursor->isAfterLast() && i++ < SHRT_MAX) // max anzahl eintraege { - aStr = getValue(xDataField, xFormatter, aNullDate, nFormatKey, nKeyType); + aStr = getFormattedValue(xDataField, xFormatter, aNullDate, nFormatKey, nKeyType); aStringList.push_back(aStr); xListCursor->next(); } diff --git a/svx/source/inc/typeconversionclient.hxx b/svx/source/inc/typeconversionclient.hxx index 53bf13b7702c..9ff7e12fe4d0 100644 --- a/svx/source/inc/typeconversionclient.hxx +++ b/svx/source/inc/typeconversionclient.hxx @@ -60,17 +60,16 @@ namespace svxform // -------------------------------------------------------- inline 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 { double nReturn(0); if ( ensureLoaded() ) - nReturn = m_xTypeConversion->getValue(_rxVariant, _rNullDate, _nKeyType); + nReturn = m_xTypeConversion->getValue( _rxVariant, _rNullDate ); return nReturn; } // -------------------------------------------------------- - inline ::rtl::OUString getValue( + inline ::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, @@ -79,7 +78,7 @@ namespace svxform { ::rtl::OUString sReturn; if ( ensureLoaded() ) - sReturn = m_xTypeConversion->getValue(_rxColumn, _rxFormatter, _rNullDate, _nKey, _nKeyType); + sReturn = m_xTypeConversion->getFormattedValue(_rxColumn, _rxFormatter, _rNullDate, _nKey, _nKeyType); return sReturn; } }; diff --git a/svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx b/svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx index 485afe35f9c1..485afe35f9c1 100755..100644 --- a/svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx +++ b/svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx diff --git a/svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx b/svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx index 3f849e92b462..5e225e626175 100644..100755 --- a/svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx +++ b/svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx @@ -367,6 +367,10 @@ namespace sdr { namespace contact { ::basegfx::B2DTuple aViewScale, aViewTranslate; double nViewRotate(0), nViewShearX(0); _rViewTransformation.decompose( aViewScale, aViewTranslate, nViewRotate, nViewShearX ); + + ::basegfx::B2DTuple aZoomScale, aZoomTranslate; + double nZoomRotate(0), nZoomShearX(0); + _rZoomLevelNormalization.decompose( aZoomScale, aZoomTranslate, nZoomRotate, nZoomShearX ); #endif // transform the logic bound rect, using the view transformation, to pixel coordinates @@ -979,6 +983,10 @@ namespace sdr { namespace contact { aScaleNormalization.set( 0, 0, (double)aCurrentDeviceMapMode.GetScaleX() ); aScaleNormalization.set( 1, 1, (double)aCurrentDeviceMapMode.GetScaleY() ); m_aZoomLevelNormalization *= aScaleNormalization; + + #if OSL_DEBUG_LEVEL > 1 + m_aZoomLevelNormalization.decompose( aScale, aTranslate, fRotate, fShearX ); + #endif } //-------------------------------------------------------------------- @@ -1818,6 +1826,10 @@ namespace sdr { namespace contact { // disposed the control though it doesn't own it. So, /me thinks we should not bother here. return drawinglayer::primitive2d::Primitive2DSequence(); + if ( GetObjectContact().getViewInformation2D().getViewTransformation().isIdentity() ) + // remove this when #i115754# is fixed + return drawinglayer::primitive2d::Primitive2DSequence(); + // ignore existing controls which are in alive mode and manually switched to "invisible" // #102090# / 2009-06-05 / frank.schoenheit@sun.com const ControlHolder& rControl( m_pImpl->getExistentControl() ); diff --git a/sysui/desktop/icons/so7-base-doc.ico b/sysui/desktop/icons/so7-base-doc.ico Binary files differindex e4beab7270e1..e4beab7270e1 100755..100644 --- a/sysui/desktop/icons/so7-base-doc.ico +++ b/sysui/desktop/icons/so7-base-doc.ico diff --git a/sysui/desktop/icons/so7-calc-doc.ico b/sysui/desktop/icons/so7-calc-doc.ico Binary files differindex 8b34fc606c5d..8b34fc606c5d 100755..100644 --- a/sysui/desktop/icons/so7-calc-doc.ico +++ b/sysui/desktop/icons/so7-calc-doc.ico diff --git a/sysui/desktop/icons/so7-calc-tem.ico b/sysui/desktop/icons/so7-calc-tem.ico Binary files differindex d074a214a90b..d074a214a90b 100755..100644 --- a/sysui/desktop/icons/so7-calc-tem.ico +++ b/sysui/desktop/icons/so7-calc-tem.ico diff --git a/sysui/desktop/icons/so7-chart-doc.ico b/sysui/desktop/icons/so7-chart-doc.ico Binary files differindex bdc613fb30e2..bdc613fb30e2 100755..100644 --- a/sysui/desktop/icons/so7-chart-doc.ico +++ b/sysui/desktop/icons/so7-chart-doc.ico diff --git a/sysui/desktop/icons/so7-draw-doc.ico b/sysui/desktop/icons/so7-draw-doc.ico Binary files differindex c2881862053a..c2881862053a 100755..100644 --- a/sysui/desktop/icons/so7-draw-doc.ico +++ b/sysui/desktop/icons/so7-draw-doc.ico diff --git a/sysui/desktop/icons/so7-draw-tem.ico b/sysui/desktop/icons/so7-draw-tem.ico Binary files differindex 8d713d0f470e..8d713d0f470e 100755..100644 --- a/sysui/desktop/icons/so7-draw-tem.ico +++ b/sysui/desktop/icons/so7-draw-tem.ico diff --git a/sysui/desktop/icons/so7-impress-doc.ico b/sysui/desktop/icons/so7-impress-doc.ico Binary files differindex a8f9518e624b..a8f9518e624b 100755..100644 --- a/sysui/desktop/icons/so7-impress-doc.ico +++ b/sysui/desktop/icons/so7-impress-doc.ico diff --git a/sysui/desktop/icons/so7-impress-tem.ico b/sysui/desktop/icons/so7-impress-tem.ico Binary files differindex ac140b269242..ac140b269242 100755..100644 --- a/sysui/desktop/icons/so7-impress-tem.ico +++ b/sysui/desktop/icons/so7-impress-tem.ico diff --git a/sysui/desktop/icons/so7-master-doc.ico b/sysui/desktop/icons/so7-master-doc.ico Binary files differindex 1c3068715990..1c3068715990 100755..100644 --- a/sysui/desktop/icons/so7-master-doc.ico +++ b/sysui/desktop/icons/so7-master-doc.ico diff --git a/sysui/desktop/icons/so7-math-doc.ico b/sysui/desktop/icons/so7-math-doc.ico Binary files differindex d1cd9bd4c6bd..d1cd9bd4c6bd 100755..100644 --- a/sysui/desktop/icons/so7-math-doc.ico +++ b/sysui/desktop/icons/so7-math-doc.ico diff --git a/sysui/desktop/icons/so7-writer-doc.ico b/sysui/desktop/icons/so7-writer-doc.ico Binary files differindex b8eb3df20564..b8eb3df20564 100755..100644 --- a/sysui/desktop/icons/so7-writer-doc.ico +++ b/sysui/desktop/icons/so7-writer-doc.ico diff --git a/sysui/desktop/icons/so7-writer-tem.ico b/sysui/desktop/icons/so7-writer-tem.ico Binary files differindex 318cce4bc9a7..318cce4bc9a7 100755..100644 --- a/sysui/desktop/icons/so7-writer-tem.ico +++ b/sysui/desktop/icons/so7-writer-tem.ico diff --git a/sysui/desktop/icons/so8-base-app.ico b/sysui/desktop/icons/so8-base-app.ico Binary files differindex 4a22d3529614..4a22d3529614 100755..100644 --- a/sysui/desktop/icons/so8-base-app.ico +++ b/sysui/desktop/icons/so8-base-app.ico diff --git a/sysui/desktop/icons/so8-base-doc.ico b/sysui/desktop/icons/so8-base-doc.ico Binary files differindex bcddbf957630..bcddbf957630 100755..100644 --- a/sysui/desktop/icons/so8-base-doc.ico +++ b/sysui/desktop/icons/so8-base-doc.ico diff --git a/sysui/desktop/icons/so8-calc-app.ico b/sysui/desktop/icons/so8-calc-app.ico Binary files differindex a28cab56157b..a28cab56157b 100755..100644 --- a/sysui/desktop/icons/so8-calc-app.ico +++ b/sysui/desktop/icons/so8-calc-app.ico diff --git a/sysui/desktop/icons/so8-calc-doc.ico b/sysui/desktop/icons/so8-calc-doc.ico Binary files differindex 5f293dd82c30..5f293dd82c30 100755..100644 --- a/sysui/desktop/icons/so8-calc-doc.ico +++ b/sysui/desktop/icons/so8-calc-doc.ico diff --git a/sysui/desktop/icons/so8-calc-tem.ico b/sysui/desktop/icons/so8-calc-tem.ico Binary files differindex 98bf90678573..98bf90678573 100755..100644 --- a/sysui/desktop/icons/so8-calc-tem.ico +++ b/sysui/desktop/icons/so8-calc-tem.ico diff --git a/sysui/desktop/icons/so8-chart-doc.ico b/sysui/desktop/icons/so8-chart-doc.ico Binary files differindex 01ff8365434b..01ff8365434b 100755..100644 --- a/sysui/desktop/icons/so8-chart-doc.ico +++ b/sysui/desktop/icons/so8-chart-doc.ico diff --git a/sysui/desktop/icons/so8-configuration.ico b/sysui/desktop/icons/so8-configuration.ico Binary files differindex 57f3b6701b30..57f3b6701b30 100755..100644 --- a/sysui/desktop/icons/so8-configuration.ico +++ b/sysui/desktop/icons/so8-configuration.ico diff --git a/sysui/desktop/icons/so8-draw-app.ico b/sysui/desktop/icons/so8-draw-app.ico Binary files differindex 6003ccb3d7c3..6003ccb3d7c3 100755..100644 --- a/sysui/desktop/icons/so8-draw-app.ico +++ b/sysui/desktop/icons/so8-draw-app.ico diff --git a/sysui/desktop/icons/so8-draw-doc.ico b/sysui/desktop/icons/so8-draw-doc.ico Binary files differindex f4f169bd6fb5..f4f169bd6fb5 100755..100644 --- a/sysui/desktop/icons/so8-draw-doc.ico +++ b/sysui/desktop/icons/so8-draw-doc.ico diff --git a/sysui/desktop/icons/so8-draw-tem.ico b/sysui/desktop/icons/so8-draw-tem.ico Binary files differindex d3f63c38dbe0..d3f63c38dbe0 100755..100644 --- a/sysui/desktop/icons/so8-draw-tem.ico +++ b/sysui/desktop/icons/so8-draw-tem.ico diff --git a/sysui/desktop/icons/so8-empty-doc.ico b/sysui/desktop/icons/so8-empty-doc.ico Binary files differindex b71d2b939ca7..b71d2b939ca7 100755..100644 --- a/sysui/desktop/icons/so8-empty-doc.ico +++ b/sysui/desktop/icons/so8-empty-doc.ico diff --git a/sysui/desktop/icons/so8-empty-tem.ico b/sysui/desktop/icons/so8-empty-tem.ico Binary files differindex 9368b0a81aef..9368b0a81aef 100755..100644 --- a/sysui/desktop/icons/so8-empty-tem.ico +++ b/sysui/desktop/icons/so8-empty-tem.ico diff --git a/sysui/desktop/icons/so8-image-doc.ico b/sysui/desktop/icons/so8-image-doc.ico Binary files differindex 11b4f0f6c718..11b4f0f6c718 100755..100644 --- a/sysui/desktop/icons/so8-image-doc.ico +++ b/sysui/desktop/icons/so8-image-doc.ico diff --git a/sysui/desktop/icons/so8-impress-app.ico b/sysui/desktop/icons/so8-impress-app.ico Binary files differindex 8fae43dab26d..8fae43dab26d 100755..100644 --- a/sysui/desktop/icons/so8-impress-app.ico +++ b/sysui/desktop/icons/so8-impress-app.ico diff --git a/sysui/desktop/icons/so8-impress-doc.ico b/sysui/desktop/icons/so8-impress-doc.ico Binary files differindex 9a91f89f2900..9a91f89f2900 100755..100644 --- a/sysui/desktop/icons/so8-impress-doc.ico +++ b/sysui/desktop/icons/so8-impress-doc.ico diff --git a/sysui/desktop/icons/so8-impress-tem.ico b/sysui/desktop/icons/so8-impress-tem.ico Binary files differindex f84f813f992c..f84f813f992c 100755..100644 --- a/sysui/desktop/icons/so8-impress-tem.ico +++ b/sysui/desktop/icons/so8-impress-tem.ico diff --git a/sysui/desktop/icons/so8-macro-doc.ico b/sysui/desktop/icons/so8-macro-doc.ico Binary files differindex f3742e1274e7..f3742e1274e7 100755..100644 --- a/sysui/desktop/icons/so8-macro-doc.ico +++ b/sysui/desktop/icons/so8-macro-doc.ico diff --git a/sysui/desktop/icons/so8-main-app.ico b/sysui/desktop/icons/so8-main-app.ico Binary files differindex aa044ad9c702..aa044ad9c702 100755..100644 --- a/sysui/desktop/icons/so8-main-app.ico +++ b/sysui/desktop/icons/so8-main-app.ico diff --git a/sysui/desktop/icons/so8-master-doc.ico b/sysui/desktop/icons/so8-master-doc.ico Binary files differindex 27a1d2f61c49..27a1d2f61c49 100755..100644 --- a/sysui/desktop/icons/so8-master-doc.ico +++ b/sysui/desktop/icons/so8-master-doc.ico diff --git a/sysui/desktop/icons/so8-math-app.ico b/sysui/desktop/icons/so8-math-app.ico Binary files differindex 956c259c756a..956c259c756a 100755..100644 --- a/sysui/desktop/icons/so8-math-app.ico +++ b/sysui/desktop/icons/so8-math-app.ico diff --git a/sysui/desktop/icons/so8-math-doc.ico b/sysui/desktop/icons/so8-math-doc.ico Binary files differindex e7b88449999f..e7b88449999f 100755..100644 --- a/sysui/desktop/icons/so8-math-doc.ico +++ b/sysui/desktop/icons/so8-math-doc.ico diff --git a/sysui/desktop/icons/so8-open.ico b/sysui/desktop/icons/so8-open.ico Binary files differindex b77a741b338f..b77a741b338f 100755..100644 --- a/sysui/desktop/icons/so8-open.ico +++ b/sysui/desktop/icons/so8-open.ico diff --git a/sysui/desktop/icons/so8-printer.ico b/sysui/desktop/icons/so8-printer.ico Binary files differindex 25e61f8de5d5..25e61f8de5d5 100755..100644 --- a/sysui/desktop/icons/so8-printer.ico +++ b/sysui/desktop/icons/so8-printer.ico diff --git a/sysui/desktop/icons/so8-web-doc.ico b/sysui/desktop/icons/so8-web-doc.ico Binary files differindex 12eeb63cffb2..12eeb63cffb2 100755..100644 --- a/sysui/desktop/icons/so8-web-doc.ico +++ b/sysui/desktop/icons/so8-web-doc.ico diff --git a/sysui/desktop/icons/so8-writer-app.ico b/sysui/desktop/icons/so8-writer-app.ico Binary files differindex 15f7f92d4b45..15f7f92d4b45 100755..100644 --- a/sysui/desktop/icons/so8-writer-app.ico +++ b/sysui/desktop/icons/so8-writer-app.ico diff --git a/sysui/desktop/icons/so8-writer-doc.ico b/sysui/desktop/icons/so8-writer-doc.ico Binary files differindex da774be1d3ac..da774be1d3ac 100755..100644 --- a/sysui/desktop/icons/so8-writer-doc.ico +++ b/sysui/desktop/icons/so8-writer-doc.ico diff --git a/sysui/desktop/icons/so8-writer-tem.ico b/sysui/desktop/icons/so8-writer-tem.ico Binary files differindex 1bdb86c8090f..1bdb86c8090f 100755..100644 --- a/sysui/desktop/icons/so8-writer-tem.ico +++ b/sysui/desktop/icons/so8-writer-tem.ico diff --git a/sysui/desktop/icons/so9_base_doc.ico b/sysui/desktop/icons/so9_base_doc.ico Binary files differindex 8cc1d4433c2c..8cc1d4433c2c 100755..100644 --- a/sysui/desktop/icons/so9_base_doc.ico +++ b/sysui/desktop/icons/so9_base_doc.ico diff --git a/sysui/desktop/icons/so9_calc_doc.ico b/sysui/desktop/icons/so9_calc_doc.ico Binary files differindex 2b9e514cb97b..2b9e514cb97b 100755..100644 --- a/sysui/desktop/icons/so9_calc_doc.ico +++ b/sysui/desktop/icons/so9_calc_doc.ico diff --git a/sysui/desktop/icons/so9_calc_tem.ico b/sysui/desktop/icons/so9_calc_tem.ico Binary files differindex 17f4823c4374..17f4823c4374 100755..100644 --- a/sysui/desktop/icons/so9_calc_tem.ico +++ b/sysui/desktop/icons/so9_calc_tem.ico diff --git a/sysui/desktop/icons/so9_chart_doc.ico b/sysui/desktop/icons/so9_chart_doc.ico Binary files differindex b116c81903b3..b116c81903b3 100755..100644 --- a/sysui/desktop/icons/so9_chart_doc.ico +++ b/sysui/desktop/icons/so9_chart_doc.ico diff --git a/sysui/desktop/icons/so9_draw_doc.ico b/sysui/desktop/icons/so9_draw_doc.ico Binary files differindex 51f95046709a..51f95046709a 100755..100644 --- a/sysui/desktop/icons/so9_draw_doc.ico +++ b/sysui/desktop/icons/so9_draw_doc.ico diff --git a/sysui/desktop/icons/so9_draw_tem.ico b/sysui/desktop/icons/so9_draw_tem.ico Binary files differindex e4b341175bff..e4b341175bff 100755..100644 --- a/sysui/desktop/icons/so9_draw_tem.ico +++ b/sysui/desktop/icons/so9_draw_tem.ico diff --git a/sysui/desktop/icons/so9_empty_doc.ico b/sysui/desktop/icons/so9_empty_doc.ico Binary files differindex a3970775e3ed..a3970775e3ed 100755..100644 --- a/sysui/desktop/icons/so9_empty_doc.ico +++ b/sysui/desktop/icons/so9_empty_doc.ico diff --git a/sysui/desktop/icons/so9_empty_tem.ico b/sysui/desktop/icons/so9_empty_tem.ico Binary files differindex 1b0088b80277..1b0088b80277 100755..100644 --- a/sysui/desktop/icons/so9_empty_tem.ico +++ b/sysui/desktop/icons/so9_empty_tem.ico diff --git a/sysui/desktop/icons/so9_global_doc.ico b/sysui/desktop/icons/so9_global_doc.ico Binary files differindex ea4ccb383956..ea4ccb383956 100755..100644 --- a/sysui/desktop/icons/so9_global_doc.ico +++ b/sysui/desktop/icons/so9_global_doc.ico diff --git a/sysui/desktop/icons/so9_html_doc.ico b/sysui/desktop/icons/so9_html_doc.ico Binary files differindex 4e5b8bc99c07..4e5b8bc99c07 100755..100644 --- a/sysui/desktop/icons/so9_html_doc.ico +++ b/sysui/desktop/icons/so9_html_doc.ico diff --git a/sysui/desktop/icons/so9_impress_doc.ico b/sysui/desktop/icons/so9_impress_doc.ico Binary files differindex 5258a8b6aa4c..5258a8b6aa4c 100755..100644 --- a/sysui/desktop/icons/so9_impress_doc.ico +++ b/sysui/desktop/icons/so9_impress_doc.ico diff --git a/sysui/desktop/icons/so9_impress_tem.ico b/sysui/desktop/icons/so9_impress_tem.ico Binary files differindex dcdbddb3b654..dcdbddb3b654 100755..100644 --- a/sysui/desktop/icons/so9_impress_tem.ico +++ b/sysui/desktop/icons/so9_impress_tem.ico diff --git a/sysui/desktop/icons/so9_macro_doc.ico b/sysui/desktop/icons/so9_macro_doc.ico Binary files differindex cd004015e63f..cd004015e63f 100755..100644 --- a/sysui/desktop/icons/so9_macro_doc.ico +++ b/sysui/desktop/icons/so9_macro_doc.ico diff --git a/sysui/desktop/icons/so9_math_doc.ico b/sysui/desktop/icons/so9_math_doc.ico Binary files differindex 622ae939d23a..622ae939d23a 100755..100644 --- a/sysui/desktop/icons/so9_math_doc.ico +++ b/sysui/desktop/icons/so9_math_doc.ico diff --git a/sysui/desktop/icons/so9_writer_doc.ico b/sysui/desktop/icons/so9_writer_doc.ico Binary files differindex b0cf11a993c9..b0cf11a993c9 100755..100644 --- a/sysui/desktop/icons/so9_writer_doc.ico +++ b/sysui/desktop/icons/so9_writer_doc.ico diff --git a/sysui/desktop/icons/so9_writer_tem.ico b/sysui/desktop/icons/so9_writer_tem.ico Binary files differindex 2e62a1934646..2e62a1934646 100755..100644 --- a/sysui/desktop/icons/so9_writer_tem.ico +++ b/sysui/desktop/icons/so9_writer_tem.ico diff --git a/ucb/source/core/cmdenv.cxx b/ucb/source/core/cmdenv.cxx index 5c0136fab063..5c0136fab063 100644..100755 --- a/ucb/source/core/cmdenv.cxx +++ b/ucb/source/core/cmdenv.cxx diff --git a/uui/source/ids.hrc b/uui/source/ids.hrc index c292befb1663..c292befb1663 100755..100644 --- a/uui/source/ids.hrc +++ b/uui/source/ids.hrc diff --git a/uui/source/loginerr.hxx b/uui/source/loginerr.hxx index 39bbfb7d820c..39bbfb7d820c 100755..100644 --- a/uui/source/loginerr.hxx +++ b/uui/source/loginerr.hxx diff --git a/xmloff/inc/xmloff/formlayerexport.hxx b/xmloff/inc/xmloff/formlayerexport.hxx index c9325139474f..476b2f9d8272 100644 --- a/xmloff/inc/xmloff/formlayerexport.hxx +++ b/xmloff/inc/xmloff/formlayerexport.hxx @@ -165,9 +165,6 @@ namespace xmloff */ bool documentContainsXForms() const; - /// retrieves the property mapper for control styles - ::vos::ORef< SvXMLExportPropertyMapper > getStylePropertyMapper(); - /** exports the controls number styles */ void exportControlNumberStyles(); diff --git a/xmloff/inc/xmloff/formlayerimport.hxx b/xmloff/inc/xmloff/formlayerimport.hxx index 36a2a87a7ad3..37aa8e440444 100644 --- a/xmloff/inc/xmloff/formlayerimport.hxx +++ b/xmloff/inc/xmloff/formlayerimport.hxx @@ -62,11 +62,6 @@ namespace xmloff OFormLayerXMLImport(SvXMLImport& _rImporter); ~OFormLayerXMLImport(); - /** retrieves the property mapper form form related auto styles. - */ - ::vos::ORef< SvXMLImportPropertyMapper > - getStylePropertyMapper() const; - /** start importing the forms of the given page <p>starting the import of a new page (by using this method) invalidates the current page position diff --git a/xmloff/source/draw/shapeimport.cxx b/xmloff/source/draw/shapeimport.cxx index 45411162a183..bd79d4d2cbde 100644 --- a/xmloff/source/draw/shapeimport.cxx +++ b/xmloff/source/draw/shapeimport.cxx @@ -183,12 +183,6 @@ XMLShapeImportHelper::XMLShapeImportHelper( mpPropertySetMapper->ChainImportMapper(XMLTextImportHelper::CreateParaExtPropMapper(rImporter)); mpPropertySetMapper->ChainImportMapper(XMLTextImportHelper::CreateParaDefaultExtPropMapper(rImporter)); -/* - // chain form attributes - const UniReference< SvXMLImportPropertyMapper> xFormMapper( rImporter.GetFormImport()->getStylePropertyMapper().getBodyPtr() ); - mpPropertySetMapper->ChainImportMapper(xFormMapper); -*/ - // construct PresPagePropsMapper xMapper = new XMLPropertySetMapper((XMLPropertyMapEntry*)aXMLSDPresPageProps, mpSdPropHdlFactory); mpPresPagePropsMapper = new SvXMLImportPropertyMapper( xMapper, rImporter ); diff --git a/xmloff/source/forms/formlayerexport.cxx b/xmloff/source/forms/formlayerexport.cxx index 50245fad1d2a..517c499595ca 100644 --- a/xmloff/source/forms/formlayerexport.cxx +++ b/xmloff/source/forms/formlayerexport.cxx @@ -93,12 +93,6 @@ namespace xmloff } //--------------------------------------------------------------------- - ::vos::ORef< SvXMLExportPropertyMapper > OFormLayerXMLExport::getStylePropertyMapper() - { - return m_pImpl->getStylePropertyMapper(); - } - - //--------------------------------------------------------------------- void OFormLayerXMLExport::initialize() { m_pImpl->clear(); diff --git a/xmloff/source/forms/formlayerimport.cxx b/xmloff/source/forms/formlayerimport.cxx index a31b6397f51f..17a0a3bc9bb3 100644 --- a/xmloff/source/forms/formlayerimport.cxx +++ b/xmloff/source/forms/formlayerimport.cxx @@ -60,12 +60,6 @@ namespace xmloff } //--------------------------------------------------------------------- - ::vos::ORef< SvXMLImportPropertyMapper > OFormLayerXMLImport::getStylePropertyMapper() const - { - return m_pImpl->getStylePropertyMapper(); - } - - //--------------------------------------------------------------------- void OFormLayerXMLImport::setAutoStyleContext(SvXMLStylesContext* _pNewContext) { m_pImpl->setAutoStyleContext(_pNewContext); diff --git a/xmloff/source/forms/layerimport.cxx b/xmloff/source/forms/layerimport.cxx index cf5155f6a9a1..4a4bc4e7f942 100644 --- a/xmloff/source/forms/layerimport.cxx +++ b/xmloff/source/forms/layerimport.cxx @@ -237,11 +237,6 @@ OFormLayerXMLImport_Impl::OFormLayerXMLImport_Impl(SvXMLImport& _rImporter) TabulatorCycle_RECORDS, OEnumMapper::getEnumMap(OEnumMapper::epTabCyle), &::getCppuType( static_cast<TabulatorCycle*>(NULL) )); - // initialize our style map - m_xPropertyHandlerFactory = new OControlPropertyHandlerFactory(); - ::vos::ORef< XMLPropertySetMapper > xStylePropertiesMapper = new XMLPropertySetMapper(getControlStylePropertyMap(), m_xPropertyHandlerFactory.getBodyPtr()); - m_xImportMapper = new SvXMLImportPropertyMapper(xStylePropertiesMapper.getBodyPtr(), _rImporter); - // 'initialize' m_aCurrentPageIds = m_aControlIds.end(); } @@ -416,12 +411,6 @@ void OFormLayerXMLImport_Impl::registerControlReferences(const Reference< XPrope } //--------------------------------------------------------------------- -::vos::ORef< SvXMLImportPropertyMapper > OFormLayerXMLImport_Impl::getStylePropertyMapper() const -{ - return m_xImportMapper; -} - -//--------------------------------------------------------------------- void OFormLayerXMLImport_Impl::startPage(const Reference< XDrawPage >& _rxDrawPage) { m_xCurrentPageFormsSupp.clear(); diff --git a/xmloff/source/forms/layerimport.hxx b/xmloff/source/forms/layerimport.hxx index bd88a67975fd..9bbc4c53d9df 100644 --- a/xmloff/source/forms/layerimport.hxx +++ b/xmloff/source/forms/layerimport.hxx @@ -92,10 +92,6 @@ namespace xmloff SvXMLStylesContext* m_pAutoStyles; protected: - // style handling - ::vos::ORef< XMLPropertyHandlerFactory > m_xPropertyHandlerFactory; - ::vos::ORef< SvXMLImportPropertyMapper > m_xImportMapper; - DECLARE_STL_USTRINGACCESS_MAP( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >, MapString2PropertySet ); DECLARE_STL_MAP( ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >, MapString2PropertySet, ODrawPageCompare, MapDrawPage2Map); @@ -168,10 +164,6 @@ namespace xmloff OFormLayerXMLImport_Impl(SvXMLImport& _rImporter); virtual ~OFormLayerXMLImport_Impl(); - /** retrieves the property mapper form form related auto styles. - */ - ::vos::ORef< SvXMLImportPropertyMapper > getStylePropertyMapper() const; - /** start importing the forms of the given page */ void startPage( |