1*2e2212a7SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*2e2212a7SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*2e2212a7SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*2e2212a7SAndrew Rist  * distributed with this work for additional information
6*2e2212a7SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*2e2212a7SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*2e2212a7SAndrew Rist  * "License"); you may not use this file except in compliance
9*2e2212a7SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*2e2212a7SAndrew Rist  *
11*2e2212a7SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*2e2212a7SAndrew Rist  *
13*2e2212a7SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*2e2212a7SAndrew Rist  * software distributed under the License is distributed on an
15*2e2212a7SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*2e2212a7SAndrew Rist  * KIND, either express or implied.  See the License for the
17*2e2212a7SAndrew Rist  * specific language governing permissions and limitations
18*2e2212a7SAndrew Rist  * under the License.
19*2e2212a7SAndrew Rist  *
20*2e2212a7SAndrew Rist  *************************************************************/
21*2e2212a7SAndrew Rist 
22*2e2212a7SAndrew Rist 
23cdf0e10cSrcweir #ifndef DBAUI_TABLECONNECTIONDATA_HXX
24cdf0e10cSrcweir #define DBAUI_TABLECONNECTIONDATA_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #ifndef DBAUI_CONNECTIONLINEDATA_HXX
27cdf0e10cSrcweir #include "ConnectionLineData.hxx"
28cdf0e10cSrcweir #endif
29cdf0e10cSrcweir #include "TableWindowData.hxx"
30cdf0e10cSrcweir #include <vector>
31cdf0e10cSrcweir #ifndef _RTTI_HXX
32cdf0e10cSrcweir #include <tools/rtti.hxx>
33cdf0e10cSrcweir #endif
34cdf0e10cSrcweir #ifndef _STRING_HXX
35cdf0e10cSrcweir #include <tools/string.hxx>
36cdf0e10cSrcweir #endif
37cdf0e10cSrcweir #include <boost/shared_ptr.hpp>
38cdf0e10cSrcweir 
39cdf0e10cSrcweir namespace dbaui
40cdf0e10cSrcweir {
41cdf0e10cSrcweir #define MAX_CONN_COUNT 2
42cdf0e10cSrcweir 	//==================================================================
43cdf0e10cSrcweir 	// ConnData		---------->*	ConnLineData
44cdf0e10cSrcweir 	//    ^1							^1
45cdf0e10cSrcweir 	//    |								|
46cdf0e10cSrcweir 	//	Conn		---------->*	ConnLine
47cdf0e10cSrcweir 	//==================================================================
48cdf0e10cSrcweir 
49cdf0e10cSrcweir 
50cdf0e10cSrcweir 	//==================================================================
51cdf0e10cSrcweir 	/*
52cdf0e10cSrcweir 		the class OTableConnectionData contains all connection data which exists between	two windows
53cdf0e10cSrcweir 	**/
54cdf0e10cSrcweir 	class OTableConnectionData
55cdf0e10cSrcweir 	{
56cdf0e10cSrcweir 
57cdf0e10cSrcweir 	protected:
58cdf0e10cSrcweir         TTableWindowData::value_type m_pReferencingTable;
59cdf0e10cSrcweir         TTableWindowData::value_type m_pReferencedTable;
60cdf0e10cSrcweir 		String m_aConnName;
61cdf0e10cSrcweir 
62cdf0e10cSrcweir 		OConnectionLineDataVec m_vConnLineData;
63cdf0e10cSrcweir 
64cdf0e10cSrcweir 		void	Init();
65cdf0e10cSrcweir 
66cdf0e10cSrcweir 		virtual OConnectionLineDataRef CreateLineDataObj();
67cdf0e10cSrcweir 		virtual OConnectionLineDataRef CreateLineDataObj( const OConnectionLineData& rConnLineData );
68cdf0e10cSrcweir 
69cdf0e10cSrcweir 		OTableConnectionData& operator=( const OTableConnectionData& rConnData );
70cdf0e10cSrcweir 	public:
71cdf0e10cSrcweir 		OTableConnectionData();
72cdf0e10cSrcweir         OTableConnectionData(const TTableWindowData::value_type& _pReferencingTable,const TTableWindowData::value_type& _pReferencedTable, const String& rConnName = String() );
73cdf0e10cSrcweir 		OTableConnectionData( const OTableConnectionData& rConnData );
74cdf0e10cSrcweir 		virtual ~OTableConnectionData();
75cdf0e10cSrcweir 
76cdf0e10cSrcweir 		// sich aus einer Quelle initialisieren (das ist mir irgendwie angenehmer als ein virtueller Zuweisungsoperator)
77cdf0e10cSrcweir 		virtual void CopyFrom(const OTableConnectionData& rSource);
78cdf0e10cSrcweir 
79cdf0e10cSrcweir 		// eine neue Instanz meines eigenen Typs liefern (braucht NICHT initialisiert sein)
80cdf0e10cSrcweir 		virtual OTableConnectionData* NewInstance() const;
81cdf0e10cSrcweir 			// (von OTableConnectionData abgeleitete Klasse muessen entsprechend eine Instanz ihrer Klasse liefern)
82cdf0e10cSrcweir 
83cdf0e10cSrcweir 		sal_Bool SetConnLine( sal_uInt16 nIndex, const String& rSourceFieldName, const String& rDestFieldName );
84cdf0e10cSrcweir 		sal_Bool AppendConnLine( const ::rtl::OUString& rSourceFieldName, const ::rtl::OUString& rDestFieldName );
85cdf0e10cSrcweir 		void ResetConnLines( sal_Bool bUseDefaults = sal_True );
86cdf0e10cSrcweir 
87cdf0e10cSrcweir 		/** normalizeLines moves the empty lines to the back
88cdf0e10cSrcweir 		*/
89cdf0e10cSrcweir 		void normalizeLines();
90cdf0e10cSrcweir 			// loescht die Liste der ConnLines, bei bUseDefaults == sal_True werden danach MAX_CONN_COUNT neue Dummy-Linien eingefuegt
91cdf0e10cSrcweir 
GetConnLineDataList()92cdf0e10cSrcweir 		OConnectionLineDataVec* GetConnLineDataList(){ return &m_vConnLineData; }
93cdf0e10cSrcweir 
getReferencingTable() const94cdf0e10cSrcweir         inline TTableWindowData::value_type getReferencingTable() const { return m_pReferencingTable; }
getReferencedTable() const95cdf0e10cSrcweir         inline TTableWindowData::value_type getReferencedTable()  const { return m_pReferencedTable;  }
96cdf0e10cSrcweir 
setReferencingTable(const TTableWindowData::value_type & _pTable)97cdf0e10cSrcweir         inline void setReferencingTable(const TTableWindowData::value_type& _pTable) { m_pReferencingTable = _pTable; }
setReferencedTable(const TTableWindowData::value_type & _pTable)98cdf0e10cSrcweir         inline void setReferencedTable(const TTableWindowData::value_type& _pTable)  { m_pReferencedTable  = _pTable; }
99cdf0e10cSrcweir 
GetConnName() const100cdf0e10cSrcweir 		String GetConnName() const { return m_aConnName; }
101cdf0e10cSrcweir 
SetConnName(const String & rConnName)102cdf0e10cSrcweir 		virtual void SetConnName( const String& rConnName ){ m_aConnName = rConnName; }
103cdf0e10cSrcweir 		/** Update create a new connection
104cdf0e10cSrcweir 
105cdf0e10cSrcweir 			@return true if successful
106cdf0e10cSrcweir 		*/
Update()107cdf0e10cSrcweir 		virtual sal_Bool Update(){ return sal_True; }
108cdf0e10cSrcweir 	};
109cdf0e10cSrcweir 
110cdf0e10cSrcweir     typedef ::std::vector< ::boost::shared_ptr<OTableConnectionData> >  TTableConnectionData;
111cdf0e10cSrcweir 
112cdf0e10cSrcweir }
113cdf0e10cSrcweir #endif // DBAUI_TABLECONNECTIONDATA_HXX
114cdf0e10cSrcweir 
115cdf0e10cSrcweir 
116