/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * 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 .
*/
// ICopyTableSourceObject /** interface to an object to copy to another DB, using the OCopyTableWizard
when the wizard is used to copy an object to another DB, it usually requires a sdbcx-level or sdb-level object (a css.sdbcx.Table or css.sdb.Query, that is).
However, to also support copying tables from sdbc-level connections, we allow to work with the object name only. This implies some less features (like copying the UI settings of a table is not done), but still allows to copy definition and data.
*/ class ICopyTableSourceObject
{ public: /// retrieves the fully qualified name of the object to copy virtual OUString getQualifiedObjectName() const = 0; /// determines whether the object is a view virtualbool isView() const = 0; /** copies the UI settings of the object to the given target object. Might be ignored by implementations which do not have Ui settings.
*/ virtualvoid copyUISettingsTo( const css::uno::Reference< css::beans::XPropertySet >& _rxObject ) const = 0; /// retrieves the column names of the to-be-copied object virtual css::uno::Sequence< OUString >
getColumnNames() const = 0; /// retrieves the names of the primary keys of the to-be-copied object virtual css::uno::Sequence< OUString >
getPrimaryKeyColumnNames() const = 0; /// creates a OFieldDescription for the given column of the to-be-copied object virtual OFieldDescription* createFieldDescription( const OUString& _rColumnName ) const = 0; /// returns the SELECT statement which can be used to retrieve the data of the to-be-copied object virtual OUString getSelectStatement() const = 0;
/** returns the prepared statement which can be used to retrieve the data of the to-be-copied object
The default implementation of this method will simply prepare a statement with the return value of ->getSelectStatement.
*/ virtual ::utl::SharedUNOComponent< css::sdbc::XPreparedStatement >
getPreparedSelectStatement() const = 0;
private:
ODatabaseExport::TColumns m_vDestColumns; // contains the columns
ODatabaseExport::TColumnVector m_aDestVec; // the order to insert the columns
ODatabaseExport::TColumns m_vSourceColumns;
ODatabaseExport::TColumnVector m_vSourceVec;
OUString m_sTypeNames; // these type names are the ones out of the resource file
sal_uInt32 m_nPageCount; bool m_bDeleteSourceColumns; bool m_bInterConnectionCopy; // are we copying between different connections?
css::lang::Locale m_aLocale;
OUString m_sName; // for a table the name is composed
OUString m_sSourceName;
OUString m_aKeyName;
TOTypeInfoSP m_pTypeInfo; // default type bool m_bAddPKFirstTime;
sal_Int16 m_nOperation;
Wizard_Button_Style m_ePressed; bool m_bCreatePrimaryKeyColumn; bool m_bUseHeaderLine;
private:
DECL_LINK( ImplPrevHdl, weld::Button&, void );
DECL_LINK( ImplNextHdl, weld::Button&, void);
DECL_LINK( ImplOKHdl, weld::Button&, void ); bool CheckColumns(sal_Int32& _rnBreakPos); void loadData( const ICopyTableSourceObject& _rSourceObject,
ODatabaseExport::TColumns& _rColumns,
ODatabaseExport::TColumnVector& _rColVector ); void construct(); // need for table creation staticvoid appendColumns( css::uno::Reference< css::sdbcx::XColumnsSupplier> const & _rxColSup, const ODatabaseExport::TColumnVector* _pVec, bool _bKeyColumns = false ); staticvoid appendKey(css::uno::Reference< css::sdbcx::XKeysSupplier> const & _rxSup,const ODatabaseExport::TColumnVector* _pVec); // checks if the type is supported in the destination database bool supportsType(sal_Int32 _nDataType,sal_Int32& _rNewDataType);
virtualbool DeactivatePage() override;
weld::Button& GetOKButton() { return *m_xFinish; }
Wizard_Button_Style GetPressedButton() const { return m_ePressed; } void EnableNextButton(bool bEnable); void AddWizardPage(std::unique_ptr<OWizardPage> xPage); // delete page from OCopyTableWizard void CheckButtons(); // checks which button can be disabled, enabled
// returns a vector where the position of a column and if the column is in the selection // when not the value is COLUMN_POSITION_NOT_FOUND. const ODatabaseExport::TPositions& GetColumnPositions() const { return m_vColumnPositions; } const std::vector<sal_Int32>& GetColumnTypes() const { return m_vColumnTypes; } bool UseHeaderLine() const { return m_bUseHeaderLine; } void setUseHeaderLine(bool _bUseHeaderLine) { m_bUseHeaderLine = _bUseHeaderLine; }
/** replaces a field description with another one. The name must not be known so far. @param _nPos The pos inside the vector, 0 based. @param _pField The field to set. @param _sOldName The name of column to be replaced.
*/ void replaceColumn(sal_Int32 _nPos,OFieldDescription* _pField,const OUString& _sOldName);
/** returns whether a primary key should be created in the target database
*/ bool shouldCreatePrimaryKey() const { return m_bCreatePrimaryKeyColumn;} void setCreatePrimaryKey( bool _bDoCreate, const OUString& _rSuggestedName );
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.