Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,14 @@
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>


</project>
4 changes: 4 additions & 0 deletions src/main/java/PizzaOrder.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import controller.CliController;
import exception.PizzaException;
import exception.StorageException;
import storage.DefaultStorage;
import model.*;
import storage.Storage;

import java.util.Scanner;

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/controller/CliController.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public static void printHelpMessage() {
"заказанной пиццы).");
}

public static void printStoreMessage(HashMap<Ingredient, Integer> ingredients) {
public static void printStoreMessage(Map<Ingredient, Integer> ingredients) {
if (ingredients != null && ingredients.size() > 0) {
StringBuilder message = new StringBuilder(
"На данный момент в хранилище имеются следующие ингриденты:\n");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package model;
package exception;

public class PizzaException extends Exception {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package model;
package exception;

public class StorageException extends Exception {

Expand Down
75 changes: 0 additions & 75 deletions src/main/java/model/DefaultStorage.java

This file was deleted.

2 changes: 2 additions & 0 deletions src/main/java/model/Pizza.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package model;

import exception.PizzaException;

import java.util.HashMap;

/**
Expand Down
15 changes: 0 additions & 15 deletions src/main/java/model/Storage.java

This file was deleted.

45 changes: 45 additions & 0 deletions src/main/java/storage/DefaultStorage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package storage;

import model.Ingredient;
import exception.StorageException;

import java.util.HashMap;
import java.util.Map;

public class DefaultStorage extends Storage {
private Map<Ingredient, Integer> ingredients = new HashMap<>();

@Override
public void addIngredient(Ingredient ingredient, int count) throws StorageException {
if (ingredient == null || count <= 0) {
throw new StorageException("Введён некорректный ингредиент или его количество");
}
if (ingredients.containsKey(ingredient)) {
ingredients.put(ingredient, ingredients.get(ingredient) + count);
} else {
ingredients.put(ingredient, count);
}
}

@Override
public void removeIngredient(Ingredient ingredient, int count) throws StorageException {
if (ingredient == null || count <= 0) {
throw new StorageException("Введён некорректный ингридиент или его количество");
}
if (ingredients.containsKey(ingredient)) {
int alreadyExistIngredientCount = ingredients.get(ingredient);
if (count >= alreadyExistIngredientCount) {
ingredients.remove(ingredient);
} else {
ingredients.put(ingredient, alreadyExistIngredientCount - count);
}
} else {
throw new StorageException("Вы пытаетесь удалить несуществующий ингридиент в хранилище");
}
}

@Override
public Map<Ingredient, Integer> getStorageIngredients() {
return ingredients;
}
}
19 changes: 19 additions & 0 deletions src/main/java/storage/Storage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package storage;

import exception.StorageException;
import model.Ingredient;

import java.util.HashMap;
import java.util.Map;

public abstract class Storage {

public abstract void addIngredient(Ingredient ingredient, int count)
throws StorageException;

public abstract Map<Ingredient, Integer> getStorageIngredients()
throws StorageException;

public abstract void removeIngredient(Ingredient ingredient, int count)
throws StorageException;
}
41 changes: 41 additions & 0 deletions src/test/java/storage/DefaultStorageTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package storage;

import exception.StorageException;
import model.Ingredient;
import org.junit.*;


public class DefaultStorageTest {

private Storage storage;
private Ingredient testIngredient;

@Before
public void setUp() {
storage = new DefaultStorage();
testIngredient = new Ingredient("Cucumber");
}

@Test
public void addNotExistIngredient() throws StorageException {
storage.addIngredient(testIngredient, 2);

Assert.assertEquals((Integer)2, storage.getStorageIngredients().get(testIngredient));
}

@Test
public void removeIngredientNotNull() throws StorageException {
storage.addIngredient(testIngredient, 2);
storage.removeIngredient(testIngredient, 1);

Assert.assertEquals((Integer)1, storage.getStorageIngredients().get(testIngredient));
}

@Test
public void removeIngredientNull() throws StorageException {
storage.addIngredient(testIngredient, 2);
storage.removeIngredient(testIngredient, 2);

Assert.assertNull(storage.getStorageIngredients().get(testIngredient));
}
}