public void Synchronize() { foreach (Type type in StorableTypes) { FileInfo[] files = YamlDataDirectory.GetYamlFiles(type); foreach (FileInfo file in files) { YamlData data = YamlData.Load(type, file, Logger); object dao = DaoRepository.Query("Name", data.Name).FirstOrDefault(); if (dao == null) { DaoRepository.Save(data.Data); } else { data.FileWins += (o, a) => { YamlData.YamlDataEventArgs d = (YamlData.YamlDataEventArgs)a; DaoRepository.Save(d.Type, d.Data); FireEvent(FileWins, d); }; data.DataWins += (o, a) => { YamlData.YamlDataEventArgs d = (YamlData.YamlDataEventArgs)a; YamlDataDirectory.Save(file, d.Type, d.Data); FireEvent(DataWins, d); }; data.Data = dao; data.Synchronize(type, file); } } } }
private object GetLatest(object dao) { if (dao != null) { FileInfo yamlFile = YamlDataDirectory.GetYamlFile(dao.GetType(), dao); if (yamlFile != null) { YamlData data = new YamlData(dao); return(data.Newer(yamlFile)); } } return(dao); }