Search in sources :

Example 11 with Food

use of com.faltenreich.diaguard.shared.data.database.entity.Food in project Diaguard by Faltenreich.

the class FoodImport method importData.

@Override
public void importData() {
    try {
        CSVReader reader = CsvImport.getCsvReader(context, FOOD_CSV_FILE_NAME);
        String languageCode = locale.getLanguage();
        String[] nextLine = reader.readNext();
        int languageRow = CsvImport.getLanguageColumn(languageCode, nextLine);
        List<Food> foodList = new ArrayList<>();
        while ((nextLine = reader.readNext()) != null) {
            if (nextLine.length >= 13) {
                Food food = new Food();
                food.setName(nextLine[languageRow]);
                food.setIngredients(food.getName());
                food.setLabels(context.getString(R.string.food_common));
                food.setLanguageCode(languageCode);
                // Main nutrients are given in grams, so we take them as they are
                food.setCarbohydrates(FloatUtils.parseNullableNumber(nextLine[4]));
                food.setEnergy(FloatUtils.parseNullableNumber(nextLine[5]));
                food.setFat(FloatUtils.parseNullableNumber(nextLine[6]));
                food.setFatSaturated(FloatUtils.parseNullableNumber(nextLine[7]));
                food.setFiber(FloatUtils.parseNullableNumber(nextLine[8]));
                food.setProteins(FloatUtils.parseNullableNumber(nextLine[9]));
                food.setSalt(FloatUtils.parseNullableNumber(nextLine[10]));
                food.setSugar(FloatUtils.parseNullableNumber(nextLine[12]));
                // Mineral nutrients are given in milligrams, so we divide them by 1.000
                Float sodium = FloatUtils.parseNullableNumber(nextLine[11]);
                sodium = sodium != null ? sodium / 1000 : null;
                food.setSodium(sodium);
                foodList.add(food);
            }
        }
        Collections.reverse(foodList);
        FoodDao.getInstance().deleteAll();
        FoodDao.getInstance().bulkCreateOrUpdate(foodList);
        Log.i(TAG, String.format("Imported %d common food items from csv", foodList.size()));
        PreferenceStore.getInstance().setDidImportCommonFood(locale, true);
    } catch (IOException exception) {
        Log.e(TAG, exception.toString());
    }
}
Also used : CSVReader(com.opencsv.CSVReader) ArrayList(java.util.ArrayList) IOException(java.io.IOException) Food(com.faltenreich.diaguard.shared.data.database.entity.Food)

Aggregations

Food (com.faltenreich.diaguard.shared.data.database.entity.Food)11 ArrayList (java.util.ArrayList)4 Category (com.faltenreich.diaguard.shared.data.database.entity.Category)2 Entry (com.faltenreich.diaguard.shared.data.database.entity.Entry)2 EntryTag (com.faltenreich.diaguard.shared.data.database.entity.EntryTag)2 FoodEaten (com.faltenreich.diaguard.shared.data.database.entity.FoodEaten)2 Meal (com.faltenreich.diaguard.shared.data.database.entity.Meal)2 Measurement (com.faltenreich.diaguard.shared.data.database.entity.Measurement)2 Tag (com.faltenreich.diaguard.shared.data.database.entity.Tag)2 FoodSavedEvent (com.faltenreich.diaguard.shared.event.data.FoodSavedEvent)2 IOException (java.io.IOException)2 DateTime (org.joda.time.DateTime)2 SuppressLint (android.annotation.SuppressLint)1 Nullable (androidx.annotation.Nullable)1 AppCompatButton (androidx.appcompat.widget.AppCompatButton)1 DateStrategy (com.faltenreich.diaguard.feature.export.job.date.DateStrategy)1 OriginDateStrategy (com.faltenreich.diaguard.feature.export.job.date.OriginDateStrategy)1 ProductDto (com.faltenreich.diaguard.feature.food.networking.dto.ProductDto)1 SelectArg (com.j256.ormlite.stmt.SelectArg)1 CSVReader (com.opencsv.CSVReader)1