diff --git a/app/src/main/java/net/pokeranalytics/android/util/FakeDataManager.kt b/app/src/main/java/net/pokeranalytics/android/util/FakeDataManager.kt new file mode 100644 index 00000000..977285ed --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/util/FakeDataManager.kt @@ -0,0 +1,111 @@ +package net.pokeranalytics.android.util + +import io.realm.Realm +import io.realm.kotlin.where +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch +import net.pokeranalytics.android.model.Limit +import net.pokeranalytics.android.model.realm.Bankroll +import net.pokeranalytics.android.model.realm.Game +import net.pokeranalytics.android.model.realm.Session +import timber.log.Timber +import java.util.* + +class FakeDataManager { + + companion object { + + /** + * Create the given number of fake sessions + */ + fun createFakeSessions(numberOfSessions: Int = 1000, callback: ((success: Boolean) -> Unit)? = null) { + + val buyinList = arrayListOf(100.0, 200.0, 300.0, 500.0, 1000.0, 2000.0) + val resultsList = arrayListOf( + -2500.0, -2000.0, -1500.0, -1000.0, -500.0, 200.0, 1000.0, 1500.0, 2500.0 + ) + + val commitFrequency = 100 + + GlobalScope.launch { + + try { + + val realm = Realm.getDefaultInstance() + val games = realm.where().findAll() + val bankroll = realm.where().findAll().firstOrNull() + + // Test endedSessions + + Timber.d("*** Start creating ${numberOfSessions} fake computables...") + + val s = Date() + + realm.beginTransaction() + + for (index in 0..numberOfSessions) { + + if (index % commitFrequency == 0) { + Timber.d("****** committing at ${index} computables...") + realm.commitTransaction() + realm.beginTransaction() + } + + val session = Session.newInstance(realm, Math.random() > 0.5, bankroll) + + val bigBlind = arrayListOf(1.0, 2.0, 4.0).random() + session.cgBigBlind = bigBlind + session.cgSmallBlind = bigBlind / 2.0 + + val calendar = Calendar.getInstance() + calendar.set( + (2016..2018).random(), + (0..11).random(), + (0..28).random(), + (0..23).random(), + (0..59).random() + ) + + val startDate = calendar.time + calendar.add(Calendar.HOUR_OF_DAY, (2..12).random()) + calendar.add(Calendar.MINUTE, (0..59).random()) + val endDate = calendar.time + + session.startDate = startDate + session.endDate = endDate + session.creationDate = startDate + + session.limit = Limit.values().random().ordinal + session.game = games.random() + + session.result?.let { result -> + result.buyin = buyinList.random() + result.netResult = resultsList.random() + } + + } + + realm.commitTransaction() + + val e = Date() + val duration = (e.time - s.time) / 1000.0 + Timber.d("*** ended in ${duration} seconds") + + realm.close() + + launch(Dispatchers.Main) { + callback?.invoke(true) + } + + } catch (e: Exception) { + Timber.e(e) + launch(Dispatchers.Main) { + callback?.invoke(true) + } + } + } + } + } + +} \ No newline at end of file