|
@@ -1,5 +1,11 @@
|
|
|
package org.leumasjaffe.recipe.model;
|
|
package org.leumasjaffe.recipe.model;
|
|
|
|
|
|
|
|
|
|
+import java.util.Optional;
|
|
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
+
|
|
|
|
|
+import com.fasterxml.jackson.annotation.JsonCreator;
|
|
|
|
|
+import com.fasterxml.jackson.annotation.JsonValue;
|
|
|
|
|
+
|
|
|
import lombok.AccessLevel;
|
|
import lombok.AccessLevel;
|
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.EqualsAndHashCode;
|
|
import lombok.EqualsAndHashCode;
|
|
@@ -24,6 +30,24 @@ public class Duration {
|
|
|
int minSeconds = 0;
|
|
int minSeconds = 0;
|
|
|
int maxSeconds = 0;
|
|
int maxSeconds = 0;
|
|
|
|
|
|
|
|
|
|
+ @JsonCreator
|
|
|
|
|
+ public Duration(final String serial) {
|
|
|
|
|
+ final String[] tokens = serial.split(" ");
|
|
|
|
|
+ final boolean isRange = tokens.length == 4;
|
|
|
|
|
+
|
|
|
|
|
+ final Optional<Display> rv = Stream.of(Display.values())
|
|
|
|
|
+ .filter(v -> v.abbreviation.equals(tokens[isRange ? 3 : 1])).findFirst();
|
|
|
|
|
+
|
|
|
|
|
+ displayAs = rv.orElseThrow(() -> new IllegalArgumentException("Unknown time measure: " + tokens[1]));
|
|
|
|
|
+
|
|
|
|
|
+ if (isRange) {
|
|
|
|
|
+ minSeconds = (int) (Float.parseFloat(tokens[0]) * displayAs.inSeconds);
|
|
|
|
|
+ maxSeconds = (int) (Float.parseFloat(tokens[2]) * displayAs.inSeconds);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ maxSeconds = (int) (Float.parseFloat(tokens[0]) * displayAs.inSeconds);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
public Duration plus(Duration rhs) {
|
|
public Duration plus(Duration rhs) {
|
|
|
final Display newDisplayAs = displayAs.ordinal() < rhs.displayAs.ordinal() ?
|
|
final Display newDisplayAs = displayAs.ordinal() < rhs.displayAs.ordinal() ?
|
|
|
displayAs : rhs.displayAs;
|
|
displayAs : rhs.displayAs;
|
|
@@ -50,7 +74,7 @@ public class Duration {
|
|
|
return this;
|
|
return this;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- @Override
|
|
|
|
|
|
|
+ @Override @JsonValue
|
|
|
public String toString() {
|
|
public String toString() {
|
|
|
StringBuilder build = new StringBuilder();
|
|
StringBuilder build = new StringBuilder();
|
|
|
if (minSeconds != 0) {
|
|
if (minSeconds != 0) {
|