Have downloadable shopping list
This commit is contained in:
parent
18410682de
commit
06bebb390c
|
@ -0,0 +1,71 @@
|
||||||
|
package com.mousetech.gourmetj.utils;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.primefaces.model.ByteArrayContent;
|
||||||
|
import org.primefaces.model.StreamedContent;
|
||||||
|
|
||||||
|
import com.mousetech.gourmetj.ShopIngredient;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a Primefaces file output content for an ingredient
|
||||||
|
* list in YAML format.
|
||||||
|
*
|
||||||
|
* @author timh
|
||||||
|
* @since Jan 15, 2022
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class YamlShoppingList {
|
||||||
|
|
||||||
|
public static StreamedContent createDownload(
|
||||||
|
List<ShopIngredient> ingredientList) {
|
||||||
|
ByteArrayOutputStream ary = new ByteArrayOutputStream();
|
||||||
|
PrintWriter wtr = new PrintWriter(ary);
|
||||||
|
wtr.println("---");
|
||||||
|
formatContent(wtr, ingredientList);
|
||||||
|
wtr.close();
|
||||||
|
byte[] bas = ary.toByteArray();
|
||||||
|
|
||||||
|
StreamedContent dlList = new ByteArrayContent(bas,
|
||||||
|
"text/text", "shopping_list.yml");
|
||||||
|
return dlList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Output line items in the ingredient list with topics for
|
||||||
|
* each Shopping Category.
|
||||||
|
*
|
||||||
|
* @param wtr Output Writer
|
||||||
|
* @param ingredientList Ingredient list to output.
|
||||||
|
*/
|
||||||
|
private static void formatContent(PrintWriter wtr,
|
||||||
|
List<ShopIngredient> ingredientList) {
|
||||||
|
String oldShopcat = null;
|
||||||
|
for (ShopIngredient ing : ingredientList) {
|
||||||
|
String newShopcat = ing.getShopCat();
|
||||||
|
if (StringUtils.isBlank(newShopcat)) {
|
||||||
|
newShopcat = "Unassigned";
|
||||||
|
}
|
||||||
|
if (!StringUtils.equals(newShopcat, oldShopcat)) {
|
||||||
|
wtr.println(newShopcat + ":");
|
||||||
|
oldShopcat = newShopcat;
|
||||||
|
}
|
||||||
|
wtr.print(" - ");
|
||||||
|
String displa = ing.getDisplayAmount();
|
||||||
|
wtr.print(displa);
|
||||||
|
if (!displa.isBlank()) {
|
||||||
|
wtr.print(' ');
|
||||||
|
}
|
||||||
|
String unit = ing.getUnit();
|
||||||
|
if (StringUtils.isNotBlank(unit)) {
|
||||||
|
wtr.print(unit);
|
||||||
|
wtr.print(' ');
|
||||||
|
}
|
||||||
|
wtr.println(ing.getItem());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user