Skip to content

Commit

Permalink
Merge pull request #22 from caseydavenport/brewtoad
Browse files Browse the repository at this point in the history
Brewtoad
  • Loading branch information
Casey Davenport committed Nov 8, 2015
2 parents b199eed + fb51bfa commit 8590896
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 46 deletions.
14 changes: 11 additions & 3 deletions src/com/biermacht/brews/recipe/Instruction.java
Original file line number Diff line number Diff line change
Expand Up @@ -133,10 +133,18 @@ public String getBrewTimerTitle() {
public String getBrewTimerText() {
String s = "";
if (this.instructionType.equals(Instruction.TYPE_MASH)) {
double qts = Units.litersToQuarts(mashStep.getBeerXmlStandardInfuseAmount());
if (mashStep.getDisplayInfuseAmount() != 0) {
s += "Add " + String.format("%2.2f", mashStep.getDisplayInfuseAmount()) + " " + Units.getVolumeUnits() + " of " +
"" + String.format("%2.0f", mashStep.getDisplayInfuseTemp()) + Units.getTemperatureUnits() + "" +
" water.\n\n";
s += "Add " + String.format("%2.2f", mashStep.getDisplayInfuseAmount())
+ " " + Units.getVolumeUnits()
+ " ("
+ String.format("%2.2f", qts)
+ "qt)"
+ " of "
+ String.format("%2.0f", mashStep.getDisplayInfuseTemp())
+ Units.getTemperatureUnits()
+ ""
+ " water.\n\n";
}

if (mashStep.getDisplayDecoctAmount() != 0) {
Expand Down
4 changes: 3 additions & 1 deletion src/com/biermacht/brews/utils/IngredientHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,9 @@ public ArrayList<Recipe> getRecipesFromXml(Uri uri) throws IOException {
}
else {
Log.d("IngredientHandler", "Attempting to parse BeerXML file");
sp.parse(is, beerXmlReader);
InputSource inSrc = new InputSource(new StringReader(Utils.convertStreamToString(is)));
inSrc.setEncoding("ISO-8859-2");
sp.parse(inSrc, beerXmlReader);
list = beerXmlReader.getRecipes();
}

Expand Down
96 changes: 54 additions & 42 deletions src/com/biermacht/brews/xml/BeerXmlReader.java
Original file line number Diff line number Diff line change
Expand Up @@ -466,15 +466,15 @@ else if (qName.equalsIgnoreCase("FERMENTATION_STAGES")) {
}

else if (qName.equalsIgnoreCase("PRIMARY_AGE")) {
r.setFermentationAge(Recipe.STAGE_PRIMARY, (int) Double.parseDouble(currentValue.replace(",", ".")));
r.setFermentationAge(Recipe.STAGE_PRIMARY, (int) this.parseDouble(currentValue, 0.0));
}

else if (qName.equalsIgnoreCase("PRIMARY_TEMP")) {
r.setBeerXmlStandardFermentationTemp(Recipe.STAGE_PRIMARY, Float.parseFloat(currentValue));
}

else if (qName.equalsIgnoreCase("SECONDARY_AGE")) {
r.setFermentationAge(Recipe.STAGE_SECONDARY, (int) Double.parseDouble(currentValue.replace(",", ".")));
r.setFermentationAge(Recipe.STAGE_SECONDARY, (int) this.parseDouble(currentValue, 0.0));
}

else if (qName.equalsIgnoreCase("SECONDARY_TEMP")) {
Expand All @@ -483,7 +483,7 @@ else if (qName.equalsIgnoreCase("SECONDARY_TEMP")) {
}

else if (qName.equalsIgnoreCase("TERTIARY_AGE")) {
r.setFermentationAge(Recipe.STAGE_TERTIARY, (int) Double.parseDouble(currentValue.replace(",", ".")));
r.setFermentationAge(Recipe.STAGE_TERTIARY, (int) this.parseDouble(currentValue, 0.0));
}

else if (qName.equalsIgnoreCase("TERTIARY_TEMP")) {
Expand All @@ -509,15 +509,15 @@ else if (qName.equalsIgnoreCase("DISPLAY_FG")) {
}

else if (qName.equalsIgnoreCase("CARBONATION")) {
r.setCarbonation(Double.parseDouble(currentValue.replace(",", ".")));
r.setCarbonation(this.parseDouble(currentValue, r.getCarbonation()));
}

else if (qName.equalsIgnoreCase("FORCED_CARBONATION")) {
r.setIsForceCarbonated(currentValue.equalsIgnoreCase("TRUE"));
}

else if (qName.equalsIgnoreCase("CARBONATION_TEMP")) {
r.setBeerXmlStandardCarbonationTemp(Double.parseDouble(currentValue.replace(",", ".")));
r.setBeerXmlStandardCarbonationTemp(this.parseDouble(currentValue, r.getBeerXmlStandardCarbonationTemp()));
}

else if (qName.equalsIgnoreCase("CALORIES")) {
Expand All @@ -543,34 +543,38 @@ else if (qName.equalsIgnoreCase("TYPE")) {
if (currentValue.equalsIgnoreCase(Fermentable.TYPE_ADJUNCT)) {
type = Fermentable.TYPE_ADJUNCT;
}
if (currentValue.equalsIgnoreCase(Fermentable.TYPE_EXTRACT)) {
else if (currentValue.equalsIgnoreCase(Fermentable.TYPE_EXTRACT)) {
type = Fermentable.TYPE_EXTRACT;
}
if (currentValue.contains("Extract")) {
else if (currentValue.contains("Extract")) {
type = Fermentable.TYPE_EXTRACT;
}
if (currentValue.equalsIgnoreCase(Fermentable.TYPE_GRAIN)) {
else if (currentValue.equalsIgnoreCase(Fermentable.TYPE_GRAIN)) {
type = Fermentable.TYPE_GRAIN;
}
if (currentValue.equalsIgnoreCase(Fermentable.TYPE_SUGAR)) {
else if (currentValue.equalsIgnoreCase(Fermentable.TYPE_SUGAR)) {
type = Fermentable.TYPE_SUGAR;
}
else {
Log.e("BeerXmlReader", "Invalid fermentable type: " + currentValue);
type = Fermentable.TYPE_GRAIN;
}

f.setFermentableType(type);
}

else if (qName.equalsIgnoreCase("AMOUNT")) {
double amt = Double.parseDouble(currentValue.replace(",", "."));
double amt = this.parseDouble(currentValue, f.getBeerXmlStandardAmount());
f.setBeerXmlStandardAmount(amt);
}

else if (qName.equalsIgnoreCase("YIELD")) {
double yield = Double.parseDouble(currentValue.replace(",", "."));
double yield = this.parseDouble(currentValue, f.getYield());
f.setYield(yield);
}

else if (qName.equalsIgnoreCase("COLOR")) {
double color = Double.parseDouble(currentValue.replace(",", "."));
double color = this.parseDouble(currentValue, f.getLovibondColor());
f.setLovibondColor(color);
}

Expand Down Expand Up @@ -608,7 +612,7 @@ else if (qName.equalsIgnoreCase("PROTEIN")) {
}

else if (qName.equalsIgnoreCase("MAX_IN_BATCH")) {
double maxInBatch = Double.parseDouble(currentValue.replace(",", "."));
double maxInBatch = this.parseDouble(currentValue, f.getMaxInBatch());
f.setMaxInBatch(maxInBatch);
}

Expand Down Expand Up @@ -653,11 +657,11 @@ else if (qName.equalsIgnoreCase("ORIGIN")) {
}

else if (qName.equalsIgnoreCase("ALPHA")) {
h.setAlphaAcidContent(Double.parseDouble(currentValue.replace(",", ".")));
h.setAlphaAcidContent(this.parseDouble(currentValue, h.getAlphaAcidContent()));
}

else if (qName.equalsIgnoreCase("AMOUNT")) {
double amt = Double.parseDouble(currentValue.replace(",", "."));
double amt = this.parseDouble(currentValue, h.getBeerXmlStandardAmount());
h.setBeerXmlStandardAmount(amt);
}

Expand All @@ -684,7 +688,7 @@ else if (qName.equalsIgnoreCase("USE")) {
}

else if (qName.equalsIgnoreCase("TIME")) {
h.setBeerXmlStandardTime((int) Double.parseDouble(currentValue.replace(",", ".")));
h.setBeerXmlStandardTime((int) this.parseDouble(currentValue, 0.0));
}

else if (qName.equalsIgnoreCase("NOTES")) {
Expand Down Expand Up @@ -776,7 +780,7 @@ else if (qName.equalsIgnoreCase("FORM")) {
}

else if (qName.equalsIgnoreCase("AMOUNT")) {
double amt = Double.parseDouble(currentValue.replace(",", "."));
double amt = this.parseDouble(currentValue, y.getBeerXmlStandardAmount());
y.setBeerXmlStandardAmount(amt);
}

Expand All @@ -793,12 +797,12 @@ else if (qName.equalsIgnoreCase("PRODUCT_ID")) {
}

else if (qName.equalsIgnoreCase("MIN_TEMPERATURE")) {
double minTemp = Double.parseDouble(currentValue.replace(",", "."));
double minTemp = this.parseDouble(currentValue, y.getMinTemp());
y.setMinTemp(minTemp);
}

else if (qName.equalsIgnoreCase("MAX_TEMPERATURE")) {
double maxTemp = Double.parseDouble(currentValue.replace(",", "."));
double maxTemp = this.parseDouble(currentValue, y.getMaxTemp());
y.setMaxTemp(maxTemp);
}

Expand All @@ -807,7 +811,7 @@ else if (qName.equalsIgnoreCase("FLOCCULATION")) {
}

else if (qName.equalsIgnoreCase("ATTENUATION")) {
double attenuation = Double.parseDouble(currentValue.replace(",", "."));
double attenuation = this.parseDouble(currentValue, y.getAttenuation());
y.setAttenuation(attenuation);
}

Expand Down Expand Up @@ -890,7 +894,7 @@ else if (qName.equalsIgnoreCase("TYPE")) {
}

else if (qName.equalsIgnoreCase("AMOUNT")) {
double amt = Double.parseDouble(currentValue.replace(",", "."));
double amt = this.parseDouble(currentValue, misc.getBeerXmlStandardAmount());
misc.setBeerXmlStandardAmount(amt);
}

Expand Down Expand Up @@ -1000,43 +1004,43 @@ else if (qName.equalsIgnoreCase("TYPE")) {
}

else if (qName.equalsIgnoreCase("OG_MIN")) {
style.setMinOg(Double.parseDouble(currentValue.replace(",", ".")));
style.setMinOg(this.parseDouble(currentValue, style.getMinOg()));
}

else if (qName.equalsIgnoreCase("OG_MAX")) {
style.setMaxOg(Double.parseDouble(currentValue.replace(",", ".")));
style.setMaxOg(this.parseDouble(currentValue, style.getMaxOg()));
}

else if (qName.equalsIgnoreCase("FG_MIN")) {
style.setMinFg(Double.parseDouble(currentValue.replace(",", ".")));
style.setMinFg(this.parseDouble(currentValue, style.getMinFg()));
}

else if (qName.equalsIgnoreCase("FG_MAX")) {
style.setMaxFg(Double.parseDouble(currentValue.replace(",", ".")));
style.setMaxFg(this.parseDouble(currentValue, style.getMaxFg()));
}

else if (qName.equalsIgnoreCase("IBU_MIN")) {
style.setMinIbu(Double.parseDouble(currentValue.replace(",", ".")));
style.setMinIbu(this.parseDouble(currentValue, style.getMinIbu()));
}

else if (qName.equalsIgnoreCase("IBU_MAX")) {
style.setMaxIbu(Double.parseDouble(currentValue.replace(",", ".")));
style.setMaxIbu(this.parseDouble(currentValue, style.getMaxIbu()));
}

else if (qName.equalsIgnoreCase("COLOR_MIN")) {
style.setMinColor(Double.parseDouble(currentValue.replace(",", ".")));
style.setMinColor(this.parseDouble(currentValue, style.getMinColor()));
}

else if (qName.equalsIgnoreCase("COLOR_MAX")) {
style.setMaxColor(Double.parseDouble(currentValue.replace(",", ".")));
style.setMaxColor(this.parseDouble(currentValue, style.getMaxColor()));
}

else if (qName.equalsIgnoreCase("ABV_MIN")) {
style.setMinAbv(Double.parseDouble(currentValue.replace(",", ".")));
style.setMinAbv(this.parseDouble(currentValue, style.getMinAbv()));
}

else if (qName.equalsIgnoreCase("ABV_MAX")) {
style.setMaxAbv(Double.parseDouble(currentValue.replace(",", ".")));
style.setMaxAbv(this.parseDouble(currentValue, style.getMaxAbv()));
}

else if (qName.equalsIgnoreCase("NOTES")) {
Expand Down Expand Up @@ -1069,31 +1073,31 @@ else if (qName.equalsIgnoreCase("VERSION")) {
}

else if (qName.equalsIgnoreCase("GRAIN_TEMP")) {
profile.setBeerXmlStandardGrainTemp(Double.parseDouble(currentValue.replace(",", ".")));
profile.setBeerXmlStandardGrainTemp(this.parseDouble(currentValue, profile.getBeerXmlStandardGrainTemp()));
}

else if (qName.equalsIgnoreCase("NOTES")) {
profile.setNotes(currentValue);
}

else if (qName.equalsIgnoreCase("TUN_TEMP")) {
profile.setBeerXmlStandardTunTemp(Double.parseDouble(currentValue.replace(",", ".")));
profile.setBeerXmlStandardTunTemp(this.parseDouble(currentValue, profile.getBeerXmlStandardTunTemp()));
}

else if (qName.equalsIgnoreCase("SPARGE_TEMP")) {
profile.setBeerXmlStandardSpargeTemp(Double.parseDouble(currentValue.replace(",", ".")));
profile.setBeerXmlStandardSpargeTemp(this.parseDouble(currentValue, profile.getBeerXmlStandardSpargeTemp()));
}

else if (qName.equalsIgnoreCase("PH")) {
profile.setpH(Double.parseDouble(currentValue.replace(",", ".")));
profile.setpH(this.parseDouble(currentValue, profile.getpH()));
}

else if (qName.equalsIgnoreCase("TUN_WEIGHT")) {
profile.setBeerXmlStandardTunWeight(Double.parseDouble(currentValue.replace(",", ".")));
profile.setBeerXmlStandardTunWeight(this.parseDouble(currentValue, profile.getBeerXmlStandardTunWeight()));
}

else if (qName.equalsIgnoreCase("TUN_SPECIFIC_HEAT")) {
profile.setBeerXmlStandardTunSpecHeat(Double.parseDouble(currentValue.replace(",", ".")));
profile.setBeerXmlStandardTunSpecHeat(this.parseDouble(currentValue, profile.getBeerXmlStandardTunSpecHeat()));
}

else if (qName.equalsIgnoreCase("EQUIP_ADJUST")) {
Expand Down Expand Up @@ -1126,7 +1130,7 @@ else if (currentValue.equalsIgnoreCase(MashStep.TEMPERATURE)) {
}

else if (qName.equalsIgnoreCase("INFUSE_AMOUNT")) {
mashStep.setBeerXmlStandardInfuseAmount(Double.parseDouble(currentValue.replace(",", ".")));
mashStep.setBeerXmlStandardInfuseAmount(this.parseDouble(currentValue, mashStep.getBeerXmlStandardInfuseAmount()));
}

else if (qName.equalsIgnoreCase("INFUSE_TEMP")) {
Expand All @@ -1147,19 +1151,19 @@ else if (qName.equalsIgnoreCase("DECOCTION_AMT")) {
}

else if (qName.equalsIgnoreCase("STEP_TIME")) {
mashStep.setStepTime(Double.parseDouble(currentValue.replace(",", ".")));
mashStep.setStepTime(this.parseDouble(currentValue, mashStep.getStepTime()));
}

else if (qName.equalsIgnoreCase("STEP_TEMP")) {
mashStep.setBeerXmlStandardStepTemp(Double.parseDouble(currentValue.replace(",", ".")));
mashStep.setBeerXmlStandardStepTemp(this.parseDouble(currentValue, mashStep.getBeerXmlStandardStepTemp()));
}

else if (qName.equalsIgnoreCase("RAMP_TIME")) {
mashStep.setRampTime(Double.parseDouble(currentValue.replace(",", ".")));
mashStep.setRampTime(this.parseDouble(currentValue, mashStep.getRampTime()));
}

else if (qName.equalsIgnoreCase("END_TEMP")) {
mashStep.setBeerXmlStandardEndTemp(Double.parseDouble(currentValue.replace(",", ".")));
mashStep.setBeerXmlStandardEndTemp(this.parseDouble(currentValue, mashStep.getBeerXmlStandardEndTemp()));
}

else if (qName.equalsIgnoreCase("DESCRIPTION")) {
Expand Down Expand Up @@ -1193,4 +1197,12 @@ public void characters(char[] ch, int start, int length) throws SAXException {

}

private double parseDouble(String s, Double defaultValue) {
try {
return Double.parseDouble(s);
} catch (Exception e) {
Log.e("BeerXmlReader", "Exception parsing double: " + s);
return defaultValue;
}
}
}

0 comments on commit 8590896

Please sign in to comment.