/** * DataManager.java */ package rampancy_old.data; import rampancy_old.RampantRobot; import robocode.*; import robocode.util.*; import java.io.*; import java.util.*; import java.util.zip.*; /** * This class manages data loading and saving * @author Matthew Chun-Lum * */ public class DataManager { public RampantRobot robot; public ArrayList<EnemyDataModel> dataToExport; public DataManager(RampantRobot robot) { this.robot = robot; dataToExport = new ArrayList<EnemyDataModel>(); } public void exportData() { for(EnemyDataModel data : dataToExport) { write(data); } System.out.println("Data saved"); System.out.println("Storage space remaining: " + robot.getDataQuotaAvailable() + " bytes"); } public EnemyDataModel getDataFor(String name) { try { ZipInputStream zipin = new ZipInputStream(new FileInputStream(robot.getDataFile(name + ".zip"))); zipin.getNextEntry(); ObjectInputStream in = new ObjectInputStream(zipin); Object obj = in.readObject(); in.close(); if(obj instanceof EnemyDataModel) { System.out.println("Loading saved gun data for " + name); return (EnemyDataModel) obj; } } catch (FileNotFoundException e) { System.out.println("First time fighting " + name); } catch (IOException e) { System.out.println("Error reading file for " + name + "!"); } catch (ClassNotFoundException e) { System.out.println("Class not found exception"); e.printStackTrace(); } return null; } // ------------ Private ------------- // /** * Writes a file to the data directory */ private void write(EnemyDataModel data) { String filename = data.enemyName; try { ZipOutputStream zip = new ZipOutputStream(new RobocodeFileOutputStream(robot.getDataFile(filename + ".zip"))); zip.putNextEntry(new ZipEntry(filename)); ObjectOutputStream out = new ObjectOutputStream(zip); out.writeObject(data); out.flush(); zip.closeEntry(); out.close(); } catch (IOException e) { System.out.println("Error writing object: " + e.toString()); } } }