From 2d80ff22821dce55cd4c5aadae66fcf784077f66 Mon Sep 17 00:00:00 2001 From: Aaron Sun Date: Wed, 7 Oct 2020 21:21:59 -0700 Subject: [PATCH 1/4] Connected List UI with API --- Listify/app/src/main/AndroidManifest.xml | 2 +- .../listify/{List.java => ListPage.java} | 80 ++++++++++++++++++- .../com/example/listify/MainActivity.java | 2 + .../com/example/listify/ui/LoginPage.java | 5 +- .../com/example/listify/ui/SignupPage.java | 7 +- .../example/listify/ui/home/HomeFragment.java | 2 +- 6 files changed, 86 insertions(+), 12 deletions(-) rename Listify/app/src/main/java/com/example/listify/{List.java => ListPage.java} (69%) diff --git a/Listify/app/src/main/AndroidManifest.xml b/Listify/app/src/main/AndroidManifest.xml index 9de69e3..3451336 100644 --- a/Listify/app/src/main/AndroidManifest.xml +++ b/Listify/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ - + \ No newline at end of file diff --git a/Listify/app/src/main/java/com/example/listify/List.java b/Listify/app/src/main/java/com/example/listify/ListPage.java similarity index 69% rename from Listify/app/src/main/java/com/example/listify/List.java rename to Listify/app/src/main/java/com/example/listify/ListPage.java index f011f96..c4655eb 100644 --- a/Listify/app/src/main/java/com/example/listify/List.java +++ b/Listify/app/src/main/java/com/example/listify/ListPage.java @@ -13,13 +13,24 @@ import android.widget.EditText; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; + +import com.example.listify.data.Item; +import com.example.listify.data.List; +import com.example.listify.data.ListEntry; +import com.example.listify.model.Product; +import static com.example.listify.MainActivity.am; + +import org.json.JSONException; + +import java.io.IOException; import java.util.ArrayList; +import java.util.Properties; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; -public class List extends AppCompatActivity { +public class ListPage extends AppCompatActivity { ListView listView; MyAdapter myAdapter; @@ -33,8 +44,50 @@ public class List extends AppCompatActivity { ArrayList pQuantity = new ArrayList<>(); //String[] pQuantity = {"1"}; ArrayList pImages = new ArrayList<>(); //int[] pImages = {R.drawable.milk}; + Requestor requestor; + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { + Properties configs = new Properties(); + try { + configs = AuthManager.loadProperties(this, "android.resource://" + getPackageName() + "/raw/auths.json"); + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + requestor = new Requestor(am, configs.getProperty("apiKey")); + SynchronousReceiver lr = new SynchronousReceiver<>(); + requestor.getObject("-1", List.class, lr, lr); + + List list; + + try { + list = lr.await(); + } + catch(Exception e) { + list = null; + } + + if(list != null) { + for (ListEntry entry : list.getEntries()) { + int product = entry.getProductID(); + SynchronousReceiver pr = new SynchronousReceiver<>(); + requestor.getObject(Integer.toString(product), Item.class, pr, pr); + Item item; + try { + item = pr.await(); + } catch (Exception e) { + item = null; + } + if(item != null) { + pNames.add(item.getDescription()); + pStores.add("Kroger"); + pPrices.add(item.getPrice().toString()); + pQuantity.add("1"); + pImages.add(R.drawable.placeholder); + } + } + } + pNames.add("Half-gallon organic whole milk"); pStores.add("Kroger"); pPrices.add("$5.00"); @@ -53,8 +106,6 @@ public class List extends AppCompatActivity { pQuantity.add("1"); pImages.add(R.drawable.peanutbutter); - int currSize = pNames.size(); - super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); @@ -151,4 +202,27 @@ public class List extends AppCompatActivity { return listproduct; } } + + /*class ListReceiver implements Requestor.Receiver { + @Override + public void acceptDelivery(T delivered) { + for(ListEntry entry : ((List) delivered).getEntries()) { + int product = entry.getProductID(); + ProductReceiver pr = new ProductReceiver<>(); + requestor.getObject(Integer.toString(product), Item.class, pr); + pQuantity.add("1"); + } + } + } + + class ProductReceiver implements Requestor.Receiver { + @Override + public void acceptDelivery(T delivered) { + Item i = (Item) delivered; + pNames.add(i.getDescription()); + pStores.add("Kroger"); + pPrices.add(i.getPrice().toString()); + pImages.add(R.drawable.placeholder); + } + }*/ } diff --git a/Listify/app/src/main/java/com/example/listify/MainActivity.java b/Listify/app/src/main/java/com/example/listify/MainActivity.java index 5590ccd..160f533 100644 --- a/Listify/app/src/main/java/com/example/listify/MainActivity.java +++ b/Listify/app/src/main/java/com/example/listify/MainActivity.java @@ -29,6 +29,8 @@ import java.util.Random; public class MainActivity extends AppCompatActivity { private AppBarConfiguration mAppBarConfiguration; + public static AuthManager am = new AuthManager(); + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/Listify/app/src/main/java/com/example/listify/ui/LoginPage.java b/Listify/app/src/main/java/com/example/listify/ui/LoginPage.java index 04682b0..30199ba 100644 --- a/Listify/app/src/main/java/com/example/listify/ui/LoginPage.java +++ b/Listify/app/src/main/java/com/example/listify/ui/LoginPage.java @@ -10,6 +10,7 @@ import android.widget.EditText; import com.example.listify.R; import com.example.listify.AuthManager; import com.example.listify.MainActivity; +import static com.example.listify.MainActivity.am; import androidx.appcompat.app.AppCompatActivity; @@ -51,10 +52,8 @@ public class LoginPage extends AppCompatActivity { String email = emailText.getText().toString(); String password = passwordText.getText().toString(); - AuthManager authManager = new AuthManager(); - try { - authManager.signIn(email, password); + am.signIn(email, password); Intent intent = new Intent(LoginPage.this, MainActivity.class); startActivity(intent); } diff --git a/Listify/app/src/main/java/com/example/listify/ui/SignupPage.java b/Listify/app/src/main/java/com/example/listify/ui/SignupPage.java index ac9aa3c..f5774c2 100644 --- a/Listify/app/src/main/java/com/example/listify/ui/SignupPage.java +++ b/Listify/app/src/main/java/com/example/listify/ui/SignupPage.java @@ -10,6 +10,7 @@ import android.widget.EditText; import com.example.listify.R; import com.example.listify.AuthManager; import com.example.listify.MainActivity; +import static com.example.listify.MainActivity.am; import androidx.appcompat.app.AppCompatActivity; @@ -17,8 +18,6 @@ public class SignupPage extends AppCompatActivity implements CodePage.CodeDialog private Button button1; //Log in page button private Button button2; //Sign up button - AuthManager authManager = new AuthManager(); - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -44,7 +43,7 @@ public class SignupPage extends AppCompatActivity implements CodePage.CodeDialog String password = passwordText.getText().toString(); try { - authManager.startSignUp(email, password); + am.startSignUp(email, password); } catch(Exception e) { return; @@ -67,7 +66,7 @@ public class SignupPage extends AppCompatActivity implements CodePage.CodeDialog } else { try { - authManager.confirmSignUp(code); + am.confirmSignUp(code); Intent intent = new Intent(SignupPage.this, MainActivity.class); startActivity(intent); } diff --git a/Listify/app/src/main/java/com/example/listify/ui/home/HomeFragment.java b/Listify/app/src/main/java/com/example/listify/ui/home/HomeFragment.java index 2bb4814..2fb4fe2 100644 --- a/Listify/app/src/main/java/com/example/listify/ui/home/HomeFragment.java +++ b/Listify/app/src/main/java/com/example/listify/ui/home/HomeFragment.java @@ -32,7 +32,7 @@ public class HomeFragment extends Fragment { toListPage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Intent intent = new Intent(HomeFragment.this.getActivity(), com.example.listify.List.class); + Intent intent = new Intent(HomeFragment.this.getActivity(), com.example.listify.ListPage.class); startActivity(intent); } }); From d293864d046dd9cdd19bae8c6ae6e0e1bbf91fa1 Mon Sep 17 00:00:00 2001 From: Aaron Sun Date: Thu, 8 Oct 2020 15:34:10 -0700 Subject: [PATCH 2/4] Fixing List UI-API connection v.1 --- .../app/src/main/java/com/example/listify/ListPage.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Listify/app/src/main/java/com/example/listify/ListPage.java b/Listify/app/src/main/java/com/example/listify/ListPage.java index c4655eb..f33608e 100644 --- a/Listify/app/src/main/java/com/example/listify/ListPage.java +++ b/Listify/app/src/main/java/com/example/listify/ListPage.java @@ -56,7 +56,8 @@ public class ListPage extends AppCompatActivity { } requestor = new Requestor(am, configs.getProperty("apiKey")); SynchronousReceiver lr = new SynchronousReceiver<>(); - requestor.getObject("-1", List.class, lr, lr); + //ListReceiver lr = new ListReceiver<>(); + requestor.getObject("39", List.class, lr); List list; @@ -203,7 +204,7 @@ public class ListPage extends AppCompatActivity { } } - /*class ListReceiver implements Requestor.Receiver { + class ListReceiver implements Requestor.Receiver { @Override public void acceptDelivery(T delivered) { for(ListEntry entry : ((List) delivered).getEntries()) { @@ -224,5 +225,5 @@ public class ListPage extends AppCompatActivity { pPrices.add(i.getPrice().toString()); pImages.add(R.drawable.placeholder); } - }*/ + } } From c9c07607b6b3a4003a0f6c5e1b7208d291538ba3 Mon Sep 17 00:00:00 2001 From: NMerz Date: Thu, 8 Oct 2020 18:40:09 -0400 Subject: [PATCH 3/4] Update ListEntry contract Conform to Lambdas --- .../main/java/com/example/listify/MainActivity.java | 3 +-- .../main/java/com/example/listify/data/ListEntry.java | 10 ++++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Listify/app/src/main/java/com/example/listify/MainActivity.java b/Listify/app/src/main/java/com/example/listify/MainActivity.java index 160f533..baba38c 100644 --- a/Listify/app/src/main/java/com/example/listify/MainActivity.java +++ b/Listify/app/src/main/java/com/example/listify/MainActivity.java @@ -21,7 +21,6 @@ import org.json.JSONException; import java.io.IOException; import java.time.Instant; -import java.time.ZoneOffset; import java.util.Arrays; import java.util.Properties; import java.util.Random; @@ -86,7 +85,7 @@ public class MainActivity extends AppCompatActivity { //The name is the only part of this that is used, the rest is generated by the Lambda. List testList = new List(-1, "New List", "user filled by lambda", Instant.now().toEpochMilli()); //Everything except addedDate is used for ItemEntry - ListEntry entry = new ListEntry(1, 1, new Random().nextInt(), Instant.now().atZone(ZoneOffset.UTC).toLocalDateTime(),false); + ListEntry entry = new ListEntry(1, 1, new Random().nextInt(), Instant.now().toEpochMilli(),false); SynchronousReceiver idReceiver = new SynchronousReceiver<>(); try { requestor.postObject(testList, idReceiver, idReceiver); diff --git a/Listify/app/src/main/java/com/example/listify/data/ListEntry.java b/Listify/app/src/main/java/com/example/listify/data/ListEntry.java index 404f649..e482079 100644 --- a/Listify/app/src/main/java/com/example/listify/data/ListEntry.java +++ b/Listify/app/src/main/java/com/example/listify/data/ListEntry.java @@ -1,15 +1,13 @@ package com.example.listify.data; -import java.time.LocalDateTime; - public class ListEntry { Integer listID; Integer productID; Integer quantity; - LocalDateTime addedDate; + long addedDate; Boolean purchased; - public ListEntry(Integer listID, Integer productID, Integer quantity, LocalDateTime addedDate, Boolean purchased) { + public ListEntry(Integer listID, Integer productID, Integer quantity, long addedDate, Boolean purchased) { this.listID = listID; this.productID = productID; this.quantity = quantity; @@ -52,11 +50,11 @@ public class ListEntry { this.quantity = quantity; } - public LocalDateTime getAddedDate() { + public long getAddedDate() { return addedDate; } - public void setAddedDate(LocalDateTime addedDate) { + public void setAddedDate(long addedDate) { this.addedDate = addedDate; } From d071a0ceb3971f6bfcdacfb89fc8874c1f8a8e39 Mon Sep 17 00:00:00 2001 From: NMerz Date: Thu, 8 Oct 2020 18:42:32 -0400 Subject: [PATCH 4/4] Update Item to contract Make Item conform to the Lambdas --- .../src/main/java/com/example/listify/data/Item.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Listify/app/src/main/java/com/example/listify/data/Item.java b/Listify/app/src/main/java/com/example/listify/data/Item.java index 07662b5..12fbbb8 100644 --- a/Listify/app/src/main/java/com/example/listify/data/Item.java +++ b/Listify/app/src/main/java/com/example/listify/data/Item.java @@ -1,7 +1,6 @@ package com.example.listify.data; import java.math.BigDecimal; -import java.time.LocalDateTime; public class Item { Integer productID; @@ -11,11 +10,11 @@ public class Item { BigDecimal price; String imageURL; String department; - LocalDateTime retrievedDate; + long retrievedDate; Integer fetchCounts; public Item(Integer productID, Integer chainID, String upc, String description, BigDecimal price, - String imageURL, String department, LocalDateTime retrievedDate, Integer fetchCounts) { + String imageURL, String department, long retrievedDate, Integer fetchCounts) { this.productID = productID; this.chainID = chainID; this.upc = upc; @@ -37,7 +36,7 @@ public class Item { ", price=" + price + ", imageURL='" + imageURL + '\'' + ", department='" + department + '\'' + - ", retrievedDate=" + (retrievedDate == null ? null : retrievedDate) + + ", retrievedDate=" + retrievedDate + ", fetchCounts=" + fetchCounts + '}'; } @@ -98,11 +97,11 @@ public class Item { this.department = department; } - public LocalDateTime getRetrievedDate() { + public long getRetrievedDate() { return retrievedDate; } - public void setRetrievedDate(LocalDateTime retrievedDate) { + public void setRetrievedDate(long retrievedDate) { this.retrievedDate = retrievedDate; }