1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_dbaccess.hxx"
26 #ifndef DBAUI_QTABLECONNECTIONDATA_HXX
27 #include "QTableConnectionData.hxx"
28 #endif
29 #ifndef _TOOLS_DEBUG_HXX
30 #include <tools/debug.hxx>
31 #endif
32 #ifndef DBAUI_QTABLECONNECTIONDATA_HXX
33 #include "QTableConnectionData.hxx"
34 #endif
35 #ifndef DBAUI_QUERY_TABLEWINDOWDATA_HXX
36 #include "QTableWindow.hxx"
37 #endif
38 
39 using namespace dbaui;
40 
41 //========================================================================
42 // class OQueryTableConnectionData
43 //========================================================================
DBG_NAME(OQueryTableConnectionData)44 DBG_NAME(OQueryTableConnectionData)
45 //------------------------------------------------------------------------
46 OQueryTableConnectionData::OQueryTableConnectionData()
47 	:OTableConnectionData()
48 	,m_eJoinType (INNER_JOIN)
49     ,m_bNatural(false)
50 {
51 	DBG_CTOR(OQueryTableConnectionData,NULL);
52 }
53 
54 //------------------------------------------------------------------------
OQueryTableConnectionData(const OQueryTableConnectionData & rConnData)55 OQueryTableConnectionData::OQueryTableConnectionData( const OQueryTableConnectionData& rConnData )
56 	:OTableConnectionData( rConnData )
57 {
58 	DBG_CTOR(OQueryTableConnectionData,NULL);
59 	m_nFromEntryIndex = rConnData.m_nFromEntryIndex;
60 	m_nDestEntryIndex = rConnData.m_nDestEntryIndex;
61 
62 	m_eFromType = rConnData.m_eFromType;
63 	m_eDestType = rConnData.m_eDestType;
64 	m_eJoinType = rConnData.m_eJoinType;
65     m_bNatural  = rConnData.m_bNatural;
66 }
67 
68 //------------------------------------------------------------------------
OQueryTableConnectionData(const TTableWindowData::value_type & _pReferencingTable,const TTableWindowData::value_type & _pReferencedTable,const::rtl::OUString & rConnName)69 OQueryTableConnectionData::OQueryTableConnectionData(const TTableWindowData::value_type& _pReferencingTable
70                                                     ,const TTableWindowData::value_type& _pReferencedTable
71                                                     ,const ::rtl::OUString& rConnName)
72 	:OTableConnectionData( _pReferencingTable,_pReferencedTable, rConnName )
73 	,m_nFromEntryIndex(0)
74 	,m_nDestEntryIndex(0)
75 	,m_eJoinType (INNER_JOIN)
76     ,m_bNatural(false)
77 	,m_eFromType(TAB_NORMAL_FIELD)
78 	,m_eDestType(TAB_NORMAL_FIELD)
79 {
80 	DBG_CTOR(OQueryTableConnectionData,NULL);
81 }
82 
83 //------------------------------------------------------------------------
~OQueryTableConnectionData()84 OQueryTableConnectionData::~OQueryTableConnectionData()
85 {
86 	DBG_DTOR(OQueryTableConnectionData,NULL);
87 }
88 
89 //------------------------------------------------------------------------
CreateLineDataObj()90 OConnectionLineDataRef OQueryTableConnectionData::CreateLineDataObj()
91 {
92 	DBG_CHKTHIS(OQueryTableConnectionData,NULL);
93 	// keine Spezialisierung bei den LineDatas, also eine Instanz der Standard-Klasse
94 	return new OConnectionLineData();
95 }
96 
97 //------------------------------------------------------------------------
CreateLineDataObj(const OConnectionLineData & rConnLineData)98 OConnectionLineDataRef OQueryTableConnectionData::CreateLineDataObj( const OConnectionLineData& rConnLineData )
99 {
100 	DBG_CHKTHIS(OQueryTableConnectionData,NULL);
101 	return new OConnectionLineData( rConnLineData );
102 }
103 
104 //------------------------------------------------------------------------
CopyFrom(const OTableConnectionData & rSource)105 void OQueryTableConnectionData::CopyFrom(const OTableConnectionData& rSource)
106 {
107 	DBG_CHKTHIS(OQueryTableConnectionData,NULL);
108 	// wie in der Basisklasse zurueckziehen auf das (nicht-virtuelle) operator=
109 	*this = (const OQueryTableConnectionData&)rSource;
110 }
111 
112 //------------------------------------------------------------------------
operator =(const OQueryTableConnectionData & rConnData)113 OQueryTableConnectionData& OQueryTableConnectionData::operator=(const OQueryTableConnectionData& rConnData)
114 {
115 	DBG_CHKTHIS(OQueryTableConnectionData,NULL);
116 	if (&rConnData == this)
117 		return *this;
118 
119 	OTableConnectionData::operator=(rConnData);
120 
121 	m_nFromEntryIndex = rConnData.m_nFromEntryIndex;
122 	m_nDestEntryIndex = rConnData.m_nDestEntryIndex;
123 
124 	m_eFromType = rConnData.m_eFromType;
125 	m_eDestType = rConnData.m_eDestType;
126 	m_eJoinType = rConnData.m_eJoinType;
127     m_bNatural  = rConnData.m_bNatural;
128 
129 	return *this;
130 }
131 
132 //------------------------------------------------------------------------------
GetAliasName(EConnectionSide nWhich) const133 ::rtl::OUString OQueryTableConnectionData::GetAliasName(EConnectionSide nWhich) const
134 {
135 	DBG_CHKTHIS(OQueryTableConnectionData,NULL);
136 	return nWhich == JTCS_FROM ? m_pReferencingTable->GetWinName() : m_pReferencedTable->GetWinName();
137 }
138 
139 //------------------------------------------------------------------------------
InitFromDrag(const OTableFieldDescRef & rDragLeft,const OTableFieldDescRef & rDragRight)140 void OQueryTableConnectionData::InitFromDrag(const OTableFieldDescRef& rDragLeft, const OTableFieldDescRef& rDragRight)
141 {
142 	DBG_CHKTHIS(OQueryTableConnectionData,NULL);
143 	// die Infos in rDrag in Parameter fuer das Basisklassen-Init umsetzen ...
144 	OQueryTableWindow* pSourceWin = static_cast<OQueryTableWindow*>(rDragLeft->GetTabWindow());
145 	OQueryTableWindow* pDestWin = static_cast<OQueryTableWindow*>(rDragRight->GetTabWindow());
146 	OSL_ENSURE(pSourceWin,"NO Source window found!");
147 	OSL_ENSURE(pDestWin,"NO Dest window found!");
148     m_pReferencingTable = pSourceWin->GetData();
149     m_pReferencedTable  = pDestWin->GetData();
150 
151 	// und dann meine Members setzen
152 	SetFieldIndex(JTCS_FROM, rDragLeft->GetFieldIndex());
153 	SetFieldIndex(JTCS_TO, rDragRight->GetFieldIndex());
154 
155 	SetFieldType(JTCS_FROM, rDragLeft->GetFieldType());
156 	SetFieldType(JTCS_TO, rDragRight->GetFieldType());
157 
158 	AppendConnLine((::rtl::OUString)rDragLeft->GetField(),(::rtl::OUString)rDragRight->GetField());
159 }
160 // -----------------------------------------------------------------------------
NewInstance() const161 OTableConnectionData* OQueryTableConnectionData::NewInstance() const
162 {
163 	return new OQueryTableConnectionData();
164 }
165 // -----------------------------------------------------------------------------
Update()166 sal_Bool OQueryTableConnectionData::Update()
167 {
168 	return sal_True;
169 }
170 // -----------------------------------------------------------------------------
171 
172 
173 
174 
175