package com.webshrub.citizencomplaint.androidapp; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import java.util.ArrayList; import java.util.List; import static com.webshrub.citizencomplaint.androidapp.CitizenComplaintSQLiteHelper.*; /** * Created by IntelliJ IDEA. * User: Ahsan.Javed * Date: 5/6/13 * Time: 10:16 PM */ public class CitizenComplaintDataSource { private static CitizenComplaintDataSource instance; private SQLiteDatabase database; private CitizenComplaintDataSource(Context context) { CitizenComplaintSQLiteHelper helper = new CitizenComplaintSQLiteHelper(context); database = helper.getWritableDatabase(); } //no synchronized??? public static CitizenComplaintDataSource getInstance(Context context) { if (instance == null) { instance = new CitizenComplaintDataSource(context); } return instance; } public long createCitizenComplaint(CitizenComplaint citizenComplaint) { ContentValues values = new ContentValues(); values.put(COLUMN_COMPLAINT_ID, citizenComplaint.getComplaintId()); values.put(COLUMN_COMPLAINT_CATEGORY, citizenComplaint.getComplaintCategory()); values.put(COLUMN_SELECTED_COMPLAINT_IMAGE_URI, citizenComplaint.getSelectedComplaintImageUri()); values.put(COLUMN_PROFILE_THUMBNAIL_IMAGE_URI, citizenComplaint.getProfileThumbnailImageUri()); values.put(COLUMN_LATITUDE, citizenComplaint.getLatitude()); values.put(COLUMN_LONGITUDE, citizenComplaint.getLongitude()); values.put(COLUMN_COMPLAINT_ADDRESS, citizenComplaint.getComplaintAddress()); values.put(COLUMN_SELECTED_TEMPLATE_ID, citizenComplaint.getSelectedTemplateId()); values.put(COLUMN_SELECTED_TEMPLATE_STRING, citizenComplaint.getSelectedTemplateString()); return database.insert(TABLE_CITIZEN_COMPLAINT, null, values); } public long createMLADetail(CitizenComplaintMLADetails mlaDetails) { ContentValues values = new ContentValues(); values.put(COLUMN_MLA_NAME, mlaDetails.getMlaName()); values.put(COLUMN_MLA_EMAIL, mlaDetails.getMlaEmail()); values.put(COLUMN_MLA_CONTACT_NO, mlaDetails.getMlaContactNo()); values.put(COLUMN_MLA_CONSTITUENCY_ID, mlaDetails.getMlaConstituencyId()); values.put(COLUMN_MLA_CONSTITUENCY, mlaDetails.getMlaConstituency()); values.put(COLUMN_MLA_IMAGE_URI, mlaDetails.getMlaImageUri().toString()); return database.insert(TABLE_MLA_DETAIL, null, values); } public void deleteCitizenComplaint(CitizenComplaint citizenComplaint) { long id = citizenComplaint.getId(); database.delete(TABLE_CITIZEN_COMPLAINT, COLUMN_ID + " = " + id, null); } public List<CitizenComplaint> getAllCitizenComplaints() { List<CitizenComplaint> citizenComplaints = new ArrayList<CitizenComplaint>(); Cursor cursor = database.query(TABLE_CITIZEN_COMPLAINT, COLUMNS_CITIZEN_COMPLAINT, null, null, null, null, null); cursor.moveToFirst(); while (!cursor.isAfterLast()) { CitizenComplaint citizenComplaint = cursorToCitizenComplaint(cursor); citizenComplaints.add(citizenComplaint); cursor.moveToNext(); } // Make sure to close the cursor cursor.close(); return citizenComplaints; } private CitizenComplaint cursorToCitizenComplaint(Cursor cursor) { CitizenComplaint citizenComplaint = new CitizenComplaint(); citizenComplaint.setId(cursor.getLong(0)); citizenComplaint.setComplaintId(cursor.getString(1)); citizenComplaint.setComplaintCategory(cursor.getString(2)); citizenComplaint.setSelectedComplaintImageUri(cursor.getString(3)); citizenComplaint.setProfileThumbnailImageUri(cursor.getString(4)); citizenComplaint.setLatitude(cursor.getString(5)); citizenComplaint.setLongitude(cursor.getString(6)); citizenComplaint.setComplaintAddress(cursor.getString(7)); citizenComplaint.setSelectedTemplateId(cursor.getString(8)); citizenComplaint.setSelectedTemplateString(cursor.getString(9)); return citizenComplaint; } private CitizenComplaintMLADetails cursorToMLADetails(Cursor cursor) { CitizenComplaintMLADetails mlaDetails = new CitizenComplaintMLADetails(); mlaDetails.setId(cursor.getLong(0)); mlaDetails.setMlaName(cursor.getString(1)); mlaDetails.setMlaEmail(cursor.getString(2)); mlaDetails.setMlaContactNo(cursor.getString(3)); mlaDetails.setMlaConstituencyId(cursor.getString(4)); mlaDetails.setMlaConstituency(cursor.getString(5)); mlaDetails.setMlaImageUri(Uri.parse(cursor.getString(6))); return mlaDetails; } public CitizenComplaintMLADetails getMLADetailsByConstituencyId(String constituencyId) { Cursor cursor = database.query(TABLE_MLA_DETAIL, COLUMNS_MLA_DETAIL, COLUMN_MLA_CONSTITUENCY_ID + "=?", new String[]{constituencyId}, null, null, null); if (cursor != null && cursor.moveToFirst()) { CitizenComplaintMLADetails mlaDetails = cursorToMLADetails(cursor); cursor.close(); return mlaDetails; } return null; } }