From 293c73f50f87b3d73d3947a9f79430b23ec4ddba Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 1 Jun 2008 22:45:59 +0000 Subject: better serialization --- sources/core/VSTaskManager.java | 88 ++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 54 deletions(-) (limited to 'sources/core/VSTaskManager.java') diff --git a/sources/core/VSTaskManager.java b/sources/core/VSTaskManager.java index a63db51..cbbde56 100644 --- a/sources/core/VSTaskManager.java +++ b/sources/core/VSTaskManager.java @@ -27,6 +27,7 @@ import java.io.*; import java.util.*; import prefs.*; +import serialize.*; import simulator.*; import utils.*; @@ -38,7 +39,7 @@ import utils.*; * * @author Paul C. Buetow */ -public class VSTaskManager implements Serializable { +public class VSTaskManager implements VSSerializable { /** The seriao version uid */ private static final long serialVersionUID = 1L; @@ -493,80 +494,59 @@ public class VSTaskManager implements Serializable { return descr + ")"; } - /** - * Write object. - * - * @param objectOutputStream the object output stream - * - * @throws IOException Signals that an I/O exception has occurred. + /* (non-Javadoc) + * @see serialize.VSSerializable#serialize(serialize.VSSerialize, + * java.io.ObjectOutputStream) */ - public synchronized void writeObject(ObjectOutputStream objectOutputStream) + public synchronized void serialize(VSSerialize serialize, + ObjectOutputStream objectOutputStream) throws IOException { - VSPriorityQueue temp = new VSPriorityQueue(); + + ArrayList tasks = new ArrayList(); for (VSTask task : fullfilledProgrammedTasks) - if (task.isGlobalTimed()) - temp.add(task); + tasks.add(task); - for (VSTask task : globalTasks) - temp.add(task); + for (VSTask task : this.globalTasks) + tasks.add(task); ArrayList processes = simulatorCanvas.getProcesses(); - HashMap> map = - new HashMap>(); synchronized (processes) { for (VSProcess process : processes) { - VSPriorityQueue tasks = process.getTasks(); - ArrayList tasks_ = new ArrayList(); - for (VSTask task : tasks) - tasks_.add(task); - map.put(new Integer(process.getProcessNum()), tasks_); + VSPriorityQueue localTasks = process.getTasks(); + ArrayList tasks_ = new ArrayList(); + for (VSTask task : localTasks) + tasks.add(task); } } - objectOutputStream.writeObject(temp); - objectOutputStream.writeObject(map); + objectOutputStream.writeObject(new Integer(tasks.size())); + for (VSTask task : tasks) + task.serialize(serialize, objectOutputStream); } - /** - * Read object. - * - * @param objectInputStream the object input stream - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws ClassNotFoundException the class not found exception + /* (non-Javadoc) + * @see serialize.VSSerializable#deserialize(serialize.VSSerialize, + * java.io.ObjectInputStream) */ @SuppressWarnings("unchecked") - public synchronized void readObject(ObjectInputStream objectInputStream) + public synchronized void deserialize(VSSerialize serialize, + ObjectInputStream objectInputStream) throws IOException, ClassNotFoundException { - if (VSDeserializationHelper.DEBUG) + if (VSSerialize.DEBUG) System.out.println("Deserializing: VSTaskManager"); - VSPrefs prefs = (VSPrefs) VSDeserializationHelper.getObject("prefs"); - VSSimulatorCanvas simulatorCanvas = (VSSimulatorCanvas) - VSDeserializationHelper.getObject( - "prefs"); - this.globalTasks = (PriorityQueue) - objectInputStream.readObject(); - - HashMap> map = - (HashMap>) - objectInputStream.readObject(); - - Set set = map.keySet(); - for (Integer processNum : set) { - VSProcess process = (VSProcess) VSDeserializationHelper.getObject( - processNum.intValue(), - "process"); + int numTasks = ((Integer) objectInputStream.readObject()).intValue(); + globalTasks.clear(); - ArrayList tasks = (ArrayList) map.get(processNum); - VSPriorityQueue tasks_ = process.getTasks(); - - for (VSTask task: tasks) - tasks_.add(task); - } + ArrayList processes = simulatorCanvas.getProcesses(); + synchronized (processes) { + for (VSProcess process : processes) + process.getTasks().clear(); + } - init(prefs, simulatorCanvas); + for (int i = 0; i < numTasks; ++i) + addTask(new VSTask(serialize, objectInputStream)); } } -- cgit v1.2.3