From bbe5dee9f8473b1aaf2059efd9ab83b7be444bf6 Mon Sep 17 00:00:00 2001
From: Charles Lombardo <clombardo169@gmail.com>
Date: Wed, 8 Mar 2023 15:38:03 -0500
Subject: [PATCH] android: Convert Game to Kotlin

---
 .../java/org/yuzu/yuzu_emu/model/Game.java    | 76 -------------------
 .../main/java/org/yuzu/yuzu_emu/model/Game.kt | 56 ++++++++++++++
 2 files changed, 56 insertions(+), 76 deletions(-)
 delete mode 100644 src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.java
 create mode 100644 src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.kt

diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.java
deleted file mode 100644
index 6811172683..0000000000
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.yuzu.yuzu_emu.model;
-
-import android.content.ContentValues;
-import android.database.Cursor;
-
-import java.nio.file.Paths;
-
-public final class Game {
-    private String mTitle;
-    private String mDescription;
-    private String mPath;
-    private String mGameId;
-    private String mCompany;
-    private String mRegions;
-
-    public Game(String title, String description, String regions, String path,
-                String gameId, String company) {
-        mTitle = title;
-        mDescription = description;
-        mRegions = regions;
-        mPath = path;
-        mGameId = gameId;
-        mCompany = company;
-    }
-
-    public static ContentValues asContentValues(String title, String description, String regions, String path, String gameId, String company) {
-        ContentValues values = new ContentValues();
-
-        if (gameId.isEmpty()) {
-            // Homebrew, etc. may not have a game ID, use filename as a unique identifier
-            gameId = Paths.get(path).getFileName().toString();
-        }
-
-        values.put(GameDatabase.KEY_GAME_TITLE, title);
-        values.put(GameDatabase.KEY_GAME_DESCRIPTION, description);
-        values.put(GameDatabase.KEY_GAME_REGIONS, regions);
-        values.put(GameDatabase.KEY_GAME_PATH, path);
-        values.put(GameDatabase.KEY_GAME_ID, gameId);
-        values.put(GameDatabase.KEY_GAME_COMPANY, company);
-
-        return values;
-    }
-
-    public static Game fromCursor(Cursor cursor) {
-        return new Game(cursor.getString(GameDatabase.GAME_COLUMN_TITLE),
-                cursor.getString(GameDatabase.GAME_COLUMN_DESCRIPTION),
-                cursor.getString(GameDatabase.GAME_COLUMN_REGIONS),
-                cursor.getString(GameDatabase.GAME_COLUMN_PATH),
-                cursor.getString(GameDatabase.GAME_COLUMN_GAME_ID),
-                cursor.getString(GameDatabase.GAME_COLUMN_CAPTION));
-    }
-
-    public String getTitle() {
-        return mTitle;
-    }
-
-    public String getDescription() {
-        return mDescription;
-    }
-
-    public String getCompany() {
-        return mCompany;
-    }
-
-    public String getRegions() {
-        return mRegions;
-    }
-
-    public String getPath() {
-        return mPath;
-    }
-
-    public String getGameId() {
-        return mGameId;
-    }
-}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.kt
new file mode 100644
index 0000000000..5653d93134
--- /dev/null
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.kt
@@ -0,0 +1,56 @@
+package org.yuzu.yuzu_emu.model
+
+import android.content.ContentValues
+import android.database.Cursor
+import java.nio.file.Paths
+import java.util.HashSet
+
+class Game(
+    val title: String,
+    val description: String,
+    val regions: String,
+    val path: String,
+    val gameId: String,
+    val company: String
+) {
+    companion object {
+        val extensions: Set<String> = HashSet(
+            listOf(".xci", ".nsp", ".nca", ".nro")
+        )
+
+        @JvmStatic
+        fun asContentValues(
+            title: String?,
+            description: String?,
+            regions: String?,
+            path: String?,
+            gameId: String,
+            company: String?
+        ): ContentValues {
+            var realGameId = gameId
+            val values = ContentValues()
+            if (realGameId.isEmpty()) {
+                // Homebrew, etc. may not have a game ID, use filename as a unique identifier
+                realGameId = Paths.get(path).fileName.toString()
+            }
+            values.put(GameDatabase.KEY_GAME_TITLE, title)
+            values.put(GameDatabase.KEY_GAME_DESCRIPTION, description)
+            values.put(GameDatabase.KEY_GAME_REGIONS, regions)
+            values.put(GameDatabase.KEY_GAME_PATH, path)
+            values.put(GameDatabase.KEY_GAME_ID, realGameId)
+            values.put(GameDatabase.KEY_GAME_COMPANY, company)
+            return values
+        }
+
+        fun fromCursor(cursor: Cursor): Game {
+            return Game(
+                cursor.getString(GameDatabase.GAME_COLUMN_TITLE),
+                cursor.getString(GameDatabase.GAME_COLUMN_DESCRIPTION),
+                cursor.getString(GameDatabase.GAME_COLUMN_REGIONS),
+                cursor.getString(GameDatabase.GAME_COLUMN_PATH),
+                cursor.getString(GameDatabase.GAME_COLUMN_GAME_ID),
+                cursor.getString(GameDatabase.GAME_COLUMN_CAPTION)
+            )
+        }
+    }
+}