package com.diandi.demo.db; import android.content.Context; import android.util.Log; import com.diandi.demo.model.Plan; import com.diandi.demo.util.Calculator; import com.diandi.demo.util.DataSortUtil; import com.diandi.demo.util.TimeUtil; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.stmt.PreparedQuery; import com.j256.ormlite.stmt.QueryBuilder; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; /** * ******************************************************************************* * ********* Author : klob(kloblic@gmail.com) . * ********* Date : 2014-11-29 . * ********* Time : 11:46 . * ********* Project name : Diandi1.18 . * ********* Version : 1.0 * ********* Copyright @ 2014, klob, All Rights Reserved * ******************************************************************************* */ public class PlanDao { private final static String TAG = "DBUtils"; public static Dao<Plan, Integer> planDao = null; public PlanDao(Context context) { if (planDao == null) { DataHelper dbHelper = new DataHelper(context); try { planDao = dbHelper.getDao(Plan.class); } catch (SQLException e) { Log.e(TAG, "得到Dao失败"); e.printStackTrace(); } } } public void createPlans(List<Plan> lists) { for (Plan plan : lists) { try { planDao.createOrUpdate(plan); } catch (SQLException e) { Log.e(TAG, "增加失败"); e.printStackTrace(); } } } public void createPlan(Plan plan) { try { planDao.createOrUpdate(plan); } catch (SQLException e) { Log.e(TAG, "增加失败"); e.printStackTrace(); } } public void deletePlan(Plan plan) { try { planDao.delete(plan); } catch (SQLException e) { Log.e(TAG, "删除失败"); e.printStackTrace(); } } public void deletePlanById(int id) { try { planDao.deleteById(id); } catch (SQLException e) { Log.e(TAG, "删除失败"); e.printStackTrace(); } } public List<Plan> getPlans() { List<Plan> plans = new ArrayList<Plan>(); try { plans = planDao.queryForAll(); } catch (SQLException e) { Log.e(TAG, "查询失败"); e.printStackTrace(); } return plans; } public List<Plan> getSortPlans() { List<Plan> plans = new ArrayList<Plan>(); try { plans = planDao.queryForAll(); } catch (SQLException e) { Log.e(TAG, "查询失败"); e.printStackTrace(); } sortPlans(plans); Log.v(TAG, "" + plans.toString()); return plans; } public Plan getPlanById(int id) { Plan plan = null; try { plan = planDao.queryForId(id); } catch (SQLException e) { Log.e(TAG, "查询失败"); e.printStackTrace(); } return plan; } public List<Plan> query(String attributeName, String attributeValue) throws SQLException { QueryBuilder<Plan, Integer> queryBuilder = planDao.queryBuilder(); queryBuilder.where().eq(attributeName, attributeValue); PreparedQuery<Plan> preparedQuery = queryBuilder.prepare(); return query(preparedQuery); } public List<Plan> query(PreparedQuery<Plan> preparedQuery) throws SQLException { return planDao.query(preparedQuery); } public void updatePlan(Plan plan) { try { planDao.update(plan); } catch (SQLException e) { Log.e(TAG, "更新失败"); e.printStackTrace(); } } public void updatePlanById(int id) { Plan plan = null; try { plan = planDao.queryForId(id); } catch (SQLException e) { Log.e(TAG, "查询失败"); e.printStackTrace(); } } public void sortPlans(List<Plan> plans) { for (Plan plan : plans) { int m = plan.getProgress(); if (plan.getTop().equals("true")) plan.setType(Plan.URGENT_TOP); else if (m == 100) { plan.setType(Plan.URGENT_FINISHED); } else { int k = plan.getProgress(); int a = Calculator.calculate(TimeUtil.getDatetimeString(plan.getPlanDate())); Log.v(TAG, plan.getTitle() + " " + a); if (k > 75) plan.setType(Plan.URGENT_LOW); else if (k > 50) plan.setType(Plan.URGENT_MIDDLE); else if (k > 25) plan.setType(Plan.URGENT_HIGH); else plan.setType(Plan.URGENT_EXTRA); } } DataSortUtil<Plan> dataSortUtil = new DataSortUtil<Plan>(); dataSortUtil.Sort(plans, "getType", "des"); createPlans(plans); } }