Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b6a3001

Browse files
authored
Fix a few bugs when loading the league (#35)
* Fix a few bugs when loading the league * Make the match progress a bit faster * Minor cleanup
1 parent 00f1070 commit b6a3001

6 files changed

Lines changed: 29 additions & 19 deletions

File tree

app/src/main/java/com/elifut/AppInitializer.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
package com.elifut;
22

3-
import com.google.common.collect.FluentIterable;
4-
53
import android.app.ProgressDialog;
64
import android.content.SharedPreferences;
75
import android.util.Log;
86

97
import com.elifut.models.Club;
108
import com.elifut.models.League;
119
import com.elifut.models.Player;
10+
import com.elifut.models.PlayersKt;
1211
import com.elifut.preferences.JsonPreference;
1312
import com.elifut.preferences.LeagueDetails;
1413
import com.elifut.preferences.UserPreferences;
@@ -17,6 +16,7 @@
1716
import com.elifut.services.ElifutService;
1817
import com.elifut.services.ResponseBodyMapper;
1918
import com.elifut.services.ResponseMapper;
19+
import com.google.common.collect.FluentIterable;
2020

2121
import java.util.List;
2222

@@ -58,6 +58,7 @@ public Observable<Void> initialize(int nationId, ProgressDialog progressDialog)
5858
.flatMap(Observable::from)
5959
.flatMap(this::loadPlayers)
6060
.filter(this::checkMinimumPlayers)
61+
.filter(this::checkGoalKeepers)
6162
.doOnNext(i -> progressDialog.setProgress(progressDialog.getProgress() + 2))
6263
.toList()
6364
.map(this::persistClubs)
@@ -68,9 +69,17 @@ public Observable<Void> initialize(int nationId, ProgressDialog progressDialog)
6869
.map(nothing -> (Void) null);
6970
}
7071

72+
private boolean checkGoalKeepers(ClubAndPlayers clubAndPlayers) {
73+
boolean hasNoGKs = PlayersKt.goalkeepers(clubAndPlayers.players).isEmpty();
74+
if (hasNoGKs) {
75+
Log.w(TAG, String.format("Dropping club %s due to not having at least 1 goalkeeper",
76+
clubAndPlayers.club));
77+
}
78+
return !hasNoGKs;
79+
}
80+
7181
private List<ClubAndPlayers> persistClubs(List<ClubAndPlayers> clubAndPlayers) {
72-
leagueDetails.initialize(FluentIterable
73-
.from(clubAndPlayers)
82+
leagueDetails.initialize(FluentIterable.from(clubAndPlayers)
7483
.transform(cp -> cp.club)
7584
.toList());
7685
return clubAndPlayers;

app/src/main/java/com/elifut/DataModule.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,10 @@
33
import android.content.Context;
44
import android.content.SharedPreferences;
55

6-
import com.elifut.adapter.ModelListAdapterFactory;
76
import com.elifut.match.LeagueRoundExecutor;
87
import com.elifut.match.MatchResultGenerator;
9-
import com.elifut.models.Club;
108
import com.elifut.models.GoalGenerator;
11-
import com.elifut.models.Nation;
129
import com.elifut.models.Persistable;
13-
import com.elifut.models.Player;
1410
import com.elifut.models.converter.ClubConverter;
1511
import com.elifut.models.converter.ClubSquadConverter;
1612
import com.elifut.models.converter.LeagueRoundConverter;
@@ -49,9 +45,6 @@ public DataModule(Context context) {
4945

5046
@Provides @Singleton Moshi provideMoshi() {
5147
return new Moshi.Builder()
52-
// .add(new ModelListAdapterFactory<>(Nation.class))
53-
// .add(new ModelListAdapterFactory<>(Club.class))
54-
// .add(new ModelListAdapterFactory<>(Player.class))
5548
.add(AutoValueMoshiAdapterFactory.create())
5649
.build();
5750
}

app/src/main/java/com/elifut/activity/MainActivity.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,15 +138,25 @@ public class MainActivity extends ElifutActivity {
138138
userPreferences.coachPreference().set(displayName);
139139
userPreferences.coinsPreference().set(UserPreferences.INITIAL_COINS_AMOUNT);
140140

141+
String errorMessage =
142+
"Sorry, we still don't have enough data to populate the league data for this country." +
143+
"Please select a different one and try again!";
141144
subscriptions.add(initializer
142145
.initialize(nation.id(), progressDialog)
143146
.observeOn(AndroidSchedulers.mainThread())
144-
.subscribe(new CompletionObserver<Object>(this, TAG, "Failed to load game data.") {
147+
.subscribe(new CompletionObserver<Object>(this, TAG, errorMessage) {
145148
@Override public void onCompleted() {
146149
progressDialog.setProgress(100);
147150
progressDialog.dismiss();
148151
launchHomeScreen();
149152
}
153+
154+
@Override public void onError(Throwable e) {
155+
super.onError(e);
156+
progressDialog.setProgress(100);
157+
progressDialog.dismiss();
158+
okButton.setVisibility(View.VISIBLE);
159+
}
150160
}));
151161
}
152162

app/src/main/java/com/elifut/activity/MatchProgressActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ private void startTimer() {
218218

219219
@NonNull private Observable<Long> timerObservable() {
220220
return BuildConfig.DEBUG ? Observable.interval(0, 100, TimeUnit.MILLISECONDS)
221-
: Observable.interval(0, 1, TimeUnit.SECONDS);
221+
: Observable.interval(0, 500, TimeUnit.MILLISECONDS);
222222
}
223223

224224
private void appendEvent(@DrawableRes int icon, String text, int gravity) {

app/src/main/java/com/elifut/services/ElifutDataStore.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ private <T extends Persistable> List<T> rawQuery(
113113
return items;
114114
}
115115

116-
@Nullable public <T extends Persistable> T queryOne(Class<T> type, String whereClause,
116+
@Nullable <T extends Persistable> T queryOne(Class<T> type, String whereClause,
117117
String... args) {
118118
Persistable.Converter<T> converter = converterForType(type);
119119
List<T> list = rawQuery(
@@ -143,15 +143,15 @@ public <T extends Persistable> Observable<List<T>> observe(
143143
.mapToList(cursor -> cursorToObject(converter, cursor));
144144
}
145145

146-
public <T extends Persistable> Observable<T> observeOne(
146+
<T extends Persistable> Observable<T> observeOne(
147147
Class<T> type, String whereClause, String... args) {
148148
Persistable.Converter<T> converter = converterForType(type);
149149
String tableName = converter.tableName();
150150
return db.createQuery(tableName, "SELECT * FROM " + tableName + " WHERE " + whereClause, args)
151151
.mapToOne(cursor -> cursorToObject(converter, cursor));
152152
}
153153

154-
public <T extends Persistable> Persistable.Converter<T> converterFor(Persistable persistable) {
154+
private <T extends Persistable> Persistable.Converter<T> converterFor(Persistable persistable) {
155155
return converterForType(persistable.getClass());
156156
}
157157

app/src/main/kotlin/com/elifut/util/CollectionUtils.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@ import java.util.*
99
fun <T> List<T>.shuffle() = apply { Collections.shuffle(this) }
1010

1111
/** Sorts this list using the provided comparator */
12-
fun <T> List<T>.sort(comparator: Comparator<in T>) =
12+
fun <T> List<T>.sort(comparator: Comparator<in T>): List<T> =
1313
FluentIterable.from(this).toSortedList(comparator)
1414

15-
fun <T> Observable<T>.toList() = toList().toBlocking().first()
16-
1715
/** Multiplies this list t times, eg.: [1, 2] times 2 = [1, 2, 1, 2] */
1816
fun <T> List<T>.times(t: Int) = 0.rangeTo(t - 1).flatMap { this }
1917

0 commit comments

Comments
 (0)