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)
}
}
}