package igotyou.SnitchTrack;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.net.ftp.FTPClient;
public class SnitchManager
{
private List<Snitch> snitches;
public SnitchManager()
{
snitches = new ArrayList<Snitch>();
try
{
load(new File("snitchtest.txt"));
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void downloadFromFtp(String host, int port, String username, String password, String fileName)
{
FTPClient client = new FTPClient();
FileOutputStream fos = null;
try
{
client.connect(host,port);
client.login(username, password);
fos = new FileOutputStream(fileName);
client.retrieveFile("/" + fileName, fos);
}
catch (IOException e)
{
e.printStackTrace();
}
try
{
if (fos != null)
{
fos.close();
}
client.disconnect();
}
catch (IOException e)
{
e.printStackTrace();
}
try
{
this.load(new File(fileName));
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void uploadToFtp(String host, int port, String username, String password, String fileName)
{
FTPClient client = new FTPClient();
FileInputStream fis = null;
try
{
client.connect(host, port);
client.login(username, password);
fis = new FileInputStream(fileName);
client.storeFile(fileName, fis);
client.logout();
}
catch (IOException e)
{
e.printStackTrace();
}
try
{
if (fis != null)
{
fis.close();
}
client.disconnect();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void load(File file) throws IOException
{
FileInputStream fileInputStream = new FileInputStream(file);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
String line;
while ((line = bufferedReader.readLine()) != null)
{
String parts[] = line.split("�");
boolean dateFound = false;
//ORDER loc_x loc_y loc_z worldname date
int snitch_x = Integer.parseInt(parts[0]);
int snitch_y = Integer.parseInt(parts[1]);
int snitch_z = Integer.parseInt(parts[2]);
int snitch_world = Integer.parseInt(parts[3]);
String snitch_name = parts[4];
DateFormat date_format = new SimpleDateFormat("k:mmdd/MMyyyy");
Date snitch_date = null;
try
{
snitch_date = date_format.parse(parts[5]);
dateFound = true;
}
catch (ParseException e)
{
dateFound = false;
e.printStackTrace();
}
if (dateFound == true)
{
create_snitch(snitch_x, snitch_y, snitch_z, snitch_world, snitch_name, snitch_date);
}
else
{
create_snitch(snitch_x, snitch_y, snitch_z, snitch_world, snitch_name);
}
}
fileInputStream.close();
}
public void save(File file) throws IOException
{
FileOutputStream fileOutputStream = new FileOutputStream(file);
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream));
for (Snitch snitch : snitches)
{
//ORDER loc_x loc_y loc_z world_name dateChecked
bufferedWriter.append(Integer.toString(snitch.get_x()));
bufferedWriter.append("�");
bufferedWriter.append(Integer.toString(snitch.get_y()));
bufferedWriter.append("�");
bufferedWriter.append(Integer.toString(snitch.get_z()));
bufferedWriter.append("�");
bufferedWriter.append(Integer.toString(snitch.get_world()));
bufferedWriter.append("�");
bufferedWriter.append(snitch.get_name());
bufferedWriter.append("�");
DateFormat date_format = new SimpleDateFormat("k:mmdd/MMyyyy");
bufferedWriter.append(date_format.format(snitch.get_date_checked()));
bufferedWriter.append("\n");
}
bufferedWriter.flush();
fileOutputStream.close();
}
public Snitch get_snitch_by_name(String snitchName, int snitchWorld)
{
for (Snitch snitch : snitches)
{
if (snitch.get_name().equalsIgnoreCase(snitchName) && snitch.get_world() == snitchWorld)
{
return snitch;
}
}
return null;
}
public Snitch get_snitch_by_cords(int snitchX, int snitchY, int snitchZ, int snitchWorld)
{
for(Snitch snitch : snitches)
{
if (snitch.get_x() == snitchX && snitch.get_y() == snitchY && snitch.get_z() == snitchZ && snitch.get_world() == snitchWorld)
{
return snitch;
}
}
return null;
}
public void create_snitch(int new_x, int new_y, int new_z, int new_world, String new_name, Date new_date)
{
Snitch snitch = new Snitch(new_x, new_y, new_z, new_world, new_name, this, new_date);
snitches.add(snitch);
}
public void create_snitch(int new_x, int new_y, int new_z, int new_world, String new_name)
{
Snitch snitch = new Snitch(new_x, new_y, new_z, new_world, new_name, this);
snitches.add(snitch);
}
public void removeSnitch(Snitch snitch)
{
snitches.remove(snitch);
}
public List<Snitch> get_snitches()
{
return snitches;
}
}