#!/usr/bin/python
import sys
from glue import lal
from glue import segments
from glue.ligolw import lsctables
from glue.ligolw import ligolw
from glue.ligolw import utils

def to_segmentlistdict(l):
	s = segments.segmentlistdict()
	#FIXME this may not work
	key = l.description[:2]
	s[key] = segments.segmentlist([l.segment])
	return s

segs = segments.segmentlistdict()

for seg in [to_segmentlistdict(lal.CacheEntry(l)) for l in open(sys.argv[1]).readlines()]:
	segs+= seg

xmldoc = ligolw.Document()
xmldoc.appendChild(ligolw.LIGO_LW())

#
# make tables
#

seg_def = lsctables.New(lsctables.SegmentDefTable)
xmldoc.childNodes[0].appendChild(seg_def)
segtab = lsctables.New(lsctables.SegmentTable)
xmldoc.childNodes[0].appendChild(segtab)

# populate the segment definer table
ifo_ids = {}
for ifo in segs.keys():
	row = seg_def.RowType()
	id = seg_def.get_next_id()
	row.ifos = ifo
	row.segment_def_id = id
	row.creator_db = None
	row.process_id = None
	row.name = "datasegments"
	row.version = None
	row.comment = None
	row.insertion_time = None
	ifo_ids[ifo] = id
	seg_def.append(row)

# populate the segment table
for ifo, segl in segs.items():
	for seg in segl:
		print seg
		row = segtab.RowType()
		row.segment_def_id = ifo_ids[ifo]
		row.segment_id = segtab.get_next_id()
		row.creator_db = None
		row.process_id = None
		row.segment_def_cdb = None
		row.set(seg)
		segtab.append(row)

outname = sys.argv[2]
verbose = True

utils.write_filename(xmldoc, outname, verbose = verbose, gz = (outname or "stdout").endswith(".gz"))

			
		

