package gw.rating.rtm.domain.migration uses gw.rating.rtm.domain.EntityPersistenceAdapter uses gw.rating.rtm.domain.RateBookExportVisitor uses gw.rating.rtm.domain.table.RateBookModel uses gw.rating.rtm.domain.table.RateTableCell uses gw.rating.rtm.domain.table.RateTableModel uses gw.rating.rtm.domain.table.RateTableRow uses java.io.OutputStream /** * An implementation of RateBookVisitor that collect entities from * the book to write out to an xml file */ class RateBookXMLExportVisitor extends RateBookExportVisitor { var _writer : XMLWriter var _ownedTable : boolean construct(writer : XMLWriter) { this._writer = writer } function export() : String { return _writer.write() } function exportBytes() : byte[] { return _writer.writeBytes() } function write(stream : OutputStream) { var bytes = exportBytes() stream.write(bytes, 0, bytes.length) stream.close() } override function visitBoolean(ratingCell : RateTableCell>) { // do nothing } override function visitDate(ratingCell : RateTableCell>) { // do nothing } override function visitDecimal(ratingCell : RateTableCell>) { // do nothing } override function visitInteger(ratingCell : RateTableCell>) { } override function visitString(ratingCell : RateTableCell>) { } override function visitEmpty(ratingCell : RateTableCell>) { } override function visitingEmptyCells() : boolean { return false } override function visit(ratingRow : RateTableRow) { if (_ownedTable) { _writer.add((ratingRow.Row as EntityPersistenceAdapter).FactorRowBean) } } override function visit(tableModel : RateTableModel) { progressToNextItem() var rateTableDefinition = tableModel.RateTableDefinition _writer.add(rateTableDefinition) rateTableDefinition.ArgumentSourceSets.each(\ argumentSourceSet -> { var calcRoutineParameterSet = argumentSourceSet.CalcRoutineParameterSet if (calcRoutineParameterSet != null) { write(calcRoutineParameterSet) } }) _ownedTable = tableModel.Owned } override function visit(bookModel : RateBookModel) { this.RateBookExportResult = bookModel.Book.XMLExportResult progressToNextItem() _writer.add(bookModel.Book) } private function write(aCalcRoutineParameterSet : entity.CalcRoutineParameterSet) { _writer.add(aCalcRoutineParameterSet) for (calcRoutineParameter in aCalcRoutineParameterSet.Parameters) { _writer.add(calcRoutineParameter) } } override function visitAfter(tableModel : RateTableModel) { } override function visit(calcRoutineDefinition : CalcRoutineDefinition) { progressToNextItem() calcRoutineDefinition.clearUnusedInstructions() _writer.add(calcRoutineDefinition) var calcRoutineParameterSet = calcRoutineDefinition.ParameterSet if (calcRoutineParameterSet != null) { _writer.add(calcRoutineDefinition) write(calcRoutineParameterSet) } } }