public void FullSync(Config.Direction dir) { MutexManager.StartingFullSync(); try { try { if (dir == Config.Direction.dirToOutlook) { SetLastGoogleFetch(DateTime.Now); } if (StartSynching != null) { StartSynching(this); } List <ContactItem> OutlookContacts; List <Contact> GoogleContacts; logger.Info("Obtaining Outlook contacts..."); OutlookContacts = outlookAdapter.Contacts; logger.Info("Obtaining Google Contacts..."); GoogleContacts = googleAdapter.Contacts; EmailComparer comparer = new EmailComparer(); int i = 0; int total = OutlookContacts.Count() + GoogleContacts.Count(); foreach (ContactItem item in OutlookContacts) { try { try { if (Thread.CurrentThread.ThreadState == ThreadState.AbortRequested) { break; } i++; var qryFindGoogleContact = GoogleContacts.Where(c => c.Title == item.FullName || c.Emails.Contains(new EMail(item.Email1Address), comparer) || c.Emails.Contains(new EMail(item.Email2Address), comparer) || c.Emails.Contains(new EMail(item.Email3Address), comparer)); if (qryFindGoogleContact.Count() > 0) { if (dir == Config.Direction.dirToOutlook) { logger.Info(String.Format("{0}/{1} Updating Outlook contact: " + OutlookAdapter.ContactItemDisplay(item), i, total)); Contact gContact = qryFindGoogleContact.First(); logger.Info("Updating outlook contact"); SyncContact(gContact, item, dir); } else { logger.Info(String.Format("{0}/{1} Processing...", i, total)); } } else { logger.Info(String.Format("{0}/{1} Creating Google contact for " + OutlookAdapter.ContactItemDisplay(item), i, total)); // MutexManager.AddToBlockedContacts(item); CreateGoogleContact(item); } } finally { if (OutlookSynched != null) { OutlookSynched(this, item, i, OutlookContacts.Count()); } } } catch (System.Exception ex) { if (ex is ThreadAbortException) { break; } } } foreach (Contact item in GoogleContacts) { try { try { if (Thread.CurrentThread.ThreadState == ThreadState.AbortRequested) { break; } i++; var qryFindOutlookContact = OutlookContacts.Where(c => c.FullName == item.Title || item.Emails.Contains(new EMail(c.Email1Address), comparer) || item.Emails.Contains(new EMail(c.Email2Address), comparer) || item.Emails.Contains(new EMail(c.Email3Address), comparer)); if (qryFindOutlookContact.Count() > 0) { if (dir == Config.Direction.dirToGoogle) { logger.Info(String.Format("{0}/{1} Updating Google contact: " + GoogleAdapter.ContactDisplay(item), i, total)); ContactItem oContact = qryFindOutlookContact.First(); SyncContact(item, oContact, dir); } else { logger.Info(String.Format("{0}/{1} Processing...", i, total)); } } else { logger.Info(String.Format("{0}/{1} Creating Outlook contact for " + GoogleAdapter.ContactDisplay(item), i, total)); CreateOutlookContact(item); } } finally { if (GoogleSynched != null) { GoogleSynched(this, item, i, GoogleContacts.Count()); } } } catch (System.Exception ex) { if (ex is ThreadAbortException) { break; } } } if (EndSynching != null) { EndSynching(this); } } catch (System.Exception ex) { if ((EndSynching != null)) { EndSynching(this); } else if (!(ex is ThreadAbortException) & (Error != null)) { Error(this, ex); } } } finally { if (dir == Config.Direction.dirToGoogle) { SetLastGoogleFetch(DateTime.Now); } MutexManager.EndingFullSync(); } }
public ContactSync(string Username, string Password, int Interval) { googleAdapter = new GoogleAdapter(Username, Password, null); outlookAdapter = new OutlookAdapter(); this.Interval = Interval; }
public ContactSync(string Username, string Password, int Interval) { googleAdapter = new GoogleAdapter(Username, Password,null); outlookAdapter = new OutlookAdapter(); this.Interval = Interval; }