DBManager.java 8.16 KB
package com.sunvote.xpadapp.db;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.sunvote.util.LogUtil;
import com.sunvote.xpadapp.bean.Bills;
import com.sunvote.xpadapp.bean.Candidates;
import com.sunvote.xpadapp.bean.Meeting;
import com.sunvote.xpadapp.bean.SubBills;

import java.util.ArrayList;
import java.util.List;

/**
 * * Created by Elvis on 2017/11/30 15:07
 * Email:Eluis@psunsky.com
 * 版权所有:长沙中天电子设计开发有限公司
 * 人大通用版XPadAppRD重构
 */
public class DBManager {
	public static String TAG = "DBManager";
	private DBHelper helper;
	private SQLiteDatabase db;
	private int confId = -1;

	public boolean checkDB() {
		if(db == null){
			db = helper.openDatabase(confId);
		}
		return db != null;
	}

	private DBManager() {
	}

	private static volatile DBManager instance ;

	public static DBManager getInstance() {
		if(instance == null){
			synchronized (DBManager.class){
				if(instance == null){
					instance = new DBManager();
				}
			}
		}
		return instance;
	}

	public void setMeetingid(int meetingid){
		closeDB();
		helper = new DBHelper(meetingid);
		confId = meetingid;
		db = helper.openDatabase(confId);
	}

	public int getConfId() {
		return confId;
	}

	public Meeting getMettingInfo() {
		Meeting info = new Meeting();
		Cursor c = null;
		try {
			checkDB();
			String sql = "SELECT * FROM Meeting";
			c = db.rawQuery(sql, null);
			while (c.moveToNext()) {
				info.setMeetingID(confId);
				info.setMeetingTitle(c.getString(c.getColumnIndex("MeetingTitle")));
				info.setMeetingAddress(c.getString(c.getColumnIndex("MeetingAddress")));
				info.setMeetingMember(c.getString(c.getColumnIndex("MeetingMember")));
				info.setMeetingMemo(c.getString(c.getColumnIndex("MeetingMemo")));
				info.setBackground(c.getString(c.getColumnIndex("Background")));
				info.setBeginDate(c.getString(c.getColumnIndex("BeginDate")));
				info.setEndDate(c.getString(c.getColumnIndex("EndDate")));
				info.setCreateDate(c.getString(c.getColumnIndex("CreateTime")));
				info.setFolderPath(c.getString(c.getColumnIndex("FolderPath")));
				info.setState(c.getString(c.getColumnIndex("State")));
				break;
			}
		} catch (Exception e) {
			LogUtil.e(TAG,e);
		} finally {
			if (c != null) {
				c.close();
			}
		}
		return info;
	}

	public Bills getBillInfo(int billId) {
		Bills info = new Bills();
		Cursor c = null;
		try {
			checkDB();
			String sql = "SELECT * FROM Bills WHERE BillID=" + billId;
			c = db.rawQuery(sql, null);
			while (c.moveToNext()) {
				info.setBillId(c.getInt(c.getColumnIndex("BillID")));
				info.setBillNo(c.getInt(c.getColumnIndex("BillNo")));
				info.setBillType(c.getInt(c.getColumnIndex("BillType")));
				info.setSubType(c.getInt(c.getColumnIndex("BillSubType")));
				info.setTitle(c.getString(c.getColumnIndex("BillTitle")));
				info.setMemo(c.getString(c.getColumnIndex("BillMemo")));
				info.setBillFile(c.getString(c.getColumnIndex("BillFile")));
				info.setBillOptions(c.getString(c.getColumnIndex("BillPar")));
				break;
			}
		} catch (Exception e) {
			info = null;
			LogUtil.e(TAG,e);
		} finally {
			if (c != null) {
				c.close();
			}
		}
		return info;
	}

	public List<Bills> getBillItems() {
		ArrayList<Bills> titleList = new ArrayList<Bills>();
		Cursor c = null;
		try {
			checkDB();
			String sql = "SELECT * FROM Bills";
			c = db.rawQuery(sql, null);
			while (c.moveToNext()) {
				Bills it = new Bills();
				it.setBillId(c.getInt(c.getColumnIndex("BillID")));
				it.setBillNo(c.getInt(c.getColumnIndex("BillNo")));
				it.setTitle(c.getString(c.getColumnIndex("BillTitle")));
				it.setMemo(c.getString(c.getColumnIndex("BillMemo")));
				it.setBillFile(c.getString(c.getColumnIndex("BillFile")));
				it.setBillType(c.getInt(c.getColumnIndex("BillType")));
				titleList.add(it);
			}
		} catch (Exception e) {
			LogUtil.e(TAG,e);
		} finally {
			if (c != null) {
				c.close();
			}
		}
		return titleList;
	}

	public List<Bills> getBillItemsMain(int meetingId) {
		ArrayList<Bills> titleList = new ArrayList<Bills>();
		Cursor c = null;
		confId = meetingId;
		try {
			checkDB();
			String sql = " select * from Bills where BillSubType is null or BillSubType = 0 order by BillNo ";
			c = db.rawQuery(sql, null);
			while (c.moveToNext()) {
				Bills it = new Bills();
				it.setBillId(c.getInt(c.getColumnIndex("BillID")));
				it.setBillNo(c.getInt(c.getColumnIndex("BillNo")));
				it.setTitle(c.getString(c.getColumnIndex("BillTitle")));
				it.setMemo(c.getString(c.getColumnIndex("BillMemo")));
				it.setBillFile(c.getString(c.getColumnIndex("BillFile")));
				it.setBillType(c.getInt(c.getColumnIndex("BillType")));
				it.setSubType(c.getInt(c.getColumnIndex("BillSubType")));
				titleList.add(it);
			}
		} catch (Exception e) {
			LogUtil.e(TAG,e);
		} finally {
			if (c != null) {
				c.close();
			}
		}
		return titleList;
	}

	public List<Bills> getBillItemsMain(int meetingId, int billNo) {
		ArrayList<Bills> titleList = new ArrayList<Bills>();
		Cursor c = null;
		confId = meetingId;
		try {
			checkDB();
			String sql = "select * from Bills where BillType != 999 and BillNo = " + billNo + " order by BillNo";
			c = db.rawQuery(sql, null);
			while (c.moveToNext()) {
				Bills it = new Bills();
				it.setBillId(c.getInt(c.getColumnIndex("BillID")));
				it.setBillNo(c.getInt(c.getColumnIndex("BillNo")));
				it.setTitle(c.getString(c.getColumnIndex("BillTitle")));
				it.setMemo(c.getString(c.getColumnIndex("BillMemo")));
				it.setBillFile(c.getString(c.getColumnIndex("BillFile")));
				it.setBillType(c.getInt(c.getColumnIndex("BillType")));
				it.setSubType(c.getInt(c.getColumnIndex("BillSubType")));
				titleList.add(it);
			}
		} catch (Exception e) {
			LogUtil.e(TAG,e);
		} finally {
			if (c != null) {
				c.close();
			}
		}
		return titleList;
	}
	
	public List<Bills> getSubBillItems(int billid) {
		ArrayList<Bills> titleList = new ArrayList<Bills>();
		Cursor c = null;
		try {
			 checkDB();
			String sql = "SELECT * FROM SubBills WHERE BillID=" + billid + " ORDER BY SubBillNo";
			c = db.rawQuery(sql, null);
			while (c.moveToNext()) {
				Bills it = new Bills();
				it.setBillId(c.getInt(c.getColumnIndex("BillID")));
				it.setBillNo(c.getInt(c.getColumnIndex("SubBillNo")));
				it.setTitle(c.getString(c.getColumnIndex("BillTitle")));
				it.setMemo(c.getString(c.getColumnIndex("BillMemo")));
				it.setBillFile(c.getString(c.getColumnIndex("BillFile")));
				titleList.add(it);
			}
		} catch (Exception e) {
			LogUtil.e(TAG,e);
		} finally {
			if (c != null) {
				c.close();
			}
		}
		return titleList;
	}

	public List<SubBills> getMultiTitleItems(int billid) {
		ArrayList<SubBills> titleList = new ArrayList<SubBills>();
		Cursor c = null;
		try {
			checkDB();
			String sql = "SELECT * FROM SubBills WHERE BillID=" + billid + " ORDER BY SubBillNo";
			c = db.rawQuery(sql, null);
			while (c.moveToNext()) {
				SubBills it = new SubBills();
				it.setSubBillNo(c.getInt(c.getColumnIndex("SubBillNo")));
				it.setBillTitle(c.getString(c.getColumnIndex("BillTitle")));
				it.setBillMemo(c.getString(c.getColumnIndex("BillMemo")));
				it.setBillFile(c.getString(c.getColumnIndex("BillFile")));
				titleList.add(it);
			}
		} catch (Exception e) {
			LogUtil.e(TAG,e);
		} finally {
			if (c != null) {
				c.close();
			}
		}
		return titleList;
	}

	public List<Candidates> getCandidateList(int billid) {
		ArrayList<Candidates> titleList = new ArrayList<Candidates>();
		Cursor c = null;
		checkDB();
		try {
			String sql = "SELECT * FROM Candidates WHERE BillID=" + billid + " ORDER BY CandidateNo ASC";
			c = db.rawQuery(sql, null);
			while (c.moveToNext()) {
				Candidates it = new Candidates();
				it.setCandidateNo(c.getInt(c.getColumnIndex("CandidateNo")));
				it.setCandidateName(c.getString(c.getColumnIndex("CandidateName")));
				it.setCandidateMemo(c.getString(c.getColumnIndex("CandidateMemo")));
				it.setCandidateFile(c.getString(c.getColumnIndex("CandidateFile")));
				titleList.add(it);
			}
			Candidates it = new Candidates();
			titleList.add(it); // 另选他人
		} catch (Exception e) {
			LogUtil.e(TAG,e);
		} finally {
			if (c != null) {
				c.close();
			}
		}
		return titleList;
	}

	public void closeDB() {
		if (db != null) {
			db.close();
			db=null;
		}
	}
}