public void AddText(ImpactCrater crater) { detailsTextBox.ResetText(); detailsTextBox.Text += "Name " + GetText(crater.Name) + "\r\n"; detailsTextBox.Text += "Location " + GetText(crater.Location) + "\r\n"; detailsTextBox.Text += "Latitude " + GetText(crater.Latitude) + "\r\n"; detailsTextBox.Text += "Longitude " + GetText(crater.Longitude) + "\r\n"; detailsTextBox.Text += "Diameter " + GetDiameters(crater.Diameter) + "\r\n"; detailsTextBox.Text += "Age " + GetAges(crater.Age) + "\r\n"; detailsTextBox.Text += "Exposed " + GetText(crater.Exposed) + "\r\n"; detailsTextBox.Text += "Drilled " + GetText(crater.Drilled) + "\r\n"; detailsTextBox.Text += "Target Rock " + GetText(crater.TargetRock) + "\r\n"; detailsTextBox.Text += "Bolide Type " + GetText(crater.BolideType) + "\r\n"; detailsTextBox.Text += "\r\n"; detailsTextBox.Text += "References\r\n"; detailsTextBox.Text += "\r\n"; for (int index = 0; index < crater.References.Count; ++index) { detailsTextBox.Text += crater.References [index] + "\r\n"; } Update(); }
static public void Update(string folder, string name, string latitude, string longitude) { if (CraterArray != null) { for (int index = 0; index < CraterArray.Count; ++index) { ImpactCrater crater = ( ImpactCrater )CraterArray [index]; if (crater != null) { if (crater.Name == name) { if (!(latitude == crater.Latitude && longitude == crater.Longitude)) { crater.Latitude = latitude; crater.Longitude = longitude; string fileName = Path.Combine(folder, name + ".txt"); Write(fileName, crater); break; } } } } } }
static public void Read(string txtFileName) { if (File.Exists(txtFileName)) { try { FileStream stream = new FileStream(txtFileName, FileMode.Open, FileAccess.Read); StreamReader reader = new StreamReader(stream, System.Text.Encoding.Unicode); ImpactCrater crater = new ImpactCrater(); if (crater != null) { crater.Name = reader.ReadLine(); crater.Location = reader.ReadLine(); crater.Latitude = reader.ReadLine(); crater.Longitude = reader.ReadLine(); crater.Diameter = reader.ReadLine(); crater.Age = reader.ReadLine(); crater.Exposed = reader.ReadLine(); crater.Drilled = reader.ReadLine(); crater.TargetRock = reader.ReadLine(); crater.BolideType = reader.ReadLine(); string line = null; for (;;) { if ((line = reader.ReadLine()) != null) { crater.AddReferences(line); } else { break; } } ImpactCraters.Add(crater); } reader.Close(); stream.Close(); } catch (Exception ex) { MessageBox.Show("Error: " + ex.Message); } } }
private void ImpacterListView_Click(object sender, EventArgs e) { if (ImpacterListView.SelectedItems.Count == 1) { ImpactCrater crater = ( object )ImpacterListView.SelectedItems [0].Tag as ImpactCrater; if (displayReferencesToolStripMenuItem.Checked) { if (DetailsDialog == null) { DetailsDialog = new DetailsDialog(this); } DetailsDialog.AddText(( object )ImpacterListView.SelectedItems [0].Tag); DetailsDialog.Show(); DetailsDialog.BringToFront(); } if (displayGoggleMapToolStripMenuItem.Checked) { if (crater.Longitude.Length > 0 && crater.Latitude.Length > 0) { string url = "https://www.google.com/maps/place/" + Helper.ReformatCoordinate(crater.Longitude) + "+" + Helper.ReformatCoordinate(crater.Latitude); System.Diagnostics.Process.Start(url); } } if (displayEarthImpactDatabaseToolStripMenuItem.Checked) { string name = crater.Name.ToLower(); string [] from = { "Ilumetsä", " ", "-", ".", "ö", "ô", "å", "ã", "ä", "'" }; string [] to = { "Ilumets", "", "", "", "o", "o", "a", "a", "a", "" }; for (int index = 0; index < from.Length; ++index) { name = name.Replace(from [index], to [index]); } string url = "http://www.passc.net/EarthImpactDatabase/" + name + ".html"; System.Diagnostics.Process.Start(url); } Focus(); } }
static private ImpactCrater AssignFromString(string line) { ImpactCrater crater = new ImpactCrater(); char [] delimiterChars = { '\t' }; string [] strings = line.Split(delimiterChars); string [] classes = { "Confirmed", "Most Probable", "Probable", "Possible", "Improbable", "Rejected", "Proposed" }; crater.Class = classes [int.Parse(strings [0]) + 1]; crater.InheritedClass = AssignString(strings [1]); crater.StructureName = AssignString(strings [2]); crater.CraterField = AssignString(strings [3]); crater.Region = AssignString(strings [4]); crater.Country = AssignString(strings [5]); crater.Continent = AssignString(strings [6]); crater.Latitude = AssignString(strings [7]); crater.Longitude = AssignString(strings [8]); crater.Diameter.FinalRim = AssignString(strings [9]); crater.Diameter.PresentDay = AssignString(strings [10]); crater.Diameter.OuterLimitOfDeformation = AssignString(strings [11]); crater.Diameter.Diameter = AssignString(strings [12]); crater.Diameter.SQL = AssignString(strings [13]); crater.Ages.Age = AssignString(strings [14]); crater.Ages.Youngest = AssignString(strings [15]); crater.Ages.Best = AssignString(strings [16]); crater.Ages.Oldest = AssignString(strings [17]); crater.Ages.Uncertain = AssignString(strings [18]); crater.Ages.UncertainType = AssignString(strings [19]); crater.Overburden = AssignString(strings [20]); crater.PresentWaterDepth = AssignString(strings [21]); crater.Drilled = AssignString(strings [22]); crater.Target = AssignString(strings [23]); crater.TargetWaterDepth = AssignString(strings [24]); crater.Impactor = AssignString(strings [25]); crater.UpdatedOn = AssignString(strings [26]); crater.CompiledBy = AssignString(strings [27]); ImpactCraters.Add(crater); crater.AddReferences(strings [28]); return(crater); }
static public void Write(string txtFileName, ImpactCrater crater) { if (crater == null) { return; } else if (File.Exists(txtFileName)) { try { FileStream stream = new FileStream(txtFileName, FileMode.Open, FileAccess.Write); StreamWriter writer = new StreamWriter(stream, System.Text.Encoding.Unicode); writer.WriteLine(crater.Name); writer.WriteLine(crater.Location); writer.WriteLine(crater.Latitude); writer.WriteLine(crater.Longitude); writer.WriteLine(crater.Diameter); writer.WriteLine(crater.Age); writer.WriteLine(crater.Exposed); writer.WriteLine(crater.Drilled); writer.WriteLine(crater.TargetRock); writer.WriteLine(crater.BolideType); if (crater.References != null) { for (int index = 0; index < crater.References.Count; ++index) { writer.WriteLine(crater.References [index]); } } writer.Close(); stream.Close(); } catch (Exception ex) { MessageBox.Show("Error: " + ex.Message); } } }
static public void Add(ImpactCrater crater) { if (CraterArray == null) { CraterArray = new ArrayList(); } if (crater.Age != "-") { crater.Age = crater.Age.Replace(" ", ""); crater.Age = crater.Age.Replace("-", " to "); crater.Age = crater.Age.Replace("Ma", ""); crater.Age = crater.Age.Replace("*", ""); } crater.Drilled = Helper.AssignYesNo(crater.Drilled); crater.Exposed = Helper.AssignYesNo(crater.Exposed); crater.TargetRock = Helper.AssignTarget(crater.TargetRock); CraterArray.Add(crater); }
static public int Read(string csvFileName) { ArrayList craters = new ArrayList(); if (File.Exists(csvFileName)) { TextReader reader = null; using (reader = File.OpenText(csvFileName)) { string line = null; ImpactCrater crater = null; line = reader.ReadLine(); for (;;) { if ((line = reader.ReadLine()) != null) { if (IsDataLine(line)) { crater = AssignFromString(line); } else if (crater != null) { crater.AddReferences(line); } } else { break; } } } } return(0); }
public bool MatchesQuery(object obj) { if (AllQueries.Count > 0) { ImpactCrater crater = obj as ImpactCrater; foreach (ClassQuery query in AllQueries) { string value = string.Empty; switch (query.QueryType) { case QueryTypes.Name: value = crater.Name; break; case QueryTypes.Location: value = crater.Location; break; case QueryTypes.Diameter: value = crater.Diameter; break; case QueryTypes.Age: value = Helper.RemoveUnwantedChars(crater.Age); break; case QueryTypes.Period: value = Period.Get(crater); break; case QueryTypes.Exposed: value = crater.Exposed; break; case QueryTypes.Drilled: value = crater.Drilled; break; case QueryTypes.TargetRock: value = crater.TargetRock; break; case QueryTypes.BolideType: value = crater.BolideType; break; case QueryTypes.References: break; } if (query.QueryType == QueryTypes.References) { for (int index = 0; index < crater.References.Count; ++index) { value = ( string )crater.References [index]; value = value.ToLower(); if (query.QuerySubtype == QuerySubtypes.StartsWith) { if (value.StartsWith(query.Value)) { return(true); } } else if (query.QuerySubtype == QuerySubtypes.EndsWith) { if (value.EndsWith(query.Value)) { return(true); } } else if (query.QuerySubtype == QuerySubtypes.Contains) { if (value.Contains(query.Value)) { return(true); } } } return(false); } else { value = value.ToLower(); if (query.QuerySubtype == QuerySubtypes.StartsWith) { if (!value.StartsWith(query.Value)) { return(false); } } else if (query.QuerySubtype == QuerySubtypes.EndsWith) { if (!value.EndsWith(query.Value)) { return(false); } } else if (query.QuerySubtype == QuerySubtypes.Contains) { if (!value.Contains(query.Value)) { return(false); } } else if (query.QuerySubtype == QuerySubtypes.GreaterThan) { double numericValue = 0.0, numericQueryValue = 0.0; if (double.TryParse(value, out numericValue)) { if (double.TryParse(query.Value, out numericQueryValue)) { if (numericValue >= numericQueryValue) { return(true); } } } return(false); } else if (query.QuerySubtype == QuerySubtypes.LessThan) { double numericValue = 0.0, numericQueryValue = 0.0; if (double.TryParse(value, out numericValue)) { if (double.TryParse(query.Value, out numericQueryValue)) { if (numericValue <= numericQueryValue) { return(true); } } } return(false); } } } } return(true); }