1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227
|
/* -*- 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 .
*/
#ifndef INCLUDED_DBACCESS_SOURCE_INC_DSNTYPES_HXX
#define INCLUDED_DBACCESS_SOURCE_INC_DSNTYPES_HXX
#include <sal/config.h>
#include <vector>
#include "dbadllapi.hxx"
#include <connectivity/DriversConfig.hxx>
namespace dbaccess
{
// DATASOURCE_TYPE
/// known datasource types
enum DATASOURCE_TYPE
{
DST_MSACCESS = 1,
DST_MYSQL_ODBC = 2,
DST_MYSQL_JDBC = 3,
DST_ORACLE_JDBC = 4,
//5 was DST_ADABAS
DST_CALC = 6,
DST_DBASE = 7,
DST_FLAT = 8,
DST_JDBC = 9,
DST_ODBC = 10,
DST_ADO = 11,
DST_MOZILLA = 12,
DST_THUNDERBIRD = 13,
DST_LDAP = 14,
DST_OUTLOOK = 15,
DST_OUTLOOKEXP = 16,
DST_EVOLUTION = 17,
DST_EVOLUTION_GROUPWISE = 18,
DST_EVOLUTION_LDAP = 19,
DST_KAB = 20,
DST_MACAB = 21,
DST_MSACCESS_2007 = 22,
DST_EMBEDDED_HSQLDB = 23,
DST_MYSQL_NATIVE = 24,
DST_MYSQL_NATIVE_DIRECT = 25,
DST_FIREBIRD = 26,
DST_EMBEDDED_FIREBIRD = 27,
DST_USERDEFINE1, /// first user defined driver
DST_USERDEFINE2,
DST_USERDEFINE3,
DST_USERDEFINE4,
DST_USERDEFINE5,
DST_USERDEFINE6,
DST_USERDEFINE7,
DST_USERDEFINE8,
DST_USERDEFINE9,
DST_USERDEFINE10,
DST_UNKNOWN /// unrecognized type
};
#define PAGE_DBSETUPWIZARD_INTRO 0
#define PAGE_DBSETUPWIZARD_DBASE 1
#define PAGE_DBSETUPWIZARD_TEXT 2
#define PAGE_DBSETUPWIZARD_MSACCESS 3
#define PAGE_DBSETUPWIZARD_LDAP 4
//5 was PAGE_DBSETUPWIZARD_ADABAS
#define PAGE_DBSETUPWIZARD_MYSQL_INTRO 6
#define PAGE_DBSETUPWIZARD_MYSQL_JDBC 7
#define PAGE_DBSETUPWIZARD_MYSQL_ODBC 8
#define PAGE_DBSETUPWIZARD_ORACLE 9
#define PAGE_DBSETUPWIZARD_JDBC 10
#define PAGE_DBSETUPWIZARD_ADO 11
#define PAGE_DBSETUPWIZARD_ODBC 12
#define PAGE_DBSETUPWIZARD_SPREADSHEET 13
#define PAGE_DBSETUPWIZARD_AUTHENTIFICATION 14
#define PAGE_DBSETUPWIZARD_MOZILLA 15
#define PAGE_DBSETUPWIZARD_FINAL 16
#define PAGE_DBSETUPWIZARD_USERDEFINED 17
#define PAGE_DBSETUPWIZARD_MYSQL_NATIVE 18
// ODsnTypeCollection
class OOO_DLLPUBLIC_DBA ODsnTypeCollection
{
protected:
typedef std::vector<OUString> StringVector;
StringVector m_aDsnTypesDisplayNames; /// user readable names for the datasource types
StringVector m_aDsnPrefixes; /// DSN prefixes which determine the type of a datasource
::connectivity::DriversConfig m_aDriverConfig;
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
#if OSL_DEBUG_LEVEL > 0
sal_Int32 m_nLivingIterators; /// just for debugging reasons, counts the living iterators
#endif
public:
class TypeIterator;
friend class ODsnTypeCollection::TypeIterator;
ODsnTypeCollection(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& _xContext);
~ODsnTypeCollection();
/// get the datasource type display name from a DSN string
OUString getTypeDisplayName(const OUString& _sURL) const;
/// on a given string, cut the type prefix and return the result
OUString cutPrefix(const OUString& _sURL) const;
/// on a given string, return the type prefix
OUString getPrefix(const OUString& _sURL) const;
/// determines whether there is a driver for the given URL prefix/pattern
bool hasDriver( const sal_Char* _pAsciiPattern ) const;
/// on a given string, return the Java Driver Class
OUString getJavaDriverClass(const OUString& _sURL) const;
/// returns the media type of a file based database
OUString getMediaType(const OUString& _sURL) const;
/// returns the dsn prefix for a given media type
OUString getDatasourcePrefixFromMediaType(const OUString& _sMediaType,const OUString& _sExtension = OUString() );
void extractHostNamePort(const OUString& _rDsn,OUString& _sDatabaseName,OUString& _rHostname,sal_Int32& _nPortNumber) const;
/// check if the given data source allows creation of tables
bool supportsTableCreation(const OUString& _sURL) const;
/// check if the given data source allows to show column description.
bool supportsColumnDescription(const OUString& _sURL) const;
// check if a Browse button may be shown to insert connection url
bool supportsBrowsing(const OUString& _sURL) const;
// check if a Create New Database button may be shown to insert connection url
bool supportsDBCreation(const OUString& _sURL) const;
/// check if the given data source tyoe is based on the file system - i.e. the URL is a prefix plus a file URL
bool isFileSystemBased(const OUString& _sURL) const;
bool isConnectionUrlRequired(const OUString& _sURL) const;
/// checks if the given data source type embeds its data into the database document
bool isEmbeddedDatabase( const OUString& _sURL ) const;
OUString getEmbeddedDatabase() const;
// returns true when the properties dialog can be shown, otherwise false.
bool isShowPropertiesEnabled( const OUString& _sURL ) const;
/** returns default settings for newly created databases of the given type.
*/
::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>
getDefaultDBSettings( const OUString& _sURL ) const;
/// get access to the first element of the types collection
TypeIterator begin() const;
/// get access to the (last + 1st) element of the types collection
TypeIterator end() const;
void fillPageIds(const OUString& _sURL,::std::vector<sal_Int16>& _rOutPathIds) const;
DATASOURCE_TYPE determineType(const OUString& _rDsn) const;
bool needsJVM(const OUString& _rDsn) const;
sal_Int32 getIndexOf(const OUString& _sURL) const;
sal_Int32 size() const;
OUString getType(const OUString& _sURL) const;
};
//- ODsnTypeCollection::TypeIterator
class OOO_DLLPUBLIC_DBA ODsnTypeCollection::TypeIterator
{
friend class ODsnTypeCollection;
friend bool OOO_DLLPUBLIC_DBA operator==(const TypeIterator& lhs, const TypeIterator& rhs);
friend bool OOO_DLLPUBLIC_DBA operator!=(const TypeIterator& lhs, const TypeIterator& rhs) { return !(lhs == rhs); }
protected:
const ODsnTypeCollection* m_pContainer;
sal_Int32 m_nPosition;
public:
TypeIterator(const TypeIterator& _rSource);
~TypeIterator();
OUString getURLPrefix() const;
OUString getDisplayName() const;
/// prefix increment
const TypeIterator& operator++();
/// postfix increment
const TypeIterator operator++(int) { TypeIterator hold(*this); ++*this; return hold; }
/// prefix decrement
const TypeIterator& operator--();
/// postfix decrement
const TypeIterator operator--(int) { TypeIterator hold(*this); --*this; return hold; }
protected:
TypeIterator(const ODsnTypeCollection* _pContainer, sal_Int32 _nInitialPos = 0);
};
} // namespace dbaccess
#endif // INCLUDED_DBACCESS_SOURCE_INC_DSNTYPES_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|