Commit 486f275f authored by Wahyu Wibowo's avatar Wahyu Wibowo

create table for transaksi

parent c14b1937
......@@ -2,13 +2,13 @@ package com.example.yourcashiertest.activities;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import com.example.yourcashiertest.R;
import com.example.yourcashiertest.adapters.CartAdapter;
......@@ -17,9 +17,6 @@ import com.example.yourcashiertest.entities.Cart;
import com.example.yourcashiertest.entities.Product;
import com.example.yourcashiertest.utils.Convert;
import com.example.yourcashiertest.viewmodels.CartViewModel;
import com.example.yourcashiertest.viewmodels.ProductViewModel;
import java.util.List;
public class CartActivity extends AppCompatActivity {
......@@ -40,7 +37,6 @@ public class CartActivity extends AppCompatActivity {
binding.rvCartList.setAdapter(adapter);
product = new Product();
// viewModel = new ViewModelProvider(this).get(ProductViewModel.class);
CartViewModel cartViewModel = new ViewModelProvider(this).get(CartViewModel.class);
cartViewModel.getCarts().observe(this, carts -> adapter.setCartList(carts));
......
......@@ -173,7 +173,7 @@ public class MainActivity extends AppCompatActivity {
startActivity(new Intent(MainActivity.this, CartActivity.class));
finish();
}else {
Cart cart = new Cart(0,"", "", 0, 0, 0);
Cart cart = new Cart(0,"", "", 0, 0, 0, 0);
cart.setIdProduct(product.getId());
cart.setImage(product.getPhoto());
cart.setNameProduct(product.getName());
......
......@@ -28,7 +28,7 @@ import com.example.yourcashiertest.viewmodels.ProductViewModel;
import java.util.ArrayList;
import java.util.List;
public class PaymentActivity extends AppCompatActivity {
public class PaymentActivity extends AppCompatActivity {
ActivityPaymentBinding binding;
public static String paymentMethod = "";
......
package com.example.yourcashiertest.daos;
import androidx.room.Query;
import com.example.yourcashiertest.entities.Transaksi;
import java.util.List;
public interface TransaksiDao {
@Query("SELECT * FROM transaksi")
public List<Transaksi> getAllTransaksi();
}
......@@ -14,17 +14,19 @@ import androidx.sqlite.db.SupportSQLiteOpenHelper;
import com.example.yourcashiertest.daos.CartDao;
import com.example.yourcashiertest.daos.ProductDao;
import com.example.yourcashiertest.daos.TransaksiDao;
import com.example.yourcashiertest.entities.Cart;
import com.example.yourcashiertest.entities.Product;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@Database(entities = {Product.class, Cart.class}, version = 3, exportSchema = false)
@Database(entities = {Product.class, Cart.class}, version = 4, exportSchema = false)
public abstract class LocalDatabase extends RoomDatabase {
public abstract ProductDao productDao();
public abstract CartDao cartDao();
public abstract TransaksiDao transaksiDao();
private static volatile LocalDatabase INSTANCE;
private static final int NUMBER_OF_THREADS = 4;
......@@ -40,6 +42,14 @@ public abstract class LocalDatabase extends RoomDatabase {
}
};
public static final Migration MIGRATION_4_5 = new Migration(4, 5) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("CREATE TABLE IF NOT EXISTS Transaksi (orderId INTEGER NOT NULL, " +
"amount INTEGER NOT NULL, status TEXT NOT NULL, PRIMARY KEY(orderId))");
}
};
public static final Migration MIGRATION_2_3 = new Migration(2,3) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
......@@ -47,13 +57,20 @@ public abstract class LocalDatabase extends RoomDatabase {
}
};
public static final Migration MIGRATION_3_4 = new Migration(3,4) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE Cart ADD COLUMN orderId INTEGER NOT NULL DEFAULT 0");
}
};
public static LocalDatabase getDatabase(Context context) {
if (INSTANCE == null) {
synchronized (LocalDatabase.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
LocalDatabase.class, "yourcashier_database")
.addMigrations(MIGRATION_1_2, MIGRATION_2_3)
.addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4, MIGRATION_4_5)
.allowMainThreadQueries()
.build();
}
......
......@@ -39,6 +39,10 @@ public class Cart implements Parcelable {
@ColumnInfo(name = "realPrice")
long realPrice = 0;
@NonNull
@ColumnInfo(name = "orderId")
long orderId = 0;
protected Cart(Parcel in) {
id = in.readLong();
idProduct = in.readLong();
......@@ -61,13 +65,14 @@ public class Cart implements Parcelable {
}
};
public Cart(long idProduct, String nameProduct, String image, long price, long qty, long realPrice){
public Cart(long idProduct, String nameProduct, String image, long price, long qty, long realPrice, long orderId){
this.idProduct = idProduct;
this.nameProduct = nameProduct;
this.image = image;
this.price = price;
this.qty = qty;
this.realPrice = realPrice;
this.orderId = orderId;
}
public Cart() {
......@@ -130,6 +135,14 @@ public class Cart implements Parcelable {
this.realPrice = realPrice;
}
public long getOrderId() {
return orderId;
}
public void setOrderId(long orderId) {
this.orderId = orderId;
}
@Override
public int describeContents() {
return 0;
......@@ -144,5 +157,6 @@ public class Cart implements Parcelable {
dest.writeLong(price);
dest.writeLong(qty);
dest.writeLong(realPrice);
dest.writeLong(orderId);
}
}
package com.example.yourcashiertest.entities;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.databinding.BindingAdapter;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
......@@ -135,10 +136,7 @@ public class Product implements Parcelable {
if (TextUtils.isEmpty(path)) view.setImageResource(R.drawable.unnamed);
else {
File file = new File(path);
Uri uri = Uri.parse(path);
Glide.with(view).load(file).into(view);
// if (file.exists()) Glide.with(view).load(file).into(view);
// else view.setImageResource(R.drawable.unnamed);
}
}
}
package com.example.yourcashiertest.entities;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@Entity
public class Transaksi implements Parcelable {
@PrimaryKey(autoGenerate = true)
@NonNull
@ColumnInfo(name = "orderId")
private long orderId;
@NonNull
@ColumnInfo(name = "amount")
private long amount;
@NonNull
@ColumnInfo(name = "status")
private String status;
protected Transaksi(Parcel in) {
orderId = in.readLong();
amount = in.readLong();
status = in.readString();
}
public static final Creator<Transaksi> CREATOR = new Creator<Transaksi>() {
@Override
public Transaksi createFromParcel(Parcel in) {
return new Transaksi(in);
}
@Override
public Transaksi[] newArray(int size) {
return new Transaksi[size];
}
};
public long getOrderId() {
return orderId;
}
public void setOrderId(long orderId) {
this.orderId = orderId;
}
public long getAmount() {
return amount;
}
public void setAmount(long amount) {
this.amount = amount;
}
@NonNull
public String getStatus() {
return status;
}
public void setStatus(@NonNull String status) {
this.status = status;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeLong(orderId);
parcel.writeLong(amount);
parcel.writeString(status);
}
}
package com.example.yourcashiertest.repositories;
import android.app.Application;
import androidx.lifecycle.LiveData;
import com.example.yourcashiertest.daos.TransaksiDao;
import com.example.yourcashiertest.databases.LocalDatabase;
import com.example.yourcashiertest.entities.Transaksi;
import java.util.List;
public class TransaksiRepository {
private TransaksiDao dao;
private List<Transaksi> allTransaksi;
public TransaksiRepository(Application application){
LocalDatabase db = LocalDatabase.getDatabase(application);
dao = db.transaksiDao();
allTransaksi = dao.getAllTransaksi();
}
public List<Transaksi> getAllTransaksi(){
return this.allTransaksi;
}
}
package com.example.yourcashiertest.viewmodels;
import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import com.example.yourcashiertest.entities.Transaksi;
import com.example.yourcashiertest.repositories.TransaksiRepository;
import java.util.List;
public class TransaksiViewModel extends AndroidViewModel {
private MutableLiveData<Transaksi> transaksi = new MutableLiveData<>();
private TransaksiRepository repository;
private LiveData<List<Transaksi>> allTransaksi;
public TransaksiViewModel(@NonNull Application application) {
super(application);
// repository =
}
}
......@@ -95,13 +95,13 @@
<Button
android:id="@+id/btnCheckout"
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/checkout"
android:layout_marginStart="10dp"
app:layout_constraintStart_toEndOf="@+id/save_order"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/rvCartList"
app:layout_constraintVertical_bias="1.0"
tools:layout_editor_absoluteX="39dp" />
app:layout_constraintEnd_toEndOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvCartList"
......@@ -115,6 +115,16 @@
app:layout_constraintTop_toBottomOf="@+id/view"
tools:ignore="MissingConstraints" />
<Button
android:id="@+id/save_order"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="save"
android:backgroundTint="#0D2EE1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/btnCheckout" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment