import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.support.annotation.Nullable;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "my_db";
public DatabaseHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, null, version);
}
public DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("DROP TABLE IF EXISTS " + Producto.TABLE_NAME);
db.execSQL(Producto.CREATE_TABLE);
Log.d("TABLA CREADA", "Satisfactoriamente! ");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + Producto.TABLE_NAME);
onCreate(db);
}
public void eliminarTabla(String nombre_tabla) {
String selectQuery = "DELETE FROM " + nombre_tabla;
SQLiteDatabase db= getWritableDatabase();
db.execSQL(selectQuery);
}
public boolean insertarProducto(Producto producto) {
SQLiteDatabase db = getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(Producto.COLUMN_ID, producto.getId());
contentValues.put(Producto.COLUMN_CANTIDAD, producto.getCantidad());
Log.d("DATABASE HELPER", "insertarProducto: Agregando "
+ producto.getId() + " a " + Producto.TABLE_NAME);
long result = db.insert(Producto.TABLE_NAME, null, contentValues);
if(result == -1){
return actualizarProducto(producto) != 0;
}
return true;
}
public int getCantidadProductosEnDB() {
String countQuery = "SELECT * FROM " + Producto.TABLE_NAME;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
int count = cursor.getCount();
cursor.close();
return count;
}
public int actualizarProducto(Producto producto) {
int resultado = 0;
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Producto.COLUMN_CANTIDAD, producto.getCantidad());
// updating row
resultado = db.update(Producto.TABLE_NAME, values, Producto.COLUMN_ID + " = ?",
new String[]{String.valueOf(producto.getId())});
Log.d("ACTUALIZA PRODUCTO", "actualizarProducto: BUENO! ");
return resultado;
}
public void eliminarProducto(Producto producto) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(Producto.TABLE_NAME, Producto.COLUMN_ID + " = ?",
new String[]{String.valueOf(producto.getId())});
db.close();
}
public int obtenerCantidadDeUnProducto(String id){
int cantidad = 0;
SQLiteDatabase db = getReadableDatabase();
String[] params = new String[]{ id };
String cantidadQuery = "SELECT " + Producto.COLUMN_CANTIDAD + " FROM " + Producto.TABLE_NAME + " WHERE " + Producto.COLUMN_ID + " = " + "?" ;
Cursor cursor = db.rawQuery(cantidadQuery,params);
if (cursor.moveToFirst()){
while(!cursor.isAfterLast()){
cantidad = Integer.parseInt(cursor.getString(cursor.getColumnIndex(Producto.COLUMN_CANTIDAD)));
cursor.moveToNext();
}
}
cursor.close();
return cantidad;
}
public List<Producto> obtenerTodosLosProductos() {
List<Producto> productoList = new ArrayList<>();
// Select All Query
String selectQuery = "SELECT * FROM " + Producto.TABLE_NAME + " ORDER BY " +
Producto.COLUMN_ID + " DESC";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Producto producto = new Producto();
producto.setId(cursor.getInt(cursor.getColumnIndex(Producto.COLUMN_ID)));
producto.setCantidad(cursor.getInt(cursor.getColumnIndex(Producto.COLUMN_CANTIDAD)));
productoList.add(producto);
} while (cursor.moveToNext());
}
// close db connection
db.close();
// return notes list
return productoList;
}
}