зеркало из https://github.com/mozilla/gecko-dev.git
Add record key for address book sync
This commit is contained in:
Родитель
63bf1a14ea
Коммит
8154a1aa34
|
@ -72,6 +72,7 @@ interface nsIAbCard : nsISupports {
|
||||||
attribute unsigned long lastModifiedDate;
|
attribute unsigned long lastModifiedDate;
|
||||||
attribute wstring name;
|
attribute wstring name;
|
||||||
readonly attribute string printCardUrl;
|
readonly attribute string printCardUrl;
|
||||||
|
readonly attribute unsigned long key;
|
||||||
|
|
||||||
attribute boolean sendPlainText;
|
attribute boolean sendPlainText;
|
||||||
attribute boolean isMailList;
|
attribute boolean isMailList;
|
||||||
|
@ -101,4 +102,6 @@ interface nsIAbCard : nsISupports {
|
||||||
void editCardToDatabase(in string uri);
|
void editCardToDatabase(in string uri);
|
||||||
void copyCard(in nsIAbCard srcCard);
|
void copyCard(in nsIAbCard srcCard);
|
||||||
wstring getCollationKey(in wstring str);
|
wstring getCollationKey(in wstring str);
|
||||||
|
void setRecordKey(in unsigned long key);
|
||||||
|
void dropCardToDatabase(in string uri);
|
||||||
};
|
};
|
||||||
|
|
|
@ -96,6 +96,7 @@ nsAbCardProperty::nsAbCardProperty(void)
|
||||||
NS_INIT_REFCNT();
|
NS_INIT_REFCNT();
|
||||||
|
|
||||||
m_LastModDate = 0;
|
m_LastModDate = 0;
|
||||||
|
m_Key = 0;
|
||||||
|
|
||||||
m_bSendPlainText = PR_TRUE;
|
m_bSendPlainText = PR_TRUE;
|
||||||
m_bIsMailList = PR_FALSE;
|
m_bIsMailList = PR_FALSE;
|
||||||
|
@ -682,6 +683,25 @@ NS_IMETHODIMP nsAbCardProperty::AddCardToDatabase(const char *uri)
|
||||||
return NS_ERROR_FAILURE;
|
return NS_ERROR_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP nsAbCardProperty::DropCardToDatabase(const char *uri)
|
||||||
|
{
|
||||||
|
nsresult rv = NS_OK;
|
||||||
|
nsCOMPtr<nsIAddrDatabase> dropDatabase;
|
||||||
|
|
||||||
|
NS_WITH_SERVICE(nsIAddressBook, addresBook, kAddrBookCID, &rv);
|
||||||
|
if (NS_SUCCEEDED(rv))
|
||||||
|
rv = addresBook->GetAbDatabaseFromURI(uri, getter_AddRefs(dropDatabase));
|
||||||
|
|
||||||
|
if (dropDatabase)
|
||||||
|
{
|
||||||
|
dropDatabase->CreateNewCardAndAddToDB(this, PR_FALSE);
|
||||||
|
dropDatabase->Commit(kLargeCommit);
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP nsAbCardProperty::EditCardToDatabase(const char *uri)
|
NS_IMETHODIMP nsAbCardProperty::EditCardToDatabase(const char *uri)
|
||||||
{
|
{
|
||||||
if (!mCardDatabase && uri)
|
if (!mCardDatabase && uri)
|
||||||
|
@ -986,8 +1006,15 @@ nsAbCardProperty::GetNotes(PRUnichar * *aNotes)
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsAbCardProperty::GetLastModifiedDate(PRUint32 *aLastModifiedDate)
|
nsAbCardProperty::GetLastModifiedDate(PRUint32 *aLastModifiedDate)
|
||||||
{ return *aLastModifiedDate = m_LastModDate; }
|
{ *aLastModifiedDate = m_LastModDate; return NS_OK; }
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsAbCardProperty::GetKey(PRUint32 *aKey)
|
||||||
|
{ *aKey = m_Key; return NS_OK; }
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsAbCardProperty::SetRecordKey(PRUint32 key)
|
||||||
|
{ m_Key = key; return NS_OK; }
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsAbCardProperty::SetFirstName(const PRUnichar * aFirstName)
|
nsAbCardProperty::SetFirstName(const PRUnichar * aFirstName)
|
||||||
|
|
|
@ -97,6 +97,7 @@ protected:
|
||||||
nsString m_Custom4;
|
nsString m_Custom4;
|
||||||
nsString m_Note;
|
nsString m_Note;
|
||||||
PRUint32 m_LastModDate;
|
PRUint32 m_LastModDate;
|
||||||
|
PRUint32 m_Key;
|
||||||
|
|
||||||
PRBool m_bSendPlainText;
|
PRBool m_bSendPlainText;
|
||||||
PRBool m_bIsMailList;
|
PRBool m_bIsMailList;
|
||||||
|
|
|
@ -75,6 +75,9 @@ const char *kPabTableKind = "ns:addrbk:db:table:kind:pab";
|
||||||
|
|
||||||
const char *kCardRowScope = "ns:addrbk:db:row:scope:card:all";
|
const char *kCardRowScope = "ns:addrbk:db:row:scope:card:all";
|
||||||
const char *kListRowScope = "ns:addrbk:db:row:scope:list:all";
|
const char *kListRowScope = "ns:addrbk:db:row:scope:list:all";
|
||||||
|
const char *kDataRowScope = "ns:addrbk:db:row:scope:data:all";
|
||||||
|
|
||||||
|
#define DATAROW_ROWID 1
|
||||||
|
|
||||||
const char *kFirstNameColumn = "FirstName";
|
const char *kFirstNameColumn = "FirstName";
|
||||||
const char *kLastNameColumn = "LastName";
|
const char *kLastNameColumn = "LastName";
|
||||||
|
@ -114,8 +117,10 @@ const char *kCustom3Column = "Custom3";
|
||||||
const char *kCustom4Column = "Custom4";
|
const char *kCustom4Column = "Custom4";
|
||||||
const char *kNotesColumn = "Notes";
|
const char *kNotesColumn = "Notes";
|
||||||
const char *kLastModifiedDateColumn = "LastModifiedDate";
|
const char *kLastModifiedDateColumn = "LastModifiedDate";
|
||||||
|
const char *kRecordKeyColumn = "RecordKey";
|
||||||
|
|
||||||
const char *kAddressCharSetColumn = "AddrCharSet";
|
const char *kAddressCharSetColumn = "AddrCharSet";
|
||||||
|
const char *kLastRecordKeyColumn = "LastRecordKey";
|
||||||
|
|
||||||
const char *kMailListName = "ListName";
|
const char *kMailListName = "ListName";
|
||||||
const char *kMailListNickName = "ListNickName";
|
const char *kMailListNickName = "ListNickName";
|
||||||
|
@ -177,6 +182,7 @@ nsAddrDatabase::nsAddrDatabase()
|
||||||
m_LastModDateColumnToken(0),
|
m_LastModDateColumnToken(0),
|
||||||
m_PlainTextColumnToken(0),
|
m_PlainTextColumnToken(0),
|
||||||
m_AddressCharSetColumnToken(0),
|
m_AddressCharSetColumnToken(0),
|
||||||
|
m_LastRecordKey(0),
|
||||||
m_dbDirectory(nsnull)
|
m_dbDirectory(nsnull)
|
||||||
{
|
{
|
||||||
NS_INIT_REFCNT();
|
NS_INIT_REFCNT();
|
||||||
|
@ -572,9 +578,8 @@ NS_IMETHODIMP nsAddrDatabase::Open
|
||||||
if (NS_SUCCEEDED(err))
|
if (NS_SUCCEEDED(err))
|
||||||
{
|
{
|
||||||
pAddressBookDB->SetDbPath(pabName);
|
pAddressBookDB->SetDbPath(pabName);
|
||||||
|
GetDBCache()->AppendElement(pAddressBookDB);
|
||||||
*pAddrDB = pAddressBookDB;
|
*pAddrDB = pAddressBookDB;
|
||||||
if (pAddressBookDB)
|
|
||||||
GetDBCache()->AppendElement(pAddressBookDB);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -820,6 +825,8 @@ nsresult nsAddrDatabase::InitNewDB()
|
||||||
if (NS_SUCCEEDED(err))
|
if (NS_SUCCEEDED(err))
|
||||||
{
|
{
|
||||||
err = InitPabTable();
|
err = InitPabTable();
|
||||||
|
err = InitLastRecorKey();
|
||||||
|
Commit(kLargeCommit);
|
||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -834,6 +841,88 @@ nsresult nsAddrDatabase::InitPabTable()
|
||||||
return mdberr;
|
return mdberr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//save the last record number, store in m_DataRowScopeToken, row 1
|
||||||
|
nsresult nsAddrDatabase::InitLastRecorKey()
|
||||||
|
{
|
||||||
|
if (!m_mdbPabTable)
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
|
||||||
|
nsresult err = NS_OK;
|
||||||
|
nsIMdbRow *pDataRow = nsnull;
|
||||||
|
mdbOid dataRowOid;
|
||||||
|
dataRowOid.mOid_Scope = m_DataRowScopeToken;
|
||||||
|
dataRowOid.mOid_Id = DATAROW_ROWID;
|
||||||
|
err = GetStore()->NewRowWithOid(GetEnv(), &dataRowOid, &pDataRow);
|
||||||
|
|
||||||
|
if (NS_SUCCEEDED(err) && pDataRow)
|
||||||
|
{
|
||||||
|
m_LastRecordKey = 0;
|
||||||
|
err = AddIntColumn(pDataRow, m_LastRecordKeyColumnToken, 0);
|
||||||
|
err = m_mdbPabTable->AddRow(GetEnv(), pDataRow);
|
||||||
|
pDataRow->CutStrongRef(GetEnv());
|
||||||
|
}
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult nsAddrDatabase::GetDataRow(nsIMdbRow **pDataRow)
|
||||||
|
{
|
||||||
|
nsIMdbRow *pRow = nsnull;
|
||||||
|
mdbOid dataRowOid;
|
||||||
|
dataRowOid.mOid_Scope = m_DataRowScopeToken;
|
||||||
|
dataRowOid.mOid_Id = DATAROW_ROWID;
|
||||||
|
GetStore()->GetRow(GetEnv(), &dataRowOid, &pRow);
|
||||||
|
*pDataRow = pRow;
|
||||||
|
if (pRow)
|
||||||
|
return NS_OK;
|
||||||
|
else
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult nsAddrDatabase::GetLastRecorKey()
|
||||||
|
{
|
||||||
|
if (!m_mdbPabTable)
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
|
||||||
|
nsresult err = NS_OK;
|
||||||
|
nsIMdbRow *pDataRow = nsnull;
|
||||||
|
err = GetDataRow(&pDataRow);
|
||||||
|
|
||||||
|
if (NS_SUCCEEDED(err) && pDataRow)
|
||||||
|
{
|
||||||
|
m_LastRecordKey = 0;
|
||||||
|
err = GetIntColumn(pDataRow, m_LastRecordKeyColumnToken, &m_LastRecordKey, 0);
|
||||||
|
if (NS_FAILED(err))
|
||||||
|
err = NS_ERROR_NOT_AVAILABLE;
|
||||||
|
pDataRow->CutStrongRef(GetEnv());
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NS_ERROR_NOT_AVAILABLE;
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult nsAddrDatabase::UpdateLastRecordKey()
|
||||||
|
{
|
||||||
|
if (!m_mdbPabTable)
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
|
||||||
|
nsresult err = NS_OK;
|
||||||
|
nsIMdbRow *pDataRow = nsnull;
|
||||||
|
err = GetDataRow(&pDataRow);
|
||||||
|
|
||||||
|
if (NS_SUCCEEDED(err) && pDataRow)
|
||||||
|
{
|
||||||
|
err = AddIntColumn(pDataRow, m_LastRecordKeyColumnToken, m_LastRecordKey);
|
||||||
|
err = m_mdbPabTable->AddRow(GetEnv(), pDataRow);
|
||||||
|
pDataRow->CutStrongRef(GetEnv());
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NS_ERROR_NOT_AVAILABLE;
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
nsresult nsAddrDatabase::InitAnonymousTable()
|
nsresult nsAddrDatabase::InitAnonymousTable()
|
||||||
{
|
{
|
||||||
nsIMdbStore *store = GetStore();
|
nsIMdbStore *store = GetStore();
|
||||||
|
@ -855,10 +944,60 @@ nsresult nsAddrDatabase::InitExistingDB()
|
||||||
|
|
||||||
err = GetStore()->StringToToken(GetEnv(), kAnonymousTableKind, &m_AnonymousTableKind);
|
err = GetStore()->StringToToken(GetEnv(), kAnonymousTableKind, &m_AnonymousTableKind);
|
||||||
err = GetStore()->GetTable(GetEnv(), &gAnonymousTableOID, &m_mdbAnonymousTable);
|
err = GetStore()->GetTable(GetEnv(), &gAnonymousTableOID, &m_mdbAnonymousTable);
|
||||||
|
|
||||||
|
err = GetLastRecorKey();
|
||||||
|
if (err == NS_ERROR_NOT_AVAILABLE)
|
||||||
|
CheckAndUpdateRecordKey();
|
||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nsresult nsAddrDatabase::CheckAndUpdateRecordKey()
|
||||||
|
{
|
||||||
|
nsresult err = NS_OK;
|
||||||
|
nsIMdbTableRowCursor* rowCursor = nsnull;
|
||||||
|
nsIMdbRow* findRow = nsnull;
|
||||||
|
mdb_pos rowPos = 0;
|
||||||
|
|
||||||
|
err = m_mdbPabTable->GetTableRowCursor(GetEnv(), -1, &rowCursor);
|
||||||
|
|
||||||
|
if (NS_FAILED(err) || !rowCursor)
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
|
||||||
|
mdb_count total = 0;
|
||||||
|
err = rowCursor->GetCount(GetEnv(), &total);
|
||||||
|
|
||||||
|
nsIMdbRow *pDataRow = nsnull;
|
||||||
|
err = GetDataRow(&pDataRow);
|
||||||
|
if (NS_FAILED(err))
|
||||||
|
InitLastRecorKey();
|
||||||
|
|
||||||
|
if (total == 0)
|
||||||
|
return NS_OK;
|
||||||
|
|
||||||
|
do
|
||||||
|
{ //add key to each card and mailing list row
|
||||||
|
err = rowCursor->NextRow(GetEnv(), &findRow, &rowPos);
|
||||||
|
if (NS_SUCCEEDED(err) && findRow)
|
||||||
|
{
|
||||||
|
mdbOid rowOid;
|
||||||
|
|
||||||
|
if (findRow->GetOid(GetEnv(), &rowOid) == NS_OK)
|
||||||
|
{
|
||||||
|
if (!IsDataRowScopeToken(rowOid.mOid_Scope))
|
||||||
|
{
|
||||||
|
m_LastRecordKey++;
|
||||||
|
err = AddIntColumn(findRow, m_RecordKeyColumnToken, m_LastRecordKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while (findRow);
|
||||||
|
|
||||||
|
UpdateLastRecordKey();
|
||||||
|
Commit(kLargeCommit);
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
// initialize the various tokens and tables in our db's env
|
// initialize the various tokens and tables in our db's env
|
||||||
nsresult nsAddrDatabase::InitMDBInfo()
|
nsresult nsAddrDatabase::InitMDBInfo()
|
||||||
{
|
{
|
||||||
|
@ -869,6 +1008,7 @@ nsresult nsAddrDatabase::InitMDBInfo()
|
||||||
m_mdbTokensInitialized = PR_TRUE;
|
m_mdbTokensInitialized = PR_TRUE;
|
||||||
err = GetStore()->StringToToken(GetEnv(), kCardRowScope, &m_CardRowScopeToken);
|
err = GetStore()->StringToToken(GetEnv(), kCardRowScope, &m_CardRowScopeToken);
|
||||||
err = GetStore()->StringToToken(GetEnv(), kListRowScope, &m_ListRowScopeToken);
|
err = GetStore()->StringToToken(GetEnv(), kListRowScope, &m_ListRowScopeToken);
|
||||||
|
err = GetStore()->StringToToken(GetEnv(), kDataRowScope, &m_DataRowScopeToken);
|
||||||
gAddressBookTableOID.mOid_Scope = m_CardRowScopeToken;
|
gAddressBookTableOID.mOid_Scope = m_CardRowScopeToken;
|
||||||
gAddressBookTableOID.mOid_Id = ID_PAB_TABLE;
|
gAddressBookTableOID.mOid_Id = ID_PAB_TABLE;
|
||||||
gAnonymousTableOID.mOid_Scope = m_CardRowScopeToken;
|
gAnonymousTableOID.mOid_Scope = m_CardRowScopeToken;
|
||||||
|
@ -913,8 +1053,11 @@ nsresult nsAddrDatabase::InitMDBInfo()
|
||||||
GetStore()->StringToToken(GetEnv(), kCustom4Column, &m_Custom4ColumnToken);
|
GetStore()->StringToToken(GetEnv(), kCustom4Column, &m_Custom4ColumnToken);
|
||||||
GetStore()->StringToToken(GetEnv(), kNotesColumn, &m_NotesColumnToken);
|
GetStore()->StringToToken(GetEnv(), kNotesColumn, &m_NotesColumnToken);
|
||||||
GetStore()->StringToToken(GetEnv(), kLastModifiedDateColumn, &m_LastModDateColumnToken);
|
GetStore()->StringToToken(GetEnv(), kLastModifiedDateColumn, &m_LastModDateColumnToken);
|
||||||
|
GetStore()->StringToToken(GetEnv(), kRecordKeyColumn, &m_RecordKeyColumnToken);
|
||||||
|
|
||||||
GetStore()->StringToToken(GetEnv(), kAddressCharSetColumn, &m_AddressCharSetColumnToken);
|
GetStore()->StringToToken(GetEnv(), kAddressCharSetColumn, &m_AddressCharSetColumnToken);
|
||||||
|
GetStore()->StringToToken(GetEnv(), kLastRecordKeyColumn, &m_LastRecordKeyColumnToken);
|
||||||
|
|
||||||
err = GetStore()->StringToToken(GetEnv(), kPabTableKind, &m_PabTableKind);
|
err = GetStore()->StringToToken(GetEnv(), kPabTableKind, &m_PabTableKind);
|
||||||
|
|
||||||
GetStore()->StringToToken(GetEnv(), kMailListName, &m_ListNameColumnToken);
|
GetStore()->StringToToken(GetEnv(), kMailListName, &m_ListNameColumnToken);
|
||||||
|
@ -928,6 +1071,20 @@ nsresult nsAddrDatabase::InitMDBInfo()
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
nsresult nsAddrDatabase::AddRecordKeyColumnToRow(nsIMdbRow *pRow)
|
||||||
|
{
|
||||||
|
if (pRow)
|
||||||
|
{
|
||||||
|
m_LastRecordKey++;
|
||||||
|
nsresult err = AddIntColumn(pRow, m_RecordKeyColumnToken, m_LastRecordKey);
|
||||||
|
err = m_mdbPabTable->AddRow(GetEnv(), pRow);
|
||||||
|
UpdateLastRecordKey();
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsAddrDatabase::AddAttributeColumnsToRow(nsIAbCard *card, nsIMdbRow *cardRow)
|
nsresult nsAddrDatabase::AddAttributeColumnsToRow(nsIAbCard *card, nsIMdbRow *cardRow)
|
||||||
{
|
{
|
||||||
nsresult err = NS_OK;
|
nsresult err = NS_OK;
|
||||||
|
@ -1402,6 +1559,7 @@ NS_IMETHODIMP nsAddrDatabase::CreateNewCardAndAddToDB(nsIAbCard *newCard, PRBool
|
||||||
if (NS_SUCCEEDED(err) && cardRow)
|
if (NS_SUCCEEDED(err) && cardRow)
|
||||||
{
|
{
|
||||||
AddAttributeColumnsToRow(newCard, cardRow);
|
AddAttributeColumnsToRow(newCard, cardRow);
|
||||||
|
AddRecordKeyColumnToRow(cardRow);
|
||||||
err = m_mdbPabTable->AddRow(GetEnv(), cardRow);
|
err = m_mdbPabTable->AddRow(GetEnv(), cardRow);
|
||||||
cardRow->CutStrongRef(GetEnv());
|
cardRow->CutStrongRef(GetEnv());
|
||||||
}
|
}
|
||||||
|
@ -1622,6 +1780,7 @@ NS_IMETHODIMP nsAddrDatabase::CreateMailListAndAddToDB(nsIAbDirectory *newList,
|
||||||
if (NS_SUCCEEDED(err) && listRow)
|
if (NS_SUCCEEDED(err) && listRow)
|
||||||
{
|
{
|
||||||
AddListAttributeColumnsToRow(newList, listRow);
|
AddListAttributeColumnsToRow(newList, listRow);
|
||||||
|
AddRecordKeyColumnToRow(listRow);
|
||||||
err = m_mdbPabTable->AddRow(GetEnv(), listRow);
|
err = m_mdbPabTable->AddRow(GetEnv(), listRow);
|
||||||
listRow->CutStrongRef(GetEnv());
|
listRow->CutStrongRef(GetEnv());
|
||||||
}
|
}
|
||||||
|
@ -2933,6 +3092,11 @@ nsresult nsAddrDatabase::GetCardFromDB(nsIAbCard *newCard, nsIMdbRow* cardRow)
|
||||||
nsAllocator::Free(tempCString);
|
nsAllocator::Free(tempCString);
|
||||||
PR_Free(unicodeStr);
|
PR_Free(unicodeStr);
|
||||||
}
|
}
|
||||||
|
PRUint32 key = 0;
|
||||||
|
err = GetIntColumn(cardRow, m_RecordKeyColumnToken, &key, 0);
|
||||||
|
if (NS_SUCCEEDED(err))
|
||||||
|
newCard->SetRecordKey(key);
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2975,7 +3139,10 @@ nsresult nsAddrDatabase::GetListCardFromDB(nsIAbCard *listCard, nsIMdbRow* cardR
|
||||||
nsAllocator::Free(tempCString);
|
nsAllocator::Free(tempCString);
|
||||||
PR_Free(unicodeStr);
|
PR_Free(unicodeStr);
|
||||||
}
|
}
|
||||||
|
PRUint32 key = 0;
|
||||||
|
err = GetIntColumn(cardRow, m_RecordKeyColumnToken, &key, 0);
|
||||||
|
if (NS_SUCCEEDED(err))
|
||||||
|
listCard->SetRecordKey(key);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3101,6 +3268,10 @@ NS_IMETHODIMP nsAddrDBEnumerator::Next(void)
|
||||||
mCurrentRowIsList = PR_FALSE;
|
mCurrentRowIsList = PR_FALSE;
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
else if (mDB->IsDataRowScopeToken(rowOid.mOid_Scope))
|
||||||
|
{
|
||||||
|
return Next();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
return NS_ERROR_FAILURE;
|
return NS_ERROR_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -249,6 +249,7 @@ public:
|
||||||
|
|
||||||
PRBool IsListRowScopeToken(mdb_scope scope) { return (scope == m_ListRowScopeToken) ? PR_TRUE: PR_FALSE; }
|
PRBool IsListRowScopeToken(mdb_scope scope) { return (scope == m_ListRowScopeToken) ? PR_TRUE: PR_FALSE; }
|
||||||
PRBool IsCardRowScopeToken(mdb_scope scope) { return (scope == m_CardRowScopeToken) ? PR_TRUE: PR_FALSE; }
|
PRBool IsCardRowScopeToken(mdb_scope scope) { return (scope == m_CardRowScopeToken) ? PR_TRUE: PR_FALSE; }
|
||||||
|
PRBool IsDataRowScopeToken(mdb_scope scope) { return (scope == m_DataRowScopeToken) ? PR_TRUE: PR_FALSE; }
|
||||||
nsresult GetCardRowByRowID(mdb_id rowID, nsIMdbRow **dbRow);
|
nsresult GetCardRowByRowID(mdb_id rowID, nsIMdbRow **dbRow);
|
||||||
nsresult GetListRowByRowID(mdb_id rowID, nsIMdbRow **dbRow);
|
nsresult GetListRowByRowID(mdb_id rowID, nsIMdbRow **dbRow);
|
||||||
|
|
||||||
|
@ -284,6 +285,7 @@ protected:
|
||||||
nsresult GetListCardFromDB(nsIAbCard *listCard, nsIMdbRow* cardRow);
|
nsresult GetListCardFromDB(nsIAbCard *listCard, nsIMdbRow* cardRow);
|
||||||
nsresult GetListFromDB(nsIAbDirectory *newCard, nsIMdbRow* cardRow);
|
nsresult GetListFromDB(nsIAbDirectory *newCard, nsIMdbRow* cardRow);
|
||||||
nsresult GetAnonymousAttributesFromDB();
|
nsresult GetAnonymousAttributesFromDB();
|
||||||
|
nsresult AddRecordKeyColumnToRow(nsIMdbRow *pRow);
|
||||||
nsresult AddAttributeColumnsToRow(nsIAbCard *card, nsIMdbRow *cardRow);
|
nsresult AddAttributeColumnsToRow(nsIAbCard *card, nsIMdbRow *cardRow);
|
||||||
nsresult AddListCardColumnsToRow(nsIAbCard *pCard, nsIMdbRow *pListRow, PRUint32 pos);
|
nsresult AddListCardColumnsToRow(nsIAbCard *pCard, nsIMdbRow *pListRow, PRUint32 pos);
|
||||||
nsresult AddListAttributeColumnsToRow(nsIAbDirectory *list, nsIMdbRow *listRow);
|
nsresult AddListAttributeColumnsToRow(nsIAbDirectory *list, nsIMdbRow *listRow);
|
||||||
|
@ -323,6 +325,12 @@ protected:
|
||||||
nsresult InitPabTable();
|
nsresult InitPabTable();
|
||||||
nsresult InitAnonymousTable();
|
nsresult InitAnonymousTable();
|
||||||
|
|
||||||
|
nsresult InitLastRecorKey();
|
||||||
|
nsresult GetDataRow(nsIMdbRow **pDataRow);
|
||||||
|
nsresult GetLastRecorKey();
|
||||||
|
nsresult UpdateLastRecordKey();
|
||||||
|
nsresult CheckAndUpdateRecordKey();
|
||||||
|
|
||||||
nsIMdbEnv *m_mdbEnv; // to be used in all the db calls.
|
nsIMdbEnv *m_mdbEnv; // to be used in all the db calls.
|
||||||
nsIMdbStore *m_mdbStore;
|
nsIMdbStore *m_mdbStore;
|
||||||
nsIMdbTable *m_mdbPabTable;
|
nsIMdbTable *m_mdbPabTable;
|
||||||
|
@ -345,6 +353,7 @@ protected:
|
||||||
|
|
||||||
mdb_scope m_CardRowScopeToken;
|
mdb_scope m_CardRowScopeToken;
|
||||||
mdb_scope m_ListRowScopeToken;
|
mdb_scope m_ListRowScopeToken;
|
||||||
|
mdb_scope m_DataRowScopeToken;
|
||||||
|
|
||||||
mdb_token m_FirstNameColumnToken;
|
mdb_token m_FirstNameColumnToken;
|
||||||
mdb_token m_LastNameColumnToken;
|
mdb_token m_LastNameColumnToken;
|
||||||
|
@ -383,16 +392,19 @@ protected:
|
||||||
mdb_token m_Custom4ColumnToken;
|
mdb_token m_Custom4ColumnToken;
|
||||||
mdb_token m_NotesColumnToken;
|
mdb_token m_NotesColumnToken;
|
||||||
mdb_token m_LastModDateColumnToken;
|
mdb_token m_LastModDateColumnToken;
|
||||||
|
mdb_token m_RecordKeyColumnToken;
|
||||||
|
|
||||||
mdb_token m_PlainTextColumnToken;
|
mdb_token m_PlainTextColumnToken;
|
||||||
|
|
||||||
mdb_token m_AddressCharSetColumnToken;
|
mdb_token m_AddressCharSetColumnToken;
|
||||||
|
mdb_token m_LastRecordKeyColumnToken;
|
||||||
|
|
||||||
mdb_token m_ListNameColumnToken;
|
mdb_token m_ListNameColumnToken;
|
||||||
mdb_token m_ListNickNameColumnToken;
|
mdb_token m_ListNickNameColumnToken;
|
||||||
mdb_token m_ListDescriptionColumnToken;
|
mdb_token m_ListDescriptionColumnToken;
|
||||||
mdb_token m_ListTotalColumnToken;
|
mdb_token m_ListTotalColumnToken;
|
||||||
|
|
||||||
|
PRUint32 m_LastRecordKey;
|
||||||
nsIAbDirectory* m_dbDirectory;
|
nsIAbDirectory* m_dbDirectory;
|
||||||
|
|
||||||
nsCOMPtr<nsICollation> m_collationKeyGenerator;
|
nsCOMPtr<nsICollation> m_collationKeyGenerator;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче