Ejemplo n.º 1
0
        private static YearlySettings GetYearlySettings(SqlDataReader rdr)
        {
            YearlySettings result = new YearlySettings();

            result.Id               = rdr.GetInt32(rdr.GetOrdinal("Id"));
            result.Classification   = rdr.GetString(rdr.GetOrdinal("Classification"));
            result.Date             = rdr.GetDateTime(rdr.GetOrdinal("Date"));
            result.Indicator        = rdr.GetString(rdr.GetOrdinal("Indicator"));
            result.Name             = rdr.GetString(rdr.GetOrdinal("Name"));
            result.NumericIndicator = rdr.GetString(rdr.GetOrdinal("NumericIndicator"));

            return(result);
        }
Ejemplo n.º 2
0
        public static void SaveYearlyFiles(YearlySettings ys, string folder)
        {
            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }

            foreach (MonthlySettings monSet in ys.MonthlySettings)
            {
                string folderName      = string.Format("{0} {1:MMM yyyy}", monSet.Name, monSet.Date);
                string monthFolderName = Path.Combine(folder, folderName);
                SaveMonthlyFiles(monSet, monthFolderName);
            }
        }
Ejemplo n.º 3
0
        public Message(string fileName)
        {
            _mode = ConstructorMode.FileName;

            YearlySettings ys = YearlySettings.Open(fileName);

            _settings      = ys.Today;
            Wiring.Current = _settings.ParentSettings.Wiring;

            _machine = new Machine(_settings);

            MessageKey = RandomUtil.GetRandomAlpha(5);

            _fileName = fileName;
        }
Ejemplo n.º 4
0
        public Message(int id)
        {
            _mode = ConstructorMode.Id;

            YearlySettings ys = YearlySettings.ReadFromDb(id);

            _settings      = ys.Today;
            Wiring.Current = _settings.ParentSettings.Wiring;

            _machine = new Machine(_settings);

            MessageKey = RandomUtil.GetRandomAlpha(5);

            _id = id;
        }
Ejemplo n.º 5
0
        private static string InsertYearlySettingsSql(YearlySettings ys, out SqlParameter[] parameters)
        {
            StringBuilder sb = new StringBuilder();

            List <SqlParameter> p = new List <SqlParameter>();

            sb.AppendLine("INSERT INTO [dbo].[YearlySetting]");
            sb.AppendLine("           ([Name]");
            sb.AppendLine("           ,[Classification]");
            sb.AppendLine("           ,[Date]");
            sb.AppendLine("           ,[Indicator]");
            sb.AppendLine("           ,[NumericIndicator])");
            sb.AppendLine("     VALUES");
            sb.AppendLine("           (@Name");
            sb.AppendLine("           ,@Classification");
            sb.AppendLine("           ,@Date");
            sb.AppendLine("           ,@Indicator");
            sb.AppendLine("           ,@NumericIndicator);");
            sb.AppendLine("SELECT @Id = SCOPE_IDENTITY()");

            p.Add(new SqlParameter {
                ParameterName = "@Id", DbType = System.Data.DbType.Int32, Direction = System.Data.ParameterDirection.Output
            });
            p.Add(new SqlParameter {
                ParameterName = "@Name", DbType = System.Data.DbType.String, Direction = System.Data.ParameterDirection.Input, Size = 255, Value = ys.Name
            });
            p.Add(new SqlParameter {
                ParameterName = "@Classification", DbType = System.Data.DbType.String, Direction = System.Data.ParameterDirection.Input, Size = 255, Value = ys.Classification
            });
            p.Add(new SqlParameter {
                ParameterName = "@Date", DbType = System.Data.DbType.DateTime, Direction = System.Data.ParameterDirection.Input, Value = ys.Date
            });
            p.Add(new SqlParameter {
                ParameterName = "@Indicator", DbType = System.Data.DbType.String, Direction = System.Data.ParameterDirection.Input, Size = 5, Value = ys.Indicator
            });
            p.Add(new SqlParameter {
                ParameterName = "@NumericIndicator", DbType = System.Data.DbType.String, Direction = System.Data.ParameterDirection.Input, Size = 5, Value = ys.NumericIndicator
            });

            parameters = p.ToArray();

            return(sb.ToString());
        }
Ejemplo n.º 6
0
        public string Decipher(string value)
        {
            CipherText = value;

            string key;

            if (_mode == ConstructorMode.FileName || _mode == ConstructorMode.Id)
            {
                YearlySettings ys;

                if (_mode == ConstructorMode.Id)
                {
                    ys = YearlySettings.ReadFromDb(_id);
                }
                else
                {
                    ys = YearlySettings.Open(_fileName);
                }

                string indicator = CipherText.Split(CipherText.Where(c => char.IsWhiteSpace(c)).Distinct().ToArray(), StringSplitOptions.RemoveEmptyEntries)[0];

                Settings s = ys[indicator];
                Wiring.Current = s.ParentSettings.Wiring;
            }

            string result = FormatDecryptInput(value, out key);

            MessageKey = key;

            string expandedKey = string.Concat(key, _settings.StartPosition.Substring(5, 3));

            _machine.Settings = _settings.StartPosition;
            string trueKey = _machine.Encipher(expandedKey);

            _machine.Settings = trueKey;

            result = _machine.Decipher(result);

            PlainText = FormatDecryptOutput(result).Trim();

            return(PlainText);
        }
Ejemplo n.º 7
0
        public static void SaveToDb(YearlySettings yr)
        {
            using (Database db = Database.Get())
            {
                try
                {
                    db.BeginTransaction();

                    SqlParameter[] parameters;
                    string         sql = InsertYearlySettingsSql(yr, out parameters);
                    db.ExecuteNonQuery(sql, parameters);
                    yr.Id = (int)parameters.FirstOrDefault(p => p.ParameterName == "@Id").Value;

                    foreach (MonthlySettings monSet in yr.MonthlySettings)
                    {
                        monSet.ParentId = yr.Id;

                        sql = InsertMonthlySettingsSql(monSet, out parameters);
                        db.ExecuteNonQuery(sql, parameters);
                        monSet.Id = (int)parameters.FirstOrDefault(p => p.ParameterName == "@Id").Value;

                        foreach (Settings daily in monSet.DailySettings)
                        {
                            daily.ParentId = monSet.Id;

                            sql = InsertDailySettingsSql(daily, out parameters);
                            db.ExecuteNonQuery(sql, parameters);
                            daily.Id = (int)parameters.FirstOrDefault(p => p.ParameterName == "@Id").Value;

                            for (int i = 0; i < daily.Rotors.Count; i++)
                            {
                                daily.Rotors[i].ParentId = daily.Id;

                                sql = InsertRotorSettingSql(daily.Rotors[i], i, out parameters);
                                db.ExecuteNonQuery(sql, parameters);
                            }
                        }

                        monSet.Wiring.ParentId = monSet.Id;

                        sql = InsertWiring(monSet.Wiring, out parameters);
                        db.ExecuteNonQuery(sql, parameters);
                        monSet.Wiring.Id = (int)parameters.FirstOrDefault(p => p.ParameterName == "@Id").Value;

                        for (int i = 0; i < monSet.Wiring.Rotors.Count; i++)
                        {
                            sql = InsertRotorWiringDef(monSet.Wiring.Id, i, monSet.Wiring.Rotors[i], out parameters);
                            db.ExecuteNonQuery(sql, parameters);
                        }
                        for (int i = 0; i < monSet.Wiring.Notches.Count; i++)
                        {
                            sql = InsertNotchRingDef(monSet.Wiring.Id, i, monSet.Wiring.Notches[i], out parameters);
                            db.ExecuteNonQuery(sql, parameters);
                        }
                        for (int i = 0; i < monSet.Wiring.Moves.Count; i++)
                        {
                            sql = InsertMoveDef(monSet.Wiring.Id, i, monSet.Wiring.Moves[i], out parameters);
                            db.ExecuteNonQuery(sql, parameters);
                        }
                    }
                    db.CommitTransaction();
                }
                catch (Exception ex)
                {
                    db.RollbackTransaction();
                    throw ex;
                }
            }
        }
Ejemplo n.º 8
0
        private static List <YearlySettings> GetYearlySettingsFromDb(SqlDataReader rdr)
        {
            List <YearlySettings> results = new List <YearlySettings>();

            if (rdr.Read())
            {
                YearlySettings result = GetYearlySettings(rdr);

                Dictionary <int, MonthlySettings> monthLookup  = new Dictionary <int, MonthlySettings>();
                Dictionary <int, Settings>        dayLookup    = new Dictionary <int, Settings>();
                Dictionary <int, Wiring>          wiringLookup = new Dictionary <int, Wiring>();

                if (rdr.NextResult())
                {
                    while (rdr.Read())
                    {
                        MonthlySettings monSet = GetMonthlySettings(rdr);
                        monSet.ParentSettings = result;
                        result.MonthlySettings.Add(monSet);
                        monthLookup.Add(monSet.Id, monSet);
                    }
                }
                if (rdr.NextResult())
                {
                    while (rdr.Read())
                    {
                        Settings daySet = GetDailySettings(rdr);
                        daySet.ParentSettings = monthLookup[daySet.ParentId];
                        monthLookup[daySet.ParentId].DailySettings.Add(daySet);
                        dayLookup.Add(daySet.Id, daySet);
                    }
                }
                if (rdr.NextResult())
                {
                    while (rdr.Read())
                    {
                        RotorSetting rotSet = GetRotorSetting(rdr);
                        rotSet.ParentSettings = dayLookup[rotSet.ParentId];
                        dayLookup[rotSet.ParentId].Rotors.Add(rotSet);
                    }
                }
                if (rdr.NextResult())
                {
                    while (rdr.Read())
                    {
                        Wiring wir = GetWiring(rdr);
                        wir.ParentSettings = monthLookup[wir.ParentId];
                        monthLookup[wir.ParentId].Wiring = wir;
                        wiringLookup.Add(wir.Id, wir);
                    }
                }
                if (rdr.NextResult())
                {
                    while (rdr.Read())
                    {
                        GetRotor(wiringLookup, rdr);
                    }
                }
                if (rdr.NextResult())
                {
                    while (rdr.Read())
                    {
                        GetNotch(wiringLookup, rdr);
                    }
                }
                if (rdr.NextResult())
                {
                    while (rdr.Read())
                    {
                        GetMove(wiringLookup, rdr);
                    }
                }

                results.Add(result);
            }
            return(results);
        }