تطبيق compteur de calories بأندرويد الجزء لثاني

imadbelasri Android
AN

فهاد الجزء الثاني من تطبيق compteur de calories بأندرويد غادي نشوفوا الملفات لي غادي يمكنوننا باش نديرو ل connexion مع la base de données sqlite ولي هي intégrée مع أندرويد كما غادي نشوفوا كيفاش نزيدو نعدلو أو نمسحوا المعلومات من قاعدة البيانات.


نظرة سريعة بالفيديو


1- الملف Food.java

كنمشي للمجلد java فل package com كنزيد package جديد كنسميه model فيه كنزيد ملف جديد كنسميه Food لي عبارة عن class java فيها المعلومات ديال كل ماكلة زادها المستخدم ولي عبارة عن des variables وعندي أيضا ل constructeur وgetters وsetters لي كيمكنونا من استرجاع المعلومات من بعد مكن créer l'objet من la classe Food الكود ديال الملف هو :

                                                    
                                                        package model;

import java.io.Serializable;

/**
 * Created by BELASRIIMAD on 09/02/2016.
 */
public class Food implements Serializable {
    private static final long serialVersionId = 10L;
    private String FoodName;
    private int calories;
    private int foodId;
    private String recorDate;
    public Food(String Food,int cal,int Id,String Date){
        FoodName = Food;
        calories = cal;
        foodId = Id;
        recorDate = Date;
    }
    public Food(){

    }
    public static long getSerialVersionId() {
        return serialVersionId;
    }

    public String getFoodName() {
        return FoodName;
    }

    public int getFoodId() {
        return foodId;
    }

    public int getCalories() {
        return calories;
    }

    public String getRecorDate() {
        return recorDate;
    }

    public void setCalories(int calories) {
        this.calories = calories;
    }

    public void setFoodName(String foodName) {
        FoodName = foodName;
    }

    public void setFoodId(int foodId) {
        this.foodId = foodId;
    }

    public void setRecorDate(String recorDate) {
        this.recorDate = recorDate;
    }
}

                                                    
                                                

2- الملف Utils.java

دائما فالمجلد java فل package com كنزيد package جديد كنسميه utils فيه كنزيد ملف جديد كنسميه Utils.java لي عبارة عن class java فيها fonction formatNumber لي كتاخد واحد ل value int ولي غادي تردها sous forme d'un nombre entier الكود ديال الملف هو :

                                                        
                                                            package util;

import java.text.DecimalFormat;

/**
 * Created by BELASRIIMAD on 12/02/2016.
 */
public class Utils {
    public static String formatNumber(int value){
        //formater un nombre sous la forme 1,000
        DecimalFormat formatter = new DecimalFormat("#,###,###");
        String formatted = formatter.format(value);
        return formatted;
    }
}

                                                        
                                                    

3- الملف Constants.java

دائما فالمجلد java فل package com كنزيد package جديد كنسميه data فيه كنزيد ملف جديد كنسميه Constants.java لي عبارة عن class java فيها المعلومات الخاصة بقاعدة البيانات الإسم ديالها وديال la table وles champs الكود ديال الملف هو :

                                                        
                                                            package data;

/**
 * Created by BELASRIIMAD on 09/02/2016.
 */
public class Constants {
    public static final String DATABASE_NAME = "caldb";
    public static final int DATABASE_VERSION = 1;
    public static final String TABLE_NAME = "food_table";
    public static final String FOOD_NAME = "name";
    public static final String FOOD_CALORIES_NAME = "calories";
    public static final String DATE_FOOD = "date";
    public static final String KEY_ID = "_id";
}

                                                        
                                                    

4- الملف DataBaseHandler.java

دائما فالمجلد java فل package data كنزيد ملف جديد كنسميه DataBaseHandler.java لي عبارة عن class java لي غادي يكونوا فيها les requêtes sql لي غادي يمكنونا من الإضافة التعديل والحدف فهنا la classe كت hériter من la classe SQLiteOpenHelper منبعد عندي واحد ل arraylist لي غادي تاخد les données من la base de données من بعد عندي ل constructeur لي كياخد السمية ديال la base de données ولي كتجينا من Constants.java و ملي كن créer l'objet من la classe كتزاد la table ب les champs ديالها من بعد عندنا ل fonction getSavedItems لي كترجع le nombre d'aliments لي ف la base منبعد عندي deleteFood لي كتمسح أكلة من قاعدة البيانات بالإعتماد على ل id ديالها من بعد كاين  addFood ليكتزيد أكلة من بعد كاين getFoods لي كترجع  les aliments من la base الكود ديال الملف هو :


                                                        
                                                            package data;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;

import model.Food;

/**
 * Created by BELASRIIMAD on 09/02/2016.
 */
public class DataBaseHandler extends SQLiteOpenHelper {

    private ArrayList<Food> foodList = new ArrayList<>();
    public DataBaseHandler(Context context) {
        super(context,Constants.DATABASE_NAME,null,Constants.DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_TABLE = "CREATE TABLE "+ Constants.TABLE_NAME + "(" +
                               Constants.KEY_ID + " INTEGER PRIMARY KEY ," + Constants.FOOD_NAME + " TEXT ," +
                               Constants.FOOD_CALORIES_NAME + " INTEGER ," + Constants.DATE_FOOD + " Long);";
        db.execSQL(CREATE_TABLE);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL(" DROP TABLE IF EXISTS" + Constants.TABLE_NAME);
        //create a new one
        onCreate(db);
    }
    //get total foods saved
    public int getSavedItems(){
        int totalItems = 0;
        String query = " SELECT * FROM " + Constants.TABLE_NAME;
        SQLiteDatabase dba = this.getReadableDatabase();
        Cursor cursor = dba.rawQuery(query,null);
        totalItems = cursor.getCount();
        cursor.close();
        dba.close();
        return totalItems;
    }
    //get Total calories
    public int getTotalCalories(){
        int cals = 0;
        String query = " SELECT SUM(" + Constants.FOOD_CALORIES_NAME + ")" + " FROM " + Constants.TABLE_NAME;
        SQLiteDatabase dba = this.getReadableDatabase();
        Cursor cursor = dba.rawQuery(query,null);
        if(cursor.moveToNext()){
            cals = cursor.getInt(0);
        }
        cursor.close();
        dba.close();
        return cals;
    }
    //delete food
    public void deleteFood(int id){
        SQLiteDatabase dba = this.getReadableDatabase();
        dba.delete(Constants.TABLE_NAME, Constants.KEY_ID + " = ? ", new String[]{String.valueOf(id)});
        dba.close();
    }
    //add food
    public void addFood(Food food){
        SQLiteDatabase dba = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(Constants.FOOD_NAME,food.getFoodName());
        values.put(Constants.FOOD_CALORIES_NAME,food.getCalories());
        values.put(Constants.DATE_FOOD, food.getRecorDate());
        dba.insert(Constants.TABLE_NAME, null, values);
        Log.v("Aliment ajouté", "yes");
        dba.close();
    }
    public ArrayList<Food> getFoods(){
        foodList.clear();
        SQLiteDatabase dba = this.getReadableDatabase();
        Cursor cursor = dba.query(Constants.TABLE_NAME,new String[]{Constants.KEY_ID,Constants.FOOD_NAME,Constants.FOOD_CALORIES_NAME,Constants.DATE_FOOD},null,null,null,null,Constants.DATE_FOOD + " DESC ");
        if(cursor.moveToNext()){
            do {
                 Food food = new Food();
                 food.setFoodName(cursor.getString(cursor.getColumnIndex(Constants.FOOD_NAME)));
                 food.setCalories(cursor.getInt(cursor.getColumnIndex(Constants.FOOD_CALORIES_NAME)));
                 food.setFoodId(cursor.getInt(cursor.getColumnIndex(Constants.KEY_ID)));
                 DateFormat dateFormat = DateFormat.getDateInstance();
                 String date = dateFormat.format(new Date(cursor.getLong(cursor.getColumnIndex(Constants.DATE_FOOD))).getTime());
                 food.setRecorDate(date);
                 foodList.add(food);
            }while(cursor.moveToNext());
        }
        cursor.close();
        dba.close();
        return foodList;
    }

}