void DownloadDatabase_Loaded(object sender, RoutedEventArgs e)
        {
            estimation = Server.Return((IDisconnectedServer ds) => ds.GetDownloadEstimation(DisconnectedMachineEntity.Current));

            pbGenerating.Minimum = 0;
            pbGenerating.Maximum = 1;

            currentLite = transferServer.BeginExportDatabase(UserEntity.Current.ToLite(), DisconnectedMachineEntity.Current);

            timer.Tick += new EventHandler(timer_Tick);

            timer.Interval = TimeSpan.FromSeconds(1);

            timer.Start();
        }
        public double Ratio(DisconnectedExportEntity estimation)
        {
            double total = (long)estimation.Total.Value;

            double result = 0;

            if (!Lock.HasValue)
                return result;
            result += (estimation.Lock.Value) / total;

            if (!CreateDatabase.HasValue)
                return result;
            result += (estimation.CreateDatabase.Value) / total;

            if (!CreateSchema.HasValue)
                return result;
            result += (estimation.CreateSchema.Value) / total;

            if (!DisableForeignKeys.HasValue)
                return result;
            result += (estimation.DisableForeignKeys.Value) / total;


            result += Copies.Where(c => c.CopyTable.HasValue).Join(
                estimation.Copies.Where(o => o.CopyTable.HasValue && o.CopyTable.Value > 0),
                c => c.Type, o => o.Type, (c, o) => o.CopyTable.Value / total).Sum();

            if (!Copies.All(a => a.CopyTable.HasValue))
                return result;

            if (!EnableForeignKeys.HasValue)
                return result;
            result += (estimation.EnableForeignKeys.Value) / total;

            if (!ReseedIds.HasValue)
                return result;
            result += (estimation.ReseedIds.Value) / total;

            if (!BackupDatabase.HasValue)
                return result;
            result += (estimation.BackupDatabase.Value) / total;

            if (!DropDatabase.HasValue)
                return result;
            result += (estimation.DropDatabase.Value) / total;

            return result;
        }
예제 #3
0
        public double Ratio(DisconnectedExportEntity estimation)
        {
            double total = (long)estimation.Total !.Value;

            double result = 0;

            if (Lock != null)
            {
                return(result);
            }
            result += (estimation.Lock !.Value) / total;

            if (!CreateDatabase.HasValue)
            {
                return(result);
            }
            result += (estimation.CreateDatabase !.Value) / total;

            if (!CreateSchema.HasValue)
            {
                return(result);
            }
            result += (estimation.CreateSchema !.Value) / total;

            if (!DisableForeignKeys.HasValue)
            {
                return(result);
            }
            result += (estimation.DisableForeignKeys !.Value) / total;


            result += Copies.Where(c => c.CopyTable.HasValue).Join(
                estimation.Copies.Where(o => o.CopyTable.HasValue && o.CopyTable.Value > 0),
                c => c.Type, o => o.Type, (c, o) => o.CopyTable !.Value / total).Sum();

            if (!Copies.All(a => a.CopyTable.HasValue))
            {
                return(result);
            }

            if (!EnableForeignKeys.HasValue)
            {
                return(result);
            }
            result += (estimation.EnableForeignKeys !.Value) / total;

            if (!ReseedIds.HasValue)
            {
                return(result);
            }
            result += (estimation.ReseedIds !.Value) / total;

            if (!BackupDatabase.HasValue)
            {
                return(result);
            }
            result += (estimation.BackupDatabase !.Value) / total;

            if (!DropDatabase.HasValue)
            {
                return(result);
            }
            result += (estimation.DropDatabase !.Value) / total;

            return(result);
        }