diff --git a/src/main/java/io/zipcoder/Application.java b/src/main/java/io/zipcoder/Application.java index 3a257cb..860fff1 100644 --- a/src/main/java/io/zipcoder/Application.java +++ b/src/main/java/io/zipcoder/Application.java @@ -1,5 +1,47 @@ package io.zipcoder; +import java.util.Scanner; + public class Application { + + public static Scanner scan = new Scanner(System.in); + public String input=""; + private Integer numberOfPets; + private String petName; + private String petType; + PetInventory inventory = new PetInventory(); + + public static void main(String[] args) { + Application app = new Application(); + System.out.println("Hey Mr. Green Maker how many pets do you have?"); + app.numberOfPets = scan.nextInt(); + scan.nextLine(); + //app.setTotalNumberOfPets(nu); + app.PetApplication(); + } + public void setTotalNumberOfPets(int numberOfPets){ + this.numberOfPets = numberOfPets; + } + public int getTotalNumberOfPets(){ + return numberOfPets; + } + public void PetApplication(){ + + PetInventory inventory = new PetInventory(); + for(int i =0;i> pets; + + public PetInventory() { + this.pets = new HashMap>(); + + } + + public void addPet(String type, String name){ + if(hasEntry(type)){ + if(type.equalsIgnoreCase("cat")){ + Cat aCat =new Cat(name); + getArrayListForPets("Cat").add(aCat); + pets.put("Cat",getArrayListForPets("Cat")); + }else if(type.equalsIgnoreCase("dog")){ + Dog aDog = new Dog(name); + getArrayListForPets(type).add(aDog); + pets.put("Dog",getArrayListForPets("Dog")); + }else if(type.equalsIgnoreCase("otter")){ + Otter anOtter = new Otter(name); + getArrayListForPets("Otter").add(anOtter); + pets.put("Otter",getArrayListForPets("Otter")); + } + + }else { + if(type.equalsIgnoreCase("cat")){ + ArrayListcats = new ArrayList(); + Cat aCat =new Cat(name); + cats.add(aCat); + pets.put("Cat",cats); + }else if(type.equalsIgnoreCase("dog")){ + ArrayListdogs = new ArrayList(); + Dog aDog = new Dog(name); + dogs.add(aDog); + pets.put("Dog",dogs); + }else if(type.equalsIgnoreCase("otter")){ + ArrayListotters = new ArrayList(); + Otter anOtter = new Otter(name); + otters.add(anOtter); + pets.put("Otter",otters); + + } + + } + + + } + + public void removePet(String petName){ + for (Map.Entry> entry : pets.entrySet()) { + for (int i = 0; i < pets.entrySet().size(); i++) + if (entry.getValue().get(i).getName().equalsIgnoreCase(petName)) { + entry.getValue().remove(i); + } + } + + + } + + public String listPets(){ + StringBuilder builder = new StringBuilder(); + for (Map.Entry> entry : pets.entrySet()) { + for (int i = 0; i < pets.entrySet().size()-1; i++){ + builder.append(entry.getValue().get(i).getName()+ " says " + entry.getValue().get(i).speak() + "\n"); + + } + } + + return builder.toString(); + } + + public String getPetType(String name){ + for (String keys : pets.keySet()) { + for (int i = 0; i < getArrayListForPets(keys).size(); i++) { + if (getArrayListForPets(keys).get(i).getName().equalsIgnoreCase(name)) + return keys; + } + } + return null; + + } + + public ArrayList listOfPetsByName() { + ArrayList petNames = new ArrayList(); + for (Map.Entry> entry : pets.entrySet()) { + for (int i = 0; i < pets.entrySet().size()+1; i++) { + petNames.add(entry.getValue().get(i).getName()); + } + } + Collections.sort(petNames); + return petNames; + + } + public String listnamesOrdered(){ + String str =""; + ArrayListtotalPets = getAllPets(); + for(int i=0;i listOfPetsByTypeSorted(){ + ArrayList petNames = new ArrayList(); + for (Map.Entry> entry : pets.entrySet()) { + for (int i = 0; i < pets.entrySet().size(); i++) { + petNames.add(entry.getValue().get(i).getName()); + } + + } + + return petNames; + } + + public boolean hasEntry(String petType){ + if(pets.containsKey(petType)){ + return true; + } + return false; + } + public ArrayList getArrayListForPets(String petType){ + return pets.get(petType); + } + public ArrayList getAllPets(){ + ArrayListallPets = new ArrayList(); + for(String keys:pets.keySet()) { + for (int i = 0; i < getArrayListForPets(keys).size(); i++) { + allPets.add(getArrayListForPets(keys).get(i)); + } + } + return allPets; + } + + + +} diff --git a/src/main/java/io/zipcoder/perComparator.java b/src/main/java/io/zipcoder/perComparator.java new file mode 100644 index 0000000..73165bd --- /dev/null +++ b/src/main/java/io/zipcoder/perComparator.java @@ -0,0 +1,19 @@ +package io.zipcoder; + +import io.zipcoder.pets.Pet; + +import java.util.Comparator; + +public class perComparator implements Comparator{ + public int compare(Pet aPet, Pet anotherPet) { + String aPetClass = aPet.getClass().getSimpleName(); + String antherPetClass = anotherPet.getClass().getSimpleName(); + int compare = aPetClass.compareToIgnoreCase(antherPetClass); + if(compare==0){ + compare =(aPet.getName().compareToIgnoreCase(anotherPet.getName())); + } + + + return compare; + } +} diff --git a/src/main/java/io/zipcoder/pets/Cat.java b/src/main/java/io/zipcoder/pets/Cat.java new file mode 100644 index 0000000..f9abee2 --- /dev/null +++ b/src/main/java/io/zipcoder/pets/Cat.java @@ -0,0 +1,22 @@ +package io.zipcoder.pets; + +public class Cat extends Pet { + + private String name; + + public Cat (String catName) { + this.name = catName; + } + + public String speak(){ + return "Meow"; + } + + public String getName() { + return this.name; + } + + public void setName(String catName) { + this.name = catName; + } +} diff --git a/src/main/java/io/zipcoder/pets/Dog.java b/src/main/java/io/zipcoder/pets/Dog.java new file mode 100644 index 0000000..55b0be3 --- /dev/null +++ b/src/main/java/io/zipcoder/pets/Dog.java @@ -0,0 +1,22 @@ +package io.zipcoder.pets; + +public class Dog extends Pet { + private String name; + + public Dog(String dogName) { + this.name = dogName; + } + + public String speak(){ + return "Woof!"; + } + + public String getName() { + return this.name; + } + + public void setName(String aDogName) { + this.name = aDogName; + } + +} diff --git a/src/main/java/io/zipcoder/pets/Otter.java b/src/main/java/io/zipcoder/pets/Otter.java new file mode 100644 index 0000000..b4a8884 --- /dev/null +++ b/src/main/java/io/zipcoder/pets/Otter.java @@ -0,0 +1,23 @@ +package io.zipcoder.pets; + +public class Otter extends Pet { + private String name; + + public Otter(String otterName) { + this.name = otterName; + } + + public String speak(){ + return "Muahaha"; + } + + public String getName() { + return this.name; + } + + public void setName(String anOtterName) { + this.name = anOtterName; + + } + +} diff --git a/src/main/java/io/zipcoder/pets/Pet.java b/src/main/java/io/zipcoder/pets/Pet.java new file mode 100644 index 0000000..dc92c2f --- /dev/null +++ b/src/main/java/io/zipcoder/pets/Pet.java @@ -0,0 +1,30 @@ +package io.zipcoder.pets; + +abstract public class Pet implements PetBehavior, Comparable{ + + private String name; + + public String speak(){ + return null; + } + + public String getName() { + return null; + } + + public void setName(String aPetName) { + + } + + public int compareTo(Pet anyPet) { + + if (getName().compareTo(anyPet.getName()) > 0) { + return 1; + } else if (getName().compareTo(anyPet.getName()) < 0) { + return -1; + } else { + return getClass().getSimpleName().compareTo(getClass().getSimpleName()); + } + } + +} diff --git a/src/main/java/io/zipcoder/pets/PetBehavior.java b/src/main/java/io/zipcoder/pets/PetBehavior.java new file mode 100644 index 0000000..e95cc10 --- /dev/null +++ b/src/main/java/io/zipcoder/pets/PetBehavior.java @@ -0,0 +1,7 @@ +package io.zipcoder.pets; + +public interface PetBehavior { + + public String speak(); + +} diff --git a/src/test/java/io/zipcoder/ApplicationTest.java b/src/test/java/io/zipcoder/ApplicationTest.java index b744df5..62b7e7d 100644 --- a/src/test/java/io/zipcoder/ApplicationTest.java +++ b/src/test/java/io/zipcoder/ApplicationTest.java @@ -1,5 +1,36 @@ package io.zipcoder; +import org.junit.Before; +import org.junit.Test; + public class ApplicationTest { + + Application testApp; + + + @Before + public void setup() { + testApp = new Application(); + } + + @Test + public void getPetNameTest() { + + + } + + @Test + public void getPetTypeTest() { + + } + + @Test + public void getNumberOfPetsTest() { + + } + + + + } diff --git a/src/test/java/io/zipcoder/PetInventoryTest.java b/src/test/java/io/zipcoder/PetInventoryTest.java new file mode 100644 index 0000000..bd6a35c --- /dev/null +++ b/src/test/java/io/zipcoder/PetInventoryTest.java @@ -0,0 +1,125 @@ +package io.zipcoder; + +import io.zipcoder.pets.Cat; +import io.zipcoder.pets.Dog; +import io.zipcoder.pets.Otter; +import io.zipcoder.pets.Pet; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Map; + +public class PetInventoryTest { + + PetInventory testInventory; + + + @Before + public void setup() { + Map>petsTest; + testInventory = new PetInventory(); + } + + + @Test + public void addPetTest1() { + String petType = "cat"; + Cat testCat = new Cat("Winston"); + ArrayList testList = new ArrayList(); + testList.add(testCat); + testInventory.addPet(petType, "Winston"); + String expected = "Winston"; + String actual = testInventory.getArrayListForPets("petType").get(0).getName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void removePetTest() { + String petType = "dog"; + ArrayList testList = new ArrayList(); + Dog marky = new Dog("Marky"); + Dog ricky = new Dog("Ricky"); + testList.add(marky); + testList.add(ricky); + testInventory.pets.put(petType, testList); + testInventory.removePet("Marky"); + String expected = "Ricky"; + String actual = testInventory.pets.get(petType).get(0).getName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void listPetsTest() { + String petType1 = "otter"; + Otter testOtter = new Otter("Oliver"); + ArrayList otterList = new ArrayList(); + otterList.add(testOtter); + String petType2 = "dog"; + Dog testDog = new Dog("Dasher"); + ArrayList dogList = new ArrayList(); + dogList.add(testDog); + testInventory.pets.put(petType1, otterList); + testInventory.pets.put(petType2, dogList); + String actual = testInventory.listPets(); + String expected = "Dasher says Woof!\nOliver says Muahaha\n"; + Assert.assertEquals(expected, actual); + } + + @Test + public void getPetTypeTest() { + String petType = "dog"; + ArrayList testList = new ArrayList(); + Dog marky = new Dog("Marky"); + Dog ricky = new Dog("Ricky"); + testList.add(marky); + testList.add(ricky); + testInventory.pets.put(petType, testList); + String expected = "dog"; + String actual = testInventory.getPetType("Ricky"); + Assert.assertEquals(expected, actual); + } + + @Test + public void listOfPetsByNameTest() { + ArrayList testList = new ArrayList(); + Dog ricky = new Dog("Ricky"); + Dog marky = new Dog("Marky"); + testList.add(ricky); + testList.add(marky); + testInventory.pets.put("dog", testList); + ArrayList expected = new ArrayList(); + expected.add("Marky"); + expected.add("Ricky"); + + ArrayList actual = testInventory.listOfPetsByName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void listOfPetsByTypeTest() { + ArrayList testList1 = new ArrayList(); + Dog ricky = new Dog("Ricky"); + Dog marky = new Dog("Marky"); + testList1.add(ricky); + testList1.add(marky); + testInventory.pets.put("dog", testList1); + ArrayList testList2 = new ArrayList(); + Otter oliver = new Otter("Oliver"); + testList2.add(oliver); + testInventory.pets.put("otter", testList2); + ArrayList testList3 = new ArrayList(); + Cat zeus = new Cat("Zeus"); + testList3.add(zeus); + testInventory.pets.put("cat", testList3); + ArrayList expected = new ArrayList(); + expected.add("Zeus"); + expected.add("Marky"); + expected.add("Ricky"); + expected.add("Oliver"); + ArrayList actual = testInventory.listOfPetsByTypeSorted(); + Assert.assertEquals(expected, actual); + } + +} diff --git a/src/test/java/io/zipcoder/petsTest/CatTest.java b/src/test/java/io/zipcoder/petsTest/CatTest.java new file mode 100644 index 0000000..5e1e9d6 --- /dev/null +++ b/src/test/java/io/zipcoder/petsTest/CatTest.java @@ -0,0 +1,39 @@ +package io.zipcoder.petsTest; + +import io.zipcoder.pets.Cat; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class CatTest { + + Cat testCat; + + @Before + public void setup() { + testCat = new Cat("Walter"); + } + + @Test + public void speakTest() { + String expected = "Meow"; + String actual = testCat.speak(); + Assert.assertEquals(expected, actual); + } + + @Test + public void getNameTest() { + String expected = "Walter"; + String actual = testCat.getName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setNameTest() { + String expected = "Winston"; + testCat.setName("Winston"); + String actual = testCat.getName(); + Assert.assertEquals(expected, actual); + } + +} diff --git a/src/test/java/io/zipcoder/petsTest/DogTest.java b/src/test/java/io/zipcoder/petsTest/DogTest.java new file mode 100644 index 0000000..d45beb9 --- /dev/null +++ b/src/test/java/io/zipcoder/petsTest/DogTest.java @@ -0,0 +1,39 @@ +package io.zipcoder.petsTest; + +import io.zipcoder.pets.Dog; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class DogTest { + Dog testDog; + + @Before + public void setup() { + testDog = new Dog("Walter"); + } + + @Test + public void speakTest() { + String expected = "Woof"; + String actual = testDog.speak(); + Assert.assertEquals(expected, actual); + } + + @Test + public void getNameTest() { + String expected = "Walter"; + String actual = testDog.getName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setNameTest() { + String expected = "Arnold"; + testDog.setName("Arnold"); + String actual = testDog.getName(); + Assert.assertEquals(expected, actual); + } + + +} diff --git a/src/test/java/io/zipcoder/petsTest/OtterTest.java b/src/test/java/io/zipcoder/petsTest/OtterTest.java new file mode 100644 index 0000000..d045182 --- /dev/null +++ b/src/test/java/io/zipcoder/petsTest/OtterTest.java @@ -0,0 +1,38 @@ +package io.zipcoder.petsTest; + +import io.zipcoder.pets.Otter; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class OtterTest { + + Otter testOtter; + + @Before + public void setup() { + testOtter = new Otter("Oliver"); + } + + @Test + public void speakTest() { + String expected = "Muahaha"; + String actual = testOtter.speak(); + Assert.assertEquals(expected, actual); + } + + @Test + public void getNameTest() { + String expected = "Oliver"; + String actual = testOtter.getName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setNameTest() { + String expected = "Ortleib"; + testOtter.setName("Ortleib"); + String actual = testOtter.getName(); + Assert.assertEquals(expected, actual); + } +}