@Override public boolean conformes(Product data) { String[] argParts = this.argument.split(" "); String mathSymbol = argParts[0]; // in g or ml double polylAmount = -1.0; for (EnergyNutrientsVitamins nutrient : data.getIngredientsAndAllergens().getEnergyNutrientsVitamins()) { if ((nutrient.getNutritionalValueReference() == 100.0) && ((((nutrient.getNutritionalValueReferenceUnit() == ServingSizeUnitOfMeasureCode.GR) || (nutrient.getNutritionalValueReferenceUnit() == ServingSizeUnitOfMeasureCode.ML))))) { for (NutritionalContentItem content : nutrient.getNutrients()) { if (content.getNutritionalContent() == NutritionalContentCode.POLYL) { polylAmount = content.getNutritionalContentQuantityContained(); if (content.getNutritionalContentQuantityContain() == ServingSizeUnitOfMeasureCode.EMPTY || content.getNutritionalContentQuantityContain() == PTN) { return false; } else { break; } } } break; } } if (polylAmount < 0) { // something went wrong, or there are simply no POLYL contained return false; } double amount = -1.0; if (argParts[1].contains("%")) { amount = Double.parseDouble(argParts[1].replace("%", "")); // here we get the percentage of polyl in the product // EDIT: if we use the polyl per 100 gr, then we don't need this // polylAmount = (polylAmount / convertNetWeight(data)) * 100; } else { amount = Double.parseDouble(argParts[1].replace("g", "")); } if (mathSymbol.equals("<")) { return polylAmount < amount; } else if (mathSymbol.equals("=")) { return polylAmount == amount; } else if (mathSymbol.equals(">")) { return polylAmount > amount; } else { Logger.getLogger(Logger.GLOBAL_LOGGER_NAME) .log(Level.WARNING, "Allowed operators: < OR > OR =. Chosen operator: {0}", mathSymbol); return false; } }
/** Test of analyze method, of class NutrientComparisonAnalysis. */ @Test public void testAnalyze() { MeanDeviationBasedNutrientComparisonAnalysis analysis = new MeanDeviationBasedNutrientComparisonAnalysis(measures); ArticleDescription desc = new ArticleDescription(); GPCEntity gpc = new GPCEntity(); gpc.setClazz("50131900"); gpc.setBrick("10000168"); desc.setClassificationCategoryCode(gpc); IngredientsAndAllergens ingredients = new IngredientsAndAllergens(); EnergyNutrientsVitamins energyNutrients = new EnergyNutrientsVitamins(); /* First test: kcal value is too high */ // fill in data needed for analysis energyNutrients.setCalorificValueKcal(10000); energyNutrients.setCalorificValueKj(770); energyNutrients.setCalorificValueMeasurementPrecision(MeasurementPrecisionCode.APPROXIMATELY); energyNutrients.setNutritionalValueReference(100); energyNutrients.setNutritionalValueReferenceUnit(GR); List<NutritionalContentItem> nutrients = new ArrayList<>(); NutritionalContentItem fat = new NutritionalContentItem(); fat.setNutritionalContent(NutritionalContentCode.FAT); fat.setNutritionalContentMeasurementPrecision(MeasurementPrecisionCode.APPROXIMATELY); fat.setNutritionalContentQuantityContain(ServingSizeUnitOfMeasureCode.GR); fat.setNutritionalContentQuantityContained(10); nutrients.add(fat); NutritionalContentItem fasat = new NutritionalContentItem(); fasat.setNutritionalContent(NutritionalContentCode.FASAT); fasat.setNutritionalContentMeasurementPrecision(MeasurementPrecisionCode.APPROXIMATELY); fasat.setNutritionalContentQuantityContain(ServingSizeUnitOfMeasureCode.GR); fasat.setNutritionalContentQuantityContained(2); nutrients.add(fasat); NutritionalContentItem carbs = new NutritionalContentItem(); carbs.setNutritionalContent(NutritionalContentCode.CHOAVL); carbs.setNutritionalContentMeasurementPrecision(MeasurementPrecisionCode.APPROXIMATELY); carbs.setNutritionalContentQuantityContain(ServingSizeUnitOfMeasureCode.GR); carbs.setNutritionalContentQuantityContained(2.5); nutrients.add(carbs); NutritionalContentItem sugar = new NutritionalContentItem(); sugar.setNutritionalContent(NutritionalContentCode.SUGAR); sugar.setNutritionalContentMeasurementPrecision(MeasurementPrecisionCode.APPROXIMATELY); sugar.setNutritionalContentQuantityContain(ServingSizeUnitOfMeasureCode.GR); sugar.setNutritionalContentQuantityContained(0.0); nutrients.add(sugar); NutritionalContentItem protein = new NutritionalContentItem(); protein.setNutritionalContent(NutritionalContentCode.PRO); protein.setNutritionalContentMeasurementPrecision(MeasurementPrecisionCode.APPROXIMATELY); protein.setNutritionalContentQuantityContain(ServingSizeUnitOfMeasureCode.GR); protein.setNutritionalContentQuantityContained(23); nutrients.add(protein); NutritionalContentItem salt = new NutritionalContentItem(); salt.setNutritionalContent(NutritionalContentCode.SALTEQ); salt.setNutritionalContentMeasurementPrecision(MeasurementPrecisionCode.APPROXIMATELY); salt.setNutritionalContentQuantityContain(ServingSizeUnitOfMeasureCode.GR); salt.setNutritionalContentQuantityContained(16); nutrients.add(salt); energyNutrients.setNutrients(nutrients); ingredients.setEnergyNutrientsVitamins(Arrays.asList(energyNutrients)); Product product = ProductUtils.createProduct(desc, ingredients); boolean expResult = false; boolean result = analysis.analyze(product); assertEquals(expResult, result); }