windows-nt/Source/XPSP1/NT/ds/adsi/oledsvw/adsqdoc.cpp
2020-09-26 16:20:57 +08:00

286 lines
7 KiB
C++

// adsqryDoc.cpp : implementation of the CAdsqryDoc class
//
#include "stdafx.h"
#include "adsqDoc.h"
#include "newquery.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAdsqryDoc
IMPLEMENT_DYNCREATE(CAdsqryDoc, CDocument)
BEGIN_MESSAGE_MAP(CAdsqryDoc, CDocument)
//{{AFX_MSG_MAP(CAdsqryDoc)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAdsqryDoc construction/destruction
/***********************************************************
Function:
Arguments:
Return:
Purpose:
Author(s):
Revision:
Date:
***********************************************************/
CAdsqryDoc::CAdsqryDoc()
{
// TODO: add one-time construction code here
m_pDataSource = NULL;
}
/***********************************************************
Function:
Arguments:
Return:
Purpose:
Author(s):
Revision:
Date:
***********************************************************/
CAdsqryDoc::~CAdsqryDoc()
{
if( m_pDataSource )
{
delete m_pDataSource;
}
}
/***********************************************************
Function:
Arguments:
Return:
Purpose:
Author(s):
Revision:
Date:
***********************************************************/
BOOL CAdsqryDoc::OnNewDocument()
{
CNewQuery aNewQuery;
CString strTitle;
SEARCHPREF* pSearchPref;
if (!CDocument::OnNewDocument())
return FALSE;
if( aNewQuery.DoModal( ) != IDOK )
return FALSE;
pSearchPref = (SEARCHPREF*) AllocADsMem( sizeof(SEARCHPREF) );
if( NULL == pSearchPref )
return FALSE;
pSearchPref->bEncryptPassword = FALSE;
pSearchPref->bUseSQL = FALSE;
pSearchPref->nAsynchronous = -1;
pSearchPref->nDerefAliases = -1;
pSearchPref->nSizeLimit = -1;
pSearchPref->nTimeLimit = -1;
pSearchPref->nAttributesOnly = -1;
pSearchPref->nScope = -1;
pSearchPref->nTimeOut = -1;
pSearchPref->nPageSize = -1;
pSearchPref->nChaseReferrals = -1;
_tcscpy( pSearchPref->szSource, aNewQuery.m_strSource );
_tcscpy( pSearchPref->szQuery, aNewQuery.m_strQuery );
_tcscpy( pSearchPref->szAttributes, aNewQuery.m_strAttributes );
_tcscpy( pSearchPref->szScope, aNewQuery.m_strScope );
_tcscpy( pSearchPref->szUserName, aNewQuery.m_strUser );
_tcscpy( pSearchPref->szPassword, aNewQuery.m_strPassword );
pSearchPref->bEncryptPassword = aNewQuery.m_bEncryptPassword;
pSearchPref->bUseSQL = aNewQuery.m_bUseSQL;
if( !GetSearchPreferences( pSearchPref ) )
return FALSE;
if( aNewQuery.m_bUseSearch )
{
m_pDataSource = new CADsSearchDataSource;
}
else
{
m_pDataSource = new CADsOleDBDataSource;
}
m_pDataSource->SetQueryParameters( pSearchPref );
FreeADsMem( pSearchPref );
strTitle = aNewQuery.m_strSource + _T(" ")+
aNewQuery.m_strQuery + _T(" ")+
aNewQuery.m_strAttributes;
m_pDataSource->RunTheQuery( );
SetTitle( strTitle );
return TRUE;
}
/***********************************************************
Function:
Arguments:
Return:
Purpose:
Author(s):
Revision:
Date:
***********************************************************/
BOOL CAdsqryDoc::GetSearchPreferences( SEARCHPREF* pSearchPref )
{
CSearchPreferencesDlg aSearchPref;
if( aSearchPref.DoModal( ) != IDOK )
{
return FALSE;
}
//***************************************************************************
if( !aSearchPref.m_strAsynchronous.IsEmpty( ) )
{
if( !aSearchPref.m_strAsynchronous.CompareNoCase( _T("Yes") ) )
{
pSearchPref->nAsynchronous = 1;
}
else
{
pSearchPref->nAsynchronous = 0;
}
}
//***************************************************************************
if( !aSearchPref.m_strChaseReferrals.IsEmpty( ) )
{
if( !aSearchPref.m_strChaseReferrals.CompareNoCase( _T("Yes") ) )
{
pSearchPref->nChaseReferrals = 1;
}
else
{
pSearchPref->nChaseReferrals = 0;
}
}
//***************************************************************************
if( !aSearchPref.m_strAttributesOnly.IsEmpty( ) )
{
if( !aSearchPref.m_strAttributesOnly.CompareNoCase( _T("Yes") ) )
{
pSearchPref->nAttributesOnly = 1;
}
else
{
pSearchPref->nAttributesOnly = 0;
}
}
//***************************************************************************
if( !aSearchPref.m_strDerefAliases.IsEmpty( ) )
{
if( !aSearchPref.m_strDerefAliases.CompareNoCase( _T("Yes") ) )
{
pSearchPref->nDerefAliases = 1;
}
else
{
pSearchPref->nDerefAliases = 0;
}
}
//***************************************************************************
if( !aSearchPref.m_strTimeOut.IsEmpty( ) )
{
pSearchPref->nTimeOut = _ttoi( aSearchPref.m_strTimeOut.GetBuffer( 16 ) );
}
//***************************************************************************
if( !aSearchPref.m_strTimeLimit.IsEmpty( ) )
{
pSearchPref->nTimeLimit = _ttoi( aSearchPref.m_strTimeLimit.GetBuffer( 16 ) );
}
//***************************************************************************
if( !aSearchPref.m_strSizeLimit.IsEmpty( ) )
{
pSearchPref->nSizeLimit = _ttoi( aSearchPref.m_strSizeLimit.GetBuffer( 16 ) );
}
//***************************************************************************
if( !aSearchPref.m_strPageSize.IsEmpty( ) )
{
pSearchPref->nPageSize = _ttoi( aSearchPref.m_strPageSize.GetBuffer( 16 ) );
}
//***************************************************************************
if( !aSearchPref.m_strScope.IsEmpty( ) )
{
_tcscpy( pSearchPref->szScope, aSearchPref.m_strScope );
}
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CAdsqryDoc serialization
/***********************************************************
Function:
Arguments:
Return:
Purpose:
Author(s):
Revision:
Date:
***********************************************************/
void CAdsqryDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
/////////////////////////////////////////////////////////////////////////////
// CAdsqryDoc diagnostics
#ifdef _DEBUG
void CAdsqryDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CAdsqryDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CAdsqryDoc commands