/// <summary> /// Method throw Animals to list from Database /// </summary> /// <returns></returns> public List<Animal> GetAnimals() { m_dataBase = new DataBaseAccess(); DataTable tblData = m_dataBase.LoadAnimalData(); return CreateAnimals(tblData); }
/// <summary> /// Read the data from the GUI, set up an object and save the object in /// the animal registry. /// </summary> private void AddAnimalItem() { //type now known at this time Animal animalObject = null; //for mammal string NoOfTeethtxtString = null; //for birds string WingSpanString = null; //for marine string depthString = null; //for reptile string isPoisonousString = null; //for insects string canFlyString = null; //comon for all animals //name of the animal string name = txtName.Text.Trim(); // the age of the animal string ageString = txtAge.Text.Trim(); //Important information about the animal string importantInfo = txtImportantInfo.Text.Trim(); //common for mammals string daysInQuarantineString = txtDaysInQarantine.Text.Trim(); bool InQuarantine = isInQuarantine(); //category of animal CategoryType category = (CategoryType)lstBoxCategory.SelectedIndex; //gender of animal GenderType gender = (GenderType)lstBoxGender.SelectedIndex; switch (Convert.ToString(lstBoxAnimalObject.SelectedItem)) { case "Duck": try { animalObject = BirdFactory.CreateBird(BirdSpecies.Duck); if (animalObject == null) { int result; int answer; int zero = 0; answer = 1; result = answer / zero; } } catch (NonExistentAnimalTypeException ex) { MessageBox.Show("Invalid animal", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } category = CategoryType.Bird; WingSpanString = txtSpecificData.Text.Trim(); try { //this part takes care of the gender if ((GenderType)lstBoxGender.SelectedIndex == 0) { animalObject.Gender = GenderType.Male; } if (lstBoxGender.SelectedIndex == 1) { animalObject.Gender = GenderType.Female; } if (lstBoxGender.SelectedIndex == 2) { animalObject.Gender = GenderType.Unknown; } } catch (Exception ex) { MessageBox.Show("Invalid Gender", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } //verify name field if (string.IsNullOrEmpty(name)) { MessageBox.Show("Invalid name", "invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error); txtName.Clear(); txtName.Focus(); return; } try { //assign vars for mammal ------ > constructor has to include the fields needed animalObject.WingSpan = Convert.ToDouble(WingSpanString); if (animalObject.WingSpan <= 0) { MessageBox.Show("Invalid wingspan", "Error try again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } } catch (Exception) { MessageBox.Show("Invalid eagle Wingspan", "Error try again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } break; case "Eagle": try { animalObject = BirdFactory.CreateBird(BirdSpecies.Eagle); if (animalObject == null) { int result; int answer; int zero = 0; answer = 1; result = answer / zero; } } catch (NonExistentAnimalTypeException ex) { MessageBox.Show("Invalid animal", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } catch (Exception ex) { MessageBox.Show("Invalid animal", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } category = CategoryType.Bird; WingSpanString = txtSpecificData.Text.Trim(); try { //this part takes care of the gender if ((GenderType)lstBoxGender.SelectedIndex == 0) { animalObject.Gender = GenderType.Male; } if (lstBoxGender.SelectedIndex == 1) { animalObject.Gender = GenderType.Female; } if (lstBoxGender.SelectedIndex == 2) { animalObject.Gender = GenderType.Unknown; } } catch (Exception ex) { MessageBox.Show("Invalid Gender", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } //verify name field if (string.IsNullOrEmpty(name)) { MessageBox.Show("Invalid name", "invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error); txtName.Clear(); txtName.Focus(); return; } try { //assign vars for mammal ------ > constructor has to include the fields needed animalObject.WingSpan = Convert.ToDouble(WingSpanString); if (animalObject.WingSpan <= 0) { MessageBox.Show("Invalid wingspan", "Error try again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } } catch (Exception) { MessageBox.Show("Invalid eagle Wingspan", "Error try again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } break; case "Falcon": try { animalObject = BirdFactory.CreateBird(BirdSpecies.Falcon); } catch (NonExistentAnimalTypeException ex) { MessageBox.Show("Invalid animal", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { category = CategoryType.Bird; } WingSpanString = txtSpecificData.Text.Trim(); try { //This part takes care of the gender if ((GenderType)lstBoxGender.SelectedIndex == 0) { animalObject.Gender = GenderType.Male; } if (lstBoxGender.SelectedIndex == 1) { animalObject.Gender = GenderType.Female; } if (lstBoxGender.SelectedIndex == 2) { animalObject.Gender = GenderType.Unknown; } } catch (Exception ex) { MessageBox.Show("Invalid Gender", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } //verify name field if (string.IsNullOrEmpty(name)) { MessageBox.Show("Invalid name", "invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error); txtName.Clear(); txtName.Focus(); return; } try { //assign vars for mammal ------ > constructor has to include the fields needed animalObject.WingSpan = Convert.ToDouble(WingSpanString); if (animalObject.WingSpan <= 0) { MessageBox.Show("Invalid wingspan", "Error try again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } } catch (Exception) { MessageBox.Show("Invalid falcon wingspan", "invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } break; case "Bee": try { animalObject = InsectFactory.CreateInsect(InsectSpecies.Bee); } catch (NonExistentAnimalTypeException ex) { MessageBox.Show("Invalid animal", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { category = CategoryType.Insect; } canFlyString = txtSpecificData.Text.Trim(); try { //This part takes care of the gender if ((GenderType)lstBoxGender.SelectedIndex == 0) { animalObject.Gender = GenderType.Male; } if (lstBoxGender.SelectedIndex == 1) { animalObject.Gender = GenderType.Female; } if (lstBoxGender.SelectedIndex == 2) { animalObject.Gender = GenderType.Unknown; } } catch (Exception ex) { MessageBox.Show("Invalid Gender", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } //verify name field if (string.IsNullOrEmpty(name)) { MessageBox.Show("Invalid name", "invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error); txtName.Clear(); txtName.Focus(); return; } try { //it flies if (txtSpecificData.Text.Trim() == "Y" || txtSpecificData.Text.Trim() == "y") { animalObject.Flying = true; } //does not fly else if (txtSpecificData.Text.Trim() == "N" || txtSpecificData.Text.Trim() == "n") { animalObject.Flying = false; } else { MessageBox.Show("Invalid bee posonois data", "choose again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } } catch (Exception) { MessageBox.Show("Invalid bee poisonous data", "choose again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } break; case "Butterfly": try { animalObject = InsectFactory.CreateInsect(InsectSpecies.Butterfly); } catch (NonExistentAnimalTypeException ex) { MessageBox.Show("Invalid animal", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { category = CategoryType.Insect; } canFlyString = txtSpecificData.Text.Trim(); try { //This part takes care of the gender if ((GenderType)lstBoxGender.SelectedIndex == 0) { animalObject.Gender = GenderType.Male; } if (lstBoxGender.SelectedIndex == 1) { animalObject.Gender = GenderType.Female; } if (lstBoxGender.SelectedIndex == 2) { animalObject.Gender = GenderType.Unknown; } } catch (Exception ex) { MessageBox.Show("Invalid Gender", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } //verify name field if (string.IsNullOrEmpty(name)) { MessageBox.Show("Invalid name", "invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error); txtName.Clear(); txtName.Focus(); return; } try { //it flies if (txtSpecificData.Text.Trim() == "Y" || txtSpecificData.Text.Trim() == "y") { animalObject.Flying = true; } //does not fly else if (txtSpecificData.Text.Trim() == "N" || txtSpecificData.Text.Trim() == "n") { animalObject.Flying = false; } else { MessageBox.Show("Butterfly posonous data invalid", "choose again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } } catch (Exception) { MessageBox.Show("Butterfly posonous data invalid", "choose again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } break; case "Cat": try { animalObject = MammalFactory.CreateMammal(MammalSpecies.Cat); } catch (NonExistentAnimalTypeException ex) { MessageBox.Show("Invalid animal", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { category = CategoryType.Mammal; } NoOfTeethtxtString = txtSpecificData.Text.Trim(); daysInQuarantineString = txtDaysInQarantine.Text.Trim(); InQuarantine = isInQuarantine(); try { //This part takes care of the gender if ((GenderType)lstBoxGender.SelectedIndex == 0) { animalObject.Gender = GenderType.Male; } if (lstBoxGender.SelectedIndex == 1) { animalObject.Gender = GenderType.Female; } if (lstBoxGender.SelectedIndex == 2) { animalObject.Gender = GenderType.Unknown; } } catch (Exception ex) { MessageBox.Show("Invalid Gender", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } //assign vars for mammal ------ > constructor has to include the fields needed //verify name field if (string.IsNullOrEmpty(name)) { MessageBox.Show("Invalid name", "invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error); txtName.Clear(); txtName.Focus(); return; } try { animalObject.NumberOfTeeth = Convert.ToInt32(NoOfTeethtxtString); if (animalObject.NumberOfTeeth <= 0) { MessageBox.Show("Invalid No of. teeth", "Error try again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } } catch (Exception) { MessageBox.Show("Invalid number of teeth", "Try again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } //set the quarantine info to true or false if (InQuarantine == true) { animalObject.Quarantine = true; try { animalObject.NumberOfDays = Convert.ToInt32(daysInQuarantineString); } catch (Exception) { MessageBox.Show("Quarantine Error", "Try again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtDaysInQarantine.Clear(); txtDaysInQarantine.Focus(); return; } } else { animalObject.Quarantine = false; } //constructor has to include the fields needed // txtSpecialData.Text = animalObject.MammalData(); break; case "Dog": try { animalObject = MammalFactory.CreateMammal(MammalSpecies.Dog); } catch (NonExistentAnimalTypeException ex) { MessageBox.Show("Invalid animal", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { category = CategoryType.Mammal; } NoOfTeethtxtString = txtSpecificData.Text.Trim(); daysInQuarantineString = txtDaysInQarantine.Text.Trim(); InQuarantine = isInQuarantine(); try { //This part takes care of the gender if ((GenderType)lstBoxGender.SelectedIndex == 0) { animalObject.Gender = GenderType.Male; } if (lstBoxGender.SelectedIndex == 1) { animalObject.Gender = GenderType.Female; } if (lstBoxGender.SelectedIndex == 2) { animalObject.Gender = GenderType.Unknown; } } catch (Exception ex) { MessageBox.Show("Invalid Gender", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } //assign vars for mammal ------ > constructor has to include the fields needed //verify name field if (string.IsNullOrEmpty(name)) { MessageBox.Show("Invalid name", "invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error); txtName.Clear(); txtName.Focus(); return; } try { { animalObject.NumberOfTeeth = Convert.ToInt32(NoOfTeethtxtString); if (animalObject.NumberOfTeeth <= 0) { MessageBox.Show("Invalid No of. teeth", "Error try again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } } } catch (Exception) { MessageBox.Show("Invalid number of teeth", "invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } //set the quarantine info to true or false if (InQuarantine == true) { animalObject.Quarantine = true; try { animalObject.NumberOfDays = Convert.ToInt32(daysInQuarantineString); if (animalObject.NumberOfDays <= 0) { MessageBox.Show("Invalid No of quarantine days", "Error try again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtDaysInQarantine.Clear(); txtDaysInQarantine.Focus(); return; } } catch (Exception) { MessageBox.Show("Quarantine Error", "Try again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtDaysInQarantine.Clear(); txtDaysInQarantine.Focus(); return; } } else { animalObject.Quarantine = false; } //constructor has to include the fields needed // txtSpecialData.Text = animalObject.MammalData(); break; case "Shark": try { animalObject = MarineFactory.CreateMarine(MarineSpecies.Shark); } catch (NonExistentAnimalTypeException ex) { MessageBox.Show("Invalid animal", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { category = CategoryType.Marine; } depthString = txtSpecificData.Text.Trim(); try { //This part takes care of the gender if ((GenderType)lstBoxGender.SelectedIndex == 0) { animalObject.Gender = GenderType.Male; } if (lstBoxGender.SelectedIndex == 1) { animalObject.Gender = GenderType.Female; } if (lstBoxGender.SelectedIndex == 2) { animalObject.Gender = GenderType.Unknown; } } catch (Exception ex) { MessageBox.Show("Invalid Gender", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } //verify name field if (string.IsNullOrEmpty(name)) { MessageBox.Show("Invalid name", "invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error); txtName.Clear(); txtName.Focus(); return; } try { //assign vars for Shark ------ > constructor has to include the fields needed animalObject.Depth = Convert.ToDouble(depthString); if (animalObject.Depth <= 0) { MessageBox.Show("Invalid No of shark Depth", "Error try again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } } catch (Exception) { MessageBox.Show("Invalid shark depth", "invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } break; case "Turtle": try { animalObject = MarineFactory.CreateMarine(MarineSpecies.Turtle); } catch (NonExistentAnimalTypeException ex) { MessageBox.Show("Invalid animal", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { category = CategoryType.Marine; } depthString = txtSpecificData.Text.Trim(); try { //This part takes care of the gender if ((GenderType)lstBoxGender.SelectedIndex == 0) { animalObject.Gender = GenderType.Male; } if (lstBoxGender.SelectedIndex == 1) { animalObject.Gender = GenderType.Female; } if (lstBoxGender.SelectedIndex == 2) { animalObject.Gender = GenderType.Unknown; } } catch (Exception ex) { MessageBox.Show("Invalid Gender", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } //verify name field if (string.IsNullOrEmpty(name)) { MessageBox.Show("Invalid name", "invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error); txtName.Clear(); txtName.Focus(); return; } try { //assign vars for turtle ------ > constructor has to include the fields needed animalObject.Depth = Convert.ToDouble(depthString); if (animalObject.Depth <= 0) { MessageBox.Show("Invalid No of turtle Depth", "Error try again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } } catch (Exception) { MessageBox.Show("Invalid Turtle depth", "Invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } break; case "Chamaleon": try { animalObject = ReptileFactory.CreateReptile(ReptileSpecies.Chamaleon); } catch (NonExistentAnimalTypeException ex) { MessageBox.Show("Invalid animal", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { category = CategoryType.Reptile; } isPoisonousString = txtSpecificData.Text.Trim(); try { //This part takes care of the gender if ((GenderType)lstBoxGender.SelectedIndex == 0) { animalObject.Gender = GenderType.Male; } if (lstBoxGender.SelectedIndex == 1) { animalObject.Gender = GenderType.Female; } if (lstBoxGender.SelectedIndex == 2) { animalObject.Gender = GenderType.Unknown; } } catch (Exception ex) { MessageBox.Show("Invalid Gender", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } try { //it is posonous if (txtSpecificData.Text.Trim() == "Y" || txtSpecificData.Text.Trim() == "y") { animalObject.Poisonous = true; } //not posonous else if (txtSpecificData.Text.Trim() == "N" || txtSpecificData.Text.Trim() == "n") { animalObject.Poisonous = false; } else { MessageBox.Show("Invalid chamaleon poison info", "Choose again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } } catch (Exception) { MessageBox.Show("Invalid chamaleon poison info", "Choose again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } break; case "Boa": try { animalObject = ReptileFactory.CreateReptile(ReptileSpecies.Boa); } catch (NonExistentAnimalTypeException ex) { MessageBox.Show("Invalid animal", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { category = CategoryType.Reptile; } isPoisonousString = txtSpecificData.Text.Trim(); try { //This part takes care of the gender if ((GenderType)lstBoxGender.SelectedIndex == 0) { animalObject.Gender = GenderType.Male; } if (lstBoxGender.SelectedIndex == 1) { animalObject.Gender = GenderType.Female; } if (lstBoxGender.SelectedIndex == 2) { animalObject.Gender = GenderType.Unknown; } } catch (Exception ex) { MessageBox.Show("Invalid Gender", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); } //verify name field if (string.IsNullOrEmpty(name)) { MessageBox.Show("Invalid name", "invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error); txtName.Clear(); txtName.Focus(); return; } try { //it is poisonous if (txtSpecificData.Text.Trim() == "Y" || txtSpecificData.Text.Trim() == "y") { animalObject.Poisonous = true; } //not posonous else if (txtSpecificData.Text.Trim() == "N" || txtSpecificData.Text.Trim() == "n") { animalObject.Poisonous = false; } else { MessageBox.Show("Invalid Boa poison info", "Choose again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } } catch (Exception) { MessageBox.Show("Invalid Boa poison info", "Choose again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSpecificData.Clear(); txtSpecificData.Focus(); return; } break; } //Set other info into the object if (animalObject != null) { if (lstBoxGender.SelectedIndex == 0) { gender = GenderType.Male; } if (lstBoxGender.SelectedIndex == 1) { gender = GenderType.Female; } if (lstBoxGender.SelectedIndex == 2) { gender = GenderType.Unknown; } try { int zero = 0; int result; animalObject.Age = Convert.ToInt32(ageString); if (animalObject.Age <= 0) { //Divide by zero if this occurs to test catching exception result = animalObject.Age / zero; MessageBox.Show("Invalid age", "Error try again", MessageBoxButtons.OK, MessageBoxIcon.Error); txtAge.Clear(); txtAge.Focus(); return; } } catch (InvalidValueException ex) { MessageBox.Show("Invalid age", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); txtAge.Clear(); txtAge.Focus(); return; } //catchin exception catch (Exception ex) { MessageBox.Show("Invalid age", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); txtAge.Clear(); txtAge.Focus(); return; } // string importantInfo = txtImportantInfo.Text.Trim(); txtImportantInfo.Text = importantInfo; //assign vars for animals animalObject.NickName = txtName.Text; //set an id to each animal animalObject.ID = Convert.ToString(m_animalManager.GetNewID); //Save the object into the registry m_animalManager.Add(animalObject); //add to the special data text area txtSpecialData.Text = Environment.NewLine + "Important info: " + importantInfo + " " + animalObject.GetAnimalSpecificData(); // animalObject.NickName = String.IsNullOrEmpty(txtName.Text) ? "No name" : txtName.Text; animalObject.GetAnimalSpecificData(); UpdateRegedAnimalList(); DataBaseAccess dbAccess = new DataBaseAccess(); //create a table DataTable table = dbAccess.LoadAnimalData(); //save animal object to table m_animalManager.CreateAnimals(table); } else { MessageBox.Show("Error", "Invalid input no animal entered", MessageBoxButtons.OK, MessageBoxIcon.Error); } }