public Response SaveDataSplit(object json, string name) { SatellitesBatch satellites = (SatellitesBatch)(cache.Get("satellites")); SatelliteData data = new SatelliteData(); data = Newtonsoft.Json.JsonConvert.DeserializeObject <SatelliteData>(json.ToString()); data.Name = name; if (satellites != null) { int index = satellites.Satellites.FindIndex(x => x.Name.ToUpper().Equals(name.ToUpper())); if (index > -1) { satellites.Satellites.RemoveAt(index); } satellites.Satellites.Add(data); } else { satellites = new SatellitesBatch(); satellites.Satellites.Add(data); } cache.Insert("satellites", satellites); return(new Response(200, null, null)); }
public void Part1() { SatelliteData satelliteData = new SatelliteData(StringListRetriever.Retreive("InputList19.txt").ToList()); List <string> validMessages = ValidSatelliteMessageCreator.CreateList(satelliteData); Assert.Equal(142, satelliteData.Messages.Count(x => validMessages.Any(y => y == x))); }
public void Part1Sample() { SatelliteData satelliteData = new SatelliteData(GetPart1SampleData()); List <string> validMessages = ValidSatelliteMessageCreator.CreateList(satelliteData); Assert.Equal(8, validMessages.Count); Assert.Equal(2, satelliteData.Messages.Count(x => validMessages.Any(y => y == x))); }
internal static List <string> CreateList(SatelliteData satelliteData) { List <int> ruleKeys = satelliteData.SubRules.Keys.OrderByDescending(x => x).ToList(); foreach (int key in ruleKeys) { GetMessagesFor(satelliteData.SubRules[key], satelliteData); } return(satelliteData.SubRules[ruleKeys.Min()].Messages); //.OrderBy(x => x).ToList(); }
public void SetData(SatelliteData newdata) { txtPrn.text = strPrn + newdata.prn.ToString(); txtLaunch.text = strLaunch + newdata.Launch.ToString("yyyy/MM/dd"); txtOperation.text = strOperation + newdata.Operation.ToString("yyyy/MM/dd"); txtAzimuth.text = strAzimuth + newdata.Azimuth.ToString("0.0") + "°"; txtElevation.text = strElevation + newdata.Elevation.ToString("0.0") + "°"; txtSnr.text = strSnr + newdata.snr.ToString("0.00"); mask.rectTransform.sizeDelta = Vector2.one * 1000; }
public void SetData(SatelliteData newdata) { txtPrn.text = strPrn + newdata.prn.ToString(); txtLaunch.text = strLaunch + newdata.Launch.ToString("yyyy/MM/dd"); txtOperation.text = strOperation + newdata.Operation.ToString("yyyy/MM/dd"); txtAzimuth.text = strAzimuth + newdata.Azimuth.ToString("0.0")+"°"; txtElevation.text = strElevation + newdata.Elevation.ToString("0.0") + "°"; txtSnr.text = strSnr + newdata.snr.ToString("0.00"); mask.rectTransform.sizeDelta = Vector2.one * 1000; }
/// <summary> /// Constructor /// </summary> /// <param name="satellite">Satellite</param> public FormNORADChild(SatelliteData satellite) : this() { this.satellite = satellite; userControlChild.Satellite = satellite; UpdateFormUI(); FormClosed += (object s, FormClosedEventArgs e) => { userControlChild.Delete(); }; }
public SatelliteData GetSatellite(int id) { if (!_satelliteMap.TryGetValue(id, out var item)) { _satelliteMap.Add(id, null); _satelliteMap[id] = item = SatelliteData.Deserialize(_jsonDatabase.GetSatellite(id), this); } if (item == null) { throw new DatabaseException(CircularDependencyText + "Satellite_" + id); } return(item); }
private bool ValidateSatelliteData(SatelliteData satellite) { if (satellite.Distance < 0) { return(false); } if (string.Join(string.Empty, satellite.Message).Equals(string.Empty)) { return(false); } return(true); }
private static SatelliteData GetData(string prn) { SatelliteData satellite = Data.FirstOrDefault(d => d.PRN.Equals(prn)); if (satellite == null) { return(new SatelliteData() { PRN = prn, Name = "Undefined", System = SystemType.Unknown, Launch = null }); } return(satellite); }
/// <summary> /// This Method is going to include the new information from the specific satellite in the db. /// I know it should be also possible to know (and save) which ship has this message been arrived from, then you can have more than one Ship sending. /// </summary> /// <param name="satelliteData"></param> public override async void SaveNewSatelliteData(SatelliteData satelliteData) { TopSecretSplitItem topSecretSplitItem = CreateDbItemWithSatelliteData(satelliteData); var topSecretSplitItemRequest = await _context.TopSecretSplitItems.FindAsync(topSecretSplitItem.id); if (topSecretSplitItemRequest != null) { _context.TopSecretSplitItems.Remove(topSecretSplitItemRequest); } topSecretSplitItem.createdDate = DateTime.Now; _context.TopSecretSplitItems.Add(topSecretSplitItem); await _context.SaveChangesAsync(); }
public TopSecretSplitItem CreateDbItemWithSatelliteData(SatelliteData satelliteData) { TopSecretSplitItem topSecretSplitItem = new TopSecretSplitItem(); topSecretSplitItem.id = (_rebelSatellites.GetIndexOfSatellite(satelliteData.name) + 1); //Add 1 to this id value to be sure it never reach de 0 value.; topSecretSplitItem.name = satelliteData.name; topSecretSplitItem.distance = satelliteData.distance; //Merge the var result = String.Join(_wordsSeparator, satelliteData.message.ToArray()); topSecretSplitItem.message = result; return(topSecretSplitItem); }
public override async Task <SatelliteData> GetSatelliteDataFromName(string name) { TopSecretSplitItem topSecretSplitItem = new TopSecretSplitItem(); topSecretSplitItem.id = (_rebelSatellites.GetIndexOfSatellite(name) + 1); //Add 1 to this id value to be sure it never reach de 0 value.; var topSecretSplitItemRequest = await _context.TopSecretSplitItems.FindAsync(topSecretSplitItem.id); if (topSecretSplitItemRequest == null) { throw new Exception("There is not information for satellite" + name); } List <string> wordsSeparated = new List <string>(topSecretSplitItemRequest.message.Split(_wordsSeparator)); SatelliteData satelliteData = new SatelliteData(topSecretSplitItemRequest.name, topSecretSplitItemRequest.distance, wordsSeparated); return(satelliteData); }
private static void GetMessagesFor(SatelliteSubRule rule, SatelliteData satelliteData) { if (rule.Messages.Count > 0) { return; } List <string> messages = new List <string>(); foreach (var ruleSet in rule.RuleSets) { List <int> subRuleKeys = ruleSet.Where(x => satelliteData.SubRules.Keys.Any(y => x == y)).OrderByDescending(x => x).ToList(); foreach (int subRuleKey in subRuleKeys) { GetMessagesFor(satelliteData.SubRules[subRuleKey], satelliteData); } List <string> ruleSetMessages = new List <string> { "" }; foreach (int ruleKey in ruleSet) { if (satelliteData.SubRules.Keys.Contains(ruleKey)) { List <string> newMessages = new List <string>(); ruleSetMessages.ForEach(x => { satelliteData.SubRules[ruleKey].Messages.ForEach(y => { newMessages.Add(x + y); }); }); ruleSetMessages = newMessages; } else { for (int index = 0; index < ruleSetMessages.Count; index++) { ruleSetMessages[index] += satelliteData.CharacterRules[ruleKey].MessageCharacters; } } } messages.AddRange(ruleSetMessages); } rule.Messages.AddRange(messages.Distinct()); }
public string PostTopSecretSplit(string name, dynamic topSecretSplitRequest) { try { TopSecretSplitRequestData topSecretSplitRequestData = JsonConvert.DeserializeObject <TopSecretSplitRequestData>(topSecretSplitRequest.ToString()); //Convert POST input information to the previously defined(in exercice Level 2 "topsecret") SatelliteData class SatelliteData satelliteData = new SatelliteData(name, topSecretSplitRequestData.distance, topSecretSplitRequestData.message); //This save methos is an interface, it does not depend directly on the database implementation. _dbTopSecretSplitController.SaveNewSatelliteData(satelliteData); string resVal = "Data received OK from satellite " + name; return(resVal); } catch (Exception ex) { //fileLogger.Log(ex.Message); return(ex.Message); } }
public override async Task <AllSatellitesData> GetListOfValidatedSatellitesData() { AllSatellitesData allSatellitesData = new AllSatellitesData(); //Here I should ask for the information received from every satellite which has actually received a message List <TopSecretSplitItem> topSecretSplitItems = _context.TopSecretSplitItems.ToList(); //At this moment I get all the table because I have only one Imperial Ship to track. But it could be asked as a Query with some particular request (i.e: name of imperial Ship). //Here I should validate Date and Time from the last 3 messages. ValidateSatellitesData(topSecretSplitItems); foreach (TopSecretSplitItem item in topSecretSplitItems) { //Split the message string that came from the DB message, it was merge in one single string in order to be saved in one register. List <string> wordsOfMessage = new List <string>(item.message.Split(_wordsSeparator)); SatelliteData satellitData = new SatelliteData(item.name, item.distance, wordsOfMessage); allSatellitesData.satellites.Add(satellitData); } return(allSatellitesData); }
internal void Parse(string text) { SatelliteData = new SatelliteData(); CalculateLab1Data = new CalculateLab1Data(); var data = GetData(text); int index = 0; SatelliteData.PRN = Convert.ToInt32(data[index++]); SatelliteData.Date = new DateTime( Convert.ToInt32(data[index++]) + 2000, Convert.ToInt32(data[index++]), Convert.ToInt32(data[index++]), Convert.ToInt32(data[index++]), Convert.ToInt32(data[index++]), (int)Convert.ToDouble(data[index++])); SatelliteData.af0 = Convert.ToDouble(data[index++]); SatelliteData.af1 = Convert.ToDouble(data[index++]); SatelliteData.af2 = Convert.ToDouble(data[index++]); SatelliteData.AOED = Convert.ToDouble(data[index++]); SatelliteData.Crs = Convert.ToDouble(data[index++]); SatelliteData.delta_n = Convert.ToDouble(data[index++]); SatelliteData.M0 = Convert.ToDouble(data[index++]); SatelliteData.Cuc = Convert.ToDouble(data[index++]); SatelliteData.e = Convert.ToDouble(data[index++]); SatelliteData.Cus = Convert.ToDouble(data[index++]); SatelliteData.sqrt_A = Convert.ToDouble(data[index++]); SatelliteData.toe = Convert.ToDouble(data[index++]); SatelliteData.Cic = Convert.ToDouble(data[index++]); SatelliteData.Omega_0 = Convert.ToDouble(data[index++]); SatelliteData.Cis = Convert.ToDouble(data[index++]); SatelliteData.i0 = Convert.ToDouble(data[index++]); SatelliteData.Crc = Convert.ToDouble(data[index++]); SatelliteData.omega = Convert.ToDouble(data[index++]); SatelliteData.Omega_ = Convert.ToDouble(data[index++]); SatelliteData.IDOT = Convert.ToDouble(data[index++]); index = 32; SatelliteData.delta_tg = Convert.ToDouble(data[index++]); SatelliteData.AODC = Convert.ToDouble(data[index++]); }
public virtual Object CreateDbItemWithSatelliteData(SatelliteData satelliteData) { Object genericVal = new Object(); return(genericVal); }
public virtual async Task <SatelliteData> GetSatelliteDataFromName(string name) { SatelliteData satelliteData = new SatelliteData(); return(satelliteData); }
//public IdbController(Object context) //{ //} /// <summary> /// This Method is going to include the new information from the specific satellite in the db. /// I know it should be also possible to know (and save) which ship has this message been arrived from, then you can have more than one Ship sending. /// </summary> /// <param name="satelliteData"></param> public virtual async void SaveNewSatelliteData(SatelliteData satelliteData) { }