# Collection of code snippets by Arne Vajhøj 
# (from articles on eksperten.dk / vajhoej.dk written sometime between 2004 and now) 
from java.io import FileWriter
from java.util import ArrayList

from com.opencsv.bean import StatefulBeanToCsvBuilder

from dk.vajhoej.isam.map import PyIsamMap

import AutoMap
import OrdersISAM
import OrderLinesISAM
import OrdersCSV
import OrderLinesCSV

# read from index-sequential file
oisqmp = PyIsamMap.createIsamMapRMS("orders.isq", OrdersISAM)
olisqmp = PyIsamMap.createIsamMapRMS("orderlines.isq", OrderLinesISAM)
isamdata = ArrayList()
for oisam in oisqmp.values():
    for olisam in olisqmp.key(1).isInt(oisam.id).values():
        oisam.orderLinesT.add(olisam)
    isamdata.add(oisam)
# convert
mo = AutoMap(OrdersISAM, OrdersCSV, True)
mol = AutoMap(OrderLinesISAM, OrderLinesCSV, True)
odata = ArrayList()
oldata = ArrayList()
for oisam in isamdata:
    ocsv = OrdersCSV()
    mo.convert(oisam, ocsv)
    for olisam in oisam.orderLinesT:
        olcsv = OrderLinesCSV()
        mol.convert(olisam, olcsv)
        oldata.add(olcsv)
    odata.add(ocsv)
# write to CSV
ow = FileWriter('orders4.csv')
ocsv = StatefulBeanToCsvBuilder(ow).withSeparator(',').withQuotechar('"').build()
ocsv.write(odata)
ow.close()
olw = FileWriter('orderlines4.csv')
olcsv = StatefulBeanToCsvBuilder(olw).withSeparator(',').withQuotechar('"').build()
olcsv.write(oldata)
olw.close()
#
print('isq2csv done')
