0

Good day. I'm new to android and was curious why my sldtl data was not inserted in my table sldtl.

this my JSON response from the server

{
 "error":false,
    "user":
        {
            "br_code":12,
            "mem_id":13,
            "username":"test",
            "email":"test@yahoo.com"
            ,"created_at":"2016-07-22 09:05:21"
        }
}

this response is from sl_summ this user has 2 rows in the table

{
 "error":false,
 "sl_summ":
        {
            "sl_desc":"PA : Savings Account",
            "tr_date":"2015-08-17",
            "actual_balance":"483.67",
            "available_balance":"483.67"
        }
}

{
 "error":false,
 "sl_summ":
        {
            "sl_desc":"PA : Savings - Cash Bond",
            "tr_date":"2015-08-28",
            "actual_balance":"10129.43",
            "available_balance":"10129.43"
        }
}

and this is the message from the log cat

Login Response: {"error":false,"user":{"br_code":12,"mem_id":13,"username":"test","email":"test@yahoo.com","created_at":"2016-07-22 09:05:21"}}{"error":false,"sl_summ":{"sl_desc":"PA : Savings Account","tr_date":"2015-08-17","actual_balance":"483.67","available_balance":"483.67"}}{"error":false,"sl_summ":{"sl_desc":"PA : Savings - Cash Bond","tr_date":"2015-08-28","actual_balance":"10129.43","available_balance":"10129.43"}}

here is the Log message

    06-23 11:53:44.998 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/RegisterActivity: Login Response: {"error":false,"user":{"br_code":12,"mem_id":13,"username":"novalyn","email":"gsac_tabaco@yahoo.com","created_at":"2016-07-22 09:05:21"}}{"error":false,"sl_summ":{"sl_desc":"PA : Savings Account","tr_date":"2015-08-17","actual_balance":"483.67","available_balance":"483.67"}}{"error":false,"sl_summ":{"sl_desc":"PA : Savings - Cash Bond","tr_date":"2015-08-28","actual_balance":"10129.43","available_balance":"10129.43"}}
    06-23 11:53:45.036 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/ViewRootImpl@b53457f[LoginActivity]: dispatchDetachedFromWindow
    06-23 11:53:45.062 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/InputTransport: Input channel destroyed: fd=85
    06-23 11:53:45.074 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/SessionManager: User login session modified!
    06-23 11:53:45.107 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/SQLiteHandler: Table members and sldtl was successfully created
    06-23 11:53:45.129 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/SQLiteHandler: New member was inserted into table members: 13
    06-23 11:53:45.169 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/ViewRootImpl@528ce94[LoginActivity]: MSG_WINDOW_FOCUS_CHANGED 1
    06-23 11:53:45.172 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal E/ViewRootImpl: sendUserActionEvent() mView == null
    06-23 11:53:45.172 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/ViewRootImpl@528ce94[LoginActivity]: MSG_WINDOW_FOCUS_CHANGED 0
    06-23 11:53:45.352 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
    06-23 11:53:45.542 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/SQLiteHandler: Fetching member's from Sqlite members table: {email=gsac_tabaco@yahoo.com, created_at=2016-07-22 09:05:21, br_code=12, mem_id=13, username=novalyn}
    06-23 11:53:45.544 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/SQLiteHandler: Fetching member's SL details from Sqlite sldtl table: {}
    06-23 11:53:45.556 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/InputTransport: Input channel constructed: fd=89
    06-23 11:53:45.556 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/ViewRootImpl@b39019d[MainActivity]: setView = DecorView@231b612[MainActivity] touchMode=true
    06-23 11:53:45.608 14719-14795/ph.coredev.johnjessbayutas.gsacmobileportal D/mali_winsys: EGLint new_window_surface(egl_winsys_display*, void*, EGLSurface, EGLConfig, egl_winsys_surface**, egl_color_buffer_format*, EGLBoolean) returns 0x3000,  [1080x1920]-format:1
    06-23 11:53:45.667 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
    06-23 11:53:45.789 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/ViewRootImpl@b39019d[MainActivity]: MSG_RESIZED_REPORT: ci=Rect(0, 72 - 0, 0) vi=Rect(0, 72 - 0, 0) or=1
    06-23 11:53:45.789 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/ViewRootImpl@b39019d[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 1
    06-23 11:53:45.792 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@64782f8 nm : ph.coredev.johnjessbayutas.gsacmobileportal ic=null
    06-23 11:53:45.792 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
    06-23 11:53:45.809 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/InputTransport: Input channel constructed: fd=92
    06-23 11:53:45.809 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/InputTransport: Input channel destroyed: fd=86
    06-23 11:53:45.823 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
    06-23 11:53:46.265 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/ViewRootImpl@528ce94[LoginActivity]: dispatchDetachedFromWindow
    06-23 11:53:46.289 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/InputTransport: Input channel destroyed: fd=75
    06-23 11:54:14.005 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@a2a83d1 nm : ph.coredev.johnjessbayutas.gsacmobileportal ic=null
    06-23 11:54:14.005 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
    06-23 11:54:14.019 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/InputTransport: Input channel constructed: fd=79
    06-23 11:54:14.019 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal D/InputTransport: Input channel destroyed: fd=92
    06-23 11:54:19.459 14719-14719/ph.coredev.johnjessbayutas.gsacmobileportal 

D/ViewRootImpl@b39019d[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 0

SQLiteHander.java

public class SQLiteHandler extends SQLiteOpenHelper {



private static final String TAG = SQLiteHandler.class.getSimpleName();

// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;

// Database Name
private static final String DATABASE_NAME = "coredev_gsacwp";

// Table name
private static final String TABLE_MEMBERS = "members";
private static final String TABLE_MEMBERS_SLDTL = "sldtl";

// members Table Column name
private static final String BR_CODE = "br_code";
private static final String MEM_ID = "mem_id";
private static final String MEM_USERNAME = "username";
private static final String MEM_EMAIL = "email";
private static final String MEM_CREATED_AT = "created_at";

// sldtl Table Column name
private static final String SL_DESC = "sl_desc";
private static final String TR_DATE = "trans_date";
private static final String ACTUAL_BALANCE = "actual_balance";
private static final String AVAILABLE_BALANCE = "available_balance";

// Table Create Statements
// Members table create statement
private static final String CREATE_MEMBERS_TABLE = "CREATE TABLE "  + TABLE_MEMBERS + "("
        + BR_CODE + " INTEGER,"
        + MEM_ID + " INTEGER PRIMARY KEY,"
        + MEM_USERNAME + " TEXT,"
        + MEM_EMAIL + " TEXT UNIQUE,"
        + MEM_CREATED_AT + " TEXT" + ")";

// SLDTL table create statement
private static final String CREATE_SLDTL_TABLE = "CREATE TABLE " + TABLE_MEMBERS_SLDTL + "("
        + SL_DESC + " TEXT,"
        + TR_DATE + " DATETIME,"
        + ACTUAL_BALANCE + " REAL,"
        + AVAILABLE_BALANCE + " REAL" + ")";

public SQLiteHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
    // Creating required tables
    db.execSQL(CREATE_MEMBERS_TABLE);
    db.execSQL(CREATE_SLDTL_TABLE);
    Log.d(TAG, "Table members and sldtl was successfully created");
}
// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // on upgrade drop existing tables
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_MEMBERS);
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_MEMBERS_SLDTL);

    Log.d(TAG, "Drop table members and sldtl if exists");
    // Creating new tables
    onCreate(db);
}
/**
 * Storing user details in database
 * */
public void addUser(String br_code, String mem_id, String username, String email, String created_at) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(BR_CODE, br_code); // branch code
    values.put(MEM_ID, mem_id); // mem id
    values.put(MEM_USERNAME, username); // username
    values.put(MEM_EMAIL, email); // Email
    values.put(MEM_CREATED_AT, created_at); // Created At

    // Inserting Row
    long id = db.insert(TABLE_MEMBERS, null, values);

    db.close(); // Closing database connection

    Log.d(TAG, "New member was inserted into table members: " + id);
}
/**
 * Getting user data from database
 * */
public HashMap<String, String> getUserDetails() {
    HashMap<String, String> user = new HashMap<String, String>();
    String selectQuery = "SELECT * FROM " + TABLE_MEMBERS;

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    // Move to first row
    cursor.moveToFirst();
    if (cursor.getCount() > 0) {
        user.put("br_code", cursor.getString(0));
        user.put("mem_id", cursor.getString(1));
        user.put("username", cursor.getString(2));
        user.put("email", cursor.getString(3));
        user.put("created_at", cursor.getString(4));
    }
    cursor.close();
    db.close();
    // return user
    Log.d(TAG, "Fetching member's from Sqlite members table: " + user.toString());

    return user;
}
/**
 * Storing user SL details in database
 * */
public void addUserSLDTL(String sl_desc, String tr_date, String  actual_balance, String avail_balance){
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(SL_DESC, sl_desc); // sl desc
    values.put(TR_DATE, tr_date); // trans date
    values.put(ACTUAL_BALANCE, actual_balance); // actual balance
    values.put(AVAILABLE_BALANCE, avail_balance); // availabe balance

    // Inserting Row
    long id = db.insert(TABLE_MEMBERS_SLDTL, null, values);
    db.close(); // Closing database connection

    Log.d(TAG, "Members's SL Details was inserted into sldtl table: " + id);
}
/**
 * Getting user SL details data from database
 * */
public HashMap<String, String> getUserSLDTL() {
    HashMap<String, String> sl_summ = new HashMap<String, String>();
    String selectQuery = "SELECT * FROM " + TABLE_MEMBERS_SLDTL;

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    // Move to first row
    cursor.moveToFirst();
    if (cursor.getCount() > 0) {
        sl_summ.put("sl_desc", cursor.getString(0));
        sl_summ.put("tr_date", cursor.getString(1));
        sl_summ.put("actual_balance", cursor.getString(2));
        sl_summ.put("avail_balance", cursor.getString(3));
    }
    cursor.close();
    db.close();

    // return user
    Log.d(TAG, "Fetching member's SL details from Sqlite sldtl table: " + sl_summ.toString());

    return sl_summ;
}

/**
 * Re create database Delete all tables and create them again
 * */
public void deleteUsers() {
    SQLiteDatabase db = this.getWritableDatabase();
    // Delete All Rows
    db.delete(TABLE_MEMBERS, null, null);
    db.close();

    Log.d(TAG, "All member's info are now deleted in sqlite");
}
/**
 * Re create database Delete all tables and create them again
 * */
public void deleteUserSLDTL() {
    SQLiteDatabase db = this.getWritableDatabase();
    // Delete All Rows
    db.delete(TABLE_MEMBERS_SLDTL, null, null);
    db.close();

    Log.d(TAG, "All member's SLDTL info are now deleted in sqlite");
 }
}

Login.java

public class LoginActivity extends Activity {
private static final String TAG = RegisterActivity.class.getSimpleName();
private Button btnLogin;
private Button btnLinkToRegister;
private EditText inputUsername;
private EditText inputPassword;
private ProgressDialog pDialog;
private SessionManager session;
private SQLiteHandler db;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    inputUsername = (EditText) findViewById(R.id.username);
    inputPassword = (EditText) findViewById(R.id.password);
    btnLogin = (Button) findViewById(R.id.btnLogin);
    btnLinkToRegister = (Button) findViewById(R.id.btnLinkToRegisterScreen);

    // Progress dialog
    pDialog = new ProgressDialog(this);
    pDialog.setCancelable(false);

    // SQLite database handler
    db = new SQLiteHandler(getApplicationContext());

    // Session manager
    session = new SessionManager(getApplicationContext());

    // Check if user is already logged in or not
    if (session.isLoggedIn()) {
        // User is already logged in. Take him to main activity
        Intent intent = new Intent(LoginActivity.this, MainActivity.class);
        startActivity(intent);
        finish();
    }

    // Login button Click Event
    btnLogin.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            String username = inputUsername.getText().toString().trim();
            String password = inputPassword.getText().toString().trim();

            // Check for empty data in the form
            if (!username.isEmpty() && !password.isEmpty()) {
                // login user
                checkLogin(username, password);
            } else {
                // Prompt user to enter credentials
                Toast.makeText(getApplicationContext(),
                        "Please enter the credentials!", Toast.LENGTH_LONG)
                        .show();
            }
        }
    });

    // Link to Register Screen
    btnLinkToRegister.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            Uri uri = Uri.parse("http://gsac.ph/iaccswebportal/register.php");
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(intent);
        }
    });

}
/**
 * function to verify login details in mysql db
 * */
private void checkLogin(final String username, final String password) {
    // Tag used to cancel the request
    String tag_string_req = "req_login";

    pDialog.setMessage("Logging in ...");
    showDialog();

    StringRequest strReq = new StringRequest(Method.POST,
            AppConfig.URL_LOGIN, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            Log.d(TAG, "Login Response: " + response.toString());
            hideDialog();

            try {
                JSONObject jObj = new JSONObject(response);
                boolean error = jObj.getBoolean("error");

                // Check for error node in json
                if (!error) {
                    // user successfully logged in

                    // Create login session
                    session.setLogin(true);

                    // Now store the user in SQLite
                    //String uid = jObj.getString("uid");

                    JSONObject user = jObj.getJSONObject("user");
                    String br_code = user.getString("br_code");
                    String mem_id = user.getString("mem_id");
                    String username = user.getString("username");
                    String email = user.getString("email");
                    String created_at = user.getString("created_at");

                    // Inserting row in users table
                    db.addUser(br_code, mem_id, username, email, created_at);
                    try {
                        JSONObject json =  new JSONObject (response);
                        if(json.has("sl_summ")){
                            JSONObject sl_jObj  = new JSONObject(json.getString("sl_summ"));
                            Boolean sl_error = sl_jObj.getBoolean("error");
                            Log.e("Test", "Error : " + sl_error);
                            if (!sl_error) {
                                JSONArray sl_summ = sl_jObj.optJSONArray("sl_summ");
                                for (int i = 0; i < sl_summ.length(); i++) {
                                    JSONObject rootObj = sl_summ.getJSONObject(i);
                                    String sl_desc = rootObj.getString("sl_desc");
                                    String tr_date = rootObj.getString("tr_date");
                                    String actual_balance = rootObj.getString("actual_balance");
                                    String avail_balance = rootObj.getString("avail_balance");
                                    // then do whatever you want with this data
                                    // Inserting row in users table
                                    db.addUserSLDTL(sl_desc, tr_date, actual_balance, avail_balance);
                                }
                            }
                            else{
                                // Error in getting sl_sum. Get the error message
                                String errorMsg = jObj.getString("error_msg");
                                Toast.makeText(getApplicationContext(),
                                        errorMsg, Toast.LENGTH_LONG).show();
                            }
                        }
                    }catch (JSONException e) {
                        // JSON error
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show();
                    }

                    // Launch main activity
                    Intent intent = new Intent(LoginActivity.this,
                            MainActivity.class);
                    startActivity(intent);
                    finish();
                } else {
                    // Error in login. Get the error message
                    String errorMsg = jObj.getString("error_msg");
                    Toast.makeText(getApplicationContext(),
                            errorMsg, Toast.LENGTH_LONG).show();
                }
            } catch (JSONException e) {
                // JSON error
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show();
            }
        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e(TAG, "Login Error: " + error.getMessage());
            Toast.makeText(getApplicationContext(),
                    error.getMessage(), Toast.LENGTH_LONG).show();
            hideDialog();
        }
    }) {

        @Override
        protected Map<String, String> getParams() {
            // Posting parameters to login url
            Map<String, String> params = new HashMap<String, String>();
            params.put("username", username);
            params.put("password", password);

            return params;
        }
    };
    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}

private void showDialog() {
    if (!pDialog.isShowing())
        pDialog.show();
}

private void hideDialog() {
    if (pDialog.isShowing())
        pDialog.dismiss();
 }
}
jagapathi
  • 1,635
  • 1
  • 19
  • 32
John
  • 25
  • 6

0 Answers0