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); }
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); } }
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; }
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; }
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()); }
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); }
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; } } }
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); }