package net.jrtechs.www.webCrawler;
|
|
|
|
import net.jrtechs.www.model.Player;
|
|
import net.jrtechs.www.utils.FileReader;
|
|
import net.jrtechs.www.utils.WrappedFileWriter;
|
|
import org.json.JSONArray;
|
|
import org.json.JSONObject;
|
|
|
|
import java.io.File;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
* File which handles the file IO for storing
|
|
* all the players on the HHD
|
|
*
|
|
* @author Jeffery Russell 11-18-18
|
|
*/
|
|
public class FileIO
|
|
{
|
|
/** Base directory to store all the data */
|
|
private String baseFilePath;
|
|
|
|
/**
|
|
* Initalizes the base directory
|
|
* @param basePath
|
|
*/
|
|
public FileIO(String basePath)
|
|
{
|
|
this.baseFilePath = basePath;
|
|
}
|
|
|
|
|
|
/**
|
|
* Helper function to piece together the naming convention
|
|
* for the JSON file.
|
|
*
|
|
* @param id player id
|
|
* @return path of the file being saved
|
|
*/
|
|
private String getURL(String id)
|
|
{
|
|
return baseFilePath + id + ".json";
|
|
}
|
|
|
|
|
|
/**
|
|
* Determines if we already have the player
|
|
* on disk.
|
|
*
|
|
* @param id steam id of the player
|
|
* @return if the file exists on disk
|
|
*/
|
|
public boolean playerExists(String id)
|
|
{
|
|
String fileName = baseFilePath + id + ".json";
|
|
return new File(fileName).isFile();
|
|
}
|
|
|
|
|
|
/**
|
|
* Returns the date in a form which is easy to read and write
|
|
* to from a file.
|
|
*
|
|
* @return
|
|
*/
|
|
private String getDate()
|
|
{
|
|
String pattern = "yyyy-MM-dd";
|
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
|
|
|
|
return simpleDateFormat.format(new Date());
|
|
}
|
|
|
|
|
|
/**
|
|
* Reads all the friends from a player on the disk
|
|
*
|
|
* ** This should only be called if we know the player
|
|
* is stored on the disk.
|
|
*
|
|
* @param id steam id of the player
|
|
* @return list of all their friends.
|
|
*/
|
|
public List<String> readFriends(String id)
|
|
{
|
|
String fileContents = FileReader.readFile(this.getURL(id));
|
|
|
|
JSONObject player = new JSONObject(fileContents);
|
|
|
|
if(player.has("friends"))
|
|
{
|
|
List<String> list = new ArrayList<>();
|
|
|
|
JSONArray jsonArray = player.getJSONArray("friends");
|
|
|
|
for(int i = 0 ; i < jsonArray.length();i++)
|
|
{
|
|
list.add(jsonArray.getString(i));
|
|
}
|
|
return list;
|
|
}
|
|
return new ArrayList<>();
|
|
}
|
|
|
|
|
|
/**
|
|
* Writes the player to the file.
|
|
*
|
|
* @param player
|
|
*/
|
|
public void writeToFile(Player player, List<String> friendIDS)
|
|
{
|
|
JSONObject object = new JSONObject();
|
|
object.put("name", player.getName());
|
|
object.put("date", getDate());
|
|
object.put("friends", friendIDS);
|
|
|
|
String fileName = baseFilePath + player.getId() + ".json";
|
|
|
|
WrappedFileWriter.writeToFile(object.toString(4), fileName);
|
|
}
|
|
}
|