.. | .. |
---|
19 | 19 | |
---|
20 | 20 | boolean HasBigData() |
---|
21 | 21 | { |
---|
22 | | - return false; |
---|
| 22 | + return filecontent != null; |
---|
23 | 23 | } |
---|
24 | 24 | |
---|
25 | 25 | void ExtractBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable) |
---|
26 | 26 | { |
---|
| 27 | + Object3D o; |
---|
| 28 | + |
---|
| 29 | + if (hashtable.containsKey(GetUUID())) |
---|
| 30 | + { |
---|
| 31 | + o = hashtable.get(GetUUID()); |
---|
| 32 | + |
---|
| 33 | + //Grafreed.Assert(this.filecontent == ((FileObject)o).filecontent); |
---|
| 34 | + } |
---|
| 35 | + else |
---|
| 36 | + { |
---|
| 37 | + o = new Object3D("copy of " + this.name); |
---|
| 38 | + |
---|
| 39 | + hashtable.put(GetUUID(), o); |
---|
| 40 | + } |
---|
| 41 | + |
---|
| 42 | + ExtractBigData(o); |
---|
27 | 43 | } |
---|
28 | 44 | |
---|
29 | 45 | void RestoreBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable) |
---|
30 | 46 | { |
---|
| 47 | + if (!hashtable.containsKey(GetUUID())) |
---|
| 48 | + return; |
---|
| 49 | + |
---|
| 50 | + Object3D o = hashtable.get(GetUUID()); |
---|
| 51 | + |
---|
| 52 | + RestoreBigData(o); |
---|
31 | 53 | } |
---|
32 | 54 | |
---|
33 | 55 | boolean IsStatic() |
---|
.. | .. |
---|
94 | 116 | this.objfile = objfile; |
---|
95 | 117 | } |
---|
96 | 118 | |
---|
| 119 | + void ExtractBigData(Object3D o) |
---|
| 120 | + { |
---|
| 121 | + super.ExtractBigData(o); |
---|
| 122 | + |
---|
| 123 | + o.savefilecontent = this.filecontent; |
---|
| 124 | + |
---|
| 125 | + // filecontent is transient |
---|
| 126 | + this.filecontent = null; |
---|
| 127 | + } |
---|
| 128 | + |
---|
| 129 | + void RestoreBigData(Object3D o) |
---|
| 130 | + { |
---|
| 131 | + super.RestoreBigData(o); |
---|
| 132 | + |
---|
| 133 | + this.filecontent = o.savefilecontent; |
---|
| 134 | + } |
---|
| 135 | + |
---|
97 | 136 | Object3D deepCopy() |
---|
98 | 137 | { |
---|
99 | 138 | FileObject e = new FileObject(name, objfile); |
---|