public bool Clean() { CleanStatus cleanStatus = CleanTheFloor(); ReturnStatus returnStatus = ReturnBackToStartPosition(); if ((cleanStatus != CleanStatus.Complete) || (returnStatus != ReturnStatus.Complete)) { return(false); } return(true); }
/// <summary> /// 不要データの削除 /// </summary> public void Clean() { try { OutputLogEnter(_logger); // 削除設定を取得する var targetSettings = _settings.GetConfigs(CleanDbSetting.KeyPrefix); // 正常設定されているデータ群の取得 IEnumerable <CleanDbSetting> settings = targetSettings.Select(x => { try { return(CleanDbSetting.Create(x.Key, x.Value, RepositoryNameFormat)); } catch (RmsInvalidAppSettingException e) { OutputLog002(_logger, e, new object[] { e.Message }); return(null); } }) .Where(x => x != null); foreach (var setting in settings) { CleanStatus status = CleanStatus.GetType; try { // 処理リポジトリがあるかチェック Type repoType = Type.GetType(setting.RepositoryFullName); if (repoType == null) { // 存在しないクラス指定なので処理しない throw new RmsInvalidAppSettingException(string.Format("{0} is not supported.", CleanDbSetting.KeyPrefix + setting.ModelName)); } ICleanRepository repository = _serviceProvider.GetService(repoType) as ICleanRepository; if (repository == null) { // 削除対象のクラスでないので処理しない throw new RmsInvalidAppSettingException(string.Format("{0} is not supported.", CleanDbSetting.KeyPrefix + setting.ModelName)); } // DBから指定月数を超過しているデータの削除を依頼する status = CleanStatus.DeleteExceedsMonthsAllData; if (repository.DeleteExceedsMonthsAllData(CreateThreshold(setting)) > 0) { OutputLog004(_logger, new object[] { setting.RepositoryFullName }); } } catch (RmsInvalidAppSettingException e) { OutputLog002(_logger, e, new object[] { e.Message }); } catch (Exception e) { switch (status) { case CleanStatus.DeleteExceedsMonthsAllData: OutputLog003(_logger, e, new object[] { setting.RepositoryFullName }); break; case CleanStatus.GetType: default: // GetTypeがnullを返さずにExceptionを投げた場合は、 // RmsInvalidAppSettingException発生時と同じ処理とする OutputLog002(_logger, e, new object[] { e.Message }); break; } } } return; } catch (Exception ex) { OutputLog001(_logger, ex); } finally { OutputLogLeave(_logger); } }