<?xml version="1.0" encoding="UTF-8"?> <java version="1.6.0" class="java.beans.XMLDecoder"> <object class="com.horstmann.violet.ClassDiagramGraph"> <void method="addNode"> <object class="com.horstmann.violet.PackageNode"> <void method="addChild"> <object id="InterfaceNode0" class="com.horstmann.violet.InterfaceNode"> <void property="name"> <void property="text"> <string>«interface» BurnSource</string> </void> </void> </object> </void> <void property="name"> <string>libburn</string> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>600.0</double> <double>50.0</double> </void> </object> </void> <void method="addNode"> <object idref="InterfaceNode0"/> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>612.4370214406964</double> <double>81.3237865499184</double> </void> </object> </void> <void method="addNode"> <object id="ClassNode0" class="com.horstmann.violet.ClassNode"> <void property="name"> <void property="text"> <string>Ecma119Source</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>604.1172144213822</double> <double>242.59825146055505</double> </void> </object> </void> <void method="addNode"> <object id="ClassNode1" class="com.horstmann.violet.ClassNode"> <void property="name"> <void property="text"> <string>WriterState</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>861.1034292438676</double> <double>244.31119796826698</double> </void> </object> </void> <void method="addNode"> <object id="ClassNode2" class="com.horstmann.violet.ClassNode"> <void property="name"> <void property="text"> <string>FilesWriterSt</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>984.2531292100068</double> <double>359.95094883087904</double> </void> </object> </void> <void method="addNode"> <object id="ClassNode3" class="com.horstmann.violet.ClassNode"> <void property="name"> <void property="text"> <string>VolDescWriterSt</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>717.2457054234224</double> <double>357.4185959653686</double> </void> </object> </void> <void method="addNode"> <object id="ClassNode4" class="com.horstmann.violet.ClassNode"> <void property="name"> <void property="text"> <string>DirInfoWriterSt</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>854.6043620021998</double> <double>355.85097462036043</double> </void> </object> </void> <void method="addNode"> <object id="ClassNode5" class="com.horstmann.violet.ClassNode"> <void property="name"> <void property="text"> <string>Ecma119Image</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>392.3294860655768</double> <double>240.39714472372754</double> </void> </object> </void> <void method="addNode"> <object id="NoteNode0" class="com.horstmann.violet.NoteNode"> <void property="text"> <void property="text"> <string>The context data for image burn sources, contains references to the tree, creation options...</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>261.45257180386454</double> <double>85.80450046553075</double> </void> </object> </void> <void method="addNode"> <object id="ClassNode6" class="com.horstmann.violet.ClassNode"> <void property="name"> <void property="text"> <string>Ecma119Node</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>291.8219414851778</double> <double>612.806815288254</double> </void> </object> </void> <void method="addNode"> <object id="InterfaceNode1" class="com.horstmann.violet.InterfaceNode"> <void property="methods"> <void property="text"> <string>init() write_voldesc() write_dir_info()</string> </void> </void> <void property="name"> <void property="text"> <string>«interface» ImageWriter</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>401.9520048709197</double> <double>344.8700633507891</double> </void> </object> </void> <void method="addNode"> <object id="ClassNode7" class="com.horstmann.violet.ClassNode"> <void property="name"> <void property="text"> <string>JolietNode</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>409.0872475609359</double> <double>614.8200784564067</double> </void> </object> </void> <void method="addNode"> <object id="ClassNode8" class="com.horstmann.violet.ClassNode"> <void property="name"> <void property="text"> <string>FileRegistry</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>718.2810974616434</double> <double>459.0339463910502</double> </void> </object> </void> <void method="addNode"> <object id="ClassNode9" class="com.horstmann.violet.ClassNode"> <void property="name"> <void property="text"> <string>Ecma119Writer</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>273.51763645062584</double> <double>489.95333138112096</double> </void> </object> </void> <void method="addNode"> <object id="ClassNode10" class="com.horstmann.violet.ClassNode"> <void property="name"> <void property="text"> <string>JolietWriter</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>404.3304191009253</double> <double>485.1965029211101</double> </void> </object> </void> <void method="addNode"> <object id="ClassNode11" class="com.horstmann.violet.ClassNode"> <void property="name"> <void property="text"> <string>ElToritoWriter</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>512.5482665661723</double> <double>485.19650292111</double> </void> </object> </void> <void method="addNode"> <object id="ClassNode12" class="com.horstmann.violet.ClassNode"> <void property="attributes"> <void property="text"> <string>size : off_t block : uint32_t</string> </void> </void> <void property="name"> <void property="text"> <string>IsoFile</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>720.659511691649</double> <double>568.4410009713001</double> </void> </object> </void> <void method="addNode"> <object id="InterfaceNode2" class="com.horstmann.violet.InterfaceNode"> <void property="name"> <void property="text"> <string>«interface» Stream</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>909.7434429770816</double> <double>580.3330721213274</double> </void> </object> </void> <void method="addNode"> <object id="NoteNode1" class="com.horstmann.violet.NoteNode"> <void property="text"> <void property="text"> <string>ImageWriter goal is to encapsulate the output of image blocks related to one "specification", i.e. we will have an implementation for ECMA-119/RR, other for Joliet... Note that having different implementations for things that need to be written in the same block has no utility, i.e. RR and ECMA-119 must share its Writer implementation. Note also that while this provides considerable encapsulation the provided abstraction is really partial: In the relation with WriterState the encapsulation is quite good, each concrete state know what method to call here (notice that this interface is also quite coupled with state). However, with respect to Ecma119Image the abstration only refers to implementation, as the Ecma119Image needs to know about the ImageWriter implementations. This can't be avoided, as Ecma119Image has to be responsible of the instantation in the correct order and following the user needs. </string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>2.3784142300054896</double> <double>160.54296052536733</double> </void> </object> </void> <void method="addNode"> <object id="NoteNode2" class="com.horstmann.violet.NoteNode"> <void property="text"> <void property="text"> <string>The files are registered into the file registry, that will take care about the written of content.</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>286.59891471565567</double> <double>708.7674405416217</double> </void> </object> </void> <void method="addNode"> <object id="NoteNode3" class="com.horstmann.violet.NoteNode"> <void property="text"> <void property="text"> <string>Each state will invoque property method in each of the ImageWriters. Some writers can return without outputting anything. It is possible that when dealing with UDF or other specification we would need new states and methods in ImageWriter</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>765.8493820617523</double> <double>132.001989765302</double> </void> </object> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="bentStyle"> <object class="com.horstmann.violet.BentStyle" field="VHV"/> </void> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/> </void> <void property="lineStyle"> <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> </void> </object> <object idref="ClassNode0"/> <object idref="InterfaceNode0"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="bentStyle"> <object class="com.horstmann.violet.BentStyle" field="VHV"/> </void> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/> </void> <void property="lineStyle"> <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> </void> </object> <object idref="ClassNode3"/> <object idref="ClassNode1"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="bentStyle"> <object class="com.horstmann.violet.BentStyle" field="VHV"/> </void> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/> </void> <void property="lineStyle"> <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> </void> </object> <object idref="ClassNode4"/> <object idref="ClassNode1"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="bentStyle"> <object class="com.horstmann.violet.BentStyle" field="VHV"/> </void> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/> </void> <void property="lineStyle"> <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> </void> </object> <object idref="ClassNode2"/> <object idref="ClassNode1"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="bentStyle"> <object class="com.horstmann.violet.BentStyle" field="HVH"/> </void> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="V"/> </void> <void property="startArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="DIAMOND"/> </void> </object> <object idref="ClassNode0"/> <object idref="ClassNode1"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="ClassNode5"/> <object idref="NoteNode0"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="V"/> </void> <void property="lineStyle"> <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> </void> </object> <object idref="ClassNode0"/> <object idref="ClassNode5"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="bentStyle"> <object class="com.horstmann.violet.BentStyle" field="VHV"/> </void> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/> </void> <void property="lineStyle"> <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> </void> </object> <object idref="ClassNode10"/> <object idref="InterfaceNode1"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="bentStyle"> <object class="com.horstmann.violet.BentStyle" field="VHV"/> </void> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/> </void> <void property="lineStyle"> <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> </void> </object> <object idref="ClassNode9"/> <object idref="InterfaceNode1"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="bentStyle"> <object class="com.horstmann.violet.BentStyle" field="VHV"/> </void> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/> </void> <void property="lineStyle"> <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> </void> </object> <object idref="ClassNode11"/> <object idref="InterfaceNode1"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="bentStyle"> <object class="com.horstmann.violet.BentStyle" field="HVH"/> </void> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="V"/> </void> <void property="endLabel"> <string>*</string> </void> <void property="startArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="BLACK_DIAMOND"/> </void> </object> <object idref="ClassNode5"/> <object idref="InterfaceNode1"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="bentStyle"> <object class="com.horstmann.violet.BentStyle" field="HVH"/> </void> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="V"/> </void> </object> <object idref="ClassNode9"/> <object idref="ClassNode6"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="bentStyle"> <object class="com.horstmann.violet.BentStyle" field="HVH"/> </void> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="V"/> </void> </object> <object idref="ClassNode10"/> <object idref="ClassNode7"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="bentStyle"> <object class="com.horstmann.violet.BentStyle" field="HVH"/> </void> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="V"/> </void> <void property="endLabel"> <string>*</string> </void> </object> <object idref="ClassNode8"/> <object idref="ClassNode12"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="bentStyle"> <object class="com.horstmann.violet.BentStyle" field="HVH"/> </void> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="V"/> </void> </object> <object idref="ClassNode12"/> <object idref="InterfaceNode2"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="V"/> </void> <void property="lineStyle"> <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> </void> </object> <object idref="ClassNode5"/> <object idref="ClassNode8"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="bentStyle"> <object class="com.horstmann.violet.BentStyle" field="VH"/> </void> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="V"/> </void> <void property="lineStyle"> <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> </void> </object> <object idref="ClassNode2"/> <object idref="ClassNode8"/> </void> <void method="connect"> <object class="com.horstmann.violet.ClassRelationshipEdge"> <void property="endArrowHead"> <object class="com.horstmann.violet.ArrowHead" field="V"/> </void> <void property="lineStyle"> <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> </void> </object> <object idref="InterfaceNode1"/> <object idref="ClassNode8"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="InterfaceNode1"/> <object idref="NoteNode1"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="ClassNode6"/> <object idref="NoteNode2"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="ClassNode7"/> <object idref="NoteNode2"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="ClassNode8"/> <object idref="NoteNode2"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="ClassNode1"/> <object idref="NoteNode3"/> </void> </object> </java>