private static void copyInternal(Composable source, Composed target, BeanWrapper parent) { // copy(source, target); if (target instanceof Mixture) { Mixture mixture = (Mixture) target; String totalPropName = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, mixture.getSubstanceName() + "Total"); if (parent.isReadableProperty(totalPropName) && parent.getPropertyType(totalPropName) == Double.class) { Double total = (Double) parent.getPropertyValue(totalPropName); if (total != null) { if (mixture.isComplete()) { double t = mixture.getAmount(); mixture.setRemains(Math.max(total - t, 0.0)); } else { mixture.setAmount(total); } } } } }
public static void copy(NutritionInfo source, Composed target) { for (Substance substance : target) { String propName = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, substance.getSubstanceName()); if (!propName.equals(null)) { Double value = 0.0; switch (propName) { case "fiber": value = source.getFiber(); break; case "ash": value = source.getAsh(); break; case "carbohydrates": value = source.getCarbohydratesTotal(); break; case "cholesterol": value = source.getCholesterol(); break; case "ethanol": value = source.getEthanol(); break; case "water": value = source.getWater(); break; case "fats": value = source.getFatsTotal(); break; case "proteins": value = source.getProteinsTotal(); break; // case ": sodium": value = source.get;break; // case ": potassium": value = source.getPo;break; // case ": calcium": value = source.getFiber();break; // case ": phosphorus": value = source.getFiber();break; // case ": magnesium": value = source.getFiber();break; // case ": iron": value = source.getFiber();break; // case ": zinc": value = source.getFiber();break; // case ": copper": value = source.getFiber();break; // case ": manganese": value = source.getFiber();break; // case ": iodine": value = source.getFiber();break; // case ": vitaminA": value = source.getFiber();break; // case ": retinol": value = source.getFiber();break; // case ": betaCarotene": value = source.getFiber();break; // case ": vitaminD": value = source.getFiber();break; // case ": vitaminE": value = source.getFiber();break; // case ": thiamine": value = source.getFiber();break; // case ": riboflavin": value = source.getFiber();break; // case ": niacin": value = source.getFiber();break; // case ": vitaminB6": value = source.getFiber();break; // case ": folicAcid": value = source.getFiber();break; // case ": vitaminB12": value = source.getFiber();break; // case ": vitaminC": value = source.getFiber();break; default: break; } if (value != null && value >= 0) { if (value > 0) // write.addToText(substance.getSubstanceName()+" -> "+value); substance.setAmount(value); } else { substance.setAmount(Double.NaN); if (target instanceof Mixture) { ((Mixture) target).setComplete(false); } } } } }