private DatabaseMoveResult PrepareResultEntryForMoveBack(AmDatabaseMoveResult result)
        {
            DatabaseMoveResult databaseMoveResult = new DatabaseMoveResult();

            databaseMoveResult.Guid = result.DbGuid;
            ConfigObjectId identity = new ConfigObjectId(result.DbName);

            databaseMoveResult.Identity            = identity;
            databaseMoveResult.ActiveServerAtStart = result.FromServerFqdn;
            databaseMoveResult.ActiveServerAtEnd   = result.FinalActiveServerFqdn;
            databaseMoveResult.Status = MoveActiveMailboxDatabase.ConvertToMoveStatus(result.MoveStatus);
            databaseMoveResult.MountStatusAtMoveStart = MoveActiveMailboxDatabase.ConvertToMountStatus(result.MountStatusAtStart);
            databaseMoveResult.MountStatusAtMoveEnd   = MoveActiveMailboxDatabase.ConvertToMountStatus(result.MountStatusAtEnd);
            if (result.AttemptedServerSubStatuses != null)
            {
                AmDbRpcOperationSubStatus amDbRpcOperationSubStatus = result.AttemptedServerSubStatuses.LastOrDefault <AmDbRpcOperationSubStatus>();
                if (amDbRpcOperationSubStatus != null)
                {
                    databaseMoveResult.NumberOfLogsLost       = MoveActiveMailboxDatabase.ToNullableLogGeneration(amDbRpcOperationSubStatus.AcllStatus.NumberOfLogsLost);
                    databaseMoveResult.RecoveryPointObjective = DumpsterStatisticsEntry.ToNullableLocalDateTime(amDbRpcOperationSubStatus.AcllStatus.LastInspectedLogTime);
                }
            }
            Exception exceptionFromMoveResult = this.GetExceptionFromMoveResult(result);

            if (exceptionFromMoveResult != null)
            {
                databaseMoveResult.Exception    = exceptionFromMoveResult;
                databaseMoveResult.ErrorMessage = exceptionFromMoveResult.Message;
            }
            return(databaseMoveResult);
        }
 private void WriteMoveResult(Database db, AmServerName startingServer, AmDatabaseMoveResult result, Exception ex)
 {
     if (result != null)
     {
         DatabaseMoveResult databaseMoveResult = this.ConvertToDatabaseMoveResult(db, startingServer, result, ex);
         base.WriteObject(databaseMoveResult);
         if (databaseMoveResult.Status == MoveStatus.Warning)
         {
             this.WriteWarningOrError(new LocalizedString(databaseMoveResult.ErrorMessage));
         }
     }
 }
        private DatabaseMoveResult ConvertToDatabaseMoveResult(Database db, AmServerName startingServer, AmDatabaseMoveResult result, Exception ex)
        {
            DatabaseMoveResult result2 = null;

            if (result != null)
            {
                if (result.IsLegacy)
                {
                    result2 = this.PrepareResultEntryLegacy(db, startingServer, result, ex);
                }
                else
                {
                    result2 = this.PrepareResultEntry(db, result, ex);
                }
            }
            return(result2);
        }
        private DatabaseMoveResult PrepareResultEntryLegacy(Database db, AmServerName startingServer, AmDatabaseMoveResult result, Exception ex)
        {
            DatabaseMoveResult databaseMoveResult = new DatabaseMoveResult();
            bool flag = ex == null;

            databaseMoveResult.Guid                = db.Guid;
            databaseMoveResult.Identity            = db.Id;
            databaseMoveResult.ActiveServerAtStart = startingServer.NetbiosName;
            databaseMoveResult.ActiveServerAtEnd   = this.GetCurrentActiveServer(db.Guid).NetbiosName;
            if (flag)
            {
                databaseMoveResult.Status = MoveStatus.Succeeded;
            }
            else
            {
                databaseMoveResult.Status       = MoveStatus.Failed;
                databaseMoveResult.Exception    = ex;
                databaseMoveResult.ErrorMessage = ex.Message;
            }
            return(databaseMoveResult);
        }