/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.redPandaLib.core;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.redPandaLib.core.messages.RawMsg;
/**
*
* @author robin
*/
public class Saver implements SaverInterface {
public static final String SAVE_DIR = "data";
public static String getPrefix() {
//return "-" + Integer.toString(Test.MY_PORT);
return "";
}
public void saveMsgs(ArrayList<RawMsg> msgs) {
FileOutputStream fileOutputStream = null;
ObjectOutputStream objectOutputStream = null;
try {
File mkdirs = new File(SAVE_DIR);
mkdirs.mkdir();
File file = new File(SAVE_DIR + "/msgs" + getPrefix() + ".dat");
file.createNewFile();
fileOutputStream = new FileOutputStream(file);
objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(msgs.clone());
objectOutputStream.close();
fileOutputStream.close();
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
if (objectOutputStream != null) {
objectOutputStream.close();
}
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
public ArrayList<RawMsg> loadMsgs() {
FileInputStream fileInputStream = null;
ObjectInputStream objectInputStream = null;
try {
File file = new File(SAVE_DIR + "/msgs" + getPrefix() + ".dat");
fileInputStream = new FileInputStream(file);
objectInputStream = new ObjectInputStream(fileInputStream);
Object readObject = objectInputStream.readObject();
objectInputStream.close();
fileInputStream.close();
return (ArrayList<RawMsg>) readObject;
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
if (objectInputStream != null) {
objectInputStream.close();
}
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (fileInputStream != null) {
try {
fileInputStream.close();
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
System.out.println("could not load msgs.dat");
return new ArrayList<RawMsg>();
}
public void savePeerss(ArrayList<Peer> peers) {
ArrayList<PeerSaveable> arrayList = new ArrayList<PeerSaveable>();
for (Peer peer : peers) {
arrayList.add(peer.toSaveable());
}
//arrayList = (ArrayList<PeerSaveable>) arrayList.clone();//hack?
FileOutputStream fileOutputStream = null;
ObjectOutputStream objectOutputStream = null;
try {
File file = new File(SAVE_DIR + "/peers" + getPrefix() + ".dat");
file.createNewFile();
fileOutputStream = new FileOutputStream(file);
objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(arrayList);
objectOutputStream.close();
fileOutputStream.close();
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
if (objectOutputStream != null) {
objectOutputStream.close();
}
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
public ArrayList<Peer> loadPeers() {
try {
File file = new File(SAVE_DIR + "/peers" + getPrefix() + ".dat");
FileInputStream fileInputStream = new FileInputStream(file);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Object readObject = objectInputStream.readObject();
objectInputStream.close();
fileInputStream.close();
ArrayList<PeerSaveable> pp = (ArrayList<PeerSaveable>) readObject;
ArrayList<Peer> arrayList = new ArrayList<Peer>();
for (PeerSaveable p : pp) {
arrayList.add(p.toPeer());
}
return arrayList;
} catch (ClassNotFoundException ex) {
} catch (IOException ex) {
} catch (ClassCastException ex) {
}
System.out.println("could not load peers.dat");
return new ArrayList<Peer>();
}
public void saveIdentities(ArrayList<Channel> identities) {
FileOutputStream fileOutputStream = null;
ObjectOutputStream objectOutputStream = null;
try {
File file = new File(SAVE_DIR + "/identities.dat");
file.createNewFile();
fileOutputStream = new FileOutputStream(file);
objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(identities);
objectOutputStream.close();
fileOutputStream.close();
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
if (objectOutputStream != null) {
objectOutputStream.close();
}
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
public ArrayList<Channel> loadIdentities() {
try {
File file = new File(SAVE_DIR + "/identities.dat");
FileInputStream fileInputStream = new FileInputStream(file);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Object readObject = objectInputStream.readObject();
objectInputStream.close();
fileInputStream.close();
return (ArrayList<Channel>) readObject;
} catch (ClassNotFoundException ex) {
} catch (IOException ex) {
}
System.out.println("could not load identities.dat");
return new ArrayList<Channel>();
}
@Override
public void saveLocalSettings(LocalSettings localSettings) {
FileOutputStream fileOutputStream = null;
ObjectOutputStream objectOutputStream = null;
try {
File mkdirs = new File(SAVE_DIR);
mkdirs.mkdir();
File file = new File(SAVE_DIR + "/localSettings" + getPrefix() + ".dat");
file.createNewFile();
fileOutputStream = new FileOutputStream(file);
objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(localSettings);
objectOutputStream.close();
fileOutputStream.close();
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
if (objectOutputStream != null) {
objectOutputStream.close();
}
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
@Override
public LocalSettings loadLocalSettings() {
try {
File file = new File(SAVE_DIR + "/localSettings" + getPrefix() + ".dat");
FileInputStream fileInputStream = new FileInputStream(file);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Object readObject = objectInputStream.readObject();
objectInputStream.close();
fileInputStream.close();
return (LocalSettings) readObject;
} catch (ClassNotFoundException ex) {
} catch (IOException ex) {
}
System.out.println("could not load objects.dat");
return new LocalSettings();
}
@Override
public void saveTrustedPeers(ArrayList<PeerTrustData> peertrusts) {
FileOutputStream fileOutputStream = null;
ObjectOutputStream objectOutputStream = null;
try {
File mkdirs = new File(SAVE_DIR);
mkdirs.mkdir();
File fileTmp = new File(SAVE_DIR + "/trustData-tmp" + getPrefix() + ".dat");
fileTmp.createNewFile();
fileOutputStream = new FileOutputStream(fileTmp);
objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(peertrusts.clone());
objectOutputStream.close();
fileOutputStream.close();
File originFile = new File(SAVE_DIR + "/trustData" + getPrefix() + ".dat");
originFile.delete();
fileTmp.renameTo(originFile);
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
if (objectOutputStream != null) {
objectOutputStream.close();
}
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException ex) {
Logger.getLogger(Saver.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
@Override
public ArrayList<PeerTrustData> loadTrustedPeers() {
try {
File file = new File(SAVE_DIR + "/trustData" + getPrefix() + ".dat");
FileInputStream fileInputStream = new FileInputStream(file);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Object readObject = objectInputStream.readObject();
objectInputStream.close();
fileInputStream.close();
return (ArrayList<PeerTrustData>) readObject;
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
System.out.println("could not load trustData.dat");
return new ArrayList<PeerTrustData>();
}
@Override
public String getPath() {
return SAVE_DIR;
}
}