diff options
Diffstat (limited to 'comm/mailnews/import/src/nsAddrDatabase.h')
-rw-r--r-- | comm/mailnews/import/src/nsAddrDatabase.h | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/comm/mailnews/import/src/nsAddrDatabase.h b/comm/mailnews/import/src/nsAddrDatabase.h new file mode 100644 index 0000000000..d667c92e47 --- /dev/null +++ b/comm/mailnews/import/src/nsAddrDatabase.h @@ -0,0 +1,158 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* 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/. */ + +#ifndef _nsAddrDatabase_H_ +#define _nsAddrDatabase_H_ + +#include "nsIAbCard.h" +#include "nsIFile.h" +#include "mdb.h" +#include "nsString.h" +#include "nsCOMPtr.h" + +class nsAddrDatabase { + using PathString = mozilla::PathString; + + public: + nsresult SetDbPath(nsIFile* aDbPath); + nsresult Close(bool forceCommit); + nsresult OpenMDB(nsIFile* dbName, bool create); + nsresult CloseMDB(bool commit); + nsresult ForceClosed(void); + nsresult EnumerateCards(nsISimpleEnumerator** _retval); + nsresult EnumerateListAddresses(uint32_t listRowID, + nsISimpleEnumerator** _retval); + + nsAddrDatabase(); + virtual ~nsAddrDatabase(); + + nsresult GetMDBFactory(nsIMdbFactory** aMdbFactory); + nsIMdbEnv* GetEnv() { return m_mdbEnv; } + uint32_t GetCurVersion(); + nsIMdbTableRowCursor* GetTableRowCursor(); + nsIMdbTable* GetPabTable() { return m_mdbPabTable; } + + nsresult CreateABCard(nsIMdbRow* cardRow, mdb_id listRowID, + nsIAbCard** result); + nsresult CreateABListCard(nsIMdbRow* listRow, nsIAbCard** result); + + bool IsListRowScopeToken(mdb_scope scope) { + return (scope == m_ListRowScopeToken) ? true : false; + } + bool IsCardRowScopeToken(mdb_scope scope) { + return (scope == m_CardRowScopeToken) ? true : false; + } + bool IsDataRowScopeToken(mdb_scope scope) { + return (scope == m_DataRowScopeToken) ? true : false; + } + nsresult GetCardRowByRowID(mdb_id rowID, nsIMdbRow** dbRow); + nsresult GetListRowByRowID(mdb_id rowID, nsIMdbRow** dbRow); + + uint32_t GetListAddressTotal(nsIMdbRow* listRow); + nsresult GetAddressRowByPos(nsIMdbRow* listRow, uint16_t pos, + nsIMdbRow** cardRow); + + nsresult InitCardFromRow(nsIAbCard* aNewCard, nsIMdbRow* aCardRow); + + protected: + void YarnToUInt32(struct mdbYarn* yarn, uint32_t* pResult); + nsresult GetStringColumn(nsIMdbRow* cardRow, mdb_token outToken, + nsString& str); + nsresult GetIntColumn(nsIMdbRow* cardRow, mdb_token outToken, + uint32_t* pValue, uint32_t defaultValue); + nsresult GetListCardFromDB(nsIAbCard* listCard, nsIMdbRow* listRow); + nsresult CreateCard(nsIMdbRow* cardRow, mdb_id listRowID, nsIAbCard** result); + + // mdb bookkeeping stuff + nsresult InitExistingDB(); + nsresult InitMDBInfo(); + + nsIMdbEnv* m_mdbEnv; // to be used in all the db calls. + nsIMdbStore* m_mdbStore; + nsIMdbTable* m_mdbPabTable; + nsCOMPtr<nsIFile> m_dbName; + bool m_mdbTokensInitialized; + + mdb_kind m_PabTableKind; + mdb_kind m_DeletedCardsTableKind; + + mdb_scope m_CardRowScopeToken; + mdb_scope m_ListRowScopeToken; + mdb_scope m_DataRowScopeToken; + + mdb_token m_UIDColumnToken; + mdb_token m_FirstNameColumnToken; + mdb_token m_LastNameColumnToken; + mdb_token m_PhoneticFirstNameColumnToken; + mdb_token m_PhoneticLastNameColumnToken; + mdb_token m_DisplayNameColumnToken; + mdb_token m_NickNameColumnToken; + mdb_token m_PriEmailColumnToken; + mdb_token m_2ndEmailColumnToken; + mdb_token m_DefaultEmailColumnToken; + mdb_token m_CardTypeColumnToken; + mdb_token m_WorkPhoneColumnToken; + mdb_token m_HomePhoneColumnToken; + mdb_token m_FaxColumnToken; + mdb_token m_PagerColumnToken; + mdb_token m_CellularColumnToken; + mdb_token m_WorkPhoneTypeColumnToken; + mdb_token m_HomePhoneTypeColumnToken; + mdb_token m_FaxTypeColumnToken; + mdb_token m_PagerTypeColumnToken; + mdb_token m_CellularTypeColumnToken; + mdb_token m_HomeAddressColumnToken; + mdb_token m_HomeAddress2ColumnToken; + mdb_token m_HomeCityColumnToken; + mdb_token m_HomeStateColumnToken; + mdb_token m_HomeZipCodeColumnToken; + mdb_token m_HomeCountryColumnToken; + mdb_token m_WorkAddressColumnToken; + mdb_token m_WorkAddress2ColumnToken; + mdb_token m_WorkCityColumnToken; + mdb_token m_WorkStateColumnToken; + mdb_token m_WorkZipCodeColumnToken; + mdb_token m_WorkCountryColumnToken; + mdb_token m_JobTitleColumnToken; + mdb_token m_DepartmentColumnToken; + mdb_token m_CompanyColumnToken; + mdb_token m_AimScreenNameColumnToken; + mdb_token m_AnniversaryYearColumnToken; + mdb_token m_AnniversaryMonthColumnToken; + mdb_token m_AnniversaryDayColumnToken; + mdb_token m_SpouseNameColumnToken; + mdb_token m_FamilyNameColumnToken; + mdb_token m_DefaultAddressColumnToken; + mdb_token m_CategoryColumnToken; + mdb_token m_WebPage1ColumnToken; + mdb_token m_WebPage2ColumnToken; + mdb_token m_BirthYearColumnToken; + mdb_token m_BirthMonthColumnToken; + mdb_token m_BirthDayColumnToken; + mdb_token m_Custom1ColumnToken; + mdb_token m_Custom2ColumnToken; + mdb_token m_Custom3ColumnToken; + mdb_token m_Custom4ColumnToken; + mdb_token m_NotesColumnToken; + mdb_token m_LastModDateColumnToken; + mdb_token m_RecordKeyColumnToken; + mdb_token m_LowerPriEmailColumnToken; + mdb_token m_Lower2ndEmailColumnToken; + + mdb_token m_PopularityIndexColumnToken; + + mdb_token m_AddressCharSetColumnToken; + mdb_token m_LastRecordKeyColumnToken; + + mdb_token m_ListNameColumnToken; + mdb_token m_ListNickNameColumnToken; + mdb_token m_ListDescriptionColumnToken; + mdb_token m_ListTotalColumnToken; + mdb_token m_LowerListNameColumnToken; + + nsCOMPtr<nsIMdbFactory> mMdbFactory; +}; + +#endif |