public void Update(DBMovieInfo movie)
{
List<DBSourceInfo> sources;
lock (detailSources) sources = new List<DBSourceInfo>(detailSources);
// unlock the movie fields for the first iteration
movie.ProtectExistingValuesFromCopy(false);
// first update from the primary source of this data
int providerCount = 0;
if (movie.PrimarySource != null && movie.PrimarySource.Provider != null) {
UpdateResults success = movie.PrimarySource.Provider.Update(movie);
logger.Debug("UPDATE: Title='{0}', Provider='{1}', Version={2}, Result={3}", movie.Title, movie.PrimarySource.Provider.Name, movie.PrimarySource.Provider.Version, success.ToString());
providerCount++;
}
foreach (DBSourceInfo currSource in sources) {
if (movie.IsFullyPopulated()) {
logger.Debug("UPDATE: All fields are populated. Done updating '" + movie.Title + "'.");
break;
}
if (currSource.IsDisabled(DataType.DETAILS))
continue;
if (currSource == movie.PrimarySource)
continue;
providerCount++;
if (providerCount <= MovingPicturesCore.Settings.DataProviderRequestLimit || MovingPicturesCore.Settings.DataProviderRequestLimit == 0) {
UpdateResults success = currSource.Provider.Update(movie);
logger.Debug("UPDATE: Title='{0}', Provider='{1}', Version={2}, Result={3}", movie.Title, currSource.Provider.Name, currSource.Provider.Version, success.ToString());
}
else {
// stop update
break;
}
if (MovingPicturesCore.Settings.UseTranslator) {
movie.Translate();
}
}
}