diff --git a/src/main/java/com/mousetech/gourmetj/utils/TimeConverter.java b/src/main/java/com/mousetech/gourmetj/utils/TimeConverter.java new file mode 100644 index 0000000..6550ea9 --- /dev/null +++ b/src/main/java/com/mousetech/gourmetj/utils/TimeConverter.java @@ -0,0 +1,53 @@ +/** + * Copyright (C) 2022, Tim Holloway + * + * Date written: Jan 9, 2022 + * Author: Tim Holloway + */ +package com.mousetech.gourmetj.utils; + +import javax.faces.application.FacesMessage; +import javax.faces.component.UIComponent; +import javax.faces.context.FacesContext; +import javax.faces.convert.Converter; +import javax.faces.convert.ConverterException; +import javax.faces.convert.FacesConverter; +import javax.faces.validator.ValidatorException; + +import org.apache.commons.lang3.StringUtils; + +/** + * Converts complex time durations, using TimeFormatter + * + * @author timh + * @since Jan 9, 2022 + */ +@FacesConverter("com.mousetech.gourmetj.utils.TimeConverter") +public class TimeConverter implements Converter { + + /** + * Parse incoming time string before passing to backing bean. + */ + @Override + public Integer getAsObject(FacesContext context, + UIComponent component, String value) { + if (StringUtils.isBlank(value)) { + return null; + } + Long tv = TimeFormatter.parseTime(value); + if (tv == null) { + throw new ConverterException( + new FacesMessage("Invalid time")); + } + return tv.intValue(); + } + + /** + * Format display/edit text from backing bean to View + */ + @Override + public String getAsString(FacesContext context, + UIComponent component, Integer value) { + return TimeFormatter.formatTime(Long.valueOf(value)); + } +} diff --git a/src/main/resources/META-INF/resources/detailEdit.xhtml b/src/main/resources/META-INF/resources/detailEdit.xhtml index f9a139c..afed994 100644 --- a/src/main/resources/META-INF/resources/detailEdit.xhtml +++ b/src/main/resources/META-INF/resources/detailEdit.xhtml @@ -12,7 +12,7 @@ Gourmet Recipe Manager - + @@ -92,6 +93,30 @@ value="#{recipeDetailBean.recipe.cuisine}" completeMethod="#{recipeDetailBean.cuisineSuggestions}" /> + + + + + + + + + + @@ -247,7 +272,7 @@ @@ -282,7 +307,9 @@ /> - + E @@ -359,14 +386,13 @@ diff --git a/src/main/resources/META-INF/resources/main.xhtml b/src/main/resources/META-INF/resources/main.xhtml index 33b0230..e4385b4 100644 --- a/src/main/resources/META-INF/resources/main.xhtml +++ b/src/main/resources/META-INF/resources/main.xhtml @@ -39,7 +39,7 @@ - diff --git a/src/main/resources/META-INF/resources/recipeDetails.xhtml b/src/main/resources/META-INF/resources/recipeDetails.xhtml index 8523d0d..bd2c852 100644 --- a/src/main/resources/META-INF/resources/recipeDetails.xhtml +++ b/src/main/resources/META-INF/resources/recipeDetails.xhtml @@ -76,14 +76,16 @@ />