diff options
| author | Paul Buetow <paul@buetow.org> | 2008-06-01 22:45:59 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-06-01 22:45:59 +0000 |
| commit | 293c73f50f87b3d73d3947a9f79430b23ec4ddba (patch) | |
| tree | 129ece28dcda9d17bb6e0fc417d8b25bb82dac4c /sources/simulator | |
| parent | 8086082daaed71ee9105c156e3a1e8e63caf1990 (diff) | |
better serialization
Diffstat (limited to 'sources/simulator')
| -rw-r--r-- | sources/simulator/VSSimulator.java | 62 | ||||
| -rw-r--r-- | sources/simulator/VSSimulatorCanvas.java | 61 | ||||
| -rw-r--r-- | sources/simulator/VSSimulatorFrame.java | 76 |
3 files changed, 94 insertions, 105 deletions
diff --git a/sources/simulator/VSSimulator.java b/sources/simulator/VSSimulator.java index d3456b1..f376719 100644 --- a/sources/simulator/VSSimulator.java +++ b/sources/simulator/VSSimulator.java @@ -36,6 +36,7 @@ import events.*; import events.internal.*; import prefs.*; import prefs.editors.*; +import serialize.*; import utils.*; /** @@ -45,7 +46,7 @@ import utils.*; * * @author Paul C. Buetow */ -public class VSSimulator extends JPanel implements Serializable { +public class VSSimulator extends JPanel implements VSSerializable { /** the serial version uid */ private static final long serialversionuid = 1l; @@ -1063,10 +1064,14 @@ public class VSSimulator extends JPanel implements Serializable { public void updateTaskManagerTable() { VSProcess process = getSelectedProcess(); boolean allProcesses = process == null; + taskManagerLocalModel.set(process, - VSTaskManagerTableModel.LOCAL, allProcesses); + VSTaskManagerTableModel.LOCAL, + allProcesses); + taskManagerGlobalModel.set(process, - VSTaskManagerTableModel.GLOBAL, allProcesses); + VSTaskManagerTableModel.GLOBAL, + allProcesses); } /** @@ -1216,50 +1221,31 @@ public class VSSimulator extends JPanel implements Serializable { return prefs; } - /** - * 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 { - objectOutputStream.writeObject(prefs); - objectOutputStream.writeObject(simulatorCanvas); + simulatorCanvas.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: VSSimulator"); - VSDeserializationHelper.setObject("simulator", this); - - VSSimulatorFrame simulatorFrame = (VSSimulatorFrame) - VSDeserializationHelper.getObject( - "simulatorFrame"); - - // TODO: Merge prefs!?! - VSPrefs prefs = (VSPrefs) objectInputStream.readObject(); - VSDeserializationHelper.setObject("prefs", prefs); - - this.logging = new VSLogging(); - VSDeserializationHelper.setObject("logging", logging); + serialize.setObject("simulator", this); + serialize.setObject("logging", logging); + simulatorCanvas.deserialize(serialize, objectInputStream); - this.simulatorCanvas = - (VSSimulatorCanvas) objectInputStream.readObject(); - VSDeserializationHelper.setObject("simulatorCanvas", simulatorCanvas); - - init(prefs, simulatorFrame); + updateTaskManagerTable(); } } diff --git a/sources/simulator/VSSimulatorCanvas.java b/sources/simulator/VSSimulatorCanvas.java index d6bc5d2..cfc6549 100644 --- a/sources/simulator/VSSimulatorCanvas.java +++ b/sources/simulator/VSSimulatorCanvas.java @@ -37,6 +37,7 @@ import events.implementations.*; import events.internal.*; import prefs.*; import prefs.editors.*; +import serialize.*; import utils.*; /** @@ -49,7 +50,7 @@ import utils.*; * @author Paul C. Buetow */ public class VSSimulatorCanvas extends Canvas - implements Runnable, Serializable { + implements Runnable, VSSerializable { /** The serial version uid */ private static final long serialVersionUID = 1L; @@ -1545,47 +1546,45 @@ public class VSSimulatorCanvas extends Canvas } } - /** - * 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 { synchronized (processes) { - objectOutputStream.writeObject(processes); + objectOutputStream.writeObject(new Integer(numProcesses)); + for (VSProcess process : processes) + process.serialize(serialize, objectOutputStream); } - objectOutputStream.writeObject(taskManager); + + taskManager.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: VSSimulatorCanvas"); - VSPrefs prefs = (VSPrefs) VSDeserializationHelper.getObject("prefs"); - VSSimulator simulator = - (VSSimulator) VSDeserializationHelper.getObject("simulator"); - VSLogging logging = - (VSLogging) VSDeserializationHelper.getObject("logging"); - - this.processes = (ArrayList<VSProcess>) objectInputStream.readObject(); - this.numProcesses = processes.size(); - - this.taskManager = (VSTaskManager) objectInputStream.readObject(); - VSDeserializationHelper.setObject("taskManager", taskManager); + synchronized (processes) { + numProcesses = ((Integer) + objectInputStream.readObject()).intValue(); + + processes.clear(); + for (int i = 0; i < numProcesses; ++i) { + VSProcess process = createProcess(i); + process.deserialize(serialize, objectInputStream); + processes.add(process); + } + } - init(prefs, simulator, logging); + taskManager.deserialize(serialize, objectInputStream); } } diff --git a/sources/simulator/VSSimulatorFrame.java b/sources/simulator/VSSimulatorFrame.java index f5ef5af..aff8787 100644 --- a/sources/simulator/VSSimulatorFrame.java +++ b/sources/simulator/VSSimulatorFrame.java @@ -33,6 +33,7 @@ import javax.swing.event.*; import core.*; import prefs.*; import prefs.editors.*; +import serialize.*; import utils.*; /** @@ -42,7 +43,7 @@ import utils.*; * * @author Paul C. Buetow */ -public class VSSimulatorFrame extends VSFrame implements Serializable { +public class VSSimulatorFrame extends VSFrame { /** The serial version uid */ private static final long serialVersionUID = 1L; @@ -143,6 +144,22 @@ public class VSSimulatorFrame extends VSFrame implements Serializable { dispose(); } else if (sourceText.equals( + finalPrefs.getString("lang.open"))) { + + VSSerialize serialize = new VSSerialize(); + VSSimulator simulator = serialize.openSimulator( + VSSerialize.STANDARD_FILENAME, + VSSimulatorFrame.this); + addSimulator(simulator); + + } else if (sourceText.equals( + finalPrefs.getString("lang.save"))) { + + VSSerialize serialize = new VSSerialize(); + serialize.saveSimulator(VSSerialize.STANDARD_FILENAME, + currentSimulator); + + } else if (sourceText.equals( finalPrefs.getString("lang.about"))) { new VSAbout(finalPrefs, VSSimulatorFrame.this); @@ -253,6 +270,28 @@ public class VSSimulatorFrame extends VSFrame implements Serializable { menuItem.addActionListener(actionListener); menuFile.add(menuItem); + menuFile.addSeparator(); + + menuItem = new JMenuItem(prefs.getString("lang.open")); + menuItem.setAccelerator(KeyStroke.getKeyStroke( + prefs.getInteger("keyevent.open"), + ActionEvent.ALT_MASK)); + menuItem.addActionListener(actionListener); + menuFile.add(menuItem); + + menuItem = new JMenuItem(prefs.getString("lang.save")); + menuItem.setAccelerator(KeyStroke.getKeyStroke( + prefs.getInteger("keyevent.save"), + ActionEvent.ALT_MASK)); + menuItem.addActionListener(actionListener); + menuFile.add(menuItem); + + menuItem = new JMenuItem(prefs.getString("lang.saveas")); + menuItem.setAccelerator(KeyStroke.getKeyStroke( + prefs.getInteger("keyevent.saveas"), + ActionEvent.ALT_MASK)); + menuItem.addActionListener(actionListener); + menuFile.add(menuItem); menuFile.addSeparator(); @@ -508,39 +547,4 @@ public class VSSimulatorFrame extends VSFrame implements Serializable { return new ImageIcon(imageURL, descr); } - - /** - * Write object. - * - * @param objectOutputStream the object output stream - * - * @throws IOException Signals that an I/O exception has occurred. - */ - public synchronized void writeObject(ObjectOutputStream objectOutputStream) - throws IOException { - objectOutputStream.writeObject(currentSimulator); - } - - /** - * 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 - */ - @SuppressWarnings("unchecked") - public synchronized void readObject(ObjectInputStream objectInputStream) - throws IOException, ClassNotFoundException { - if (VSDeserializationHelper.DEBUG) - System.out.println("Deserializing: VSSimulatorFrame"); - - VSDeserializationHelper.init(); - VSDeserializationHelper.setObject("simulatorFrame", this); - - currentSimulator = (VSSimulator) objectInputStream.readObject(); - - VSDeserializationHelper.destroy(); - addSimulator(currentSimulator); - } } |
