/*
========================================================================================
Filename: 38_StudentDatabase_CRUD.txt
Program 38: Student Database Management System (SQLite CRUD: Insert and View Records with Multi-Activity Navigation)
Files Included: MainActivity.java, DatabaseHelper.java, ViewDetailsActivity.java
========================================================================================

WHAT ALL TO DO / SETUP INSTRUCTIONS:
----------------------------------------------------------------------------------------
1. UI Components to Add (in res/layout/activity_main.xml):
   In activity_main.xml:
     - 2 EditText (TextBox):
       * etName: Hint: 'Student Name'
       * etAge: Hint: 'Age', inputType: 'number'
     - 2 Button:
       * btnAdd: Text: 'Add Student', onClick: 'addStudent'
       * btnView: Text: 'View Details', onClick: 'viewDetails'
     - 1 TextView: Heading 'Student Database'
   In activity_view_details.xml:
     - 2 TextView: Heading 'Student Details', tvDetails (displaying retrieved SQLite records)

2. Layout Configuration:
   - LinearLayout (vertical, gravity='center', padding 20dp)

3. Menu Configuration:
   - None required.

4. Themes Configuration (res/values/themes.xml):
   - Theme.MaterialComponents.DayNight.NoActionBar in res/values/themes.xml.

5. AndroidManifest.xml:
   Register ViewDetailsActivity inside <application>:
   <activity android:name=".ViewDetailsActivity" android:exported="false" />

6. Additional Files & Resources Required:
   - Create DatabaseHelper.java (extends SQLiteOpenHelper with table 'student': id, name, age) and ViewDetailsActivity.java (queries SQLite cursor and binds records to tvDetails).
========================================================================================
*/

// ======================================================================================
// File: MainActivity.java
// ======================================================================================
package com.example.studentdatabase;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
    EditText etName, etAge;
    DatabaseHelper db;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        etName = findViewById(R.id.etName);
        etAge = findViewById(R.id.etAge);
        db = new DatabaseHelper(this);
    }
    public void addStudent(View view) {
        String name = etName.getText().toString();
        String age = etAge.getText().toString();
        if (name.isEmpty() || age.isEmpty()) {
            Toast.makeText(this,
                    "Enter all details",
                    Toast.LENGTH_SHORT).show();
            return;
        }
        boolean inserted = db.insertStudent(name, age);
        if (inserted) {
            Toast.makeText(this,
                    "Row Inserted Successfully",
                    Toast.LENGTH_SHORT).show();
            etName.setText("");
            etAge.setText("");
        }
    }
    public void viewDetails(View view) {
        startActivity(new Intent(this, ViewDetailsActivity.class));
    }
}
// ======================================================================================

// ======================================================================================
// File: DatabaseHelper.java
// ======================================================================================
package com.example.librarymanagement;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {
    public DatabaseHelper(Context context) {
        super(context, "LibraryDB", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(                "CREATE TABLE book(" +                        "bookid TEXT PRIMARY KEY," +                        "bookname TEXT," +                        "author TEXT," +                        "publisher TEXT," +                        "year INTEGER," +                        "price REAL," +                        "stock INTEGER)"        );
    }

    @Override
    public void onUpgrade(SQLiteDatabase db,                          int oldVersion,                          int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS book");
        onCreate(db);
    }

    public boolean insertBook(            String id,            String name,            String author,            String publisher,            String year,            String price,            String stock) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("bookid", id);
        values.put("bookname", name);
        values.put("author", author);
        values.put("publisher", publisher);
        values.put("year", year);
        values.put("price", price);
        values.put("stock", stock);
        long result = db.insert(                "book",                null,                values        );
        return result != -1;
    }

    public Cursor getBooks() {
        SQLiteDatabase db = getReadableDatabase();
        return db.rawQuery(                "SELECT * FROM book",                null        );
    }
}

// ======================================================================================
// File: ViewDetailsActivity.java
// ======================================================================================
package com.example.librarymanagement;

import android.database.Cursor;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

public class ViewDetailsActivity extends AppCompatActivity {
    TextView tvDetails;
    DatabaseHelper db;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_details);
        tvDetails = findViewById(R.id.tvDetails);
        db = new DatabaseHelper(this);
        Cursor cursor = db.getBooks();
        StringBuilder data = new StringBuilder();
        while (cursor.moveToNext()) {
            data.append("Book ID : ")                    .append(cursor.getString(0))                    .append("\n");
            data.append("Book Name : ")                    .append(cursor.getString(1))                    .append("\n");
            data.append("Author : ")                    .append(cursor.getString(2))                    .append("\n");
            data.append("Publisher : ")                    .append(cursor.getString(3))                    .append("\n");
            data.append("Published Year : ")                    .append(cursor.getString(4))                    .append("\n");
            data.append("Price : ")                    .append(cursor.getString(5))                    .append("\n");
            data.append("Stock : ")                    .append(cursor.getString(6))                    .append("\n\n");
        }

        cursor.close();
        tvDetails.setText(data.toString());
    }
}
