This repository has been archived by the owner on Oct 23, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
165 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
14 changes: 14 additions & 0 deletions
14
app/src/main/java/ch/epfl/sweng/erpa/database/ERPADatabase.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package ch.epfl.sweng.erpa.database; | ||
|
||
import android.arch.persistence.room.Database; | ||
import android.arch.persistence.room.RoomDatabase; | ||
import android.arch.persistence.room.TypeConverters; | ||
|
||
import ch.epfl.sweng.erpa.database.converter.*; | ||
import ch.epfl.sweng.erpa.model.*; | ||
|
||
@Database(entities = {Game.class, PlayerJoinGameRequest.class, UserAuth.class, Username.class, UserProfile.class, UserSessionToken.class}, version = 1) | ||
@TypeConverters({Converters.class}) | ||
public abstract class ERPADatabase extends RoomDatabase { | ||
public abstract GameDao gameDao(); | ||
} |
15 changes: 15 additions & 0 deletions
15
app/src/main/java/ch/epfl/sweng/erpa/database/GameDao.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package ch.epfl.sweng.erpa.database; | ||
|
||
import android.arch.persistence.room.Dao; | ||
import android.arch.persistence.room.Insert; | ||
import android.arch.persistence.room.Query; | ||
|
||
import java.util.List; | ||
|
||
import ch.epfl.sweng.erpa.model.*; | ||
|
||
@Dao | ||
public interface GameDao { | ||
@Query("SELECT * FROM game") List<Game> getAll(); | ||
@Insert void insertAll(Game... games); | ||
} |
106 changes: 106 additions & 0 deletions
106
app/src/main/java/ch/epfl/sweng/erpa/database/converter/Converters.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
package ch.epfl.sweng.erpa.database.converter; | ||
|
||
import android.arch.persistence.room.TypeConverter; | ||
|
||
import com.annimon.stream.Optional; | ||
import com.google.common.collect.BiMap; | ||
import com.google.common.collect.HashBiMap; | ||
|
||
import ch.epfl.sweng.erpa.model.Game; | ||
import ch.epfl.sweng.erpa.model.PlayerJoinGameRequest; | ||
|
||
public class Converters { | ||
|
||
@TypeConverter | ||
public static Integer toInteger(Optional<Integer> optional) { | ||
return optional.orElse(null); | ||
} | ||
|
||
@TypeConverter | ||
public static Optional<Integer> fromInteger(Integer value) { | ||
return Optional.ofNullable(value); | ||
} | ||
|
||
|
||
@TypeConverter | ||
public static PlayerJoinGameRequest.RequestStatus toRequestStatus(Integer value) { | ||
return requestStatusConversionMap.get(value); | ||
} | ||
|
||
@TypeConverter | ||
public static Integer fromRequestStatus(PlayerJoinGameRequest.RequestStatus requestStatus) { | ||
return requestStatusConversionMap.inverse().get(requestStatus); | ||
} | ||
|
||
|
||
@TypeConverter | ||
public static Game.GameStatus toGameStatus(Integer value) { | ||
return gameStatusConversionMap.get(value); | ||
} | ||
@TypeConverter | ||
public static Integer fromGameStatus(Game.GameStatus gameStatus) { | ||
return gameStatusConversionMap.inverse().get(gameStatus); | ||
} | ||
|
||
@TypeConverter | ||
public static Integer fromDifficulty(Game.Difficulty difficulty) { | ||
return difficultyConversionMap.inverse().get(difficulty); | ||
} | ||
|
||
@TypeConverter | ||
public static Game.Difficulty toDifficulty(Integer value) { | ||
return difficultyConversionMap.get(value); | ||
} | ||
|
||
|
||
private static final BiMap<Integer, PlayerJoinGameRequest.RequestStatus> requestStatusConversionMap = genRequestStatusConversionMap(); | ||
private static final BiMap<Integer, Game.GameStatus> gameStatusConversionMap = genGameStatusConversionMap(); | ||
private static final BiMap<Integer, Game.Difficulty> difficultyConversionMap = genDifficultyConversionMap(); | ||
|
||
private static BiMap<Integer, Game.Difficulty> genDifficultyConversionMap() { | ||
BiMap<Integer, Game.Difficulty> result = HashBiMap.create(); | ||
result.put(10, Game.Difficulty.NOOB); | ||
result.put(20, Game.Difficulty.CHILL); | ||
result.put(30, Game.Difficulty.HARD); | ||
assert conversionMapHasAll(result, Game.Difficulty.values()); | ||
return result; | ||
} | ||
|
||
/** | ||
* Builds a conversion map for the GameStatus enum | ||
*/ | ||
private static BiMap<Integer, Game.GameStatus> genGameStatusConversionMap() { | ||
BiMap<Integer, Game.GameStatus> result = HashBiMap.create(); | ||
result.put(10, Game.GameStatus.CANCELED); | ||
result.put(20, Game.GameStatus.CONFIRMED); | ||
result.put(30, Game.GameStatus.CREATED); | ||
result.put(40, Game.GameStatus.FINISHED); | ||
result.put(50, Game.GameStatus.IN_PROGRESS); | ||
assert conversionMapHasAll(result, Game.GameStatus.values()); | ||
return result; | ||
} | ||
|
||
/** | ||
* Builds a conversion map for the RequestStatus enum | ||
*/ | ||
private static BiMap<Integer, PlayerJoinGameRequest.RequestStatus> genRequestStatusConversionMap() { | ||
BiMap<Integer, PlayerJoinGameRequest.RequestStatus> result = HashBiMap.create(); | ||
result.put(10, PlayerJoinGameRequest.RequestStatus.CONFIRMED); | ||
result.put(20, PlayerJoinGameRequest.RequestStatus.HAS_QUIT); | ||
result.put(30, PlayerJoinGameRequest.RequestStatus.REJECTED); | ||
result.put(40, PlayerJoinGameRequest.RequestStatus.REMOVED); | ||
result.put(50, PlayerJoinGameRequest.RequestStatus.REQUEST_TO_JOIN); | ||
assert conversionMapHasAll(result, PlayerJoinGameRequest.RequestStatus.values()); | ||
return result; | ||
} | ||
|
||
private static <T> boolean conversionMapHasAll(BiMap<?, T> result, T[] values) { | ||
for (T t : values) { | ||
if (!result.inverse().containsKey(t)) { | ||
return false; | ||
} | ||
} | ||
|
||
return false; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters