Search in sources :

Example 1 with GameListAdapter

use of com.github.jakz.romlib.json.GameListAdapter in project rom-manager by Jakz.

the class GameSetManager method saveSetStatus.

public void saveSetStatus(GameSet set) {
    try {
        Path basePath = GlobalSettings.DATA_PATH.resolve(set.ident());
        Files.createDirectories(basePath);
        Path settingsPath = basePath.resolve("settings.json");
        try (BufferedWriter wrt = Files.newBufferedWriter(settingsPath)) {
            MyGameSetFeatures helper = set.helper();
            wrt.write(Json.build().toJson(helper.settings(), Settings.class));
        }
        Path statusPath = basePath.resolve("status.json");
        Gson gson = Json.prebuild().registerTypeAdapter(GameList.class, new GameListAdapter(set.list())).create();
        try (BufferedWriter wrt = Files.newBufferedWriter(statusPath)) {
            wrt.write(gson.toJson(set.list()));
            Log.getLogger(LogSource.STATUS).i(LogTarget.romset(set), "Romset status saved on json");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Also used : Path(java.nio.file.Path) GameList(com.github.jakz.romlib.data.set.GameList) Gson(com.google.gson.Gson) GameListAdapter(com.github.jakz.romlib.json.GameListAdapter) GlobalSettings(jack.rm.GlobalSettings) JsonParseException(com.google.gson.JsonParseException) NoSuchFileException(java.nio.file.NoSuchFileException) IOException(java.io.IOException) FileNotFoundException(java.io.FileNotFoundException) BufferedWriter(java.io.BufferedWriter)

Example 2 with GameListAdapter

use of com.github.jakz.romlib.json.GameListAdapter in project rom-manager by Jakz.

the class GameSetManager method loadSetStatus.

public boolean loadSetStatus(GameSet set) {
    try {
        Path basePath = Paths.get("data/", set.ident());
        Path settingsPath = basePath.resolve("settings.json");
        try {
            AssetManager assetManager = set.getAssetManager();
            for (Asset asset : assetManager.getSupportedAssets()) Files.createDirectories(set.getAssetPath(asset, false));
        } catch (IOException e) {
            e.printStackTrace();
        // TODO: log
        }
        if (!Files.exists(settingsPath)) {
            logger.d("Unable to load game status for %s: no saved status found.", set.toString());
            settings.put(set, new Settings(manager, Arrays.asList(set.getSupportedAttributes())));
            return false;
        } else {
            try (BufferedReader rdr = Files.newBufferedReader(settingsPath)) {
                Settings settings = Json.build().fromJson(rdr, Settings.class);
                if (settings == null)
                    throw new JsonParseException("Unable to load settings for gameset " + set);
                this.settings.put(set, settings);
                logger.d("Loaded gameset status for %s", set.toString());
            } catch (JsonParseException e) {
                if (e.getCause() instanceof ClassNotFoundException)
                    Log.getLogger(LogSource.STATUS).e("Error while loading plugin state: %s", e.getCause().toString());
                e.printStackTrace();
            }
            Path statusPath = basePath.resolve("status.json");
            Gson gson = Json.prebuild().registerTypeAdapter(GameList.class, new GameListAdapter(set.list())).create();
            try (BufferedReader rdr = Files.newBufferedReader(statusPath)) {
                gson.fromJson(rdr, GameList.class);
                set.refreshStatus();
                logger.d("Current status: %d/%d roms in %d/%d/%d games", set.status().getFoundRomsCount(), set.info().romCount(), set.status().getCorrectCount(), set.status().getIncompleteCount(), set.info().gameCount());
                if (set.hasFeature(Feature.CLONES))
                    set.clones().updateStatus();
                return true;
            } catch (NoSuchFileException e) {
                return false;
            }
        }
    } catch (FileNotFoundException e) {
        return false;
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }
}
Also used : Path(java.nio.file.Path) AssetManager(com.github.jakz.romlib.data.assets.AssetManager) NoSuchFileException(java.nio.file.NoSuchFileException) FileNotFoundException(java.io.FileNotFoundException) Gson(com.google.gson.Gson) IOException(java.io.IOException) JsonParseException(com.google.gson.JsonParseException) GameListAdapter(com.github.jakz.romlib.json.GameListAdapter) GameList(com.github.jakz.romlib.data.set.GameList) BufferedReader(java.io.BufferedReader) Asset(com.github.jakz.romlib.data.assets.Asset) GlobalSettings(jack.rm.GlobalSettings)

Aggregations

GameList (com.github.jakz.romlib.data.set.GameList)2 GameListAdapter (com.github.jakz.romlib.json.GameListAdapter)2 Gson (com.google.gson.Gson)2 JsonParseException (com.google.gson.JsonParseException)2 GlobalSettings (jack.rm.GlobalSettings)2 FileNotFoundException (java.io.FileNotFoundException)2 IOException (java.io.IOException)2 NoSuchFileException (java.nio.file.NoSuchFileException)2 Path (java.nio.file.Path)2 Asset (com.github.jakz.romlib.data.assets.Asset)1 AssetManager (com.github.jakz.romlib.data.assets.AssetManager)1 BufferedReader (java.io.BufferedReader)1 BufferedWriter (java.io.BufferedWriter)1