Graph database Analysis of the Steam Network
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

126 lines
2.9 KiB

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);
}
}