package com.newhive.scammerradar.manager.submanager;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.newhive.scammerradar.classes.Player;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import net.labymod.api.Constants.Files;
import net.labymod.api.util.I18n;

public class FileManager {
   private static final Gson gson = (new GsonBuilder()).setPrettyPrinting().create();
   private static final File localScammerFile;
   private static final Type listType;

   public void writeFile(HashMap<String, Player> player_map) throws IOException {
      try {
         if (!localScammerFile.exists()) {
            localScammerFile.createNewFile();
         }

         PrintWriter w = new PrintWriter(new OutputStreamWriter(new FileOutputStream(localScammerFile, false), StandardCharsets.UTF_8), true);
         w.print(gson.toJson(new ArrayList(player_map.values())));
         w.flush();
         w.close();
      } catch (IOException var3) {
         throw new IOException(I18n.translate("scammerradar.exceptions.addon.file-writing-exception", new Object[0]));
      }
   }

   public HashMap<String, Player> readFile() throws IOException {
      new HashMap();

      try {
         if (!localScammerFile.exists()) {
            localScammerFile.createNewFile();
         }

         FileReader reader = new FileReader(localScammerFile);
         List<Player> player_list = (List)gson.fromJson(reader, listType);
         HashMap<String, Player> playerMap = new HashMap((Map)player_list.stream().collect(Collectors.toMap(Player::getName, Function.identity())));
         return playerMap;
      } catch (IOException var4) {
         throw new IOException(I18n.translate("scammerradar.exceptions.addon.file-reading-exception", new Object[0]));
      }
   }

   static {
      localScammerFile = new File(String.valueOf(Files.CONFIGS) + "/scammerradar/localScammer.json");
      listType = (new TypeToken<Collection<Player>>() {
      }).getType();
   }
}
