瀏覽代碼

Make Rests no longer "optional"

Sam Jaffe 5 年之前
父節點
當前提交
cf60474789

+ 3 - 3
src/main/lombok/org/leumasjaffe/recipe/model/Phase.java

@@ -2,7 +2,6 @@ package org.leumasjaffe.recipe.model;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Optional;
 import java.util.stream.Stream;
 
 import org.leumasjaffe.observer.Observable;
@@ -18,7 +17,7 @@ public class Phase extends Observable.Instance implements CompoundRecipeComponen
 	String vessel = "";
 	Preparation preparation = new Preparation();
 	List<Step> cooking = new ArrayList<>();
-	Optional<Rest> rest = Optional.empty();
+	Rest rest = new Rest();
 	
 	public Stream<Ingredient> getIngredientsAsStream() {
 		return cooking.stream().flatMap(RecipeComponent::getIngredientsAsStream);
@@ -32,7 +31,8 @@ public class Phase extends Observable.Instance implements CompoundRecipeComponen
 	public CollatedDuration getCollatedDuration() {
 		final Duration prep = preparation.getIngredients().isEmpty() ?
 				Duration.ZERO : preparation.getDuration();
-		final Duration rest = this.rest.map(Rest::getDuration).orElse(Duration.ZERO);
+		final Duration rest = this.rest.getWhere() == Rest.Where.NONE
+				? Duration.ZERO : this.rest.getDuration();
 		final Duration cooking = this.cooking.stream().map(Step::getDuration)
 				.reduce(Duration.ZERO, Duration::plus);
 		return new CollatedDuration(prep, cooking, prep.plus(cooking).plus(rest));

+ 9 - 5
src/main/lombok/org/leumasjaffe/recipe/model/Rest.java

@@ -6,20 +6,24 @@ import lombok.AccessLevel;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.experimental.FieldDefaults;
 
 @Data @AllArgsConstructor @NoArgsConstructor @EqualsAndHashCode(callSuper=false)
 public class Rest extends Observable.Instance {
-	@AllArgsConstructor @Getter @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
+	@AllArgsConstructor @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
 	public enum Where {
-		FREEZER("in the freezer"), REFRIGERATOR("in the refrigerator"),
+		NONE(""), FREEZER("in the freezer"), REFRIGERATOR("in the refrigerator"),
 		ROOM_TEMPERATURE("at room temperature"), WARM_PLACE("in a warm place");
 		
 		String humanReadable;
+		
+		@Override
+		public String toString() {
+			return humanReadable;
+		}
 	}
 	
-	Where where;
-	Duration duration;
+	Where where = Where.NONE;
+	Duration duration = Duration.ZERO;
 }

+ 2 - 2
src/main/lombok/org/leumasjaffe/recipe/view/PhasePanel.java

@@ -34,7 +34,7 @@ public class PhasePanel extends JPanel {
 		panelSteps.setGap(5);
 		add(panelSteps);
 		
-		phase.getRest().ifPresent(rest -> add(new RestPanel(rest)));
+		add(new RestPanel(phase.getRest()));
 
 		panelSteps.setModel(phase.getCooking(), added -> {
 			listener.setObserved(phase, allChildren(phase));
@@ -48,7 +48,7 @@ public class PhasePanel extends JPanel {
 	private static List<Observable> allChildren(Phase phase) {
 		List<Observable> children = new ArrayList<>(phase.getCooking());
 		children.add(phase.getPreparation());
-		phase.getRest().ifPresent(children::add);
+		children.add(phase.getRest());
 		return children;
 	}
 	

+ 1 - 2
src/test/java/org/leumasjaffe/recipe/model/PhaseTest.java

@@ -6,7 +6,6 @@ import static org.hamcrest.collection.IsCollectionWithSize.*;
 import static org.hamcrest.core.IsCollectionContaining.*;
 
 import java.util.Arrays;
-import java.util.Optional;
 
 import org.junit.jupiter.api.Test;
 
@@ -51,7 +50,7 @@ class PhaseTest {
 		final Rest rest = new Rest();
 		rest.setWhere(Rest.Where.REFRIGERATOR);
 		rest.setDuration(dur);
-		phase.setRest(Optional.of(rest));
+		phase.setRest(rest);
 		assertEquals(Duration.ZERO, phase.getDuration());
 	}
 

+ 1 - 2
src/test/java/org/leumasjaffe/recipe/view/PhasePanelTest.java

@@ -3,7 +3,6 @@ package org.leumasjaffe.recipe.view;
 import static org.mockito.Mockito.*;
 
 import java.util.Arrays;
-import java.util.Optional;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -35,7 +34,7 @@ class PhasePanelTest extends SwingTestCase {
 	void setUp() {
 		doReturn(Arrays.asList(stub)).when(stuff).getCooking();
 		doReturn(prep).when(stuff).getPreparation();
-		doReturn(Optional.of(rest)).when(stuff).getRest();
+		doReturn(rest).when(stuff).getRest();
 		panel = new PhasePanel(stuff);
 		
 		listener.setObserved(stuff);