private void SynchronizeRepositories() { // if one persists, but not the other, then the persistable one wins // otherwise, go with the repository most recently changed IDataMapper <T> master = _secondary; IDataMapper <T> slave = _primary; if ((_primary.CanPersist && !_secondary.CanPersist) || (_primary.LastModified > _secondary.LastModified && _primary.CanPersist == _secondary.CanPersist)) { master = _primary; slave = _secondary; } RepositoryId[] ids = master.GetAllItems(); // avoid doing anything which would change LastModifiedTime if both are empty if (ids.Length == 0 && slave.CountAllItems() == 0) { return; } slave.DeleteAllItems(); foreach (RepositoryId id in ids) { T slaveItem = slave.CreateItem(); _copyStrategy(slaveItem, master.GetItem(id)); } }
private T CopyItemToSecondary(T item) { if (item == null) { throw new ArgumentNullException("item"); } T item2 = _secondary.GetItem(_primarySecondaryMap[_primary.GetId(item)]); _copyStrategy(item2, item); return(item2); }
public void CreateItem_ItemExistsInBothRepositories() { PalasoTestItem item = _synchronic.CreateItem(); _synchronic.SaveItem(item); Assert.AreEqual(item, _primary.GetItem(_primary.GetAllItems()[0])); Assert.AreEqual(item, _secondary.GetItem(_secondary.GetAllItems()[0])); Assert.AreEqual(1, _primary.CountAllItems()); Assert.AreEqual(1, _secondary.CountAllItems()); }
public LexEntry GetItem(RepositoryId id) { LexEntry item = _decoratedDataMapper.GetItem(id); return(item); }
public T GetItem(RepositoryId id) { return(_primary.GetItem(id)); }
private void CheckIfItemIsInRepository(RepositoryId id) { _dataMapperQueried.GetItem(id); }