From 231fb297f82fee5c7ec86f03d3bafd5d0711d1cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20S=C3=A1nchez?= Date: Wed, 18 Dec 2024 10:21:17 -0300 Subject: [PATCH] faster instance loading --- .../example/dcav2gui/InstanceInterface.java | 19 +++++++----- .../com/example/dcav2gui/MainActivity.java | 29 +++++++++++++++++++ .../ui/exchanges/BinanceFragment.java | 8 +++++ .../ui/exchanges/BinanceViewModel.java | 2 +- .../dcav2gui/ui/exchanges/GateioFragment.java | 9 ++++++ .../dcav2gui/ui/exchanges/KucoinFragment.java | 9 ++++++ .../dcav2gui/ui/exchanges/OkxFragment.java | 9 ++++++ .../dcav2gui/ui/home/HomeFragment.java | 10 +------ 8 files changed, 78 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/example/dcav2gui/InstanceInterface.java b/app/src/main/java/com/example/dcav2gui/InstanceInterface.java index 8b14d18..8801352 100644 --- a/app/src/main/java/com/example/dcav2gui/InstanceInterface.java +++ b/app/src/main/java/com/example/dcav2gui/InstanceInterface.java @@ -615,12 +615,8 @@ public class InstanceInterface { } } - public static List fetchWorkersDataForCards(String exchange) throws IOException { - // Implement this method to fetch actual data - // call List getAllWorkersStats from InstanceInterface and - // translate all the WorkerStatsData objects to WorkerData objects! - // Example implementation: - List workerStatsDataList = InstanceInterface.getAllWorkersStats(exchange, true); + public static List translateToWorkerData(List workerStatsDataList) { + //Translates from WorkerStatsData to WorkerData (for cards) List workerDataList = new ArrayList<>(); if (workerStatsDataList != null) { for (InstanceInterface.WorkerStatsData workerStatsData : workerStatsDataList) { @@ -651,8 +647,17 @@ public class InstanceInterface { return Double.compare(w1.getUptime(), w2.getUptime()); } }); - return workerDataList; + + } + + public static List fetchWorkersDataForCards(String exchange) throws IOException { + // Implement this method to fetch actual data + // call List getAllWorkersStats from InstanceInterface and + // translate all the WorkerStatsData objects to WorkerData objects! + // Example implementation: + List workerStatsDataList = InstanceInterface.getAllWorkersStats(exchange, true); + return translateToWorkerData(workerStatsDataList); } diff --git a/app/src/main/java/com/example/dcav2gui/MainActivity.java b/app/src/main/java/com/example/dcav2gui/MainActivity.java index be2ff3d..20fe7e5 100644 --- a/app/src/main/java/com/example/dcav2gui/MainActivity.java +++ b/app/src/main/java/com/example/dcav2gui/MainActivity.java @@ -25,6 +25,9 @@ import com.example.dcav2gui.databinding.ActivityMainBinding; import java.io.File; import java.util.List; +import java.util.Objects; + +import okhttp3.internal.connection.Exchange; public class MainActivity extends AppCompatActivity { @@ -32,6 +35,11 @@ public class MainActivity extends AppCompatActivity { private ActivityMainBinding binding; public static SettingsData globalSettings; public HomeFragment.HomeCache homeViewCache; + public static InstanceInterface.ExchangeStatsData binanceCache; + public static InstanceInterface.ExchangeStatsData gateioCache; + public static InstanceInterface.ExchangeStatsData kucoinCache; + public static InstanceInterface.ExchangeStatsData okxCache; + public HomeFragment.HomeCache getHomeViewCache() { @@ -42,6 +50,27 @@ public class MainActivity extends AppCompatActivity { this.homeViewCache = newCache; } + public void setInstanceCache(InstanceInterface.ExchangeStatsData binance, + InstanceInterface.ExchangeStatsData gateio, + InstanceInterface.ExchangeStatsData kucoin, + InstanceInterface.ExchangeStatsData okx) { + binanceCache = binance; + gateioCache = gateio; + kucoinCache = kucoin; + okxCache = okx; + } + + public static InstanceInterface.ExchangeStatsData getInstanceCache(String exchange) { + if (Objects.equals(exchange, "binance")) { + return binanceCache; + } else if (Objects.equals(exchange, "gateio")) { + return gateioCache; + } else if (Objects.equals(exchange, "kucoin")) { + return kucoinCache; + } else { + return okxCache; + } + } @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceFragment.java b/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceFragment.java index dc007ff..e44545d 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceFragment.java +++ b/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceFragment.java @@ -12,6 +12,7 @@ import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; import com.example.dcav2gui.InstanceInterface; +import com.example.dcav2gui.MainActivity; import com.example.dcav2gui.R; import com.example.dcav2gui.databinding.FragmentBinanceBinding; import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter; @@ -19,6 +20,7 @@ import com.example.dcav2gui.ui.exchanges.WorkerData; import java.util.List; import java.util.Locale; +import java.util.Objects; public class BinanceFragment extends Fragment { @@ -28,6 +30,7 @@ public class BinanceFragment extends Fragment { private WorkerCardAdapter workerCardAdapter; private TextView statusBar; + @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -42,6 +45,11 @@ public class BinanceFragment extends Fragment { workerCardAdapter = new WorkerCardAdapter(binding.binanceCardsContainer); + List workerCache = MainActivity.getInstanceCache("binance").getWorkers(); + List translatedList = InstanceInterface.translateToWorkerData(workerCache); + WorkerCardAdapter.populateStatusBar(statusBar, translatedList); + workerCardAdapter.updateData(translatedList); + binanceViewModel.getWorkerData().observe(getViewLifecycleOwner(), workerDataList -> { if (workerDataList != null) { WorkerCardAdapter.populateStatusBar(statusBar, workerDataList); diff --git a/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceViewModel.java b/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceViewModel.java index 5146161..ca9128e 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceViewModel.java +++ b/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceViewModel.java @@ -26,7 +26,7 @@ public class BinanceViewModel extends AndroidViewModel { } public LiveData> getWorkerData() { - //Iterate through workerDataList + if (workerDataList.getValue() == null) { fetchWorkerData(); } diff --git a/app/src/main/java/com/example/dcav2gui/ui/exchanges/GateioFragment.java b/app/src/main/java/com/example/dcav2gui/ui/exchanges/GateioFragment.java index 88bd96c..2faa236 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/exchanges/GateioFragment.java +++ b/app/src/main/java/com/example/dcav2gui/ui/exchanges/GateioFragment.java @@ -10,10 +10,14 @@ import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; +import com.example.dcav2gui.InstanceInterface; +import com.example.dcav2gui.MainActivity; import com.example.dcav2gui.R; import com.example.dcav2gui.databinding.FragmentGateioBinding; import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter; +import java.util.List; + public class GateioFragment extends Fragment { @@ -35,6 +39,11 @@ public class GateioFragment extends Fragment { workerCardAdapter = new WorkerCardAdapter(binding.gateioCardsContainer); + List workerCache = MainActivity.getInstanceCache("gateio").getWorkers(); + List translatedList = InstanceInterface.translateToWorkerData(workerCache); + WorkerCardAdapter.populateStatusBar(statusBar, translatedList); + workerCardAdapter.updateData(translatedList); + GateioViewModel.getWorkerData().observe(getViewLifecycleOwner(), workerDataList -> { if (workerDataList != null) { WorkerCardAdapter.populateStatusBar(statusBar, workerDataList); diff --git a/app/src/main/java/com/example/dcav2gui/ui/exchanges/KucoinFragment.java b/app/src/main/java/com/example/dcav2gui/ui/exchanges/KucoinFragment.java index 63d0709..68d6e16 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/exchanges/KucoinFragment.java +++ b/app/src/main/java/com/example/dcav2gui/ui/exchanges/KucoinFragment.java @@ -10,10 +10,14 @@ import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; +import com.example.dcav2gui.InstanceInterface; +import com.example.dcav2gui.MainActivity; import com.example.dcav2gui.R; import com.example.dcav2gui.databinding.FragmentKucoinBinding; import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter; +import java.util.List; + public class KucoinFragment extends Fragment { @@ -35,6 +39,11 @@ public class KucoinFragment extends Fragment { workerCardAdapter = new WorkerCardAdapter(binding.kucoinCardsContainer); + List workerCache = MainActivity.getInstanceCache("kucoin").getWorkers(); + List translatedList = InstanceInterface.translateToWorkerData(workerCache); + WorkerCardAdapter.populateStatusBar(statusBar, translatedList); + workerCardAdapter.updateData(translatedList); + KucoinViewModel.getWorkerData().observe(getViewLifecycleOwner(), workerDataList -> { if (workerDataList != null) { WorkerCardAdapter.populateStatusBar(statusBar, workerDataList); diff --git a/app/src/main/java/com/example/dcav2gui/ui/exchanges/OkxFragment.java b/app/src/main/java/com/example/dcav2gui/ui/exchanges/OkxFragment.java index a4d387a..2c308a0 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/exchanges/OkxFragment.java +++ b/app/src/main/java/com/example/dcav2gui/ui/exchanges/OkxFragment.java @@ -10,10 +10,14 @@ import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; +import com.example.dcav2gui.InstanceInterface; +import com.example.dcav2gui.MainActivity; import com.example.dcav2gui.R; import com.example.dcav2gui.databinding.FragmentOkxBinding; import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter; +import java.util.List; + public class OkxFragment extends Fragment { @@ -35,6 +39,11 @@ public class OkxFragment extends Fragment { workerCardAdapter = new WorkerCardAdapter(binding.okexCardsContainer); + List workerCache = MainActivity.getInstanceCache("okx").getWorkers(); + List translatedList = InstanceInterface.translateToWorkerData(workerCache); + WorkerCardAdapter.populateStatusBar(statusBar, translatedList); + workerCardAdapter.updateData(translatedList); + OkxViewModel.getWorkerData().observe(getViewLifecycleOwner(), workerDataList -> { if (workerDataList != null) { WorkerCardAdapter.populateStatusBar(statusBar, workerDataList); diff --git a/app/src/main/java/com/example/dcav2gui/ui/home/HomeFragment.java b/app/src/main/java/com/example/dcav2gui/ui/home/HomeFragment.java index 7a1ac20..29b8a69 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/home/HomeFragment.java +++ b/app/src/main/java/com/example/dcav2gui/ui/home/HomeFragment.java @@ -9,7 +9,6 @@ import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.style.ForegroundColorSpan; import android.view.LayoutInflater; -import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -112,14 +111,6 @@ public class HomeFragment extends Fragment { private TextView log3Content; private TextView log4Content; -// InstanceInterface.ExchangeStatsData binanceStats; -// InstanceInterface.ExchangeStatsData gateioStats; -// InstanceInterface.ExchangeStatsData kucoinStats; -// InstanceInterface.ExchangeStatsData okexStats; - - - - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -612,6 +603,7 @@ public class HomeFragment extends Fragment { mainActivity.setHomeViewCache( new HomeCache (priceData, priceData2, priceData3, profitsData, binanceStats, gateioStats, kucoinStats, okexStats, deals, logs1, logs2, logs3, logs4) ); + mainActivity.setInstanceCache(binanceStats, gateioStats, kucoinStats, okexStats); });