2010-10-12 15:59:03 +02:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2012-06-14 17:39:53 +01:00
|
|
|
/*
|
|
|
|
* This file is part of the LibreOffice project.
|
|
|
|
*
|
|
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
*
|
|
|
|
* This file incorporates work covered by the following license notice:
|
|
|
|
*
|
|
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
|
|
* contributor license agreements. See the NOTICE file distributed
|
|
|
|
* with this work for additional information regarding copyright
|
|
|
|
* ownership. The ASF licenses this file to you under the Apache
|
|
|
|
* License, Version 2.0 (the "License"); you may not use this file
|
|
|
|
* except in compliance with the License. You may obtain a copy of
|
|
|
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
|
|
*/
|
2001-02-23 14:07:41 +00:00
|
|
|
|
2006-09-17 06:14:48 +00:00
|
|
|
|
2002-08-19 07:01:32 +00:00
|
|
|
#include "dbu_misc.hrc"
|
2008-01-30 07:51:55 +00:00
|
|
|
#include "dbustrings.hrc"
|
|
|
|
#include "moduledbu.hxx"
|
|
|
|
#include "sqlmessage.hxx"
|
|
|
|
#include "UITools.hxx"
|
|
|
|
#include "WColumnSelect.hxx"
|
2001-02-23 14:07:41 +00:00
|
|
|
#include "WCopyTable.hxx"
|
2008-01-30 07:51:55 +00:00
|
|
|
#include "WCPage.hxx"
|
|
|
|
#include "WExtendPages.hxx"
|
2001-02-23 14:07:41 +00:00
|
|
|
#include "WizardPages.hrc"
|
2008-01-30 07:51:55 +00:00
|
|
|
#include "WNameMatch.hxx"
|
|
|
|
#include "WTypeSelect.hxx"
|
|
|
|
|
|
|
|
#include <com/sun/star/sdb/application/CopyTableOperation.hpp>
|
2009-11-25 13:48:21 +01:00
|
|
|
#include <com/sun/star/sdb/SQLContext.hpp>
|
2008-01-30 07:51:55 +00:00
|
|
|
#include <com/sun/star/sdbc/ColumnValue.hpp>
|
|
|
|
#include <com/sun/star/sdbc/DataType.hpp>
|
|
|
|
#include <com/sun/star/sdbc/XResultSet.hpp>
|
|
|
|
#include <com/sun/star/sdbc/XRow.hpp>
|
|
|
|
#include <com/sun/star/sdbcx/KeyType.hpp>
|
|
|
|
#include <com/sun/star/sdbcx/XAppend.hpp>
|
|
|
|
#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
|
|
|
|
#include <com/sun/star/sdbcx/XDataDescriptorFactory.hpp>
|
|
|
|
#include <com/sun/star/sdbcx/XKeysSupplier.hpp>
|
|
|
|
#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
|
|
|
|
#include <com/sun/star/sdbcx/XViewsSupplier.hpp>
|
|
|
|
#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
|
2012-10-02 15:03:12 +02:00
|
|
|
#include <com/sun/star/task/InteractionHandler.hpp>
|
2008-01-30 07:51:55 +00:00
|
|
|
|
|
|
|
#include <comphelper/extract.hxx>
|
2012-09-27 13:43:06 +02:00
|
|
|
#include <comphelper/processfactory.hxx>
|
2001-02-23 14:07:41 +00:00
|
|
|
#include <comphelper/types.hxx>
|
2009-11-25 13:48:21 +01:00
|
|
|
#include <comphelper/interaction.hxx>
|
2001-02-23 14:07:41 +00:00
|
|
|
#include <connectivity/dbtools.hxx>
|
2009-10-16 14:16:52 +02:00
|
|
|
#include <connectivity/dbmetadata.hxx>
|
2009-11-25 13:48:21 +01:00
|
|
|
#include <connectivity/dbexception.hxx>
|
2008-01-30 07:51:55 +00:00
|
|
|
|
|
|
|
#include <rtl/ustrbuf.hxx>
|
|
|
|
#include <tools/debug.hxx>
|
|
|
|
#include <tools/diagnose_ex.h>
|
|
|
|
#include <vcl/lstbox.hxx>
|
|
|
|
#include <vcl/msgbox.hxx>
|
2001-10-18 05:52:55 +00:00
|
|
|
#include <vcl/waitobj.hxx>
|
2008-01-30 07:51:55 +00:00
|
|
|
|
2004-09-08 15:30:55 +00:00
|
|
|
#include <functional>
|
2011-02-08 19:44:44 +01:00
|
|
|
#include <o3tl/compat_functional.hxx>
|
2003-04-01 13:31:51 +00:00
|
|
|
|
2001-02-23 14:07:41 +00:00
|
|
|
using namespace ::dbaui;
|
|
|
|
using namespace ::com::sun::star::uno;
|
|
|
|
using namespace ::com::sun::star::beans;
|
|
|
|
using namespace ::com::sun::star::container;
|
|
|
|
using namespace ::com::sun::star::util;
|
2009-11-25 13:48:21 +01:00
|
|
|
using namespace ::com::sun::star::sdb;
|
2001-02-23 14:07:41 +00:00
|
|
|
using namespace ::com::sun::star::sdbc;
|
|
|
|
using namespace ::com::sun::star::sdbcx;
|
2008-01-30 07:51:55 +00:00
|
|
|
using namespace ::com::sun::star::lang;
|
2009-11-25 13:48:21 +01:00
|
|
|
using namespace ::com::sun::star::task;
|
|
|
|
using namespace dbtools;
|
2001-02-23 14:07:41 +00:00
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
namespace CopyTableOperation = ::com::sun::star::sdb::application::CopyTableOperation;
|
2001-02-23 14:07:41 +00:00
|
|
|
|
2012-11-25 01:10:10 +01:00
|
|
|
#define MAX_PAGES 4 // max. number of pages, which are shown
|
2001-02-23 14:07:41 +00:00
|
|
|
|
2006-06-20 02:22:00 +00:00
|
|
|
DBG_NAME(OCopyTableWizard)
|
2002-07-22 11:02:58 +00:00
|
|
|
namespace
|
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
//....................................................................
|
|
|
|
void clearColumns(ODatabaseExport::TColumns& _rColumns, ODatabaseExport::TColumnVector& _rColumnsVec)
|
2002-07-22 11:02:58 +00:00
|
|
|
{
|
|
|
|
ODatabaseExport::TColumns::iterator aIter = _rColumns.begin();
|
|
|
|
ODatabaseExport::TColumns::iterator aEnd = _rColumns.end();
|
|
|
|
|
|
|
|
for(;aIter != aEnd;++aIter)
|
|
|
|
delete aIter->second;
|
|
|
|
|
|
|
|
_rColumnsVec.clear();
|
|
|
|
_rColumns.clear();
|
|
|
|
}
|
|
|
|
}
|
2008-01-30 07:51:55 +00:00
|
|
|
|
|
|
|
//========================================================================
|
|
|
|
//= ICopyTableSourceObject
|
|
|
|
//========================================================================
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
ICopyTableSourceObject::~ICopyTableSourceObject()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
//========================================================================
|
|
|
|
//= ObjectCopySource
|
|
|
|
//========================================================================
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
ObjectCopySource::ObjectCopySource( const Reference< XConnection >& _rxConnection, const Reference< XPropertySet >& _rxObject )
|
|
|
|
:m_xConnection( _rxConnection, UNO_SET_THROW )
|
|
|
|
,m_xMetaData( _rxConnection->getMetaData(), UNO_SET_THROW )
|
|
|
|
,m_xObject( _rxObject, UNO_SET_THROW )
|
|
|
|
,m_xObjectPSI( _rxObject->getPropertySetInfo(), UNO_SET_THROW )
|
|
|
|
,m_xObjectColumns( Reference< XColumnsSupplier >( _rxObject, UNO_QUERY_THROW )->getColumns(), UNO_SET_THROW )
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString ObjectCopySource::getQualifiedObjectName() const
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sName;
|
2008-01-30 07:51:55 +00:00
|
|
|
|
|
|
|
if ( !m_xObjectPSI->hasPropertyByName( PROPERTY_COMMAND ) )
|
|
|
|
sName = ::dbtools::composeTableName( m_xMetaData, m_xObject, ::dbtools::eInDataManipulation, false, false, false );
|
|
|
|
else
|
|
|
|
m_xObject->getPropertyValue( PROPERTY_NAME ) >>= sName;
|
|
|
|
return sName;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
bool ObjectCopySource::isView() const
|
|
|
|
{
|
|
|
|
bool bIsView = false;
|
|
|
|
try
|
|
|
|
{
|
|
|
|
if ( m_xObjectPSI->hasPropertyByName( PROPERTY_TYPE ) )
|
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sObjectType;
|
2008-01-30 07:51:55 +00:00
|
|
|
OSL_VERIFY( m_xObject->getPropertyValue( PROPERTY_TYPE ) >>= sObjectType );
|
2012-04-06 19:49:53 +02:00
|
|
|
bIsView = sObjectType == "VIEW";
|
2008-01-30 07:51:55 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
|
|
|
}
|
|
|
|
return bIsView;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void ObjectCopySource::copyUISettingsTo( const Reference< XPropertySet >& _rxObject ) const
|
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
const OUString aCopyProperties[] = {
|
2013-04-25 10:56:02 +02:00
|
|
|
OUString(PROPERTY_FONT), OUString(PROPERTY_ROW_HEIGHT), OUString(PROPERTY_TEXTCOLOR),OUString(PROPERTY_TEXTLINECOLOR),OUString(PROPERTY_TEXTEMPHASIS),OUString(PROPERTY_TEXTRELIEF)
|
2008-01-30 07:51:55 +00:00
|
|
|
};
|
2012-05-31 12:36:21 +01:00
|
|
|
for ( size_t i=0; i < sizeof( aCopyProperties ) / sizeof( aCopyProperties[0] ); ++i )
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
|
|
|
if ( m_xObjectPSI->hasPropertyByName( aCopyProperties[i] ) )
|
|
|
|
_rxObject->setPropertyValue( aCopyProperties[i], m_xObject->getPropertyValue( aCopyProperties[i] ) );
|
|
|
|
}
|
|
|
|
}
|
2001-02-23 14:07:41 +00:00
|
|
|
//------------------------------------------------------------------------
|
2008-01-30 07:51:55 +00:00
|
|
|
void ObjectCopySource::copyFilterAndSortingTo( const Reference< XConnection >& _xConnection,const Reference< XPropertySet >& _rxObject ) const
|
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
::std::pair< OUString, OUString > aProperties[] = {
|
|
|
|
::std::pair< OUString, OUString >(PROPERTY_FILTER,OUString(" AND "))
|
|
|
|
,::std::pair< OUString, OUString >(PROPERTY_ORDER,OUString(" ORDER BY "))
|
2008-01-30 07:51:55 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
try
|
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
const String sSourceName = (::dbtools::composeTableNameForSelect(m_xConnection,m_xObject) + OUString("."));
|
|
|
|
const OUString sTargetName = ::dbtools::composeTableNameForSelect(_xConnection,_rxObject);
|
|
|
|
const String sTargetNameTemp = (sTargetName + OUString("."));
|
2008-01-30 07:51:55 +00:00
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sStatement("SELECT * FROM ");
|
2008-01-30 07:51:55 +00:00
|
|
|
sStatement += sTargetName;
|
2013-04-07 12:06:47 +02:00
|
|
|
sStatement += OUString(" WHERE 0=1");
|
2008-01-30 07:51:55 +00:00
|
|
|
|
|
|
|
|
2013-08-15 00:04:55 +02:00
|
|
|
for ( size_t i=0; i < SAL_N_ELEMENTS(aProperties); ++i )
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
|
|
|
if ( m_xObjectPSI->hasPropertyByName( aProperties[i].first ) )
|
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sFilter;
|
2008-01-30 07:51:55 +00:00
|
|
|
m_xObject->getPropertyValue( aProperties[i].first ) >>= sFilter;
|
2011-12-19 18:10:37 -02:00
|
|
|
if ( !sFilter.isEmpty() )
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
|
|
|
sStatement += aProperties[i].second;
|
|
|
|
String sReplace = sFilter;
|
|
|
|
sReplace.SearchAndReplace(sSourceName,sTargetNameTemp);
|
|
|
|
sFilter = sReplace;
|
|
|
|
_rxObject->setPropertyValue( aProperties[i].first, makeAny(sFilter) );
|
|
|
|
sStatement += sFilter;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
_xConnection->createStatement()->executeQuery(sStatement);
|
|
|
|
|
|
|
|
if ( m_xObjectPSI->hasPropertyByName( PROPERTY_APPLYFILTER ) )
|
|
|
|
_rxObject->setPropertyValue( PROPERTY_APPLYFILTER, m_xObject->getPropertyValue( PROPERTY_APPLYFILTER ) );
|
|
|
|
}
|
|
|
|
catch(Exception&)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
Sequence< OUString > ObjectCopySource::getColumnNames() const
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
|
|
|
return m_xObjectColumns->getElementNames();
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
Sequence< OUString > ObjectCopySource::getPrimaryKeyColumnNames() const
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
2010-02-08 14:07:46 +01:00
|
|
|
const Reference<XNameAccess> xPrimaryKeyColumns = getPrimaryKeyColumns_throw(m_xObject);
|
2013-04-07 12:06:47 +02:00
|
|
|
Sequence< OUString > aKeyColNames;
|
2010-02-08 14:07:46 +01:00
|
|
|
if ( xPrimaryKeyColumns.is() )
|
|
|
|
aKeyColNames = xPrimaryKeyColumns->getElementNames();
|
2008-01-30 07:51:55 +00:00
|
|
|
return aKeyColNames;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
OFieldDescription* ObjectCopySource::createFieldDescription( const OUString& _rColumnName ) const
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
|
|
|
Reference< XPropertySet > xColumn( m_xObjectColumns->getByName( _rColumnName ), UNO_QUERY_THROW );
|
|
|
|
return new OFieldDescription( xColumn );
|
|
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString ObjectCopySource::getSelectStatement() const
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sSelectStatement;
|
2008-01-30 07:51:55 +00:00
|
|
|
if ( m_xObjectPSI->hasPropertyByName( PROPERTY_COMMAND ) )
|
|
|
|
{ // query
|
|
|
|
OSL_VERIFY( m_xObject->getPropertyValue( PROPERTY_COMMAND ) >>= sSelectStatement );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{ // table
|
2013-04-07 12:06:47 +02:00
|
|
|
OUStringBuffer aSQL;
|
2008-01-30 07:51:55 +00:00
|
|
|
aSQL.appendAscii( "SELECT " );
|
|
|
|
|
|
|
|
// we need to create the sql stmt with column names
|
|
|
|
// otherwise it is possible that names don't match
|
2013-04-07 12:06:47 +02:00
|
|
|
const OUString sQuote = m_xMetaData->getIdentifierQuoteString();
|
2008-01-30 07:51:55 +00:00
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
Sequence< OUString > aColumnNames = getColumnNames();
|
|
|
|
const OUString* pColumnName = aColumnNames.getConstArray();
|
|
|
|
const OUString* pEnd = pColumnName + aColumnNames.getLength();
|
2008-01-30 07:51:55 +00:00
|
|
|
for ( ; pColumnName != pEnd; )
|
|
|
|
{
|
|
|
|
aSQL.append( ::dbtools::quoteName( sQuote, *pColumnName++ ) );
|
|
|
|
|
|
|
|
if ( pColumnName == pEnd )
|
|
|
|
aSQL.appendAscii( " " );
|
|
|
|
else
|
|
|
|
aSQL.appendAscii( ", " );
|
|
|
|
}
|
|
|
|
|
2013-08-17 22:14:22 +02:00
|
|
|
aSQL.append( "FROM " + ::dbtools::composeTableNameForSelect( m_xConnection, m_xObject ) );
|
2008-01-30 07:51:55 +00:00
|
|
|
|
|
|
|
sSelectStatement = aSQL.makeStringAndClear();
|
|
|
|
}
|
|
|
|
|
|
|
|
return sSelectStatement;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
::utl::SharedUNOComponent< XPreparedStatement > ObjectCopySource::getPreparedSelectStatement() const
|
|
|
|
{
|
|
|
|
::utl::SharedUNOComponent< XPreparedStatement > xStatement(
|
|
|
|
m_xConnection->prepareStatement( getSelectStatement() ),
|
|
|
|
::utl::SharedUNOComponent< XPreparedStatement >::TakeOwnership
|
|
|
|
);
|
|
|
|
return xStatement;
|
|
|
|
}
|
|
|
|
|
|
|
|
//========================================================================
|
|
|
|
//= NamedTableCopySource
|
|
|
|
//========================================================================
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
NamedTableCopySource::NamedTableCopySource( const Reference< XConnection >& _rxConnection, const OUString& _rTableName )
|
2008-01-30 07:51:55 +00:00
|
|
|
:m_xConnection( _rxConnection, UNO_SET_THROW )
|
|
|
|
,m_xMetaData( _rxConnection->getMetaData(), UNO_SET_THROW )
|
|
|
|
,m_sTableName( _rTableName )
|
|
|
|
,m_aColumnInfo()
|
|
|
|
{
|
|
|
|
::dbtools::qualifiedNameComponents( m_xMetaData, m_sTableName, m_sTableCatalog, m_sTableSchema, m_sTableBareName, ::dbtools::eComplete );
|
|
|
|
impl_ensureColumnInfo_throw();
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString NamedTableCopySource::getQualifiedObjectName() const
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
|
|
|
return m_sTableName;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
bool NamedTableCopySource::isView() const
|
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sTableType;
|
2008-01-30 07:51:55 +00:00
|
|
|
try
|
|
|
|
{
|
|
|
|
Reference< XResultSet > xTableDesc( m_xMetaData->getTables( makeAny( m_sTableCatalog ), m_sTableSchema, m_sTableBareName,
|
2013-04-07 12:06:47 +02:00
|
|
|
Sequence< OUString >() ) );
|
2008-01-30 07:51:55 +00:00
|
|
|
Reference< XRow > xTableDescRow( xTableDesc, UNO_QUERY_THROW );
|
|
|
|
OSL_VERIFY( xTableDesc->next() );
|
|
|
|
sTableType = xTableDescRow->getString( 4 );
|
|
|
|
OSL_ENSURE( !xTableDescRow->wasNull(), "NamedTableCopySource::isView: invalid table type!" );
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
|
|
|
}
|
2012-04-06 12:25:24 +02:00
|
|
|
return sTableType == "VIEW";
|
2008-01-30 07:51:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void NamedTableCopySource::copyUISettingsTo( const Reference< XPropertySet >& /*_rxObject*/ ) const
|
|
|
|
{
|
|
|
|
// not supported: we do not have UI settings to copy
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void NamedTableCopySource::copyFilterAndSortingTo( const Reference< XConnection >& ,const Reference< XPropertySet >& /*_rxObject*/ ) const
|
|
|
|
{
|
|
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void NamedTableCopySource::impl_ensureColumnInfo_throw()
|
|
|
|
{
|
|
|
|
if ( !m_aColumnInfo.empty() )
|
|
|
|
return;
|
|
|
|
|
|
|
|
Reference< XResultSetMetaDataSupplier > xStatementMetaSupp( impl_ensureStatement_throw().getTyped(), UNO_QUERY_THROW );
|
|
|
|
Reference< XResultSetMetaData > xStatementMeta( xStatementMetaSupp->getMetaData(), UNO_SET_THROW );
|
|
|
|
|
|
|
|
sal_Int32 nColCount( xStatementMeta->getColumnCount() );
|
|
|
|
for ( sal_Int32 i = 1; i <= nColCount; ++i )
|
|
|
|
{
|
|
|
|
OFieldDescription aDesc;
|
|
|
|
|
|
|
|
aDesc.SetName( xStatementMeta->getColumnName( i ) );
|
2010-01-13 08:44:34 +01:00
|
|
|
aDesc.SetHelpText( xStatementMeta->getColumnLabel( i ) );
|
2008-01-30 07:51:55 +00:00
|
|
|
aDesc.SetTypeValue( xStatementMeta->getColumnType( i ) );
|
|
|
|
aDesc.SetTypeName( xStatementMeta->getColumnTypeName( i ) );
|
|
|
|
aDesc.SetPrecision( xStatementMeta->getPrecision( i ) );
|
|
|
|
aDesc.SetScale( xStatementMeta->getScale( i ) );
|
|
|
|
aDesc.SetIsNullable( xStatementMeta->isNullable( i ) );
|
|
|
|
aDesc.SetCurrency( xStatementMeta->isCurrency( i ) );
|
|
|
|
aDesc.SetAutoIncrement( xStatementMeta->isAutoIncrement( i ) );
|
|
|
|
|
|
|
|
m_aColumnInfo.push_back( aDesc );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
::utl::SharedUNOComponent< XPreparedStatement > NamedTableCopySource::impl_ensureStatement_throw()
|
|
|
|
{
|
|
|
|
if ( !m_xStatement.is() )
|
|
|
|
m_xStatement.set( m_xConnection->prepareStatement( getSelectStatement() ), UNO_SET_THROW );
|
|
|
|
return m_xStatement;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
Sequence< OUString > NamedTableCopySource::getColumnNames() const
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
Sequence< OUString > aNames( m_aColumnInfo.size() );
|
2008-01-30 07:51:55 +00:00
|
|
|
for ( ::std::vector< OFieldDescription >::const_iterator col = m_aColumnInfo.begin();
|
|
|
|
col != m_aColumnInfo.end();
|
|
|
|
++col
|
|
|
|
)
|
|
|
|
aNames[ col - m_aColumnInfo.begin() ] = col->GetName();
|
|
|
|
|
|
|
|
return aNames;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
Sequence< OUString > NamedTableCopySource::getPrimaryKeyColumnNames() const
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
Sequence< OUString > aPKColNames;
|
2008-01-30 07:51:55 +00:00
|
|
|
|
|
|
|
try
|
|
|
|
{
|
|
|
|
Reference< XResultSet > xPKDesc( m_xMetaData->getPrimaryKeys( makeAny( m_sTableCatalog ), m_sTableSchema, m_sTableBareName ) );
|
|
|
|
Reference< XRow > xPKDescRow( xPKDesc, UNO_QUERY_THROW );
|
|
|
|
while ( xPKDesc->next() )
|
|
|
|
{
|
|
|
|
sal_Int32 len( aPKColNames.getLength() );
|
|
|
|
aPKColNames.realloc( len + 1 );
|
|
|
|
aPKColNames[ len ] = xPKDescRow->getString( 4 ); // COLUMN_NAME
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
|
|
|
}
|
|
|
|
|
|
|
|
return aPKColNames;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
OFieldDescription* NamedTableCopySource::createFieldDescription( const OUString& _rColumnName ) const
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
|
|
|
for ( ::std::vector< OFieldDescription >::const_iterator col = m_aColumnInfo.begin();
|
|
|
|
col != m_aColumnInfo.end();
|
|
|
|
++col
|
|
|
|
)
|
|
|
|
if ( col->GetName() == _rColumnName )
|
|
|
|
return new OFieldDescription( *col );
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString NamedTableCopySource::getSelectStatement() const
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
OUStringBuffer aSQL;
|
2008-01-30 07:51:55 +00:00
|
|
|
aSQL.appendAscii( "SELECT * FROM " );
|
|
|
|
|
|
|
|
aSQL.append( ::dbtools::composeTableNameForSelect( m_xConnection, m_sTableCatalog, m_sTableSchema, m_sTableBareName ) );
|
|
|
|
|
|
|
|
return aSQL.makeStringAndClear();
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
::utl::SharedUNOComponent< XPreparedStatement > NamedTableCopySource::getPreparedSelectStatement() const
|
|
|
|
{
|
|
|
|
return const_cast< NamedTableCopySource* >( this )->impl_ensureStatement_throw();
|
|
|
|
}
|
|
|
|
|
|
|
|
// ========================================================
|
|
|
|
// DummyCopySource
|
|
|
|
// ========================================================
|
|
|
|
class DummyCopySource : public ICopyTableSourceObject
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
DummyCopySource() { }
|
|
|
|
|
|
|
|
static const DummyCopySource& Instance();
|
|
|
|
|
|
|
|
// ICopyTableSourceObject overridables
|
2013-04-07 12:06:47 +02:00
|
|
|
virtual OUString getQualifiedObjectName() const;
|
2008-01-30 07:51:55 +00:00
|
|
|
virtual bool isView() const;
|
|
|
|
virtual void copyUISettingsTo( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject ) const;
|
|
|
|
virtual void copyFilterAndSortingTo(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _xConnection, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject ) const;
|
2013-04-07 12:06:47 +02:00
|
|
|
virtual ::com::sun::star::uno::Sequence< OUString >
|
2008-01-30 07:51:55 +00:00
|
|
|
getColumnNames() const;
|
2013-04-07 12:06:47 +02:00
|
|
|
virtual ::com::sun::star::uno::Sequence< OUString >
|
2008-01-30 07:51:55 +00:00
|
|
|
getPrimaryKeyColumnNames() const;
|
2013-04-07 12:06:47 +02:00
|
|
|
virtual OFieldDescription* createFieldDescription( const OUString& _rColumnName ) const;
|
|
|
|
virtual OUString getSelectStatement() const;
|
2008-01-30 07:51:55 +00:00
|
|
|
virtual ::utl::SharedUNOComponent< XPreparedStatement >
|
|
|
|
getPreparedSelectStatement() const;
|
|
|
|
};
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
const DummyCopySource& DummyCopySource::Instance()
|
|
|
|
{
|
|
|
|
static DummyCopySource s_aTheInstance;
|
|
|
|
return s_aTheInstance;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString DummyCopySource::getQualifiedObjectName() const
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_WARN("dbaccess.ui", "DummyCopySource::getQualifiedObjectName: not to be called!" );
|
2013-04-07 12:06:47 +02:00
|
|
|
return OUString();
|
2008-01-30 07:51:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
bool DummyCopySource::isView() const
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_WARN("dbaccess.ui", "DummyCopySource::isView: not to be called!" );
|
2008-01-30 07:51:55 +00:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void DummyCopySource::copyUISettingsTo( const Reference< XPropertySet >& /*_rxObject*/ ) const
|
|
|
|
{
|
|
|
|
// no support
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void DummyCopySource::copyFilterAndSortingTo( const Reference< XConnection >& ,const Reference< XPropertySet >& /*_rxObject*/ ) const
|
|
|
|
{
|
|
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
Sequence< OUString > DummyCopySource::getColumnNames() const
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
return Sequence< OUString >();
|
2008-01-30 07:51:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
Sequence< OUString > DummyCopySource::getPrimaryKeyColumnNames() const
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_WARN("dbaccess.ui", "DummyCopySource::getPrimaryKeyColumnNames: not to be called!" );
|
2013-04-07 12:06:47 +02:00
|
|
|
return Sequence< OUString >();
|
2008-01-30 07:51:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
OFieldDescription* DummyCopySource::createFieldDescription( const OUString& /*_rColumnName*/ ) const
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_WARN("dbaccess.ui", "DummyCopySource::createFieldDescription: not to be called!" );
|
2008-01-30 07:51:55 +00:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString DummyCopySource::getSelectStatement() const
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_WARN("dbaccess.ui", "DummyCopySource::getSelectStatement: not to be called!" );
|
2013-04-07 12:06:47 +02:00
|
|
|
return OUString();
|
2008-01-30 07:51:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
::utl::SharedUNOComponent< XPreparedStatement > DummyCopySource::getPreparedSelectStatement() const
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_WARN("dbaccess.ui", "DummyCopySource::getPreparedSelectStatement: not to be called!" );
|
2008-01-30 07:51:55 +00:00
|
|
|
return ::utl::SharedUNOComponent< XPreparedStatement >();
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
namespace
|
|
|
|
{
|
|
|
|
bool lcl_canCreateViewFor_nothrow( const Reference< XConnection >& _rxConnection )
|
|
|
|
{
|
|
|
|
Reference< XViewsSupplier > xSup( _rxConnection, UNO_QUERY );
|
|
|
|
Reference< XDataDescriptorFactory > xViewFac;
|
|
|
|
if ( xSup.is() )
|
|
|
|
xViewFac.set( xSup->getViews(), UNO_QUERY );
|
|
|
|
return xViewFac.is();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool lcl_sameConnection_throw( const Reference< XConnection >& _rxLHS, const Reference< XConnection >& _rxRHS )
|
|
|
|
{
|
|
|
|
Reference< XDatabaseMetaData > xMetaLHS( _rxLHS->getMetaData(), UNO_QUERY_THROW );
|
|
|
|
Reference< XDatabaseMetaData > xMetaRHS( _rxRHS->getMetaData(), UNO_QUERY_THROW );
|
|
|
|
return xMetaLHS->getURL().equals( xMetaRHS->getURL() );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//========================================================================
|
|
|
|
//= OCopyTableWizard
|
|
|
|
//========================================================================
|
|
|
|
//------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
OCopyTableWizard::OCopyTableWizard( Window * pParent, const OUString& _rDefaultName, sal_Int16 _nOperation,
|
2008-01-30 07:51:55 +00:00
|
|
|
const ICopyTableSourceObject& _rSourceObject, const Reference< XConnection >& _xSourceConnection,
|
2012-12-04 13:18:35 +02:00
|
|
|
const Reference< XConnection >& _xConnection, const Reference< XComponentContext >& _rxContext,
|
2009-11-25 13:48:21 +01:00
|
|
|
const Reference< XInteractionHandler>& _xInteractionHandler)
|
2001-02-23 14:07:41 +00:00
|
|
|
: WizardDialog( pParent, ModuleRes(WIZ_RTFCOPYTABLE))
|
2001-06-21 14:26:43 +00:00
|
|
|
,m_pbHelp( this , ModuleRes(PB_HELP))
|
2001-02-23 14:07:41 +00:00
|
|
|
,m_pbCancel( this , ModuleRes(PB_CANCEL))
|
|
|
|
,m_pbPrev( this , ModuleRes(PB_PREV))
|
2001-06-21 14:26:43 +00:00
|
|
|
,m_pbNext( this , ModuleRes(PB_NEXT))
|
|
|
|
,m_pbFinish( this , ModuleRes(PB_OK))
|
2006-06-20 02:22:00 +00:00
|
|
|
,m_mNameMapping(_xConnection->getMetaData().is() && _xConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers())
|
2008-01-30 07:51:55 +00:00
|
|
|
,m_xDestConnection( _xConnection )
|
|
|
|
,m_rSourceObject( _rSourceObject )
|
2012-12-04 13:18:35 +02:00
|
|
|
,m_xFormatter( getNumberFormatter( _xConnection, _rxContext ) )
|
|
|
|
,m_xContext(_rxContext)
|
2009-11-25 13:48:21 +01:00
|
|
|
,m_xInteractionHandler(_xInteractionHandler)
|
2006-06-20 02:22:00 +00:00
|
|
|
,m_sTypeNames(ModuleRes(STR_TABLEDESIGN_DBFIELDTYPES))
|
|
|
|
,m_nPageCount(0)
|
2002-07-22 11:02:58 +00:00
|
|
|
,m_bDeleteSourceColumns(sal_True)
|
2008-01-30 07:51:55 +00:00
|
|
|
,m_bInterConnectionCopy( _xSourceConnection != _xConnection )
|
|
|
|
,m_sName( _rDefaultName )
|
|
|
|
,m_nOperation( _nOperation )
|
2006-06-20 02:22:00 +00:00
|
|
|
,m_ePressed( WIZARD_NONE )
|
2008-01-30 07:51:55 +00:00
|
|
|
,m_bCreatePrimaryKeyColumn(sal_False)
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::OCopyTableWizard" );
|
2001-02-23 14:07:41 +00:00
|
|
|
DBG_CTOR(OCopyTableWizard,NULL);
|
|
|
|
construct();
|
2008-01-30 07:51:55 +00:00
|
|
|
|
|
|
|
// extract table name
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sInitialTableName( _rDefaultName );
|
2004-08-02 15:07:35 +00:00
|
|
|
try
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
m_sSourceName = m_rSourceObject.getQualifiedObjectName();
|
2011-12-19 18:10:37 -02:00
|
|
|
OSL_ENSURE( !m_sSourceName.isEmpty(), "OCopyTableWizard::OCopyTableWizard: unable to retrieve the source object's name!" );
|
2001-02-23 14:07:41 +00:00
|
|
|
|
2011-12-19 18:10:37 -02:00
|
|
|
if ( sInitialTableName.isEmpty() )
|
2008-01-30 07:51:55 +00:00
|
|
|
sInitialTableName = m_sSourceName;
|
2007-09-26 13:51:47 +00:00
|
|
|
|
2011-12-19 18:10:37 -02:00
|
|
|
if ( m_sName.isEmpty() )
|
2007-09-26 13:51:47 +00:00
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
if ( _xSourceConnection == m_xDestConnection )
|
|
|
|
{
|
|
|
|
Reference< XTablesSupplier > xSup( m_xDestConnection, UNO_QUERY_THROW );
|
|
|
|
m_sName = ::dbtools::createUniqueName( xSup->getTables(), sInitialTableName, sal_False );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
m_sName = sInitialTableName;
|
2007-09-26 13:51:47 +00:00
|
|
|
}
|
2004-08-02 15:07:35 +00:00
|
|
|
}
|
2008-01-30 07:51:55 +00:00
|
|
|
catch ( const Exception& )
|
2004-08-02 15:07:35 +00:00
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
m_sName = sInitialTableName;
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
2007-09-26 13:51:47 +00:00
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
::dbaui::fillTypeInfo( _xSourceConnection, m_sTypeNames, m_aTypeInfo, m_aTypeInfoIndex );
|
|
|
|
::dbaui::fillTypeInfo( m_xDestConnection, m_sTypeNames, m_aDestTypeInfo, m_aDestTypeInfoIndex );
|
|
|
|
impl_loadSourceData();
|
|
|
|
|
|
|
|
bool bAllowViews = true;
|
2011-02-07 20:20:28 +01:00
|
|
|
// if the source is a, don't allow creating views
|
2008-01-30 07:51:55 +00:00
|
|
|
if ( m_rSourceObject.isView() )
|
|
|
|
bAllowViews = false;
|
|
|
|
// no views if the target connection does not support creating them
|
|
|
|
if ( !lcl_canCreateViewFor_nothrow( m_xDestConnection ) )
|
|
|
|
bAllowViews = false;
|
|
|
|
// no views if we're copying to a different database
|
|
|
|
if ( !lcl_sameConnection_throw( _xSourceConnection, m_xDestConnection ) )
|
|
|
|
bAllowViews = false;
|
|
|
|
|
2009-11-11 14:03:52 +01:00
|
|
|
if ( m_bInterConnectionCopy )
|
|
|
|
{
|
|
|
|
Reference< XDatabaseMetaData > xSrcMeta = _xSourceConnection->getMetaData();
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sCatalog;
|
|
|
|
OUString sSchema;
|
|
|
|
OUString sTable;
|
2009-11-11 14:03:52 +01:00
|
|
|
::dbtools::qualifiedNameComponents( xSrcMeta,
|
|
|
|
m_sName,
|
|
|
|
sCatalog,
|
|
|
|
sSchema,
|
|
|
|
sTable,
|
|
|
|
::dbtools::eInDataManipulation);
|
|
|
|
|
|
|
|
m_sName = ::dbtools::composeTableName(m_xDestConnection->getMetaData(),sCatalog,sSchema,sTable,sal_False,::dbtools::eInTableDefinitions);
|
|
|
|
}
|
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
OCopyTable* pPage1( new OCopyTable( this ) );
|
2009-07-06 09:00:26 +00:00
|
|
|
pPage1->disallowUseHeaderLine();
|
2008-01-30 07:51:55 +00:00
|
|
|
if ( !bAllowViews )
|
|
|
|
pPage1->disallowViews();
|
|
|
|
pPage1->setCreateStyleAction();
|
|
|
|
AddWizardPage(pPage1);
|
|
|
|
|
|
|
|
AddWizardPage( new OWizNameMatching( this ) );
|
|
|
|
AddWizardPage( new OWizColumnSelect( this ) );
|
|
|
|
AddWizardPage( new OWizNormalExtend( this ) );
|
|
|
|
ActivatePage();
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
2008-01-30 07:51:55 +00:00
|
|
|
|
2001-02-23 14:07:41 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
OCopyTableWizard::OCopyTableWizard( Window* pParent, const OUString& _rDefaultName, sal_Int16 _nOperation,
|
2008-01-30 07:51:55 +00:00
|
|
|
const ODatabaseExport::TColumns& _rSourceColumns, const ODatabaseExport::TColumnVector& _rSourceColVec,
|
|
|
|
const Reference< XConnection >& _xConnection, const Reference< XNumberFormatter >& _xFormatter,
|
2012-12-04 13:18:35 +02:00
|
|
|
TypeSelectionPageFactory _pTypeSelectionPageFactory, SvStream& _rTypeSelectionPageArg, const Reference< XComponentContext >& _rxContext )
|
2006-06-20 02:22:00 +00:00
|
|
|
:WizardDialog( pParent, ModuleRes(WIZ_RTFCOPYTABLE))
|
|
|
|
,m_vSourceColumns(_rSourceColumns)
|
2001-06-21 14:26:43 +00:00
|
|
|
,m_pbHelp( this , ModuleRes(PB_HELP))
|
2001-02-23 14:07:41 +00:00
|
|
|
,m_pbCancel( this , ModuleRes(PB_CANCEL))
|
|
|
|
,m_pbPrev( this , ModuleRes(PB_PREV))
|
2001-06-21 14:26:43 +00:00
|
|
|
,m_pbNext( this , ModuleRes(PB_NEXT))
|
|
|
|
,m_pbFinish( this , ModuleRes(PB_OK))
|
2006-01-19 14:44:34 +00:00
|
|
|
,m_mNameMapping(_xConnection->getMetaData().is() && _xConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers())
|
2008-01-30 07:51:55 +00:00
|
|
|
,m_xDestConnection( _xConnection )
|
|
|
|
,m_rSourceObject( DummyCopySource::Instance() )
|
2001-02-23 14:07:41 +00:00
|
|
|
,m_xFormatter(_xFormatter)
|
2012-12-04 13:18:35 +02:00
|
|
|
,m_xContext(_rxContext)
|
2006-06-20 02:22:00 +00:00
|
|
|
,m_sTypeNames(ModuleRes(STR_TABLEDESIGN_DBFIELDTYPES))
|
|
|
|
,m_nPageCount(0)
|
2002-07-22 11:02:58 +00:00
|
|
|
,m_bDeleteSourceColumns(sal_False)
|
2008-01-30 07:51:55 +00:00
|
|
|
,m_bInterConnectionCopy( false )
|
2006-06-20 02:22:00 +00:00
|
|
|
,m_sName(_rDefaultName)
|
2008-01-30 07:51:55 +00:00
|
|
|
,m_nOperation( _nOperation )
|
2006-06-20 02:22:00 +00:00
|
|
|
,m_ePressed( WIZARD_NONE )
|
2008-01-30 07:51:55 +00:00
|
|
|
,m_bCreatePrimaryKeyColumn(sal_False)
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::OCopyTableWizard" );
|
2001-02-23 14:07:41 +00:00
|
|
|
DBG_CTOR(OCopyTableWizard,NULL);
|
|
|
|
construct();
|
2006-04-19 12:23:48 +00:00
|
|
|
ODatabaseExport::TColumnVector::const_iterator aIter = _rSourceColVec.begin();
|
|
|
|
ODatabaseExport::TColumnVector::const_iterator aEnd = _rSourceColVec.end();
|
|
|
|
for (; aIter != aEnd ; ++aIter)
|
|
|
|
{
|
|
|
|
m_vSourceVec.push_back(m_vSourceColumns.find((*aIter)->first));
|
|
|
|
}
|
2008-01-30 07:51:55 +00:00
|
|
|
|
|
|
|
::dbaui::fillTypeInfo( _xConnection, m_sTypeNames, m_aTypeInfo, m_aTypeInfoIndex );
|
|
|
|
::dbaui::fillTypeInfo( _xConnection, m_sTypeNames, m_aDestTypeInfo, m_aDestTypeInfoIndex );
|
|
|
|
|
2012-12-04 13:18:35 +02:00
|
|
|
m_xInteractionHandler.set( InteractionHandler::createWithParent(m_xContext, 0), UNO_QUERY );
|
2010-01-15 10:59:38 +01:00
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
OCopyTable* pPage1( new OCopyTable( this ) );
|
|
|
|
pPage1->disallowViews();
|
|
|
|
pPage1->setCreateStyleAction();
|
|
|
|
AddWizardPage( pPage1 );
|
|
|
|
|
|
|
|
AddWizardPage( new OWizNameMatching( this ) );
|
|
|
|
AddWizardPage( new OWizColumnSelect( this ) );
|
|
|
|
AddWizardPage( (*_pTypeSelectionPageFactory)( this, _rTypeSelectionPageArg ) );
|
|
|
|
|
|
|
|
ActivatePage();
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
2008-01-30 07:51:55 +00:00
|
|
|
|
2001-02-23 14:07:41 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void OCopyTableWizard::construct()
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::construct" );
|
2001-06-21 14:26:43 +00:00
|
|
|
AddButton( &m_pbHelp, WIZARDDIALOG_BUTTON_STDOFFSET_X );
|
|
|
|
AddButton( &m_pbCancel, WIZARDDIALOG_BUTTON_STDOFFSET_X );
|
2001-02-23 14:07:41 +00:00
|
|
|
AddButton( &m_pbPrev );
|
|
|
|
AddButton( &m_pbNext, WIZARDDIALOG_BUTTON_STDOFFSET_X );
|
|
|
|
AddButton( &m_pbFinish );
|
|
|
|
|
|
|
|
m_pbPrev.SetClickHdl( LINK( this, OCopyTableWizard, ImplPrevHdl ) );
|
|
|
|
m_pbNext.SetClickHdl( LINK( this, OCopyTableWizard, ImplNextHdl ) );
|
|
|
|
m_pbFinish.SetClickHdl( LINK( this, OCopyTableWizard, ImplOKHdl ) );
|
|
|
|
|
|
|
|
SetActivatePageHdl( LINK( this, OCopyTableWizard, ImplActivateHdl ) );
|
|
|
|
|
|
|
|
SetPrevButton( &m_pbPrev );
|
|
|
|
SetNextButton( &m_pbNext );
|
|
|
|
|
|
|
|
ShowButtonFixedLine( sal_True );
|
|
|
|
|
|
|
|
m_pbNext.GrabFocus();
|
|
|
|
|
|
|
|
if (m_vDestColumns.size())
|
|
|
|
// source is a html or rtf table
|
|
|
|
m_pbNext.SetStyle(m_pbFinish.GetStyle() | WB_DEFBUTTON);
|
|
|
|
else
|
|
|
|
m_pbFinish.SetStyle(m_pbFinish.GetStyle() | WB_DEFBUTTON);
|
|
|
|
|
|
|
|
FreeResource();
|
|
|
|
|
2003-03-19 16:57:12 +00:00
|
|
|
m_pTypeInfo = TOTypeInfoSP(new OTypeInfo());
|
2001-11-15 14:15:05 +00:00
|
|
|
m_pTypeInfo->aUIName = m_sTypeNames.GetToken(TYPE_OTHER);
|
2006-01-19 14:44:34 +00:00
|
|
|
m_bAddPKFirstTime = sal_True;
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
OCopyTableWizard::~OCopyTableWizard()
|
|
|
|
{
|
2004-08-02 15:07:35 +00:00
|
|
|
DBG_DTOR(OCopyTableWizard,NULL);
|
2006-10-12 12:41:03 +00:00
|
|
|
for ( ;; )
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
2006-10-12 12:41:03 +00:00
|
|
|
TabPage *pPage = GetPage(0);
|
|
|
|
if ( pPage == NULL )
|
|
|
|
break;
|
2001-02-23 14:07:41 +00:00
|
|
|
RemovePage( pPage );
|
|
|
|
delete pPage;
|
|
|
|
}
|
2001-07-02 09:31:49 +00:00
|
|
|
|
2002-07-22 11:02:58 +00:00
|
|
|
if ( m_bDeleteSourceColumns )
|
|
|
|
clearColumns(m_vSourceColumns,m_vSourceVec);
|
|
|
|
|
|
|
|
clearColumns(m_vDestColumns,m_aDestVec);
|
|
|
|
|
2001-07-02 09:31:49 +00:00
|
|
|
// clear the type information
|
|
|
|
m_aTypeInfoIndex.clear();
|
|
|
|
m_aTypeInfo.clear();
|
2002-07-22 11:02:58 +00:00
|
|
|
m_aDestTypeInfoIndex.clear();
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------
|
2012-03-01 18:00:32 +01:00
|
|
|
IMPL_LINK_NOARG(OCopyTableWizard, ImplPrevHdl)
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
|
|
|
m_ePressed = WIZARD_PREV;
|
|
|
|
if ( GetCurLevel() )
|
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
if ( getOperation() != CopyTableOperation::AppendData )
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
|
|
|
if(GetCurLevel() == 2)
|
|
|
|
ShowPage(GetCurLevel()-2);
|
|
|
|
else
|
|
|
|
ShowPrevPage();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
ShowPrevPage();
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
// -----------------------------------------------------------------------
|
|
|
|
|
2012-03-01 18:00:32 +01:00
|
|
|
IMPL_LINK_NOARG(OCopyTableWizard, ImplNextHdl)
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
|
|
|
m_ePressed = WIZARD_NEXT;
|
|
|
|
if ( GetCurLevel() < MAX_PAGES )
|
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
if ( getOperation() != CopyTableOperation::AppendData )
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
|
|
|
if(GetCurLevel() == 0)
|
|
|
|
ShowPage(GetCurLevel()+2);
|
|
|
|
else
|
|
|
|
ShowNextPage();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
ShowNextPage();
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------
|
2003-03-19 16:57:12 +00:00
|
|
|
sal_Bool OCopyTableWizard::CheckColumns(sal_Int32& _rnBreakPos)
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::CheckColumns" );
|
2003-03-19 16:57:12 +00:00
|
|
|
sal_Bool bRet = sal_True;
|
2001-02-23 14:07:41 +00:00
|
|
|
m_vColumnPos.clear();
|
|
|
|
m_vColumnTypes.clear();
|
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
OSL_ENSURE( m_xDestConnection.is(), "OCopyTableWizard::CheckColumns: No connection!" );
|
2001-02-23 14:07:41 +00:00
|
|
|
//////////////////////////////////////////////////////////////////////
|
2012-11-25 01:10:10 +01:00
|
|
|
// If database is able to process PrimaryKeys, set PrimaryKey
|
2008-01-30 07:51:55 +00:00
|
|
|
if ( m_xDestConnection.is() )
|
2001-07-02 09:31:49 +00:00
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
sal_Bool bPKeyAllowed = supportsPrimaryKey();
|
2001-02-23 14:07:41 +00:00
|
|
|
|
2002-11-14 06:58:31 +00:00
|
|
|
sal_Bool bContainsColumns = !m_vDestColumns.empty();
|
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
if ( bPKeyAllowed && shouldCreatePrimaryKey() )
|
2002-11-14 06:58:31 +00:00
|
|
|
{
|
|
|
|
// add extra column for the primary key
|
2003-03-19 16:57:12 +00:00
|
|
|
TOTypeInfoSP pTypeInfo = queryPrimaryKeyType(m_aDestTypeInfo);
|
|
|
|
if ( pTypeInfo.get() )
|
2002-11-14 06:58:31 +00:00
|
|
|
{
|
2006-01-19 14:44:34 +00:00
|
|
|
if ( m_bAddPKFirstTime )
|
|
|
|
{
|
|
|
|
OFieldDescription* pField = new OFieldDescription();
|
|
|
|
pField->SetName(m_aKeyName);
|
|
|
|
pField->FillFromTypeInfo(pTypeInfo,sal_True,sal_True);
|
|
|
|
pField->SetPrimaryKey(sal_True);
|
|
|
|
m_bAddPKFirstTime = sal_False;
|
|
|
|
insertColumn(0,pField);
|
|
|
|
}
|
2002-11-14 06:58:31 +00:00
|
|
|
m_vColumnPos.push_back(ODatabaseExport::TPositions::value_type(1,1));
|
2006-01-19 14:44:34 +00:00
|
|
|
m_vColumnTypes.push_back(pTypeInfo->nType);
|
2002-11-14 06:58:31 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( bContainsColumns )
|
|
|
|
{ // we have dest columns so look for the matching column
|
2001-07-02 09:31:49 +00:00
|
|
|
ODatabaseExport::TColumnVector::const_iterator aSrcIter = m_vSourceVec.begin();
|
2009-07-03 12:24:35 +00:00
|
|
|
ODatabaseExport::TColumnVector::const_iterator aSrcEnd = m_vSourceVec.end();
|
|
|
|
for(;aSrcIter != aSrcEnd;++aSrcIter)
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
2001-07-02 09:31:49 +00:00
|
|
|
ODatabaseExport::TColumns::iterator aDestIter = m_vDestColumns.find(m_mNameMapping[(*aSrcIter)->first]);
|
|
|
|
|
2002-05-23 11:03:56 +00:00
|
|
|
if ( aDestIter != m_vDestColumns.end() )
|
2001-07-02 09:31:49 +00:00
|
|
|
{
|
|
|
|
ODatabaseExport::TColumnVector::const_iterator aFind = ::std::find(m_aDestVec.begin(),m_aDestVec.end(),aDestIter);
|
2002-05-23 11:03:56 +00:00
|
|
|
sal_Int32 nPos = (aFind - m_aDestVec.begin())+1;
|
|
|
|
m_vColumnPos.push_back(ODatabaseExport::TPositions::value_type(nPos,nPos));
|
2001-07-02 09:31:49 +00:00
|
|
|
m_vColumnTypes.push_back((*aFind)->second->GetType());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2006-06-20 02:22:00 +00:00
|
|
|
m_vColumnPos.push_back( ODatabaseExport::TPositions::value_type( COLUMN_POSITION_NOT_FOUND, COLUMN_POSITION_NOT_FOUND ) );
|
2001-07-02 09:31:49 +00:00
|
|
|
m_vColumnTypes.push_back(0);
|
|
|
|
}
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
|
|
|
}
|
2001-07-02 09:31:49 +00:00
|
|
|
else
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
Reference< XDatabaseMetaData > xMetaData( m_xDestConnection->getMetaData() );
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sExtraChars = xMetaData->getExtraNameCharacters();
|
2001-10-18 05:52:55 +00:00
|
|
|
sal_Int32 nMaxNameLen = getMaxColumnNameLength();
|
|
|
|
|
2001-07-02 09:31:49 +00:00
|
|
|
ODatabaseExport::TColumnVector::const_iterator aSrcIter = m_vSourceVec.begin();
|
2009-07-03 12:24:35 +00:00
|
|
|
ODatabaseExport::TColumnVector::const_iterator aSrcEnd = m_vSourceVec.end();
|
|
|
|
for(_rnBreakPos=0;aSrcIter != aSrcEnd && bRet ;++aSrcIter,++_rnBreakPos)
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
2001-10-18 05:52:55 +00:00
|
|
|
OFieldDescription* pField = new OFieldDescription(*(*aSrcIter)->second);
|
|
|
|
pField->SetName(convertColumnName(TExportColumnFindFunctor(&m_vDestColumns),(*aSrcIter)->first,sExtraChars,nMaxNameLen));
|
CWS-TOOLING: integrate CWS dba32b
2009-06-03 14:58:08 +0200 fs r272581 : #i102439#
2009-05-29 13:56:18 +0200 fs r272456 : remove the sub form when the 'add subform' setting changes from <true/> to <false/>, not only its controls
2009-05-29 13:19:27 +0200 fs r272454 : display '(Default)' instead of an empty string when a control has the default font
2009-05-28 20:49:18 +0200 fs r272428 : #i98162# getFirstSelectedValue: do not return reference to a temporary
2009-05-27 15:30:22 +0200 msc r272353 : #102303#
2009-05-26 13:03:06 +0200 fs r272295 : spelling
2009-05-26 12:59:54 +0200 fs r272294 : merge m48 version to get latest cygwin related fixes
2009-05-25 14:02:06 +0200 fs r272239 : remove references to local files, needed for debugging sessions only
2009-05-25 14:01:16 +0200 fs r272238 : #i102021# ensure members such as bNumberFormat are initialized before actually returning them
2009-05-25 13:10:20 +0200 fs r272236 : #i10000# reset ENABLE_EVOAB2
2009-05-22 06:44:45 +0200 oj r272167 : #i99104# add import handler for calc-sett
2009-05-22 06:42:27 +0200 oj r272166 : #i99104# impl NullDate as member
2009-05-22 06:36:22 +0200 oj r272165 : #i99104# handle nulldate from parent model
2009-05-22 06:33:13 +0200 oj r272164 : #i99104# export and import calculation-settings and nulldate
2009-05-22 06:27:50 +0200 oj r272163 : #i99104# export and import calculation-settings and nulldate
2009-05-20 13:29:58 +0200 oj r272118 : #i99911# handle invalid name
2009-05-20 13:28:49 +0200 oj r272117 : #i101261# handle different rowsets
2009-05-20 11:29:55 +0200 msc r272111 : #i100000#
2009-05-20 11:28:27 +0200 msc r272110 : merge in change from dba32a
2009-05-20 11:27:38 +0200 msc r272109 : #102082# CTRL + C does not work
2009-05-20 09:43:36 +0200 oj r272106 : clean up includes
2009-05-20 09:32:15 +0200 oj r272105 : #i99060# merge error resovled now VERTICAL_ALIGN is in both stmt
2009-05-20 08:37:21 +0200 msc r272104 : add workaround for issue #102010#
2009-05-20 08:10:12 +0200 oj r272103 : #i99104# use numberformatkey
2009-05-20 08:07:02 +0200 oj r272102 : #i99104# use column info from rowset
2009-05-20 08:04:43 +0200 oj r272101 : #i102032# use a special column type where prec and scale are the values currently set at the column
2009-05-20 08:03:04 +0200 oj r272100 : #i102032# correct type info, we have to use SQL defined type names
2009-05-19 10:27:02 +0200 oj r272061 : #i99104# export null-date
2009-05-19 08:26:53 +0200 oj r272056 : #i99104# export null-date
2009-05-18 13:15:10 +0200 msc r272014 : add issue #102019#
2009-05-18 11:33:07 +0200 msc r272005 : add issue #102019#
2009-05-18 08:59:45 +0200 msc r271996 : add workaroud for issue #102010#
2009-05-15 10:21:24 +0200 msc r271929 : #101944#
2009-05-11 21:18:30 +0200 fs r271792 : #i99914#
2009-05-08 13:52:06 +0200 oj r271715 : #i96423# remember column span
2009-05-08 11:26:19 +0200 oj r271708 : #i98605# impl new scale mode
2009-05-08 10:33:35 +0200 fs r271706 : SendUserCall: only call into the shape notification routine for UserCall types where this is necessary (performance issue)
2009-05-07 20:52:44 +0200 fs r271698 : outsource ShapeProperty from shapepropertynotifier.hxx
2009-05-07 20:43:33 +0200 fs r271697 : #i99056# use notifyShapePropertyChange, instead of getShapePropertyChangeNotifier - the latter throws if no shape exists, yet
2009-05-07 20:33:58 +0200 fs r271696 : #i99056# +notifyShapePropertyChange: allow notifying chages without checking whether there actually already exists an SvxShape
2009-05-07 16:22:15 +0200 fs r271679 : #i10000# cygwin needs quotes around the classpath
2009-05-07 16:21:37 +0200 fs r271678 : #i10000# cygwin needs quotes around the classpath
2009-05-07 16:01:11 +0200 oj r271677 : #i99914# notify parent handler
2009-05-07 15:54:54 +0200 fs r271676 : #i10000# cygwin needs some quoting
2009-05-07 14:49:48 +0200 oj r271672 : #i99277# quote alias name
2009-05-07 14:48:12 +0200 oj r271671 : #i92538# add ~ in front of type
2009-05-07 14:37:13 +0200 oj r271667 : #i99118# change type from char to varchar
2009-05-07 14:36:23 +0200 oj r271666 : #i99118# clear dest columns when changing to create new table
2009-05-07 13:35:32 +0200 oj r271657 : #i94467# handle type 0 as double as well
2009-05-07 13:20:49 +0200 oj r271655 : i99743# setNull when varchar is no text
2009-05-07 12:58:06 +0200 fs r271651 : initialize the SdrObject's property change notifier after the ctor, if necessary
2009-05-07 11:47:18 +0200 fs r271647 : #i10000#
2009-05-07 10:57:16 +0200 fs r271639 : OPropertyBrowserController::propertyChange: care for the current property state, too, and properly forward it to the UI
2009-05-07 10:18:14 +0200 fs r271636 : onNewComponent: do not ask the map for grid columns, it will throw
2009-05-07 10:09:55 +0200 fs r271634 : #i101623#
2009-05-07 09:53:44 +0200 fs r271631 : #i101622#
2009-05-06 21:55:53 +0200 fs r271615 : #i10000#
2009-05-06 21:10:42 +0200 fs r271611 : #i10000#
2009-05-06 13:11:48 +0200 fs r271583 : #i10000#
2009-05-05 22:29:31 +0200 fs r271559 : proper assertion message
2009-05-05 22:29:03 +0200 fs r271558 : diagnostics
2009-05-05 22:16:16 +0200 fs r271557 : #i10000#
2009-05-05 13:50:32 +0200 fs r271513 : #i10000#
2009-05-05 10:21:50 +0200 fs r271503 : #i10000#
2009-05-05 09:30:26 +0200 fs r271501 : why did those survive the rebase -C step?
2009-05-05 09:18:12 +0200 fs r271500 : #i10000#
2009-05-04 17:08:17 +0200 fs r271475 : CWS-TOOLING: rebase CWS dba32b to trunk@271427 (milestone: DEV300:m47)
2009-05-04 14:51:26 +0200 fs r271456 : line ends
2009-04-30 15:55:27 +0200 fs r271418 : NewURL -> PublicConnectionURL
2009-04-22 21:18:34 +0200 fs r271141 : #i100944#
2009-04-22 09:12:26 +0200 oj r271071 : #i101261# little code change
2009-04-22 09:11:43 +0200 oj r271070 : #i101261# only ask for parameters which aren't set before
2009-04-22 09:11:25 +0200 oj r271069 : #i101261# new grabage container for nodes
2009-04-22 09:11:02 +0200 oj r271068 : #i101261# new grabage container for nodes
2009-04-22 09:10:44 +0200 oj r271067 : #i101261# new grabage container for nodes
2009-04-22 09:10:21 +0200 oj r271066 : #i101261# only ask for parameters which aren't set before
2009-04-22 09:08:24 +0200 oj r271065 : #i101261# only ask for parameters which aren't set before
2009-04-22 09:07:25 +0200 oj r271064 : #i101261# only ask for parameters which aren't set before
2009-04-22 08:49:07 +0200 oj r271062 : #i77501# preview only when needed
2009-04-22 08:45:44 +0200 oj r271061 : #i101261# new prop max rows
2009-04-22 08:44:18 +0200 oj r271060 : #i101261# create dataprovider earlier to avoid the wrong legend in chart
2009-04-22 08:42:48 +0200 oj r271059 : #i101261# handle parameter
2009-04-17 21:00:23 +0200 fs r270954 : #i98350#
2009-04-17 13:54:19 +0200 fs r270942 : #i99565#
2009-04-17 13:51:34 +0200 fs r270940 : #i101153# only localize the (potentially) localizable properties when there really is support at the control model
2009-04-17 11:43:14 +0200 fs r270932 : removed superfluous include
2009-04-17 10:10:15 +0200 fs r270926 : #i10000#
2009-04-17 10:02:36 +0200 fs r270925 : #i10000#
2009-04-17 09:15:13 +0200 fs r270918 : #i99056# some more refactoring of the recently introduced property change notification mechanism for UNO shapes
2009-04-17 09:14:56 +0200 fs r270917 : #i99056# some more refactoring of the recently introduced property change notification mechanism for UNO shapes
2009-04-17 09:13:25 +0200 fs r270915 : #i99056# some more refactoring of the recently introduced property change notification mechanism for UNO shapes
2009-04-17 08:30:34 +0200 fs r270914 : removed unotools/servicehelper.hxx in favour of the (duplicated) comphelper/servicehelper.hxx
2009-04-16 21:05:25 +0200 fs r270903 : #i10000#
2009-04-16 20:43:43 +0200 fs r270902 : #i99056# shape notification outsourced to the SdrObject, this is what all other shape implementations (which only aggregate an SvxShape) have access to, too
2009-04-16 15:57:36 +0200 fs r270891 : #i99056# make SetUnoControlModel virtual
2009-04-16 15:44:02 +0200 fs r270890 : #i99056# let the ScShapeObj notify changes in its Anchor property
2009-04-16 15:36:47 +0200 fs r270889 : #i99056# enable the sheet anchor type property, too
2009-04-16 15:33:45 +0200 fs r270887 : #i99056# shape notification outsourced to the SdrObject, this is what all other shape implementations (which only aggregate an SvxShape) have access to, too
2009-04-15 14:53:13 +0200 fs r270844 : #i10000#
2009-04-15 13:08:29 +0200 fs r270836 : #i10000#
2009-04-15 12:28:14 +0200 fs r270832 : #i10000#
2009-04-15 10:59:14 +0200 fs r270827 : #i10000#
2009-04-15 09:41:08 +0200 oj r270823 : fix issues found with findbugs and pmd
2009-04-14 21:08:04 +0200 fs r270808 : #i99056# implement SheetAnchorType - now the only thing missing to enable it is the proper notification when it is modified
2009-04-14 17:09:00 +0200 fs r270799 : #i99056# implement XServiceInfo for the ScShapeObj
2009-04-14 17:07:55 +0200 fs r270798 : #i99056# implement TextAnchorType, partially implement SheetAnchorType
2009-04-14 15:54:05 +0200 fs r270786 : #i99056# SwXShape: notify changes of the AnchorType property
2009-04-14 15:47:32 +0200 fs r270785 : #i99056# deliver shapepropertynotifier.hxx
2009-04-14 15:46:54 +0200 fs r270784 : diagnostics
2009-04-14 15:08:28 +0200 fs r270781 : #i99056# outsourced the SvxShape's property change notification code into a dedicated class
2009-04-14 14:41:09 +0200 fs r270773 : #i99056# outsourced the SvxShape's property change notification code into a dedicated class
2009-04-14 14:37:23 +0200 fs r270772 : in dtor, remove the properties from the temporary component context
2009-04-14 14:36:34 +0200 fs r270771 : getWeakUnoShape made const
2009-04-14 12:23:08 +0200 oj r270757 : #i101064# add missing braces
2009-04-14 12:21:25 +0200 oj r270756 : #i101065# add braces for gcc 4.3.2
2009-04-14 12:17:45 +0200 oj r270755 : #i101059# add dep for manifest
2009-04-09 12:06:58 +0200 oj r270686 : #i93100# use OptimalSize from control to get height
2009-04-08 09:56:55 +0200 oj r270619 : #i92537# handle calculations in the select columns as well
2009-04-08 09:30:39 +0200 oj r270615 : #i96657# throw error message when the key doesn't have any columns
2009-04-07 12:08:26 +0200 oj r270592 : #i77501# impl preview of the executed report
2009-04-07 12:01:56 +0200 oj r270591 : #i77501# impl preview of the executed report
2009-04-07 11:41:03 +0200 oj r270590 : #i77501# impl preview of the executed report
2009-04-07 11:39:32 +0200 oj r270589 : #i77501# impl preview of the executed report
2009-04-07 11:29:25 +0200 oj r270588 : #i77501# convert dos to unix lineends
2009-04-07 11:28:23 +0200 oj r270587 : #i77501# impl preview of the executed report
2009-04-07 11:16:50 +0200 oj r270586 : #i77501# impl preview of the executed report
2009-04-07 11:16:00 +0200 oj r270585 : #i77501# impl preview of the executed report
2009-04-07 11:15:44 +0200 oj r270584 : #i77501# impl preview of the executed report
2009-04-07 11:15:28 +0200 oj r270583 : #i77501# impl preview of the executed report
2009-04-07 11:15:04 +0200 oj r270582 : #i77501# impl preview of the executed report
2009-04-06 15:38:54 +0200 fs r270559 : merge changes from CWS dba32a herein
2009-04-03 15:56:16 +0200 fs r270494 : ImpSvMEdit::Resize: do multiple iterations, if necessary
2009-04-03 14:35:49 +0200 fs r270487 : #i10000#
2009-04-03 13:17:16 +0200 fs r270476 : #i99056# display geometry information for controls, too
2009-04-03 13:16:37 +0200 fs r270475 : #i99056# better ordering of the geometry properties
2009-04-03 13:16:07 +0200 fs r270473 : #i99056# now that SvxShape supports property change listeners, forward add/remove requests to it
2009-04-03 13:13:18 +0200 fs r270472 : #i99056# at SvxShape, allow for PropertyChangeListeners for Size/Position
2009-04-03 09:29:27 +0200 oj r270456 : #i94571# use correct prop name
2009-04-03 09:14:54 +0200 fs r270451 : merge changes from CWS dba32a herein
2009-04-02 17:00:51 +0200 fs r270424 : better diagnostics
2009-04-02 16:35:19 +0200 fs r270421 : diagnostics
2009-04-02 16:34:50 +0200 fs r270420 : #i99056# mxUnoShape not accessible anymore, use impl_setUnoShape instead
2009-04-02 16:32:48 +0200 fs r270419 : #i99056# make getUnoShape cheaper: keep the pointer to the SvxShape all the time, so there's no need to ask for it in getUnoShape. As a consequence, we will later be able to use the pointer in scenarious where performance (potentially) matters
2009-04-02 16:31:13 +0200 fs r270417 : merge changes from CWS dba32a herein
2009-04-02 16:23:16 +0200 fs r270414 : merge changes from CWS dba32a herein
2009-04-02 14:10:35 +0200 fs r270405 : #i10000#
2009-04-02 14:06:26 +0200 fs r270404 : merge changes from CWS dba32a herein
2009-04-02 14:03:03 +0200 fs r270401 : #i10000#
2009-04-02 13:58:13 +0200 fs r270400 : #i10000#
2009-04-02 12:59:44 +0200 fs r270397 : merge changes from CWS dba32a herein
2009-04-02 12:46:30 +0200 fs r270396 : #i99056# let the form page maintain a mapping between control models and control shapes
2009-04-02 12:44:07 +0200 fs r270395 : merge changes from CWS dba32a herein
2009-04-02 12:42:06 +0200 fs r270394 : merge changes from CWS dba32a herein
2009-04-02 12:35:20 +0200 fs r270393 : #i10000# precompiled header
2009-04-02 12:05:31 +0200 fs r270392 : merge changes from CWS dba32a herein
2009-04-02 12:00:42 +0200 fs r270391 : merge changes from CWS dba32a herein
2009-04-02 11:47:26 +0200 fs r270390 : merge changes from CWS dba32a herein
2009-04-02 11:39:15 +0200 oj r270389 : #i94467# foxpro impl several new types
2009-04-02 11:35:58 +0200 fs r270387 : merge changes from CWS dba32a herein
2009-04-01 14:10:51 +0200 fs r270329 : merge changes from CWS dba32a herein
2009-03-31 17:29:50 +0200 fs r270290 : merge changes from CWS dba32a herein
2009-03-30 14:53:56 +0200 fs r270233 : #i100417# don't set grid column widths to 0, but to <void/>
2009-03-30 12:31:03 +0200 oj r270213 : #i100552# wrong orb used
2009-03-30 12:19:20 +0200 oj r270212 : #i98303# convertlike corrected to sal_Unicode
2009-03-30 11:58:25 +0200 fs r270210 : merge changes from CWS dba32a herein
2009-03-30 11:38:16 +0200 oj r270205 : remove duplicate code from merge
2009-03-30 11:02:27 +0200 fs r270202 : merge changes from CWS dba32a herein
2009-03-30 11:02:19 +0200 fs r270201 : merge changes from CWS dba32a herein
2009-03-30 10:31:26 +0200 oj r270200 : #i100665# only throw exception and do not drop table
2009-03-30 09:36:24 +0200 fs r270195 : assertion text
2009-03-28 20:21:58 +0100 fs r270187 : #ii10000#
2009-03-28 20:19:54 +0100 fs r270186 : removed unused help ids
2009-03-28 20:19:40 +0100 fs r270185 : removed unused help ids
2009-03-28 20:19:10 +0100 fs r270184 : #i100237# +DefaultState/XReset
2009-03-28 00:29:29 +0100 fs r270177 : CWS-TOOLING: rebase CWS dba32b to trunk@270033 (milestone: DEV300:m45)
2009-03-27 22:56:46 +0100 fs r270173 : #i100237# DEFAULT_CHECKED -> DEFAULT_STATE
2009-03-27 22:55:52 +0100 fs r270172 : #i100237# DefaultState property for buttons, enabled only when Toggle=Yes
2009-03-27 22:54:15 +0100 fs r270171 : #i100237# DEFAULT_CHECKED -> DEFAULT_STATE
2009-03-27 22:53:54 +0100 fs r270170 : #i100237# introduce a DefaultState property for buttons, which implies buttongs supporting XReset, which needed some refactoring
2009-03-27 13:31:41 +0100 fs r270152 : ignore output paths
2009-03-27 11:23:44 +0100 fs r270139 : tuned behavior with respect to invalid keys/values
2009-03-27 09:57:14 +0100 fs r270136 : don't allow Double.NaN
2009-03-27 09:56:16 +0100 fs r270135 : talk about Double.NaN
2009-03-26 12:14:30 +0100 fs r270067 : removed unused parameter
2009-03-26 12:14:02 +0100 fs r270066 : removed widening conversion when checking keys
2009-03-26 09:17:34 +0100 fs r270053 : separated the enumerator functionality into a dedicated interface, this way not burdening XMap with it
2009-03-26 09:17:11 +0100 fs r270052 : separated the enumerator functionality into a dedicated interface, this way not burdening XMap with it
2009-03-26 09:16:49 +0100 fs r270051 : separated the enumerator functionality into a dedicated interface, this way not burdening XMap with it
2009-03-25 21:55:20 +0100 fs r270044 : #i100541# properly calculat bNeedScrollBox
2009-03-25 12:56:17 +0100 fs r270019 : renamed the previously introduced error condition
2009-03-25 12:11:48 +0100 fs r270015 : #i100095# when the error messages contain non-trivial details (SQLState/ErrorCode), then always display the 'Details' button
2009-03-25 12:10:05 +0100 fs r270012 : renamed the previously introduced error condition
2009-03-25 12:01:04 +0100 fs r270011 : #i100095# when no address book (or respective profile) can be found, then use a dedicated ErrorCondition
2009-03-25 10:29:07 +0100 fs r270003 : add missing localization
2009-03-25 10:23:12 +0100 fs r270001 : in preparation of #i1000095#:
rework the error handling, allow using css.sdb.ErrorCondition values, plus
allow propagating the nsresult
2009-03-25 10:21:55 +0100 fs r270000 : in preparation of #i1000095#:
rework the error handling, allow using css.sdb.ErrorCondition values, plus
allow propagating the nsresult
2009-03-20 23:05:38 +0100 fs r269829 : XMap::getSize removed
2009-03-20 23:05:19 +0100 fs r269828 : changes as suggested by sb
2009-03-20 23:04:56 +0100 fs r269827 : enhanced documentation
2009-03-20 15:31:40 +0100 fs r269815 : changes as suggested by sb
2009-03-20 13:23:52 +0100 oj r269804 : #i92538# correct the zorder that fixedtext is infront of control
2009-03-20 12:59:38 +0100 oj r269801 : #i94571# paraadjust now supports BLOCK
2009-03-20 12:58:11 +0100 oj r269800 : #i94571# export style with data style
2009-03-20 12:57:05 +0100 oj r269799 : #i94571# text align is now paraadjust
2009-03-20 12:37:02 +0100 fs r269797 : enum keys only accepted if they have the exact type, not if they have *any* enum type
2009-03-20 12:28:31 +0100 fs r269794 : some changes requested by sb
2009-03-20 08:52:47 +0100 fs r269780 : doc
2009-03-20 07:37:31 +0100 oj r269779 : #i99913# only notifiy when values are different
2009-03-20 07:36:58 +0100 oj r269778 : #i99913# add undoenv as listener at the dataprovider
2009-03-19 22:52:52 +0100 fs r269771 : added comment
2009-03-19 22:40:06 +0100 fs r269770 : +testEnumeration
2009-03-19 22:39:41 +0100 fs r269769 : implemented enumeration, getKeySet, and getValues. Should be finished now.
2009-03-19 14:01:01 +0100 oj r269743 : #i99913# reset the modified state when selecting an object
2009-03-19 12:19:54 +0100 lla r269739 : #i72390# cleanups
2009-03-19 09:25:27 +0100 fs r269727 : #i10000#
2009-03-18 23:37:02 +0100 fs r269708 : extended checks for value type acceptance
2009-03-18 23:36:41 +0100 fs r269707 : fixed value type checks
2009-03-18 14:59:56 +0100 fs r269678 : initial complex test case for the new css.container.Map implementation
2009-03-18 14:59:24 +0100 fs r269677 : verifyExpectedException moved to base class (in complexlib), and renamed to assureException for consistency
2009-03-18 14:58:35 +0100 fs r269676 : removed unused imports
2009-03-18 14:58:03 +0100 fs r269675 : first implementation of the new css.container.Map service (not completed, yet)
2009-03-18 14:57:17 +0100 fs r269674 : base class for UNO components, freeing you from some repeating work
2009-03-18 14:55:53 +0100 fs r269672 : +assureException: call a given method with given parameters on a given object, ensure that a given exception is thrown by the method implementation
2009-03-18 14:54:58 +0100 fs r269671 : +getComponentContext
2009-03-18 14:54:00 +0100 fs r269670 : isEmpty returns a boolean, not a long
2009-03-18 14:14:43 +0100 oj r269663 : #i99743# now text also supports null
2009-03-18 13:54:14 +0100 oj r269660 : #i99223# remove check for 2 params
2009-03-18 13:33:35 +0100 oj r269659 : #i99060# replace text::ParagraphVertAlign with style::VerticalAlignment
2009-03-18 13:32:18 +0100 oj r269658 : #i99060# don't set void property when void isn't allowed
2009-03-18 13:31:11 +0100 oj r269657 : #i99060# handle vertical alignment
2009-03-18 13:28:28 +0100 oj r269656 : #i99060# remove unused elements from sytle
2009-03-18 09:35:42 +0100 lla r269639 : #i72390# cleanups
2009-03-18 09:31:20 +0100 lla r269638 : #i72390# add ButtonList
2009-03-18 09:30:46 +0100 lla r269637 : #i72390# renamed interface
2009-03-18 09:30:15 +0100 lla r269636 : #i72390# use ButtonList instead of ImageList
2009-03-18 09:29:05 +0100 lla r269635 : #i72390# new ButtonList, cleanups
2009-03-18 09:26:34 +0100 lla r269634 : #i72390# cleanups
2009-03-17 12:21:20 +0100 oj r269590 : #i99222# remove assertion
2009-03-17 12:17:22 +0100 oj r269589 : #i98605# impl scale mode
2009-03-17 12:10:42 +0100 oj r269588 : #i98605# impl scale mode
2009-03-17 11:40:15 +0100 oj r269584 : #i96944# doesn't create equation for shapes
2009-03-17 11:33:16 +0100 oj r269583 : #i96423# switch calc from float to long
2009-03-16 15:19:18 +0100 fs r269550 : #i41930# enable zoom for embedded/outplace documents
2009-03-16 14:25:54 +0100 oj r269542 : #i93734# remove ContextSensitive
2009-03-16 14:21:58 +0100 oj r269541 : #i99274# page header before group header
2009-03-16 14:18:23 +0100 oj r269539 : #i99110# fix value type
2009-03-16 14:14:16 +0100 fs r269537 : line ends
2009-03-16 14:11:06 +0100 fs r269535 : line ends
2009-03-16 14:08:34 +0100 fs r269534 : #i100087# (provided my np): allow for polymorphic types with more than one parameter
2009-03-16 12:30:31 +0100 oj r269521 : compile error
2009-03-16 12:19:12 +0100 oj r269519 : compile error
2009-03-16 10:39:28 +0100 oj r269511 : compile error under linux with swap
2009-03-13 10:33:04 +0100 oj r269462 : CWS-TOOLING: rebase CWS dba32b to trunk@269297 (milestone: DEV300:m43)
2009-03-12 14:37:25 +0100 fs r269416 : interface SequenceOutputStreamTest is unneeded, and pollutes the namespace here :)
2009-03-12 14:35:07 +0100 fs r269414 : not needed
2009-03-12 14:34:15 +0100 fs r269413 : preparation for multiple tests in this module
2009-03-12 14:33:02 +0100 fs r269412 : ShowTargets was moved from module integration.forms to module complexlib
2009-03-12 14:32:48 +0100 fs r269411 : helper class for projects containing multiple complex test cases (and following a certain structure)
2009-03-12 14:00:14 +0100 fs r269407 : proper module after the move
2009-03-12 13:59:10 +0100 fs r269406 : superseded by ../makefile.mk
2009-03-12 13:47:38 +0100 fs r269403 : not needed anymore
2009-03-12 13:45:46 +0100 fs r269402 : moved, in preparation of adding more test cases here, with a common infrastructure
2009-03-12 13:45:07 +0100 fs r269401 : moved from ../
2009-03-12 13:43:59 +0100 fs r269400 : moved to ./comphelper, in preparation of adding more test cases here, with a common infrastructure
2009-03-12 13:29:47 +0100 oj r269396 : #i99914# set parent on dataprovider
2009-03-12 13:10:35 +0100 oj r269393 : #i99832# check thrown exception and show error
2009-03-12 13:08:10 +0100 fs r269392 : reorganizing tests
2009-03-12 12:52:55 +0100 oj r269390 : #i99118# convert formatkey in numberformat
2009-03-12 12:34:53 +0100 fs r269388 : new API tests
2009-03-12 12:29:05 +0100 fs r269386 : Map not yet committed
2009-03-12 12:28:36 +0100 fs r269385 : oops, forgot the SequenceInputStream during the previous refactoring
2009-03-12 12:12:39 +0100 oj r269384 : #i99104# set HasCategories prop
2009-03-12 12:12:08 +0100 oj r269383 : #i99104# check HasCategories even for internal dataprovider
2009-03-12 12:10:40 +0100 oj r269382 : #i99104# set HasCategories prop
2009-03-12 10:51:49 +0100 fs r269373 : #i10000# exception specifications
2009-03-12 10:49:18 +0100 fs r269372 : #i10000# exception specifications
2009-03-12 10:44:02 +0100 fs r269371 : #i10000# exception specifications
2009-03-12 10:30:55 +0100 fs r269368 : refactored the UNO service registration in this module, using the helper classes provided by comphelper itself, so you have less effort when extending the list of to-be-registered components
2009-03-12 10:30:37 +0100 fs r269367 : module-local includes
2009-03-12 07:05:54 +0100 oj r269357 : #i99104# database dataprovider doesn't need dataranges and diagramdata
2009-03-11 10:58:28 +0100 oj r269306 : #i99911# check if name of the report is a valid file name
2009-03-11 10:03:23 +0100 oj r269299 : #i99666# the report is new when the HierarchicalDocumentName is empty
2009-03-10 11:32:45 +0100 oj r269258 : #i99221# use fallback for language
2009-03-10 10:48:40 +0100 oj r269255 : #i99433# now use OStringBuffer
2009-03-10 10:36:21 +0100 fs r269252 : initial version of (X)Map
2009-03-10 09:52:23 +0100 oj r269246 : #i99433# now use OStringBuffer
2009-03-10 08:56:13 +0100 oj r269240 : #i99655# patch applied
2009-03-09 07:35:33 +0100 lla r269058 : #i10000# wrong variable assignment fixed
2009-03-06 17:20:40 +0100 fs r269030 : some explicit defaults
2009-03-06 17:20:30 +0100 fs r269029 : #i98600#
2009-03-06 14:40:34 +0100 fs r269009 : #i87692# during reload, prevent the document being modified just because of some control content changes ...
2009-03-06 12:52:20 +0100 lla r268997 : #i10000# ambigous problem with FontWeight fixed
2009-03-06 11:39:32 +0100 fs r268989 : #i10000# (approved by pl): use --without-t1-library configure option
2009-03-06 10:55:43 +0100 fs r268986 : #i99953# depends on xmlscript module now
2009-03-06 10:54:04 +0100 fs r268985 : #i99953# also adjust the event names found in dialogs embedded in the forms
2009-03-06 09:53:41 +0100 fs r268977 : #i10000#
2009-03-06 09:30:41 +0100 lla r268973 : #i10000# merge problems
2009-03-05 17:52:34 +0100 fs r268932 : #i98593# for sub components which are actually controlled by a DocumentDefinition (aka XComponentSupplier aka XCommandProcessor), close them by executing the 'close' command, not by suspending/closing the controller (which cannot be intercepted)
2009-03-05 11:41:56 +0100 fs r268889 : default the drop down line count for list/combo boxes to 20
2009-03-05 11:39:10 +0100 fs r268887 : do not display empty error messages
2009-03-02 10:13:57 +0100 lla r268639 : #i91541# CWS rebase m41 to m42
2009-03-02 09:06:27 +0100 lla r268635 : #i10000# add ';' to strings
2009-02-26 11:18:00 +0100 fs r268492 : reportdesign depends on REPORTBUILDER, not REPORTDESIGN
2009-02-26 10:11:38 +0100 lla r268489 : CWS-TOOLING: rebase CWS dba32b to trunk@268395 (milestone: DEV300:m42)
2009-02-26 09:04:11 +0100 lla r268488 : CWS-TOOLING: rebase CWS dba32b to trunk@268395 (milestone: DEV300:m42)
2009-02-24 12:09:13 +0100 lla r268392 : #i91541# #i91542# cleanups
2009-02-24 08:08:06 +0100 lla r268382 : merge all dba32a changes into dba32b
2009-02-24 07:14:55 +0100 lla r268381 : merge all dba32a changes into dba32b
2009-02-23 21:44:28 +0100 fs r268377 : oops ... don't tamper with m_aListSourceValues at the end of loadData
2009-02-23 20:57:05 +0100 fs r268376 : #i98162# don't hold the values as strings, but as ORowSetValue, this way preserving their type, and being agnostic to different result/rowset implementations doing different to-string-conversations
2009-02-23 20:55:44 +0100 fs r268375 : getObject: throwFunctionNotSupportedException, instead of silently returning NULL
2009-02-23 20:55:20 +0100 fs r268374 : #i98162# some more supported types
2009-02-23 20:54:43 +0100 fs r268373 : #i98162# +operator !=
2009-02-20 09:35:39 +0100 fs r268306 : #i99422# for a font, display the font name, the style, and the size
2009-02-20 09:33:45 +0100 fs r268305 : #i99422# in the property browser, FONT supersedes CHARFONTNAME: the aggregated FormComponentHandler displays them more nicely now
2009-02-19 16:12:06 +0100 fs r268293 : #i99372# recognize DataType::FLOAT as numeric
2009-02-19 15:43:12 +0100 fs r268291 : #i99415#
2009-02-19 15:40:15 +0100 fs r268290 : #i99242# lcl_firstFocussableControl: take disabled controls into account
2009-02-19 15:34:36 +0100 fs r268289 : #i99396# properly decode the base name of the URL when using it as title
2009-02-19 15:19:05 +0100 fs r268287 : #i98247#
2009-06-05 09:47:55 +00:00
|
|
|
TOTypeInfoSP pType = convertType((*aSrcIter)->second->getSpecialTypeInfo(),bRet);
|
2003-03-19 16:57:12 +00:00
|
|
|
pField->SetType(pType);
|
2002-11-14 06:58:31 +00:00
|
|
|
if ( !bPKeyAllowed )
|
2001-11-15 14:15:05 +00:00
|
|
|
pField->SetPrimaryKey(sal_False);
|
2001-02-23 14:07:41 +00:00
|
|
|
|
2001-07-02 09:31:49 +00:00
|
|
|
// now create a column
|
2001-10-18 05:52:55 +00:00
|
|
|
insertColumn(m_vDestColumns.size(),pField);
|
2002-05-23 11:03:56 +00:00
|
|
|
m_vColumnPos.push_back(ODatabaseExport::TPositions::value_type(m_vDestColumns.size(),m_vDestColumns.size()));
|
2001-07-02 09:31:49 +00:00
|
|
|
m_vColumnTypes.push_back((*aSrcIter)->second->GetType());
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2003-03-19 16:57:12 +00:00
|
|
|
return bRet;
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------
|
2012-03-01 18:00:32 +01:00
|
|
|
IMPL_LINK_NOARG(OCopyTableWizard, ImplOKHdl)
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
|
|
|
m_ePressed = WIZARD_FINISH;
|
|
|
|
sal_Bool bFinish = DeactivatePage() != 0;
|
|
|
|
|
2001-07-02 09:31:49 +00:00
|
|
|
if(bFinish)
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
2001-10-18 05:52:55 +00:00
|
|
|
WaitObject aWait(this);
|
2008-01-30 07:51:55 +00:00
|
|
|
switch(getOperation())
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
case CopyTableOperation::CopyDefinitionAndData:
|
|
|
|
case CopyTableOperation::CopyDefinitionOnly:
|
2001-07-02 09:31:49 +00:00
|
|
|
{
|
2006-07-19 15:04:00 +00:00
|
|
|
sal_Bool bOnFirstPage = GetCurLevel() == 0;
|
|
|
|
if ( bOnFirstPage )
|
2002-03-21 06:08:44 +00:00
|
|
|
{
|
|
|
|
// we came from the first page so we have to clear
|
|
|
|
// all column information already collected
|
|
|
|
clearDestColumns();
|
|
|
|
m_mNameMapping.clear();
|
|
|
|
}
|
2003-03-19 16:57:12 +00:00
|
|
|
sal_Int32 nBreakPos = 0;
|
|
|
|
sal_Bool bCheckOk = CheckColumns(nBreakPos);
|
|
|
|
if ( bOnFirstPage && !bCheckOk )
|
|
|
|
{
|
2003-04-01 13:31:51 +00:00
|
|
|
showColumnTypeNotSupported(m_vSourceVec[nBreakPos-1]->first);
|
2006-10-12 12:41:03 +00:00
|
|
|
OWizTypeSelect* pPage = static_cast<OWizTypeSelect*>(GetPage(3));
|
2003-03-19 16:57:12 +00:00
|
|
|
if ( pPage )
|
|
|
|
{
|
2009-11-25 13:48:21 +01:00
|
|
|
m_mNameMapping.clear();
|
2003-03-19 16:57:12 +00:00
|
|
|
pPage->setDisplayRow(nBreakPos);
|
|
|
|
ShowPage(3);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
2008-01-30 07:51:55 +00:00
|
|
|
if ( m_xDestConnection.is() )
|
2006-04-19 12:23:48 +00:00
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
if ( supportsPrimaryKey() )
|
2006-04-19 12:23:48 +00:00
|
|
|
{
|
|
|
|
ODatabaseExport::TColumns::iterator aFind = ::std::find_if(m_vDestColumns.begin(),m_vDestColumns.end()
|
2011-02-08 19:44:44 +01:00
|
|
|
,::o3tl::compose1(::std::mem_fun(&OFieldDescription::IsPrimaryKey),::o3tl::select2nd<ODatabaseExport::TColumns::value_type>()));
|
2009-11-25 13:48:21 +01:00
|
|
|
if ( aFind == m_vDestColumns.end() && m_xInteractionHandler.is() )
|
2006-04-19 12:23:48 +00:00
|
|
|
{
|
2009-11-25 13:48:21 +01:00
|
|
|
|
2006-04-19 12:23:48 +00:00
|
|
|
String sMsg(ModuleRes(STR_TABLEDESIGN_NO_PRIM_KEY));
|
2009-11-25 13:48:21 +01:00
|
|
|
SQLContext aError;
|
|
|
|
aError.Message = sMsg;
|
|
|
|
::rtl::Reference< ::comphelper::OInteractionRequest > xRequest( new ::comphelper::OInteractionRequest( makeAny( aError ) ) );
|
|
|
|
::rtl::Reference< ::comphelper::OInteractionApprove > xYes = new ::comphelper::OInteractionApprove;
|
|
|
|
xRequest->addContinuation( xYes.get() );
|
|
|
|
xRequest->addContinuation( new ::comphelper::OInteractionDisapprove );
|
|
|
|
::rtl::Reference< ::comphelper::OInteractionAbort > xAbort = new ::comphelper::OInteractionAbort;
|
|
|
|
xRequest->addContinuation( xAbort.get() );
|
|
|
|
|
|
|
|
m_xInteractionHandler->handle( xRequest.get() );
|
|
|
|
|
|
|
|
if ( xYes->wasSelected() )
|
2006-04-19 12:23:48 +00:00
|
|
|
{
|
2009-11-25 13:48:21 +01:00
|
|
|
OCopyTable* pPage = static_cast<OCopyTable*>(GetPage(0));
|
|
|
|
m_bCreatePrimaryKeyColumn = sal_True;
|
|
|
|
m_aKeyName = pPage->GetKeyName();
|
2011-12-19 18:10:37 -02:00
|
|
|
if ( m_aKeyName.isEmpty() )
|
2013-04-07 12:06:47 +02:00
|
|
|
m_aKeyName = OUString( "ID" );
|
2009-11-25 13:48:21 +01:00
|
|
|
m_aKeyName = createUniqueName( m_aKeyName );
|
|
|
|
sal_Int32 nBreakPos2 = 0;
|
|
|
|
CheckColumns(nBreakPos2);
|
|
|
|
}
|
|
|
|
else if ( xAbort->wasSelected() )
|
|
|
|
{
|
|
|
|
ShowPage(3);
|
|
|
|
return 0;
|
2006-04-19 12:23:48 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2001-07-02 09:31:49 +00:00
|
|
|
break;
|
|
|
|
}
|
2008-01-30 07:51:55 +00:00
|
|
|
case CopyTableOperation::AppendData:
|
|
|
|
case CopyTableOperation::CreateAsView:
|
2001-07-02 09:31:49 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_WARN("dbaccess.ui", "OCopyTableWizard::ImplOKHdl: invalid creation style!");
|
2001-07-02 09:31:49 +00:00
|
|
|
}
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
|
|
|
|
2001-07-26 13:12:01 +00:00
|
|
|
EndDialog(RET_OK);
|
2001-07-02 09:31:49 +00:00
|
|
|
}
|
2001-02-23 14:07:41 +00:00
|
|
|
return bFinish;
|
|
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
2008-01-30 07:51:55 +00:00
|
|
|
sal_Bool OCopyTableWizard::shouldCreatePrimaryKey() const
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::shouldCreatePrimaryKey" );
|
2008-01-30 07:51:55 +00:00
|
|
|
return m_bCreatePrimaryKeyColumn;
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
2008-01-30 07:51:55 +00:00
|
|
|
|
2001-02-23 14:07:41 +00:00
|
|
|
// -----------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
void OCopyTableWizard::setCreatePrimaryKey( bool _bDoCreate, const OUString& _rSuggestedName )
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::setCreatePrimaryKey" );
|
2008-01-30 07:51:55 +00:00
|
|
|
m_bCreatePrimaryKeyColumn = _bDoCreate;
|
2011-12-19 18:10:37 -02:00
|
|
|
if ( !_rSuggestedName.isEmpty() )
|
2008-06-06 13:11:47 +00:00
|
|
|
m_aKeyName = _rSuggestedName;
|
2001-02-23 14:07:41 +00:00
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
OCopyTable* pSettingsPage = dynamic_cast< OCopyTable* >( GetPage( 0 ) );
|
|
|
|
OSL_ENSURE( pSettingsPage, "OCopyTableWizard::setCreatePrimaryKey: page should have been added in the ctor!" );
|
|
|
|
if ( pSettingsPage )
|
|
|
|
pSettingsPage->setCreatePrimaryKey( _bDoCreate, _rSuggestedName );
|
|
|
|
}
|
|
|
|
|
|
|
|
// -----------------------------------------------------------------------
|
2012-03-01 18:00:32 +01:00
|
|
|
IMPL_LINK_NOARG(OCopyTableWizard, ImplActivateHdl)
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
|
|
|
OWizardPage* pCurrent = (OWizardPage*)GetPage(GetCurLevel());
|
2001-07-02 09:31:49 +00:00
|
|
|
if(pCurrent)
|
|
|
|
{
|
|
|
|
sal_Bool bFirstTime = pCurrent->IsFirstTime();
|
|
|
|
if(bFirstTime)
|
|
|
|
pCurrent->Reset();
|
2001-02-23 14:07:41 +00:00
|
|
|
|
2001-07-02 09:31:49 +00:00
|
|
|
CheckButtons();
|
2001-02-23 14:07:41 +00:00
|
|
|
|
2001-07-02 09:31:49 +00:00
|
|
|
SetText(pCurrent->GetTitle());
|
2001-02-23 14:07:41 +00:00
|
|
|
|
2001-07-02 09:31:49 +00:00
|
|
|
Invalidate();
|
|
|
|
}
|
2001-02-23 14:07:41 +00:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------
|
|
|
|
void OCopyTableWizard::CheckButtons()
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::CheckButtons" );
|
2010-11-23 23:33:20 +00:00
|
|
|
if(GetCurLevel() == 0) // the first page has no back button
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
|
|
|
if(m_nPageCount > 1)
|
|
|
|
m_pbNext.Enable(sal_True);
|
|
|
|
else
|
|
|
|
m_pbNext.Enable(sal_False);
|
|
|
|
|
|
|
|
m_pbPrev.Enable(sal_False);
|
|
|
|
}
|
2010-11-23 23:33:20 +00:00
|
|
|
else if(GetCurLevel() == m_nPageCount-1) // the last page has no next button
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
|
|
|
m_pbNext.Enable(sal_False);
|
|
|
|
m_pbPrev.Enable(sal_True);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
m_pbPrev.Enable(sal_True);
|
2010-11-23 23:33:20 +00:00
|
|
|
// next already has its state
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------
|
|
|
|
void OCopyTableWizard::EnableButton(Wizard_Button_Style eStyle,sal_Bool bEnable)
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::EnableButton" );
|
2001-02-23 14:07:41 +00:00
|
|
|
Button* pButton;
|
|
|
|
if(eStyle == WIZARD_NEXT)
|
|
|
|
pButton = &m_pbNext;
|
|
|
|
else if(eStyle == WIZARD_PREV)
|
|
|
|
pButton = &m_pbPrev;
|
|
|
|
else
|
|
|
|
pButton = &m_pbFinish;
|
|
|
|
pButton->Enable(bEnable);
|
|
|
|
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------
|
|
|
|
long OCopyTableWizard::DeactivatePage()
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::DeactivatePage" );
|
2001-02-23 14:07:41 +00:00
|
|
|
OWizardPage* pPage = (OWizardPage*)GetPage(GetCurLevel());
|
|
|
|
return pPage ? pPage->LeavePage() : sal_False;
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------
|
|
|
|
void OCopyTableWizard::AddWizardPage(OWizardPage* pPage)
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::AddWizardPage" );
|
2001-02-23 14:07:41 +00:00
|
|
|
AddPage(pPage);
|
|
|
|
++m_nPageCount;
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void OCopyTableWizard::insertColumn(sal_Int32 _nPos,OFieldDescription* _pField)
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::insertColumn" );
|
2002-07-22 11:02:58 +00:00
|
|
|
OSL_ENSURE(_pField,"FieldDescrioption is null!");
|
|
|
|
if ( _pField )
|
|
|
|
{
|
|
|
|
ODatabaseExport::TColumns::iterator aFind = m_vDestColumns.find(_pField->GetName());
|
|
|
|
if ( aFind != m_vDestColumns.end() )
|
|
|
|
{
|
|
|
|
delete aFind->second;
|
|
|
|
m_vDestColumns.erase(aFind);
|
|
|
|
}
|
|
|
|
|
|
|
|
m_aDestVec.insert(m_aDestVec.begin() + _nPos,
|
|
|
|
m_vDestColumns.insert(ODatabaseExport::TColumns::value_type(_pField->GetName(),_pField)).first);
|
2010-03-26 10:39:55 +00:00
|
|
|
m_mNameMapping[_pField->GetName()] = _pField->GetName();
|
2002-07-22 11:02:58 +00:00
|
|
|
}
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
void OCopyTableWizard::replaceColumn(sal_Int32 _nPos,OFieldDescription* _pField,const OUString& _sOldName)
|
2004-08-02 15:07:35 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::replaceColumn" );
|
2004-08-02 15:07:35 +00:00
|
|
|
OSL_ENSURE(_pField,"FieldDescrioption is null!");
|
|
|
|
if ( _pField )
|
|
|
|
{
|
|
|
|
m_vDestColumns.erase(_sOldName);
|
|
|
|
OSL_ENSURE( m_vDestColumns.find(_pField->GetName()) == m_vDestColumns.end(),"Column with that name already exist!");
|
|
|
|
|
|
|
|
m_aDestVec[_nPos] =
|
|
|
|
m_vDestColumns.insert(ODatabaseExport::TColumns::value_type(_pField->GetName(),_pField)).first;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2008-01-30 07:51:55 +00:00
|
|
|
void OCopyTableWizard::impl_loadSourceData()
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::impl_loadSourceData" );
|
2008-01-30 07:51:55 +00:00
|
|
|
loadData( m_rSourceObject, m_vSourceColumns, m_vSourceVec );
|
|
|
|
}
|
2001-02-23 14:07:41 +00:00
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void OCopyTableWizard::loadData( const ICopyTableSourceObject& _rSourceObject, ODatabaseExport::TColumns& _rColumns, ODatabaseExport::TColumnVector& _rColVector )
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::loadData" );
|
2009-07-03 12:24:35 +00:00
|
|
|
ODatabaseExport::TColumns::iterator colEnd = _rColumns.end();
|
|
|
|
for ( ODatabaseExport::TColumns::iterator col = _rColumns.begin(); col != colEnd; ++col )
|
2008-01-30 07:51:55 +00:00
|
|
|
delete col->second;
|
2001-02-23 14:07:41 +00:00
|
|
|
|
2001-08-08 07:24:54 +00:00
|
|
|
_rColVector.clear();
|
|
|
|
_rColumns.clear();
|
2001-02-23 14:07:41 +00:00
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
OFieldDescription* pActFieldDescr = NULL;
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sCreateParam("x");
|
2008-01-30 07:51:55 +00:00
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
// ReadOnly-Flag
|
2012-11-25 01:10:10 +01:00
|
|
|
// On drop no line must be editable.
|
|
|
|
// On add only empty lines must be editable.
|
|
|
|
// On Add and Drop all lines can be edited.
|
2013-04-07 12:06:47 +02:00
|
|
|
Sequence< OUString > aColumns( _rSourceObject.getColumnNames() );
|
|
|
|
const OUString* pColumn = aColumns.getConstArray();
|
|
|
|
const OUString* pColumnEnd = pColumn + aColumns.getLength();
|
2008-01-30 07:51:55 +00:00
|
|
|
|
|
|
|
for ( ; pColumn != pColumnEnd; ++pColumn )
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
// get the properties of the column
|
|
|
|
pActFieldDescr = _rSourceObject.createFieldDescription( *pColumn );
|
|
|
|
OSL_ENSURE( pActFieldDescr, "OCopyTableWizard::loadData: illegal field description!" );
|
|
|
|
if ( !pActFieldDescr )
|
|
|
|
continue;
|
2001-07-02 09:31:49 +00:00
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
sal_Int32 nType = pActFieldDescr->GetType();
|
|
|
|
sal_Int32 nScale = pActFieldDescr->GetScale();
|
|
|
|
sal_Int32 nPrecision = pActFieldDescr->GetPrecision();
|
|
|
|
sal_Bool bAutoIncrement = pActFieldDescr->IsAutoIncrement();
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sTypeName = pActFieldDescr->GetTypeName();
|
2008-01-30 07:51:55 +00:00
|
|
|
|
|
|
|
// search for type
|
|
|
|
sal_Bool bForce;
|
|
|
|
TOTypeInfoSP pTypeInfo = ::dbaui::getTypeInfoFromType(m_aTypeInfo,nType,sTypeName,sCreateParam,nPrecision,nScale,bAutoIncrement,bForce);
|
|
|
|
if ( !pTypeInfo.get() )
|
|
|
|
pTypeInfo = m_pTypeInfo;
|
|
|
|
|
|
|
|
pActFieldDescr->FillFromTypeInfo(pTypeInfo,sal_True,sal_False);
|
|
|
|
_rColVector.push_back(_rColumns.insert(ODatabaseExport::TColumns::value_type(pActFieldDescr->GetName(),pActFieldDescr)).first);
|
|
|
|
}
|
|
|
|
|
|
|
|
// determine which coumns belong to the primary key
|
2013-04-07 12:06:47 +02:00
|
|
|
Sequence< OUString > aPrimaryKeyColumns( _rSourceObject.getPrimaryKeyColumnNames() );
|
|
|
|
const OUString* pKeyColName = aPrimaryKeyColumns.getConstArray();
|
|
|
|
const OUString* pKeyColEnd = pKeyColName + aPrimaryKeyColumns.getLength();
|
2008-01-30 07:51:55 +00:00
|
|
|
|
|
|
|
for( ; pKeyColName != pKeyColEnd; ++pKeyColName )
|
|
|
|
{
|
|
|
|
ODatabaseExport::TColumns::iterator keyPos = _rColumns.find( *pKeyColName );
|
|
|
|
if ( keyPos != _rColumns.end() )
|
|
|
|
{
|
|
|
|
keyPos->second->SetPrimaryKey( sal_True );
|
|
|
|
keyPos->second->SetIsNullable( ColumnValue::NO_NULLS );
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void OCopyTableWizard::clearDestColumns()
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::clearDestColumns" );
|
2002-07-22 11:02:58 +00:00
|
|
|
clearColumns(m_vDestColumns,m_aDestVec);
|
2010-03-17 09:49:16 +00:00
|
|
|
m_bAddPKFirstTime = sal_True;
|
|
|
|
m_mNameMapping.clear();
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
2008-01-30 07:51:55 +00:00
|
|
|
void OCopyTableWizard::appendColumns( Reference<XColumnsSupplier>& _rxColSup, const ODatabaseExport::TColumnVector* _pVec, sal_Bool _bKeyColumns) const
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::appendColumns" );
|
2001-02-23 14:07:41 +00:00
|
|
|
// now append the columns
|
|
|
|
OSL_ENSURE(_rxColSup.is(),"No columns supplier");
|
|
|
|
if(!_rxColSup.is())
|
|
|
|
return;
|
|
|
|
Reference<XNameAccess> xColumns = _rxColSup->getColumns();
|
|
|
|
OSL_ENSURE(xColumns.is(),"No columns");
|
|
|
|
Reference<XDataDescriptorFactory> xColumnFactory(xColumns,UNO_QUERY);
|
|
|
|
|
|
|
|
Reference<XAppend> xAppend(xColumns,UNO_QUERY);
|
|
|
|
OSL_ENSURE(xAppend.is(),"No XAppend Interface!");
|
|
|
|
|
|
|
|
ODatabaseExport::TColumnVector::const_iterator aIter = _pVec->begin();
|
2009-07-03 12:24:35 +00:00
|
|
|
ODatabaseExport::TColumnVector::const_iterator aEnd = _pVec->end();
|
|
|
|
for(;aIter != aEnd;++aIter)
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
|
|
|
OFieldDescription* pField = (*aIter)->second;
|
|
|
|
if(!pField)
|
|
|
|
continue;
|
|
|
|
|
|
|
|
Reference<XPropertySet> xColumn;
|
|
|
|
if(pField->IsPrimaryKey() || !_bKeyColumns)
|
|
|
|
xColumn = xColumnFactory->createDataDescriptor();
|
|
|
|
if(xColumn.is())
|
|
|
|
{
|
|
|
|
if(!_bKeyColumns)
|
2006-08-15 09:54:53 +00:00
|
|
|
dbaui::setColumnProperties(xColumn,pField);
|
2001-02-23 14:07:41 +00:00
|
|
|
else
|
|
|
|
xColumn->setPropertyValue(PROPERTY_NAME,makeAny(pField->GetName()));
|
|
|
|
|
|
|
|
xAppend->appendByDescriptor(xColumn);
|
|
|
|
xColumn = NULL;
|
|
|
|
// now only the settings are missing
|
|
|
|
if(xColumns->hasByName(pField->GetName()))
|
|
|
|
{
|
2006-05-04 07:45:10 +00:00
|
|
|
xColumn.set(xColumns->getByName(pField->GetName()),UNO_QUERY);
|
|
|
|
OSL_ENSURE(xColumn.is(),"OCopyTableWizard::appendColumns: Column is NULL!");
|
|
|
|
if ( xColumn.is() )
|
2006-08-15 09:54:53 +00:00
|
|
|
pField->copyColumnSettingsTo(xColumn);
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_WARN("dbaccess.ui", "OCopyTableWizard::appendColumns: invalid field name!");
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2008-01-30 07:51:55 +00:00
|
|
|
void OCopyTableWizard::appendKey( Reference<XKeysSupplier>& _rxSup, const ODatabaseExport::TColumnVector* _pVec) const
|
2001-02-23 14:07:41 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::appendKey" );
|
2001-02-23 14:07:41 +00:00
|
|
|
if(!_rxSup.is())
|
|
|
|
return; // the database doesn't support keys
|
|
|
|
OSL_ENSURE(_rxSup.is(),"No XKeysSupplier!");
|
|
|
|
Reference<XDataDescriptorFactory> xKeyFactory(_rxSup->getKeys(),UNO_QUERY);
|
|
|
|
OSL_ENSURE(xKeyFactory.is(),"No XDataDescriptorFactory Interface!");
|
2003-07-21 11:27:53 +00:00
|
|
|
if ( !xKeyFactory.is() )
|
|
|
|
return;
|
2001-02-23 14:07:41 +00:00
|
|
|
Reference<XAppend> xAppend(xKeyFactory,UNO_QUERY);
|
|
|
|
OSL_ENSURE(xAppend.is(),"No XAppend Interface!");
|
|
|
|
|
|
|
|
Reference<XPropertySet> xKey = xKeyFactory->createDataDescriptor();
|
|
|
|
OSL_ENSURE(xKey.is(),"Key is null!");
|
|
|
|
xKey->setPropertyValue(PROPERTY_TYPE,makeAny(KeyType::PRIMARY));
|
|
|
|
|
|
|
|
Reference<XColumnsSupplier> xColSup(xKey,UNO_QUERY);
|
|
|
|
if(xColSup.is())
|
|
|
|
{
|
|
|
|
appendColumns(xColSup,_pVec,sal_True);
|
|
|
|
Reference<XNameAccess> xColumns = xColSup->getColumns();
|
2001-07-02 09:31:49 +00:00
|
|
|
if(xColumns.is() && xColumns->getElementNames().getLength())
|
2001-02-23 14:07:41 +00:00
|
|
|
xAppend->appendByDescriptor(xKey);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2008-01-30 07:51:55 +00:00
|
|
|
Reference< XPropertySet > OCopyTableWizard::createView() const
|
2001-03-30 07:47:18 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::createView" );
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sCommand( m_rSourceObject.getSelectStatement() );
|
2011-12-19 18:10:37 -02:00
|
|
|
OSL_ENSURE( !sCommand.isEmpty(), "OCopyTableWizard::createView: no statement in the source object!" );
|
2008-01-30 07:51:55 +00:00
|
|
|
// there are legitimate cases in which getSelectStatement does not provide a statement,
|
|
|
|
// but in all those cases, this method here should never be called.
|
|
|
|
return ::dbaui::createView( m_sName, m_xDestConnection, sCommand );
|
2001-03-30 07:47:18 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2001-02-23 14:07:41 +00:00
|
|
|
Reference< XPropertySet > OCopyTableWizard::createTable()
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::createTable" );
|
2008-01-30 07:51:55 +00:00
|
|
|
Reference< XPropertySet > xTable;
|
|
|
|
|
|
|
|
Reference<XTablesSupplier> xSup( m_xDestConnection, UNO_QUERY );
|
2001-02-23 14:07:41 +00:00
|
|
|
Reference< XNameAccess > xTables;
|
|
|
|
if(xSup.is())
|
|
|
|
xTables = xSup->getTables();
|
2008-01-30 07:51:55 +00:00
|
|
|
if ( getOperation() != CopyTableOperation::AppendData )
|
2001-06-01 10:23:46 +00:00
|
|
|
{
|
2001-07-26 13:12:01 +00:00
|
|
|
Reference<XDataDescriptorFactory> xFact(xTables,UNO_QUERY);
|
|
|
|
OSL_ENSURE(xFact.is(),"No XDataDescriptorFactory available!");
|
|
|
|
if(!xFact.is())
|
|
|
|
return NULL;
|
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
xTable = xFact->createDataDescriptor();
|
|
|
|
OSL_ENSURE(xTable.is(),"Could not create a new object!");
|
|
|
|
if(!xTable.is())
|
2001-07-26 13:12:01 +00:00
|
|
|
return NULL;
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sCatalog,sSchema,sTable;
|
2008-01-30 07:51:55 +00:00
|
|
|
Reference< XDatabaseMetaData> xMetaData = m_xDestConnection->getMetaData();
|
2005-01-21 16:20:11 +00:00
|
|
|
::dbtools::qualifiedNameComponents(xMetaData,
|
2001-07-26 13:12:01 +00:00
|
|
|
m_sName,
|
|
|
|
sCatalog,
|
|
|
|
sSchema,
|
2002-10-07 12:09:48 +00:00
|
|
|
sTable,
|
|
|
|
::dbtools::eInDataManipulation);
|
2001-07-26 13:12:01 +00:00
|
|
|
|
2011-12-19 18:10:37 -02:00
|
|
|
if ( sCatalog.isEmpty() && xMetaData->supportsCatalogsInTableDefinitions() )
|
2005-01-21 16:20:11 +00:00
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
sCatalog = m_xDestConnection->getCatalog();
|
2005-01-21 16:20:11 +00:00
|
|
|
}
|
|
|
|
|
2011-12-19 18:10:37 -02:00
|
|
|
if ( sSchema.isEmpty() && xMetaData->supportsSchemasInTableDefinitions() )
|
2005-01-21 16:20:11 +00:00
|
|
|
{
|
|
|
|
sSchema = xMetaData->getUserName();
|
|
|
|
}
|
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
xTable->setPropertyValue(PROPERTY_CATALOGNAME,makeAny(sCatalog));
|
|
|
|
xTable->setPropertyValue(PROPERTY_SCHEMANAME,makeAny(sSchema));
|
|
|
|
xTable->setPropertyValue(PROPERTY_NAME,makeAny(sTable));
|
2001-07-26 13:12:01 +00:00
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
Reference< XColumnsSupplier > xSuppDestinationColumns( xTable, UNO_QUERY );
|
2001-07-26 13:12:01 +00:00
|
|
|
// now append the columns
|
|
|
|
const ODatabaseExport::TColumnVector* pVec = getDestVector();
|
2006-06-20 02:22:00 +00:00
|
|
|
appendColumns( xSuppDestinationColumns, pVec );
|
2001-07-26 13:12:01 +00:00
|
|
|
// now append the primary key
|
2008-01-30 07:51:55 +00:00
|
|
|
Reference<XKeysSupplier> xKeySup(xTable,UNO_QUERY);
|
2001-07-26 13:12:01 +00:00
|
|
|
appendKey(xKeySup,pVec);
|
|
|
|
|
|
|
|
Reference<XAppend> xAppend(xTables,UNO_QUERY);
|
|
|
|
if(xAppend.is())
|
2008-01-30 07:51:55 +00:00
|
|
|
xAppend->appendByDescriptor(xTable);
|
2001-07-26 13:12:01 +00:00
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
// xTable = NULL;
|
2001-07-26 13:12:01 +00:00
|
|
|
// we need to reget the table because after appending it it is no longer valid
|
|
|
|
if(xTables->hasByName(m_sName))
|
2008-01-30 07:51:55 +00:00
|
|
|
xTables->getByName(m_sName) >>= xTable;
|
2001-06-01 10:23:46 +00:00
|
|
|
else
|
2001-07-26 13:12:01 +00:00
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sComposedName(
|
2008-01-30 07:51:55 +00:00
|
|
|
::dbtools::composeTableName( m_xDestConnection->getMetaData(), xTable, ::dbtools::eInDataManipulation, false, false, false ) );
|
2001-07-26 13:12:01 +00:00
|
|
|
if(xTables->hasByName(sComposedName))
|
2002-01-22 06:22:37 +00:00
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
xTables->getByName(sComposedName) >>= xTable;
|
2002-01-22 06:22:37 +00:00
|
|
|
m_sName = sComposedName;
|
|
|
|
}
|
2001-07-26 13:12:01 +00:00
|
|
|
else
|
2008-01-30 07:51:55 +00:00
|
|
|
xTable = NULL;
|
2001-07-26 13:12:01 +00:00
|
|
|
}
|
2008-01-30 07:51:55 +00:00
|
|
|
if(xTable.is())
|
2001-11-23 13:51:40 +00:00
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
xSuppDestinationColumns.set( xTable, UNO_QUERY_THROW );
|
2002-01-22 06:22:37 +00:00
|
|
|
// insert new table name into table filter
|
2012-12-04 13:18:35 +02:00
|
|
|
::dbaui::appendToFilter( m_xDestConnection, m_sName, GetComponentContext(), this );
|
2008-01-30 07:51:55 +00:00
|
|
|
|
|
|
|
// copy ui settings
|
|
|
|
m_rSourceObject.copyUISettingsTo( xTable );
|
|
|
|
//copy filter and sorting
|
|
|
|
m_rSourceObject.copyFilterAndSortingTo(m_xDestConnection,xTable);
|
2002-01-22 06:22:37 +00:00
|
|
|
// set column mappings
|
2006-06-20 02:22:00 +00:00
|
|
|
Reference<XNameAccess> xNameAccess = xSuppDestinationColumns->getColumns();
|
2013-04-07 12:06:47 +02:00
|
|
|
Sequence< OUString> aSeq = xNameAccess->getElementNames();
|
|
|
|
const OUString* pIter = aSeq.getConstArray();
|
|
|
|
const OUString* pEnd = pIter + aSeq.getLength();
|
2001-11-23 13:51:40 +00:00
|
|
|
|
2007-09-26 13:51:47 +00:00
|
|
|
for(sal_Int32 nNewPos=1;pIter != pEnd;++pIter,++nNewPos)
|
2001-11-23 13:51:40 +00:00
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
ODatabaseExport::TColumns::const_iterator aDestIter = m_vDestColumns.find(*pIter);
|
2004-06-01 09:12:56 +00:00
|
|
|
|
|
|
|
if ( aDestIter != m_vDestColumns.end() )
|
|
|
|
{
|
|
|
|
ODatabaseExport::TColumnVector::const_iterator aFind = ::std::find(m_aDestVec.begin(),m_aDestVec.end(),aDestIter);
|
|
|
|
sal_Int32 nPos = (aFind - m_aDestVec.begin())+1;
|
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
ODatabaseExport::TPositions::iterator aPosFind = ::std::find_if(
|
|
|
|
m_vColumnPos.begin(),
|
|
|
|
m_vColumnPos.end(),
|
2011-02-08 19:44:44 +01:00
|
|
|
::o3tl::compose1( ::std::bind2nd( ::std::equal_to< sal_Int32 >(), nPos ),
|
|
|
|
::o3tl::select1st< ODatabaseExport::TPositions::value_type >()
|
2008-01-30 07:51:55 +00:00
|
|
|
)
|
|
|
|
);
|
2004-06-01 09:12:56 +00:00
|
|
|
|
|
|
|
if ( m_vColumnPos.end() != aPosFind )
|
|
|
|
{
|
|
|
|
aPosFind->second = nNewPos;
|
2008-01-30 07:51:55 +00:00
|
|
|
OSL_ENSURE( m_vColumnTypes.size() > size_t( aPosFind - m_vColumnPos.begin() ),
|
|
|
|
"Invalid index for vector!" );
|
|
|
|
m_vColumnTypes[ aPosFind - m_vColumnPos.begin() ] = (*aFind)->second->GetType();
|
2004-06-01 09:12:56 +00:00
|
|
|
}
|
|
|
|
}
|
2001-11-23 13:51:40 +00:00
|
|
|
}
|
|
|
|
}
|
2001-06-01 10:23:46 +00:00
|
|
|
}
|
2001-07-26 13:12:01 +00:00
|
|
|
else if(xTables.is() && xTables->hasByName(m_sName))
|
2008-01-30 07:51:55 +00:00
|
|
|
xTables->getByName(m_sName) >>= xTable;
|
2001-02-23 14:07:41 +00:00
|
|
|
|
2008-01-30 07:51:55 +00:00
|
|
|
return xTable;
|
2001-02-23 14:07:41 +00:00
|
|
|
}
|
2008-01-30 07:51:55 +00:00
|
|
|
|
2001-02-23 14:07:41 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2008-01-30 07:51:55 +00:00
|
|
|
bool OCopyTableWizard::supportsPrimaryKey( const Reference< XConnection >& _rxConnection )
|
2001-07-02 12:22:11 +00:00
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
OSL_PRECOND( _rxConnection.is(), "OCopyTableWizard::supportsPrimaryKey: invalid connection!" );
|
2009-10-16 14:16:52 +02:00
|
|
|
if ( !_rxConnection.is() )
|
|
|
|
return false;
|
2008-01-30 07:51:55 +00:00
|
|
|
|
2009-10-16 14:16:52 +02:00
|
|
|
::dbtools::DatabaseMetaData aMetaData( _rxConnection );
|
|
|
|
return aMetaData.supportsPrimaryKeys();
|
2001-07-02 12:22:11 +00:00
|
|
|
}
|
2008-01-30 07:51:55 +00:00
|
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
bool OCopyTableWizard::supportsViews( const Reference< XConnection >& _rxConnection )
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::supportsViews" );
|
2008-01-30 07:51:55 +00:00
|
|
|
OSL_PRECOND( _rxConnection.is(), "OCopyTableWizard::supportsViews: invalid connection!" );
|
|
|
|
if ( !_rxConnection.is() )
|
|
|
|
return false;
|
|
|
|
|
|
|
|
bool bSupportsViews( false );
|
|
|
|
try
|
|
|
|
{
|
|
|
|
Reference< XDatabaseMetaData > xMetaData( _rxConnection->getMetaData(), UNO_SET_THROW );
|
|
|
|
Reference< XViewsSupplier > xViewSups( _rxConnection, UNO_QUERY );
|
|
|
|
bSupportsViews = xViewSups.is();
|
|
|
|
if ( !bSupportsViews )
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
Reference< XResultSet > xRs( xMetaData->getTableTypes(), UNO_SET_THROW );
|
|
|
|
Reference< XRow > xRow( xRs, UNO_QUERY_THROW );
|
|
|
|
while ( xRs->next() )
|
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sValue = xRow->getString( 1 );
|
2013-03-19 11:32:06 +01:00
|
|
|
if ( !xRow->wasNull() && sValue.equalsIgnoreAsciiCase("View") )
|
2008-01-30 07:51:55 +00:00
|
|
|
{
|
|
|
|
bSupportsViews = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch( const SQLException& )
|
|
|
|
{
|
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
|
|
|
}
|
|
|
|
return bSupportsViews;
|
|
|
|
}
|
|
|
|
|
2001-07-02 12:22:11 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
sal_Int32 OCopyTableWizard::getMaxColumnNameLength() const
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::getMaxColumnNameLength" );
|
2001-07-02 12:22:11 +00:00
|
|
|
sal_Int32 nLen = 0;
|
2008-01-30 07:51:55 +00:00
|
|
|
if ( m_xDestConnection.is() )
|
2001-07-02 12:22:11 +00:00
|
|
|
{
|
2003-03-19 16:57:12 +00:00
|
|
|
try
|
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
Reference< XDatabaseMetaData > xMetaData( m_xDestConnection->getMetaData(), UNO_SET_THROW );
|
|
|
|
nLen = xMetaData->getMaxColumnNameLength();
|
2003-03-19 16:57:12 +00:00
|
|
|
}
|
|
|
|
catch(const Exception&)
|
|
|
|
{
|
2008-01-30 07:51:55 +00:00
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
2003-03-19 16:57:12 +00:00
|
|
|
}
|
2001-07-02 12:22:11 +00:00
|
|
|
}
|
|
|
|
return nLen;
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2008-01-30 07:51:55 +00:00
|
|
|
void OCopyTableWizard::setOperation( const sal_Int16 _nOperation )
|
2001-07-02 12:22:11 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::setOperation" );
|
2008-01-30 07:51:55 +00:00
|
|
|
m_nOperation = _nOperation;
|
2001-07-02 12:22:11 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2008-01-30 07:51:55 +00:00
|
|
|
sal_Int16 OCopyTableWizard::getOperation() const
|
2001-07-02 12:22:11 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::getOperation" );
|
2008-01-30 07:51:55 +00:00
|
|
|
return m_nOperation;
|
2001-07-02 12:22:11 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString OCopyTableWizard::convertColumnName(const TColumnFindFunctor& _rCmpFunctor,
|
|
|
|
const OUString& _sColumnName,
|
|
|
|
const OUString& _sExtraChars,
|
2001-10-18 05:52:55 +00:00
|
|
|
sal_Int32 _nMaxNameLen)
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::convertColumnName" );
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sAlias = _sColumnName;
|
2008-01-30 07:51:55 +00:00
|
|
|
if ( isSQL92CheckEnabled( m_xDestConnection ) )
|
2002-07-09 11:36:21 +00:00
|
|
|
sAlias = ::dbtools::convertName2SQLName(_sColumnName,_sExtraChars);
|
2001-10-18 05:52:55 +00:00
|
|
|
if((_nMaxNameLen && sAlias.getLength() > _nMaxNameLen) || _rCmpFunctor(sAlias))
|
|
|
|
{
|
|
|
|
sal_Int32 nDiff = 1;
|
|
|
|
do
|
|
|
|
{
|
|
|
|
++nDiff;
|
|
|
|
if(_nMaxNameLen && sAlias.getLength() >= _nMaxNameLen)
|
|
|
|
sAlias = sAlias.copy(0,sAlias.getLength() - (sAlias.getLength()-_nMaxNameLen+nDiff));
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sName(sAlias);
|
2001-10-18 05:52:55 +00:00
|
|
|
sal_Int32 nPos = 1;
|
2013-04-07 12:06:47 +02:00
|
|
|
sName += OUString::valueOf(nPos);
|
2001-10-18 05:52:55 +00:00
|
|
|
|
|
|
|
while(_rCmpFunctor(sName))
|
|
|
|
{
|
|
|
|
sName = sAlias;
|
2013-04-07 12:06:47 +02:00
|
|
|
sName += OUString::valueOf(++nPos);
|
2001-10-18 05:52:55 +00:00
|
|
|
}
|
|
|
|
sAlias = sName;
|
|
|
|
// we have to check again, it could happen that the name is already to long
|
|
|
|
}
|
|
|
|
while(_nMaxNameLen && sAlias.getLength() > _nMaxNameLen);
|
|
|
|
}
|
|
|
|
OSL_ENSURE(m_mNameMapping.find(_sColumnName) == m_mNameMapping.end(),"name doubled!");
|
|
|
|
m_mNameMapping[_sColumnName] = sAlias;
|
|
|
|
return sAlias;
|
|
|
|
}
|
2008-01-30 07:51:55 +00:00
|
|
|
|
2001-10-18 05:52:55 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
void OCopyTableWizard::removeColumnNameFromNameMap(const OUString& _sName)
|
2006-04-19 12:23:48 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::removeColumnNameFromNameMap" );
|
2006-04-19 12:23:48 +00:00
|
|
|
m_mNameMapping.erase(_sName);
|
|
|
|
}
|
2008-01-30 07:51:55 +00:00
|
|
|
|
2006-04-19 12:23:48 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2001-11-15 14:15:05 +00:00
|
|
|
sal_Bool OCopyTableWizard::supportsType(sal_Int32 _nDataType,sal_Int32& _rNewDataType)
|
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::supportsType" );
|
2003-03-19 16:57:12 +00:00
|
|
|
sal_Bool bRet = m_aDestTypeInfo.find(_nDataType) != m_aDestTypeInfo.end();
|
|
|
|
if ( bRet )
|
|
|
|
_rNewDataType = _nDataType;
|
|
|
|
return bRet;
|
2001-11-15 14:15:05 +00:00
|
|
|
}
|
2008-01-30 07:51:55 +00:00
|
|
|
|
2001-11-15 14:15:05 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2003-03-19 16:57:12 +00:00
|
|
|
TOTypeInfoSP OCopyTableWizard::convertType(const TOTypeInfoSP& _pType,sal_Bool& _bNotConvert)
|
2001-11-15 14:15:05 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::convertType" );
|
2008-01-30 07:51:55 +00:00
|
|
|
if ( !m_bInterConnectionCopy )
|
|
|
|
// no need to convert if the source and destination connection are the same
|
2001-11-15 14:15:05 +00:00
|
|
|
return _pType;
|
|
|
|
|
|
|
|
sal_Bool bForce;
|
2004-08-02 15:07:35 +00:00
|
|
|
TOTypeInfoSP pType = ::dbaui::getTypeInfoFromType(m_aDestTypeInfo,_pType->nType,_pType->aTypeName,_pType->aCreateParams,_pType->nPrecision,_pType->nMaximumScale,_pType->bAutoIncrement,bForce);
|
2003-03-19 16:57:12 +00:00
|
|
|
if ( !pType.get() || bForce )
|
2001-11-15 14:15:05 +00:00
|
|
|
{ // no type found so we have to find the correct one ourself
|
|
|
|
sal_Int32 nDefaultType = DataType::VARCHAR;
|
|
|
|
switch(_pType->nType)
|
|
|
|
{
|
|
|
|
case DataType::TINYINT:
|
|
|
|
if(supportsType(DataType::SMALLINT,nDefaultType))
|
|
|
|
break;
|
|
|
|
// run through
|
|
|
|
case DataType::SMALLINT:
|
|
|
|
if(supportsType(DataType::INTEGER,nDefaultType))
|
|
|
|
break;
|
|
|
|
// run through
|
|
|
|
case DataType::INTEGER:
|
|
|
|
if(supportsType(DataType::FLOAT,nDefaultType))
|
|
|
|
break;
|
|
|
|
// run through
|
|
|
|
case DataType::FLOAT:
|
|
|
|
if(supportsType(DataType::REAL,nDefaultType))
|
|
|
|
break;
|
|
|
|
// run through
|
|
|
|
case DataType::DATE:
|
|
|
|
case DataType::TIME:
|
|
|
|
if( DataType::DATE == _pType->nType || DataType::TIME == _pType->nType )
|
|
|
|
{
|
|
|
|
if(supportsType(DataType::TIMESTAMP,nDefaultType))
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
// run through
|
|
|
|
case DataType::TIMESTAMP:
|
|
|
|
case DataType::REAL:
|
|
|
|
case DataType::BIGINT:
|
2003-03-19 16:57:12 +00:00
|
|
|
if ( supportsType(DataType::DOUBLE,nDefaultType) )
|
2001-11-15 14:15:05 +00:00
|
|
|
break;
|
|
|
|
// run through
|
|
|
|
case DataType::DOUBLE:
|
2003-03-19 16:57:12 +00:00
|
|
|
if ( supportsType(DataType::NUMERIC,nDefaultType) )
|
2001-11-15 14:15:05 +00:00
|
|
|
break;
|
|
|
|
// run through
|
|
|
|
case DataType::NUMERIC:
|
|
|
|
supportsType(DataType::DECIMAL,nDefaultType);
|
|
|
|
break;
|
|
|
|
case DataType::DECIMAL:
|
2003-03-19 16:57:12 +00:00
|
|
|
if ( supportsType(DataType::NUMERIC,nDefaultType) )
|
|
|
|
break;
|
|
|
|
if ( supportsType(DataType::DOUBLE,nDefaultType) )
|
2001-11-15 14:15:05 +00:00
|
|
|
break;
|
2003-03-19 16:57:12 +00:00
|
|
|
break;
|
|
|
|
case DataType::VARCHAR:
|
|
|
|
if ( supportsType(DataType::LONGVARCHAR,nDefaultType) )
|
2001-11-15 14:15:05 +00:00
|
|
|
break;
|
|
|
|
break;
|
2009-11-11 14:03:52 +01:00
|
|
|
case DataType::LONGVARCHAR:
|
|
|
|
if ( supportsType(DataType::CLOB,nDefaultType) )
|
|
|
|
break;
|
|
|
|
break;
|
2009-11-25 13:48:21 +01:00
|
|
|
case DataType::BINARY:
|
|
|
|
if ( supportsType(DataType::VARBINARY,nDefaultType) )
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case DataType::VARBINARY:
|
|
|
|
if ( supportsType(DataType::LONGVARBINARY,nDefaultType) )
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case DataType::LONGVARBINARY:
|
|
|
|
if ( supportsType(DataType::BLOB,nDefaultType) )
|
|
|
|
break;
|
|
|
|
if ( supportsType(DataType::LONGVARCHAR,nDefaultType) )
|
|
|
|
break;
|
|
|
|
if ( supportsType(DataType::CLOB,nDefaultType) )
|
|
|
|
break;
|
|
|
|
break;
|
2001-11-15 14:15:05 +00:00
|
|
|
default:
|
|
|
|
nDefaultType = DataType::VARCHAR;
|
|
|
|
}
|
2004-08-02 15:07:35 +00:00
|
|
|
pType = ::dbaui::getTypeInfoFromType(m_aDestTypeInfo,nDefaultType,_pType->aTypeName,_pType->aCreateParams,_pType->nPrecision,_pType->nMaximumScale,_pType->bAutoIncrement,bForce);
|
2003-03-19 16:57:12 +00:00
|
|
|
if ( !pType.get() )
|
2001-11-15 14:15:05 +00:00
|
|
|
{
|
2003-03-19 16:57:12 +00:00
|
|
|
_bNotConvert = sal_False;
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sCreate("x");
|
2004-08-02 15:07:35 +00:00
|
|
|
pType = ::dbaui::getTypeInfoFromType(m_aDestTypeInfo,DataType::VARCHAR,_pType->aTypeName,sCreate,50,0,sal_False,bForce);
|
2003-03-19 16:57:12 +00:00
|
|
|
if ( !pType.get() )
|
2001-11-15 14:15:05 +00:00
|
|
|
pType = m_pTypeInfo;
|
|
|
|
}
|
2003-03-19 16:57:12 +00:00
|
|
|
else if ( bForce )
|
|
|
|
_bNotConvert = sal_False;
|
2001-11-15 14:15:05 +00:00
|
|
|
}
|
|
|
|
return pType;
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString OCopyTableWizard::createUniqueName(const OUString& _sName)
|
2002-12-10 08:19:22 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::createUniqueName" );
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString sName = _sName;
|
|
|
|
Sequence< OUString > aColumnNames( m_rSourceObject.getColumnNames() );
|
2008-01-30 07:51:55 +00:00
|
|
|
if ( aColumnNames.getLength() )
|
|
|
|
sName = ::dbtools::createUniqueName( aColumnNames, sName, sal_False );
|
2002-12-10 08:19:22 +00:00
|
|
|
else
|
|
|
|
{
|
|
|
|
if ( m_vSourceColumns.find(sName) != m_vSourceColumns.end())
|
|
|
|
{
|
|
|
|
sal_Int32 nPos = 0;
|
|
|
|
while(m_vSourceColumns.find(sName) != m_vSourceColumns.end())
|
|
|
|
{
|
|
|
|
sName = _sName;
|
2013-04-07 12:06:47 +02:00
|
|
|
sName += OUString::valueOf(++nPos);
|
2002-12-10 08:19:22 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return sName;
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
void OCopyTableWizard::showColumnTypeNotSupported(const OUString& _rColumnName)
|
2003-04-01 13:31:51 +00:00
|
|
|
{
|
2013-06-29 17:38:04 +03:00
|
|
|
SAL_INFO("dbaccess.ui", "OCopyTableWizard::showColumnTypeNotSupported" );
|
CWS-TOOLING: integrate CWS dba32a
2009-04-16 13:08:19 +0200 oj r270882 : #i14538# set property at control
2009-04-16 13:04:28 +0200 oj r270881 : #i98557# remove binary string for SRB
2009-04-15 13:19:10 +0200 oj r270838 : #i96782# use type set at view
2009-04-14 14:53:20 +0200 oj r270778 : #i96782# set initialize size for custom shape
2009-04-06 14:19:14 +0200 oj r270546 : #i88432# correct pos when < 0 while resizing
2009-04-06 13:36:13 +0200 oj r270541 : #i96782# handle toolbar and menubar differently
2009-04-06 13:33:54 +0200 oj r270540 : #i96782# handle toolbar and menubar differently
2009-04-06 12:28:23 +0200 oj r270534 : #i96782# handle toolbar and menubar differently
2009-04-06 12:27:44 +0200 oj r270533 : #i96782# handle toolbar and menubar differently
2009-04-06 12:24:32 +0200 oj r270532 : #i96782# handle toolbar and menubar differently
2009-04-06 12:15:15 +0200 oj r270531 : do not initialze when field is empty
2009-04-06 10:06:08 +0200 oj r270528 : #i96782# clean up of menubar and remove duplicates
2009-04-06 09:47:49 +0200 oj r270527 : #i96519# adjust help text dynamic
2009-04-03 13:43:20 +0200 oj r270482 : do not need to remove section from observer they are already disposed
2009-04-03 13:27:28 +0200 fs r270479 : #i97356#
2009-04-02 11:30:39 +0200 fs r270386 : UNX line ends
2009-04-02 10:54:51 +0200 fs r270379 : UNX line ends
2009-04-02 10:39:57 +0200 fs r270378 : UNX line ends
2009-04-02 10:37:24 +0200 fs r270377 : why did this survive the rebase? was removed on trunk ...
2009-03-31 13:31:12 +0200 fs r270277 : component_foo should be public
2009-03-28 00:21:01 +0100 fs r270176 : manuallly merged the changes which happened in CWS before resync to m45, where the directory had been moved from reportdesign/registry to reportbuilder/registry
2009-03-27 23:01:20 +0100 fs r270174 : CWS-TOOLING: rebase CWS dba32a to trunk@270033 (milestone: DEV300:m45)
2009-03-11 12:23:35 +0100 fs r269310 : #i99958# ensure the ControlModelLock doesn't release twice
2009-03-06 09:07:32 +0100 fs r268970 : ignore output paths in SVN's status
2009-03-06 09:07:08 +0100 fs r268969 : ignore output paths in SVN's status
2009-03-04 11:28:02 +0100 oj r268800 : copy and paste error, check correct end now
2009-03-03 15:49:11 +0100 fs r268736 : #i10000# those merges were lost during the rebase (m38->m42)
2009-03-03 13:25:27 +0100 lla r268720 : #i99652# fix wrong refactoring
2009-02-27 11:12:56 +0100 fs r268566 : beautified
2009-02-27 10:53:47 +0100 fs r268561 : doFormListening(false) only when actually isFormListening() (found during complex test case XMLFormSettings with assertions)
2009-02-26 20:55:31 +0100 fs r268546 : #i96530# set the Label property of the bound control, if we didn't create a dedicated label control
2009-02-26 11:53:09 +0100 fs r268494 : #i10000#
2009-02-26 11:27:50 +0100 fs r268493 : #i10000#
2009-02-26 11:17:08 +0100 fs r268490 : reportdesign depends on REPORTBUILDER, not REPORTDESIGN
2009-02-25 11:39:48 +0100 fs r268422 : #i10000# post-resync: INFO_ESCAPE_DATETIME got lost during rebase
2009-02-24 23:24:10 +0100 fs r268411 : CWS-TOOLING: rebase CWS dba32a to trunk@268395 (milestone: DEV300:m42)
2009-02-20 15:09:48 +0100 fs r268324 : respect ImplicitCatalog/SchemaRestriction in all necessary places
2009-02-20 13:48:10 +0100 oj r268318 : order of initialize corrected
2009-02-14 15:07:52 +0100 fs r267759 : #i98975# when an image does not have a bitmap, but a text, draw this (as placeholder)
2009-02-14 15:02:40 +0100 fs r267758 : consolidated and removed some duplicate code
2009-02-14 13:52:23 +0100 fs r267756 : #i10000#
2009-02-13 22:08:34 +0100 fs r267750 : #i100000#
2009-02-13 22:07:25 +0100 fs r267749 : #i10000#
2009-02-13 21:55:36 +0100 fs r267747 : #i10000#
2009-02-13 21:54:27 +0100 fs r267746 : use const_cast
2009-02-13 21:29:10 +0100 fs r267745 : #i10000#
2009-02-13 21:27:39 +0100 fs r267744 : #i10000#
2009-02-13 20:59:13 +0100 fs r267742 : #i10000#
2009-02-13 13:21:30 +0100 fs r267717 : better diagnostics
2009-02-13 13:17:24 +0100 fs r267715 : #i58313# support Catalog/SchemaRestriction settings, which are applied in getTables when 'all catalogs/schemas' are to be retrieved
2009-02-13 13:16:14 +0100 fs r267714 : filter out some more known global settings
2009-02-13 12:39:43 +0100 fs r267713 : #i58313# ImplicitCatalog/SchemaRestriction
2009-02-13 12:36:50 +0100 fs r267712 : when exporting data source settings, allow for properties which have a VOID default value, but are currently not VOID
2009-02-13 12:35:57 +0100 fs r267711 : implement XSet, to allow inserting properties which have a default value of VOID
2009-02-13 12:35:03 +0100 fs r267710 : +addVoidProperty
2009-02-13 10:20:08 +0100 fs r267697 : removed unused variable
2009-02-13 09:46:46 +0100 fs r267695 : refactored the table filtering code, to have a better base for introducing additional low level filters
2009-02-10 09:23:07 +0100 lla r267537 : #i10000# wrong line feed, double named variable
2009-02-09 12:13:08 +0100 oj r267508 : #i98605# notify hanlder
2009-02-09 11:50:34 +0100 oj r267507 : #i98926# solve refcount problem
2009-02-09 11:50:05 +0100 oj r267506 : #i98971# fix for simple html
2009-02-09 11:49:24 +0100 oj r267505 : #i98971# fix for simple html
2009-02-09 11:47:27 +0100 oj r267504 : invoke on copy
2009-02-09 09:51:00 +0100 fs r267500 : #i98316#
2009-02-09 09:46:10 +0100 fs r267499 : setCurrentSelection: don't reset the current form when we de-select everything
2009-02-09 09:43:45 +0100 fs r267498 : #i98316#
2009-02-08 21:25:18 +0100 fs r267496 : #i98272# introduce late ctor for cloning
2009-02-07 21:08:39 +0100 fs r267485 : #i98272# when copy-constructing a FmFormPageImpl, use the XCloneable of the forms collection, instead of XPersistObject (which is incompletely implemented)
2009-02-07 21:07:26 +0100 fs r267484 : removed obsolete include guards
2009-02-07 21:05:22 +0100 fs r267483 : #i98272# implement XCloneable
2009-02-06 15:02:48 +0100 lla r267467 : #i96523# add XImageControl
2009-02-06 14:41:38 +0100 oj r267463 : #i98926# late init when connection disposed but only when asked for
2009-02-06 13:49:57 +0100 lla r267457 : #i92860# bigint in forms doesn't allow input of values > 1, fixed
2009-02-06 13:03:55 +0100 oj r267455 : ImageScaleMode
2009-02-05 14:48:19 +0100 lla r267424 : #i89335# dropdown listboxes are 14 instead of 7 lines high
2009-02-05 13:40:00 +0100 oj r267423 : #i96945# insert new prop Opaque
2009-02-05 13:39:19 +0100 oj r267422 : #i96945# insert layer handling for hell and heaven
2009-02-05 13:29:32 +0100 lla r267420 : #i89335# add is null, is not null, is not like filter condition
2009-02-04 12:23:02 +0100 oj r267364 : #i98821# load table font settings
2009-02-04 10:05:27 +0100 oj r267351 : #i98821# load table font settings
2009-02-04 09:23:22 +0100 fs r267350 : checking persistency of UI settings in database documents - for the moment, capture table formattings (which is issue 98821)
2009-02-04 09:22:15 +0100 fs r267349 : moved some methods which are of wider interest from DatabaseDocument to FileHelper resp. TestCase
2009-02-04 08:56:27 +0100 oj r267347 : #i97586# UcbStreamHelper::CreateStream doesn't check all streamModes use different method
2009-02-04 08:23:26 +0100 oj r267346 : #i98701# check key size is >= 3 and some redesign
2009-02-03 23:29:24 +0100 fs r267345 : return the component (controller), not the frame
2009-02-03 23:28:53 +0100 fs r267344 : openExisting returns a controller now, not the frame (this was a bug)
2009-02-03 23:28:25 +0100 fs r267343 : openElement: properly return the component in the table/query case
2009-02-02 12:48:17 +0100 oj r267261 : #i96013# fix for relative path
2009-02-02 10:33:28 +0100 lla r267253 : #i98557# cleanups and consolidation
2009-02-02 09:37:23 +0100 lla r267250 : #i88432# resize will no longer move components to other sections
2009-02-02 09:08:24 +0100 oj r267245 : #i97475# write 0x1A at the end of the file
2009-01-30 19:39:20 +0100 lla r267230 : #i10000# unused parameters
2009-01-30 09:51:09 +0100 fs r267181 : onsolete
2009-01-30 09:49:27 +0100 fs r267180 : onsolete
2009-01-29 14:28:22 +0100 oj r267139 : #i96825# import cell style
2009-01-29 14:23:12 +0100 oj r267137 : #i98601# export imagescalehandler
2009-01-29 14:19:57 +0100 lla r267135 : #i98601# add ImageScaleMode
2009-01-29 13:21:08 +0100 oj r267124 : #i98601# impl ScaleMode
2009-01-29 13:20:56 +0100 oj r267123 : #i98601# impl ScaleMode
2009-01-29 08:46:40 +0100 oj r267095 : new property: ScaleMode
2009-01-29 08:45:23 +0100 oj r267094 : new ScaleMode from UnControlImageModel
2009-01-29 08:28:12 +0100 oj r267093 : #i87930# close all sub forms/reports when the desktop is going to be terminated and no db frame exists
2009-01-28 19:54:34 +0100 lla r267082 : #i98557# pictures in report wizard
2009-01-28 15:06:25 +0100 oj r267060 : #i87930# close all sub forms/reports when the desktop is going to be terminated and no db frame exists
2009-01-28 11:38:41 +0100 lla r267046 : #i76783# handle binary fields in forms
2009-01-28 09:24:43 +0100 lla r267025 : #i10000#
2009-01-28 08:40:04 +0100 fs r267024 : #i10000#
2009-01-28 08:04:43 +0100 oj r267023 : #i93456# use resource strings for function names
2009-01-27 13:26:05 +0100 oj r266988 : check data field is type field or expression
2009-01-27 13:07:17 +0100 oj r266985 : check data field length
2009-01-27 11:48:19 +0100 oj r266974 : #i96823# return dll string as column name when no alias exists
2009-01-27 09:53:11 +0100 fs r266958 : display the message of a caught exception
2009-01-27 09:44:13 +0100 fs r266957 : #i58313# when retrieving all tables, just set an empty table type filter - the connection will care for translating this, by respecting the TableTypeFilterMode setting
2009-01-27 09:36:09 +0100 fs r266956 : #i58313# getTables: per JDBC spec, is not a valid table type filter. Translate it to 'null'.
2009-01-26 11:24:49 +0100 lla r266912 : #i97865# cleanups (AddField viewable in remote mode)
2009-01-26 07:49:27 +0100 lla r266897 : #i97865# AddField opens in remote case
2009-01-26 07:48:58 +0100 lla r266896 : #i97865# AddField opens in remote case
2009-01-26 07:48:42 +0100 lla r266895 : #i97865# AddField opens in remote case
2009-01-23 15:04:40 +0100 fs r266825 : consolidate the usage of OSQLMessageBox with MessageType==Warning into OSQLWarningBox
2009-01-23 10:47:33 +0100 fs r266787 : +supportsUserAdministration
2009-01-23 10:47:11 +0100 fs r266784 : use DatabaseMetaData.supportsUserAdministration
2009-01-23 07:55:59 +0100 lla r266767 : #i10000# fix gcc compiler failures
2009-01-21 15:08:55 +0100 lla r266673 : #i97265# Labels in HC (IsDark) with other color (viewable)
2009-01-19 14:58:54 +0100 lla r266504 : #i96523# last problems with FormatKey and '0' values fixed
2009-01-19 14:58:00 +0100 lla r266503 : #i96519# AddField help text
2009-01-19 11:59:02 +0100 fs r266485 : #i96523# for formatted field models, init them with TreatAsNumber = false
2009-01-16 10:31:49 +0100 lla r266405 : #i96793# add shrink to popup menu
2009-01-16 09:21:44 +0100 lla r266401 : #i96519# AddField contains a help text
2009-01-15 11:21:49 +0100 lla r266357 : #i96523# problem with XVclWindowPeer not fixed now
2009-01-15 09:19:20 +0100 lla r266335 : #i96523# more crashes fixed.
2009-01-14 13:08:34 +0100 lla r266291 : #i96523# problems with crashes fixed
2009-01-13 10:54:24 +0100 lla r266199 : #i96523# show datasource in formattedfields new files
2009-01-13 10:52:39 +0100 lla r266198 : #i96523# show datasource in formattedfields
2009-01-13 09:41:50 +0100 lla r266197 : #i96526# handling none existance default.otr
2009-01-12 12:55:49 +0100 fs r266151 : don't expect the control model to be a BoundComponent before adding as modify listener
2009-01-12 12:51:33 +0100 fs r266149 : #i88458# let the ImageControl be an XModifyBroadcaster, so the forms runtime can notice when the user changes the control content while it does not have the focus
2009-01-09 13:41:22 +0100 fs r266080 : doc
2009-01-09 13:14:14 +0100 fs r266077 : #i97377# SetModified when order is changed via DnD
2009-01-07 09:55:40 +0100 oj r265951 : merge from master
2009-01-07 09:55:24 +0100 oj r265950 : removed observer
2009-01-07 09:55:06 +0100 oj r265949 : merge from master
2009-01-07 07:29:11 +0100 oj r265945 : shadow var changed
2009-01-06 07:25:57 +0100 oj r265893 : CWS-TOOLING: rebase CWS dba32a to trunk@265758 (milestone: DEV300:m38)
2009-01-05 13:18:22 +0100 oj r265865 : convert to unix le
2009-01-05 09:13:52 +0100 lla r265857 : #i79423# lc_ sc_ permutation fix
2009-01-02 19:40:59 +0100 lla r265847 : #i79423# section shrink icons
2008-12-22 11:37:57 +0100 lla r265749 : #i97484# move component to negative Y-position
2008-12-22 11:37:05 +0100 lla r265748 : #i97484# move component to negative Y-position
2008-12-22 11:35:33 +0100 lla r265747 : #i97484# move component to negative Y-position
2008-12-22 11:25:07 +0100 lla r265745 : #i96757# changes via property browser was not undoable
2008-12-18 15:10:38 +0100 fs r265694 : corrected an condition in doFormListening, which otherwise leads to uncommitable grid columns in documents which are loaded from disc (not in documents which are newly created)
2008-12-18 14:54:39 +0100 fs r265692 : Hide Columns text slightly changed
2008-12-18 13:44:15 +0100 fs r265683 : #i94068# properly display erros happening during a form operation - at least once, and at most once
2008-12-18 11:28:29 +0100 fs r265677 : document the new InputRequired property
2008-12-18 11:04:15 +0100 fs r265676 : #i96530# createControlLabelPair: don't actually create a label for a checkbox
2008-12-18 10:35:53 +0100 fs r265674 : #i95226# when a column is replaced, and it's the selected column, update the selection
2008-12-18 10:34:42 +0100 fs r265673 : #i95226# refactoring of the implReplaced method
2008-12-18 10:34:28 +0100 fs r265672 : #i95226# when replacing a grid column, update the property browser
2008-12-18 10:33:17 +0100 fs r265671 : when an element is removed, remove it from m_aCurrentSelection, too (if necessary)
2008-12-18 10:31:57 +0100 fs r265670 : Hide Columns text slightly changed
2008-12-18 10:15:56 +0100 lla r265669 : #i14538# do not allow to press finish button twice
2008-12-18 08:56:33 +0100 lla r265665 : #i10000# build depend=t problem hacked.
2008-12-17 20:59:10 +0100 fs r265656 : #i89821# don't let a MultiLineEdit select all text when it receives the focus
2008-12-17 12:10:54 +0100 fs r265594 : #i97356#
2008-12-17 12:06:29 +0100 fs r265593 : #i97355# Print -> Printable
2008-12-17 11:59:31 +0100 fs r265591 : #i97350# combo boxes comment on list selection (as list boxes already do)
2008-12-16 09:53:57 +0100 lla r265527 : #i96526# handling none existance default.otr
2008-12-15 14:48:39 +0100 lla r265500 : #i79423# reparing, was wrong implemented
2008-12-12 15:08:33 +0100 lla r265424 : #i10000# remove wrong carridge returns
2008-12-12 15:07:55 +0100 lla r265423 : #i10000# remove wrong carridge returns
2008-12-12 15:06:41 +0100 lla r265422 : #i10000# remove wrong carridge returns
2008-12-12 10:23:13 +0100 lla r265395 : #i95234# reset DragDelta
2008-12-12 10:11:02 +0100 lla r265393 : #i79423# pre versions of shrink buttons
2008-12-11 15:32:13 +0100 fs r265318 : prevent a deadlock during complex.dbaccess.DatabaseDocument test
2008-12-11 15:30:06 +0100 fs r265316 : prevent a deadlock during complex.dbaccess.DatabaseDocument test
2008-12-11 15:07:05 +0100 fs r265307 : removed superfluous text
2008-12-11 12:29:54 +0100 lla r265282 : #i96757# cleanup second try
2008-12-11 12:09:15 +0100 lla r265278 : #i96757# cleanup
2008-12-11 12:07:56 +0100 lla r265277 : #i95234#
2008-12-10 14:04:39 +0100 lla r265183 : #i93472# D&D fixes
2008-12-10 12:29:33 +0100 lla r265168 : #i94067# add (APP|SYS)FONT to XUnitConversion
2008-12-10 12:15:02 +0100 lla r265166 : #i94067# add APPFONT, SYSFONT to MeasureUnit
2008-12-10 11:52:10 +0100 lla r265163 : #i94067# add comments
2008-12-06 20:33:05 +0100 fs r264935 : #i10000# precompiled header
2008-12-05 09:29:26 +0100 fs r264889 : #i10000#
2008-12-05 09:07:31 +0100 fs r264888 : #i10000#
2008-12-04 13:25:46 +0100 fs r264838 : CWS-TOOLING: rebase CWS dba32a to trunk@264807 (milestone: DEV300:m37)
2008-12-03 23:49:13 +0100 fs r264808 : merge changes from trunk, to be able to do a rebase
2008-12-03 17:13:09 +0100 lla r264801 : #i91041# update documentation
2008-12-03 16:57:04 +0100 lla r264799 : #i94067# allow convert(Point|Size)ToLogic as pixel also
2008-12-02 12:36:32 +0100 lla r264687 : #i96782# bring toolbar objects to menu structure
2008-12-02 10:32:44 +0100 lla r264667 : #i86255# make property work
2008-12-02 09:22:47 +0100 lla r264659 : #i79423# add section shrink toolbar
2008-12-02 07:41:22 +0100 lla r264657 : #i86255# add check box for Escape DateTime property
2008-12-02 07:37:17 +0100 lla r264656 : #i79423# new shrink buttons
2008-11-26 11:55:28 +0100 fs r264362 : #i96541#
FillPropertySet: do not only catch UnknownPropertyException when setting the Char/ParaAutoStyleName,
but also care for the other exceptions which can be thrown by XPropertySet::setPropertyValue.
This is actually not the real fix for #i96541#, but only a follow-up. The root cause of the issue
was fixed in CWS dba301b, but this here was another (potential) bug which popped up during investigations.
2008-11-25 09:04:40 +0100 lla r264273 : #i82083# new toolbox in GroupsSorting dialog
2008-11-25 08:56:08 +0100 lla r264272 : #i94729# change token strings into string list, move class out of function
2008-11-24 15:52:22 +0100 fs r264251 : #i96532# do not set AppendTableAlias, NameLengthLimit, etc., if the OXMLDataSourceInstance is used for elements at which those attributes never appear
2008-11-24 15:51:45 +0100 fs r264249 : #i96532# do not set AppendTableAlias, NameLengthLimit, etc., if the OXMLDataSourceInstance is used for elements at which those attributes never appear
2008-11-24 15:45:21 +0100 fs r264244 : #i96532# the API default for ParamNameSubst is false
2008-11-24 15:45:04 +0100 fs r264243 : #i96532# do not set AppendTableAlias, NameLengthLimit, etc., if the OXMLDataSourceInstance is used for elements at which those attributes never appear
2008-11-24 15:44:14 +0100 fs r264241 : #i96532# slight refactoring of exporting properties which have a XML default different from the API default
2008-11-24 10:50:01 +0100 lla r264216 : #i82083# icons for new toolbox
2008-11-24 09:38:45 +0100 lla r264205 : #i82083# new toolbox in GroupsSorting dialog
2008-11-24 09:32:20 +0100 lla r264201 : #i96501# cleanup assertions
2008-11-24 09:12:55 +0100 lla r264198 : #i83082# enhancement for toolboxes, better HC comfort
2008-11-24 08:46:43 +0100 lla r264197 : #i96501# fix problem with negative positions
2008-11-21 11:44:47 +0100 fs r264118 : #i57042# introduce a counter for suspending change notifications of a given property, so recursive calls are possible
2008-11-21 11:02:17 +0100 fs r264116 : #i96388# don't call ExecuteContextMenuAction when no action was chosen by the user
2008-11-21 10:36:53 +0100 fs r264114 : #i47384# assertion was wrong
2008-11-14 12:33:15 +0100 fs r263673 : #i47318# XRowSetChangeBroadcaster/Listener, to be able to listen for changes in an XRowSetSupplier's RowSet
2008-11-14 12:30:29 +0100 fs r263672 : #i47318# more refactoring
- BoundControlModels now listen at the XRowSetSupplier for changes in the supplied
RowSet, to properly revoke/register old/new listeners at the RowSet
- replaced ::osl::Mutex in various places with a ControlModelLock
2008-11-14 12:20:55 +0100 fs r263671 : when BUILD_TYPE includes QADEVOOO, the BUILD_QADEVOOO needs to bet set, too
2008-11-14 12:19:21 +0100 fs r263670 : oops, this was not intended to be committed
2008-11-12 11:08:10 +0100 fs r263579 : #i96096# new ctors taking UNO_QUERY_THROW
2008-11-12 09:15:54 +0100 fs r263576 : no need to load the complete dialog just to get a string which the dialog itself loads from resource
2008-11-10 17:55:45 +0100 fs r263535 : spelling in comment
2008-11-10 15:51:14 +0100 fs r263523 : #i47318# various refactorings
1. don't forward syntetic XLoadListener events from the grid control to
the grid columns. Instead, forward GridColumn::XChild::setParent to
the base class, which then can add itself as load listener
2. removed various occurances of XMultiServiceFactory, instead use the
::comphelper::ComponentContext
3. in O(Bound)ControlModel, have a mechanism to lock the instance (using
ControlModelLock) and fire property changes when the last lock dies.
2008-11-10 12:49:24 +0100 oj r263513 : #i94729# change token strings into string list
2008-11-10 12:13:15 +0100 oj r263512 : #i95222# export chart:title style as well
2008-11-10 08:55:25 +0100 oj r263507 : #i93471# show the correct tabpage when selecting a different object
2008-11-07 23:38:29 +0100 fs r263490 : #i95977# for the event input controls, add a component extending their functionality so they're reset when the users presses DEL
2008-11-07 23:35:39 +0100 fs r263489 : during #i95977#: When a VCL Window is deleted from within VCL code, the respective WindowPeer was never disposed. Corrected this.
2008-11-07 14:57:07 +0100 fs r263420 : #i95963# human-readable display names for event bindings
2008-11-06 10:34:52 +0100 fs r263366 : #i95865# don't use library names containing InvalidZipEntryFileNames - workaround until i95409 is fixed
2008-11-06 10:33:28 +0100 fs r263365 : #i95865#
copied the following change from CWS odfmetadata2 (not yet integrated) into CWS dba31d
- comphelper/inc/comphelper/storagehelper.hxx,
comphelper/source/misc/storagehelper.cxx:
+ add function IsValidZipEntryFileName (moved from module package)
2009-04-22 11:01:27 +00:00
|
|
|
String sMessage( ModuleRes( STR_UNKNOWN_TYPE_FOUND ) );
|
2003-04-01 13:31:51 +00:00
|
|
|
sMessage.SearchAndReplaceAscii("#1",_rColumnName);
|
2009-11-25 13:48:21 +01:00
|
|
|
showError(sMessage);
|
2003-04-01 13:31:51 +00:00
|
|
|
}
|
2007-09-26 13:51:47 +00:00
|
|
|
//-------------------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
void OCopyTableWizard::showError(const OUString& _sErrorMesage)
|
2009-11-25 13:48:21 +01:00
|
|
|
{
|
|
|
|
SQLExceptionInfo aInfo(_sErrorMesage);
|
|
|
|
showError(aInfo.get());
|
|
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
|
|
void OCopyTableWizard::showError(const Any& _aError)
|
|
|
|
{
|
|
|
|
if ( _aError.hasValue() && m_xInteractionHandler.is() )
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
::rtl::Reference< ::comphelper::OInteractionRequest > xRequest( new ::comphelper::OInteractionRequest( _aError ) );
|
|
|
|
m_xInteractionHandler->handle( xRequest.get() );
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
|
|
|
}
|
|
|
|
}
|
2009-12-01 07:14:41 +01:00
|
|
|
}
|
|
|
|
|
2010-10-12 15:59:03 +02:00
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|