diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..aecd8c8 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +text eol=lf +*.java text diff --git a/.gitignore b/.gitignore index 889cb7f..e4d0c4e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ target/ *.class .classpath -.project \ No newline at end of file +.project +.idea +*.iml diff --git a/src/main/java/org/drtshock/Potato.java b/src/main/java/org/drtshock/Potato.java index a4a4ca0..d74b016 100644 --- a/src/main/java/org/drtshock/Potato.java +++ b/src/main/java/org/drtshock/Potato.java @@ -6,6 +6,9 @@ import java.net.URL; import java.util.ArrayList; import java.util.List; +/** + * A delicious tuber that is eaten by peoples all over the world. + */ public class Potato implements Tuber { private final List condiments = new ArrayList(); @@ -17,28 +20,57 @@ public class Potato implements Tuber { System.out.println("Of course potato is prepared and delicious."); } catch (NotDeliciousException e) { System.err.println("Fatal error! How could potato not be delicious?"); - return; } } + /** + * Gets the condiments on this potato. + * + * @return Mutable list of condiments + */ + public List getCondiments() { + return this.condiments; + } + + /** + * Prepares the potato for consumption. Adds various condiments and prints them to stdout. Ensures that the potato + * is delicious. If it is not, a {@link NotDeliciousException} is thrown. + * + * @throws NotDeliciousException If the potato is not delicious + */ public void prepare() throws NotDeliciousException { this.addCondiments("sour cream", "chives", "butter", "crumbled bacon", "grated cheese", "ketchup", "salt", "tabasco"); this.listCondiments(); - if(!this.isDelicious()) throw new NotDeliciousException(); + if (!this.isDelicious()) throw new NotDeliciousException(); } + /** + * Adds condiments to the potato. + * + * @param names Names of the condiments to add + */ public void addCondiments(String... names) { for (String condimentName : names) { - this.condiments.add(new Condiment(condimentName)); + this.getCondiments().add(new Condiment(condimentName)); } } + /** + * Prints the names of the condiments on this potato to stdout. + * + * @see #getCondiments() + */ public void listCondiments() { - for (Condiment condiment : this.condiments) { + for (Condiment condiment : this.getCondiments()) { System.out.println(condiment.getName()); } } + /** + * Checks if the potato is put into the oven. + * + * @return true if potato is in the oven, false if otherwise + */ public boolean isPutIntoOven() { try { final URL url = new URL("https://www.google.com/search?q=potato"); @@ -53,20 +85,38 @@ public class Potato implements Tuber { } } + /** + * Checks if this potato is baked. Returns the result of {@link #isPutIntoOven()}. + * + * @return true if this potato is baked, false if otherwise + */ public boolean isBaked() { return this.isPutIntoOven(); } + /** + * Checks if this potato is delicious. Returns the result of {@link #isBaked()}. + * + * @return true if this potato is delicious, false if otherwise + */ @Override public boolean isDelicious() { return this.isBaked(); } + /** + * Propagates a new potato. + * + * @return A new potato + */ @Override public Tuber propagate() { return new Potato(); } + /** + * A type of food added to tubers. + */ private class Condiment { private final String name; @@ -74,6 +124,11 @@ public class Potato implements Tuber { this.name = name; } + /** + * Gets the name of this condiment. + * + * @return Name + */ public String getName() { return this.name; }