Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
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);
        }