StepModel.java 4.78 KB
package com.dinhcv.lifelogpedometer.model;

import com.dinhcv.lifelogpedometer.model.database.entities.m_step;
import com.dinhcv.lifelogpedometer.model.structure.StepInfo;
import com.dinhcv.lifelogpedometer.utils.Debug;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class StepModel {

    private StepInfo entity2StepInfo(m_step e) {

        StepInfo p = new StepInfo();

        p.setId(e.id);
        p.setStep( e.step);
        p.setDate( new Date(e.date *1000));

        return p;
    }



    public List<StepInfo> getStepList(){


        List<m_step> steps = m_step.find(
                m_step.class,
                null,
                null,
                null,
                null,
                null
        );

        if (steps != null){
            Debug.normal("Step Info list Size is: "+steps.size());
        }else {
            Debug.warn("Step Info list is null...");
        }

        if (steps.size() >1 ){
            Debug.warn("Found %d Step of List", steps.size());
        }

        //convert to IInfo

        List<StepInfo> stepInfos = new ArrayList<>();

        for (int i = 0; i<steps.size(); i++) {
            if (i != 0) {
                StepInfo stepInfo = entity2StepInfo(steps.get(i));
                // add to list
                stepInfos.add(stepInfo);
            }
        }


        return stepInfos;
    }


    public StepInfo getStepById(int id){

        m_step step = m_step.findById(
                m_step.class,
                id, "id"
        );

        //check results
        if (step == null) {
            Debug.normal("Step is null");
            return null;
        }

        //convert to food info

        StepInfo stepInfo  = entity2StepInfo(step);
        Debug.normal("Step id: "+stepInfo.getId() +" And step = "+stepInfo.getStep());

        return stepInfo;
    }

    public StepInfo getStepByDate(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.HOUR_OF_DAY, 0);
        calendar.add(Calendar.MINUTE, 0);
        Date fromDate = calendar.getTime();

        Calendar calendar1 = Calendar.getInstance();
        calendar1.setTime(date);
        calendar1.add(Calendar.HOUR_OF_DAY, 23);
        calendar1.add(Calendar.MINUTE, 59);
        Date toDate = calendar1.getTime();

        String whereStr = "date > " + fromDate.getTime()/1000 + " AND time_out < "+ toDate.getTime()/1000;
        List<m_step> steps = m_step.find(m_step.class,
                whereStr,
                null,
                null,
                null,
                null);
        if (steps == null) {
            Debug.normal("Step is null");
            return null;
        }


        StepInfo stepInfo = entity2StepInfo(steps.get(0));
        Debug.normal("Login Success");

        return stepInfo;

    }

    public StepInfo getStepOnMonth(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.HOUR_OF_DAY, 0);
        calendar.add(Calendar.MINUTE, 0);
        Date fromDate = calendar.getTime();

        Calendar calendar1 = Calendar.getInstance();
        calendar1.setTime(date);
        calendar1.add(Calendar.HOUR_OF_DAY, 23);
        calendar1.add(Calendar.MINUTE, 59);
        Date toDate = calendar1.getTime();

        String whereStr = "date > " + fromDate.getTime()/1000 + " AND time_out < "+ toDate.getTime()/1000;
        List<m_step> steps = m_step.find(m_step.class,
                whereStr,
                null,
                null,
                null,
                null);
        if (steps == null) {
            Debug.normal("Step is null");
            return null;
        }


        StepInfo stepInfo = entity2StepInfo(steps.get(0));
        Debug.normal("Login Success");

        return stepInfo;

    }


    public boolean saveStepDate(StepInfo stepInfo){

        m_step step = m_step.findById(m_step.class, stepInfo.getId(), "id");
        if (step == null) {
            Debug.normal("User is null. And create new user");
            step = new m_step();
        }

        step.step = stepInfo.getStep();
        step.date = stepInfo.getDate().getTime() /1000;

        long t = step.save();
        if (t < 0){
            Debug.error("Error. Can not save step");
            return false;
        }
        Debug.normal("Success. Save step success");
        return true;
    }

    public boolean deleteStep(int uid){
        String whereStr = "id = ?";
        int status = m_step.delete(m_step.class,
                whereStr,
                new String[] {String.valueOf(uid)});
        if (status < 0) {
            Debug.error("Error. Can delete step");
            return false;
        }
        Debug.normal("Delete step success");

        return true;
    }


}